From cf140e4789ed0d50c32f02838fd64df370477dd7 Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Mon, 9 Mar 2026 02:17:08 +0000 Subject: [PATCH 1/2] =?UTF-8?q?##=20Python=20SDK=20Changes:=20*=20`glean.c?= =?UTF-8?q?lient.chat.create()`:=20=20=20*=20=20`request.messages[]`=20**C?= =?UTF-8?q?hanged**=20=20=20*=20=20`response`=20**Changed**=20(Breaking=20?= =?UTF-8?q?=E2=9A=A0=EF=B8=8F)=20*=20`glean.client.search.query()`:=20=20?= =?UTF-8?q?=20*=20=20`request.source=5Fdocument.metadata.author.related=5F?= =?UTF-8?q?documents[].results[].structured=5Fresults[].snippets[].snippet?= =?UTF-8?q?`=20**Changed**=20=20=20*=20=20`response`=20**Changed**=20(Brea?= =?UTF-8?q?king=20=E2=9A=A0=EF=B8=8F)=20=20=20*=20=20`error.unauthorized?= =?UTF-8?q?=5Fdatasource=5Finstances`=20**Removed**=20(Breaking=20?= =?UTF-8?q?=E2=9A=A0=EF=B8=8F)=20*=20`glean.client.search.recommendations(?= =?UTF-8?q?)`:=20=20=20*=20=20`request.source=5Fdocument.metadata.author.r?= =?UTF-8?q?elated=5Fdocuments[].results[].structured=5Fresults[].snippets[?= =?UTF-8?q?].snippet`=20**Changed**=20=20=20*=20=20`response`=20**Changed*?= =?UTF-8?q?*=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*=20`glean.client.search.?= =?UTF-8?q?autocomplete()`:=20=20`response`=20**Changed**=20(Breaking=20?= =?UTF-8?q?=E2=9A=A0=EF=B8=8F)=20*=20`glean.client.search.query=5Fas=5Fadm?= =?UTF-8?q?in()`:=20=20=20*=20=20`request.source=5Fdocument.metadata.autho?= =?UTF-8?q?r.related=5Fdocuments[].results[].structured=5Fresults[].snippe?= =?UTF-8?q?ts[].snippet`=20**Changed**=20=20=20*=20=20`response`=20**Chang?= =?UTF-8?q?ed**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20=20=20*=20=20`error.un?= =?UTF-8?q?authorized=5Fdatasource=5Finstances`=20**Removed**=20(Breaking?= =?UTF-8?q?=20=E2=9A=A0=EF=B8=8F)=20*=20`glean.client.messages.retrieve()`?= =?UTF-8?q?:=20=20`response.search=5Fresponse`=20**Changed**=20(Breaking?= =?UTF-8?q?=20=E2=9A=A0=EF=B8=8F)=20*=20`glean.client.collections.list()`:?= =?UTF-8?q?=20=20`response.collections[].added=5Froles[].person.related=5F?= =?UTF-8?q?documents[].results[].structured=5Fresults[].snippets[].snippet?= =?UTF-8?q?`=20**Changed**=20*=20`glean.client.insights.retrieve()`:=20=20?= =?UTF-8?q?`response.glean=5Fassist.activity=5Finsights[].user.related=5Fd?= =?UTF-8?q?ocuments[].results[].structured=5Fresults[].snippets[].snippet`?= =?UTF-8?q?=20**Changed**=20*=20`glean.client.answers.retrieve()`:=20=20`r?= =?UTF-8?q?esponse.answer=5Fresult.answer.added=5Froles[].person.related?= =?UTF-8?q?=5Fdocuments[].results[].structured=5Fresults[].snippets[].snip?= =?UTF-8?q?pet`=20**Changed**=20*=20`glean.client.chat.retrieve()`:=20=20`?= =?UTF-8?q?response.chat=5Fresult.chat`=20**Changed**=20*=20`glean.client.?= =?UTF-8?q?chat.list()`:=20=20`response`=20**Changed**=20*=20`glean.client?= =?UTF-8?q?.chat.create=5Fstream()`:=20=20=20*=20=20`request.messages[]`?= =?UTF-8?q?=20**Changed**=20*=20`glean.client.agents.retrieve()`:=20=20`er?= =?UTF-8?q?ror.status[404]`=20**Added**=20*=20`glean.client.agents.retriev?= =?UTF-8?q?e=5Fschemas()`:=20=20=20*=20=20`response.tools[]`=20**Changed**?= =?UTF-8?q?=20=20=20*=20=20`error`=20**Changed**=20*=20`glean.client.agent?= =?UTF-8?q?s.list()`:=20=20`error`=20**Changed**=20*=20`glean.client.agent?= =?UTF-8?q?s.run=5Fstream()`:=20=20`error`=20**Changed**=20*=20`glean.clie?= =?UTF-8?q?nt.collections.add=5Fitems()`:=20=20`response.collection.added?= =?UTF-8?q?=5Froles[].person.related=5Fdocuments[].results[].structured=5F?= =?UTF-8?q?results[].snippets[].snippet`=20**Changed**=20*=20`glean.client?= =?UTF-8?q?.collections.create()`:=20=20=20*=20=20`request.added=5Froles[]?= =?UTF-8?q?.person.related=5Fdocuments[].results[].structured=5Fresults[].?= =?UTF-8?q?snippets[].snippet`=20**Changed**=20=20=20*=20=20`response.unio?= =?UTF-8?q?n(class=20(0)).collection.added=5Froles[].person.related=5Fdocu?= =?UTF-8?q?ments[].results[].structured=5Fresults[].snippets[].snippet`=20?= =?UTF-8?q?**Changed**=20*=20`glean.client.collections.delete=5Fitem()`:?= =?UTF-8?q?=20=20`response.collection.added=5Froles[].person.related=5Fdoc?= =?UTF-8?q?uments[].results[].structured=5Fresults[].snippets[].snippet`?= =?UTF-8?q?=20**Changed**=20*=20`glean.client.collections.update()`:=20=20?= =?UTF-8?q?=20*=20=20`request.added=5Froles[].person.related=5Fdocuments[]?= =?UTF-8?q?.results[].structured=5Fresults[].snippets[].snippet`=20**Chang?= =?UTF-8?q?ed**=20=20=20*=20=20`response.added=5Froles[].person.related=5F?= =?UTF-8?q?documents[].results[].structured=5Fresults[].snippets[].snippet?= =?UTF-8?q?`=20**Changed**=20*=20`glean.client.collections.update=5Fitem()?= =?UTF-8?q?`:=20=20`response.collection.added=5Froles[].person.related=5Fd?= =?UTF-8?q?ocuments[].results[].structured=5Fresults[].snippets[].snippet`?= =?UTF-8?q?=20**Changed**=20*=20`glean.client.collections.retrieve()`:=20?= =?UTF-8?q?=20`response.collection.added=5Froles[].person.related=5Fdocume?= =?UTF-8?q?nts[].results[].structured=5Fresults[].snippets[].snippet`=20**?= =?UTF-8?q?Changed**=20*=20`glean.datasources.get=5Fdatasource=5Finstance?= =?UTF-8?q?=5Fconfiguration()`:=20**Added**=20*=20`glean.client.documents.?= =?UTF-8?q?retrieve()`:=20=20`response.documents.Map.unio?= =?UTF-8?q?n(Document).metadata.author.related=5Fdocuments[].results[].str?= =?UTF-8?q?uctured=5Fresults[].snippets[].snippet`=20**Changed**=20*=20`gl?= =?UTF-8?q?ean.client.documents.retrieve=5Fby=5Ffacets()`:=20=20`response.?= =?UTF-8?q?documents[].metadata.author.related=5Fdocuments[].results[].str?= =?UTF-8?q?uctured=5Fresults[].snippets[].snippet`=20**Changed**=20*=20`gl?= =?UTF-8?q?ean.client.answers.list()`:=20=20`response.answer=5Fresults[].a?= =?UTF-8?q?nswer.added=5Froles[].person.related=5Fdocuments[].results[].st?= =?UTF-8?q?ructured=5Fresults[].snippets[].snippet`=20**Changed**=20*=20`g?= =?UTF-8?q?lean.client.answers.update()`:=20=20=20*=20=20`request.added=5F?= =?UTF-8?q?roles[].person.related=5Fdocuments[].results[].structured=5Fres?= =?UTF-8?q?ults[].snippets[].snippet`=20**Changed**=20=20=20*=20=20`respon?= =?UTF-8?q?se.added=5Froles[].person.related=5Fdocuments[].results[].struc?= =?UTF-8?q?tured=5Fresults[].snippets[].snippet`=20**Changed**=20*=20`glea?= =?UTF-8?q?n.client.pins.update()`:=20=20`response.attribution.related=5Fd?= =?UTF-8?q?ocuments[].results[].structured=5Fresults[].snippets[].snippet`?= =?UTF-8?q?=20**Changed**=20*=20`glean.client.pins.retrieve()`:=20=20`resp?= =?UTF-8?q?onse.pin.attribution.related=5Fdocuments[].results[].structured?= =?UTF-8?q?=5Fresults[].snippets[].snippet`=20**Changed**=20*=20`glean.cli?= =?UTF-8?q?ent.pins.list()`:=20=20`response.pins[].attribution.related=5Fd?= =?UTF-8?q?ocuments[].results[].structured=5Fresults[].snippets[].snippet`?= =?UTF-8?q?=20**Changed**=20*=20`glean.client.pins.create()`:=20=20`respon?= =?UTF-8?q?se.attribution.related=5Fdocuments[].results[].structured=5Fres?= =?UTF-8?q?ults[].snippets[].snippet`=20**Changed**=20*=20`glean.client.an?= =?UTF-8?q?swers.create()`:=20=20=20*=20=20`request.data.added=5Froles[].p?= =?UTF-8?q?erson.related=5Fdocuments[].results[].structured=5Fresults[].sn?= =?UTF-8?q?ippets[].snippet`=20**Changed**=20=20=20*=20=20`response.added?= =?UTF-8?q?=5Froles[].person.related=5Fdocuments[].results[].structured=5F?= =?UTF-8?q?results[].snippets[].snippet`=20**Changed**=20*=20`glean.client?= =?UTF-8?q?.announcements.update()`:=20=20=20*=20=20`request.body.structur?= =?UTF-8?q?ed=5Flist[].document.metadata.author.related=5Fdocuments[].resu?= =?UTF-8?q?lts[].structured=5Fresults[].snippets[].snippet`=20**Changed**?= =?UTF-8?q?=20=20=20*=20=20`response.body.structured=5Flist[].document.met?= =?UTF-8?q?adata.author.related=5Fdocuments[].results[].structured=5Fresul?= =?UTF-8?q?ts[].snippets[].snippet`=20**Changed**=20*=20`glean.client.sear?= =?UTF-8?q?ch.retrieve=5Ffeed()`:=20=20`response.results[].primary=5Fentry?= =?UTF-8?q?.created=5Fby.related=5Fdocuments[].results[].structured=5Fresu?= =?UTF-8?q?lts[].snippets[].snippet`=20**Changed**=20*=20`glean.client.ann?= =?UTF-8?q?ouncements.create()`:=20=20=20*=20=20`request.body.structured?= =?UTF-8?q?=5Flist[].document.metadata.author.related=5Fdocuments[].result?= =?UTF-8?q?s[].structured=5Fresults[].snippets[].snippet`=20**Changed**=20?= =?UTF-8?q?=20=20*=20=20`response.body.structured=5Flist[].document.metada?= =?UTF-8?q?ta.author.related=5Fdocuments[].results[].structured=5Fresults[?= =?UTF-8?q?].snippets[].snippet`=20**Changed**=20*=20`glean.datasources.up?= =?UTF-8?q?date=5Fdatasource=5Finstance=5Fconfiguration()`:=20**Added**=20?= =?UTF-8?q?*=20`glean.client.entities.list()`:=20=20`response.results[].re?= =?UTF-8?q?lated=5Fdocuments[].results[].structured=5Fresults[].snippets[]?= =?UTF-8?q?.snippet`=20**Changed**=20*=20`glean.client.entities.read=5Fpeo?= =?UTF-8?q?ple()`:=20=20`response.results[].related=5Fdocuments[].results[?= =?UTF-8?q?].structured=5Fresults[].snippets[].snippet`=20**Changed**=20*?= =?UTF-8?q?=20`glean.client.shortcuts.create()`:=20=20=20*=20=20`request.d?= =?UTF-8?q?ata.added=5Froles[].person.related=5Fdocuments[].results[].stru?= =?UTF-8?q?ctured=5Fresults[].snippets[].snippet`=20**Changed**=20=20=20*?= =?UTF-8?q?=20=20`response.shortcut.added=5Froles[].person.related=5Fdocum?= =?UTF-8?q?ents[].results[].structured=5Fresults[].snippets[].snippet`=20*?= =?UTF-8?q?*Changed**=20*=20`glean.client.shortcuts.retrieve()`:=20=20`res?= =?UTF-8?q?ponse.shortcut.added=5Froles[].person.related=5Fdocuments[].res?= =?UTF-8?q?ults[].structured=5Fresults[].snippets[].snippet`=20**Changed**?= =?UTF-8?q?=20*=20`glean.client.shortcuts.list()`:=20=20`response.shortcut?= =?UTF-8?q?s[].added=5Froles[].person.related=5Fdocuments[].results[].stru?= =?UTF-8?q?ctured=5Fresults[].snippets[].snippet`=20**Changed**=20*=20`gle?= =?UTF-8?q?an.client.shortcuts.update()`:=20=20=20*=20=20`request.added=5F?= =?UTF-8?q?roles[].person.related=5Fdocuments[].results[].structured=5Fres?= =?UTF-8?q?ults[].snippets[].snippet`=20**Changed**=20=20=20*=20=20`respon?= =?UTF-8?q?se.shortcut.added=5Froles[].person.related=5Fdocuments[].result?= =?UTF-8?q?s[].structured=5Fresults[].snippets[].snippet`=20**Changed**=20?= =?UTF-8?q?*=20`glean.client.verification.add=5Freminder()`:=20=20`respons?= =?UTF-8?q?e.metadata.last=5Fverifier.related=5Fdocuments[].results[].stru?= =?UTF-8?q?ctured=5Fresults[].snippets[].snippet`=20**Changed**=20*=20`gle?= =?UTF-8?q?an.client.verification.list()`:=20=20`response.documents[].meta?= =?UTF-8?q?data.last=5Fverifier.related=5Fdocuments[].results[].structured?= =?UTF-8?q?=5Fresults[].snippets[].snippet`=20**Changed**=20*=20`glean.cli?= =?UTF-8?q?ent.verification.verify()`:=20=20`response.metadata.last=5Fveri?= =?UTF-8?q?fier.related=5Fdocuments[].results[].structured=5Fresults[].sni?= =?UTF-8?q?ppets[].snippet`=20**Changed**=20*=20`glean.indexing.people.bul?= =?UTF-8?q?k=5Findex()`:=20**Deprecated**?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .speakeasy/gen.lock | 2682 +++++++++-------- .speakeasy/gen.yaml | 3 +- .speakeasy/glean-merged-spec.yaml | 485 ++- .speakeasy/tests.arazzo.yaml | 45 + .speakeasy/workflow.lock | 13 +- README.md | 40 +- RELEASES.md | 12 +- docs/errors/errorresponse.md | 10 + docs/errors/gleandataerror.md | 15 +- docs/models/actionsummary.md | 13 +- docs/models/activityenum.md | 10 + docs/models/activityeventaction.md | 8 + .../addcollectionitemserrorerrortype.md | 8 + docs/models/agentenum.md | 10 + docs/models/agentexecutionstatus.md | 10 + docs/models/announcementchannel.md | 10 + docs/models/announcementposttype.md | 10 + docs/models/anonymouseventeventtype.md | 10 + docs/models/answercreationdatasourcetype.md | 8 + docs/models/answersourcetype.md | 10 + docs/models/authconfig.md | 1 + docs/models/authconfigstatus.md | 10 + docs/models/authconfigtype.md | 10 + docs/models/author.md | 10 + docs/models/authstatus.md | 10 + docs/models/authtype.md | 10 + docs/models/autocompleterequestresulttype.md | 8 + docs/models/autocompleteresultresulttype.md | 10 + docs/models/bulkuploadhistoryeventstatus.md | 10 + docs/models/calendareventeventtype.md | 10 + docs/models/chatfilefailurereason.md | 10 + docs/models/chatfilestatus.md | 10 + docs/models/chatresponse.md | 15 +- docs/models/clustertypeenum.md | 10 + docs/models/collectionerrorerrorcode.md | 10 + .../collectionitemdescriptoritemtype.md | 8 + docs/models/collectionitemitemtype.md | 10 + docs/models/collectionpinnablecategories.md | 10 + docs/models/collectionpinnabletargets.md | 10 + docs/models/communicationchannel.md | 10 + docs/models/conferencedatasource.md | 10 + docs/models/configurationvalue.md | 11 + docs/models/connectortype.md | 10 + docs/models/contenttype.md | 8 + .../createannouncementrequestchannel.md | 8 + .../createannouncementrequestposttype.md | 8 + .../customdatasourceconfigconnectortype.md | 10 + .../customsensitiverulelikelihoodthreshold.md | 10 + docs/models/customsensitiveruletype.md | 10 + docs/models/datasource.md | 8 + docs/models/datasourcecategory.md | 10 + .../models/datasourceconfigurationresponse.md | 11 + .../models/datasourceinstanceconfiguration.md | 10 + docs/models/datasourcestype.md | 10 + docs/models/datasourcevisibility.md | 10 + docs/models/direction.md | 8 + docs/models/dlpfrequency.md | 10 + docs/models/dlpreportstatus.md | 10 + docs/models/dlpseverity.md | 10 + docs/models/dlpsimpleresult.md | 10 + docs/models/doccategory.md | 10 + docs/models/documentspecugctype1.md | 10 + docs/models/documentspecugctype2.md | 10 + docs/models/documentvisibility.md | 10 + .../documentvisibilityoverrideoverride.md | 10 + .../documentvisibilityupdateresultoverride.md | 10 + docs/models/editanswerrequestsourcetype.md | 8 + .../models/editcollectionresponseerrorcode.md | 10 + docs/models/entitiessortorder.md | 10 + docs/models/entitytype.md | 10 + docs/models/event.md | 8 + docs/models/eventclassificationname.md | 8 + docs/models/eventstrategyname.md | 10 + docs/models/exportinfostatus.md | 10 + docs/models/exporttype.md | 8 + docs/models/feedbackcategory.md | 8 + docs/models/feedbackchannel.md | 8 + docs/models/feedrequestcategory.md | 8 + docs/models/feedresultcategory.md | 10 + docs/models/fieldscope.md | 8 + docs/models/format_.md | 8 + docs/models/generatedqnastatus.md | 10 + docs/models/getanswererrorerrortype.md | 10 + ...tdatasourceinstanceconfigurationrequest.md | 9 + .../models/getdocumentsrequestincludefield.md | 8 + docs/models/gleandataerror.md | 15 +- docs/models/granttype.md | 10 + docs/models/grouptype.md | 10 + docs/models/hidebuiltinfacet.md | 10 + docs/models/icontype.md | 10 + docs/models/idtype.md | 8 + docs/models/includetype.md | 8 + docs/models/inputoptionstimeperiodtype.md | 10 + docs/models/inviteinfo.md | 4 +- docs/models/issue.md | 8 + docs/models/justificationtype.md | 10 + docs/models/knowledgetype.md | 10 + docs/models/lastscanstatus.md | 10 + docs/models/listchatsresponse.md | 7 +- docs/models/listentitiesrequestentitytype.md | 8 + .../models/listentitiesrequestincludefield.md | 8 + ...stshortcutspaginatedrequestincludefield.md | 8 + docs/models/manualfeedbackinfosource.md | 8 + docs/models/manualfeedbackinfovote.md | 8 + .../manualfeedbacksidebysideinfosource.md | 8 + .../manualfeedbacksidebysideinfovote.md | 8 + docs/models/messagetype.md | 10 + docs/models/mode.md | 10 + docs/models/operatortype.md | 10 + docs/models/orderby.md | 8 + docs/models/peoplerequestincludefield.md | 8 + docs/models/personmetadatatype.md | 10 + docs/models/personteamrelationship.md | 10 + .../persontoteamrelationshiprelationship.md | 10 + docs/models/processingstate.md | 10 + docs/models/prominence.md | 10 + docs/models/propertytype.md | 10 + docs/models/provider.md | 10 + docs/models/relation.md | 10 + docs/models/relationtype.md | 10 + docs/models/reportstatusresponsestatus.md | 10 + docs/models/requesttype.md | 8 + docs/models/responsehint.md | 10 + docs/models/responsestatus.md | 10 + docs/models/role.md | 10 + docs/models/scope.md | 10 + docs/models/scopetype.md | 10 + docs/models/searchresultprominenceenum.md | 10 + docs/models/searchresultsnippet.md | 16 +- docs/models/sectiontype.md | 10 + .../sensitiveinfotypelikelihoodthreshold.md | 10 + docs/models/shortcuterrorerrortype.md | 10 + docs/models/state.md | 10 + docs/models/structuredresultsource.md | 10 + docs/models/teamstatus.md | 10 + docs/models/textrangetype.md | 10 + docs/models/timerangefiltertimeperiodtype.md | 10 + docs/models/toolmetadatatype.md | 10 + docs/models/toolparametertype.md | 10 + docs/models/tooltype.md | 10 + docs/models/ugctype.md | 10 + docs/models/uioptions.md | 10 + .../updateannouncementrequestchannel.md | 8 + .../updateannouncementrequestposttype.md | 8 + .../updatedatasourceconfigurationrequest.md | 11 + ...edatasourceinstanceconfigurationrequest.md | 10 + docs/models/updatetype.md | 10 + docs/models/uploadstatusenum.md | 10 + docs/models/useractivityaction.md | 10 + docs/models/userrole.md | 10 + docs/models/verifyrequestaction.md | 8 + docs/models/warningtype.md | 10 + docs/models/workflowfeedbackinfosource.md | 8 + docs/models/writeactionparametertype.md | 10 + docs/models/writeactiontype.md | 10 + docs/sdks/agents/README.md | 28 +- docs/sdks/datasources/README.md | 109 +- docs/sdks/indexingdatasources/README.md | 118 + docs/sdks/indexingdocuments/README.md | 4 +- docs/sdks/people/README.md | 8 +- pyproject.toml | 2 +- src/glean/api_client/_version.py | 6 +- src/glean/api_client/agents.py | 52 +- src/glean/api_client/datasources.py | 428 +-- src/glean/api_client/errors/__init__.py | 5 + src/glean/api_client/errors/errorresponse.py | 31 + src/glean/api_client/errors/gleandataerror.py | 10 - src/glean/api_client/indexing.py | 6 +- src/glean/api_client/indexing_datasources.py | 565 ++++ src/glean/api_client/indexing_documents.py | 8 +- src/glean/api_client/models/__init__.py | 45 + src/glean/api_client/models/actionsummary.py | 75 +- src/glean/api_client/models/activityevent.py | 2 +- .../api_client/models/activityeventparams.py | 2 +- .../models/addcollectionitemserror.py | 2 +- .../api_client/models/addcollectionitemsop.py | 2 +- .../models/addcollectionitemsrequest.py | 2 +- .../models/addcollectionitemsresponse.py | 2 +- .../models/additionalfielddefinition.py | 2 +- .../models/addverificationreminderop.py | 2 +- src/glean/api_client/models/adminsearchop.py | 2 +- src/glean/api_client/models/agent.py | 6 +- src/glean/api_client/models/agentconfig.py | 27 +- .../api_client/models/agentexecutionstatus.py | 3 +- src/glean/api_client/models/agentrun.py | 14 +- src/glean/api_client/models/agentruncreate.py | 2 +- .../api_client/models/agentrunwaitresponse.py | 2 +- src/glean/api_client/models/agentschemas.py | 2 +- .../models/agentsinsightsv2request.py | 2 +- .../models/agentsinsightsv2response.py | 2 +- .../models/agentsusagebydepartmentinsight.py | 2 +- .../api_client/models/agentusersinsight.py | 2 +- .../api_client/models/allowlistoptions.py | 2 +- src/glean/api_client/models/announcement.py | 29 +- src/glean/api_client/models/anonymousevent.py | 16 +- src/glean/api_client/models/answer.py | 16 +- .../api_client/models/answercreationdata.py | 2 +- src/glean/api_client/models/answerlike.py | 2 +- src/glean/api_client/models/answerresult.py | 2 +- src/glean/api_client/models/appresult.py | 2 +- .../models/assistantinsightsresponse.py | 2 +- src/glean/api_client/models/authconfig.py | 44 +- src/glean/api_client/models/authstatus.py | 3 +- src/glean/api_client/models/authtoken.py | 2 +- src/glean/api_client/models/autocompleteop.py | 2 +- .../api_client/models/autocompleterequest.py | 2 +- .../api_client/models/autocompleteresponse.py | 2 +- .../api_client/models/autocompleteresult.py | 16 +- .../models/autocompleteresultgroup.py | 2 +- src/glean/api_client/models/badge.py | 2 +- .../models/bulkindexdocumentsrequest.py | 2 +- .../models/bulkindexemployeesrequest.py | 2 +- .../models/bulkindexgroupsrequest.py | 2 +- .../models/bulkindexmembershipsrequest.py | 2 +- .../models/bulkindexshortcutsrequest.py | 2 +- .../models/bulkindexteamsrequest.py | 2 +- .../models/bulkindexusersrequest.py | 2 +- .../models/bulkuploadhistoryevent.py | 27 +- .../api_client/models/calendarattendee.py | 16 +- .../api_client/models/calendarattendees.py | 2 +- src/glean/api_client/models/calendarevent.py | 16 +- .../models/canonicalizingregextype.py | 2 +- .../api_client/models/channelinviteinfo.py | 14 +- src/glean/api_client/models/chat.py | 2 +- src/glean/api_client/models/chatfile.py | 2 +- .../models/chatfilefailurereason.py | 3 +- .../api_client/models/chatfilemetadata.py | 23 +- src/glean/api_client/models/chatfilestatus.py | 3 +- src/glean/api_client/models/chatmessage.py | 27 +- .../api_client/models/chatmessagecitation.py | 2 +- .../api_client/models/chatmessagefragment.py | 2 +- src/glean/api_client/models/chatmetadata.py | 2 +- .../api_client/models/chatmetadataresult.py | 2 +- src/glean/api_client/models/chatop.py | 2 +- src/glean/api_client/models/chatrequest.py | 2 +- src/glean/api_client/models/chatresponse.py | 21 +- .../models/chatrestrictionfilters.py | 2 +- src/glean/api_client/models/chatresult.py | 2 +- src/glean/api_client/models/chatstreamop.py | 2 +- src/glean/api_client/models/chatsuggestion.py | 2 +- .../models/chatzerostatesuggestionoptions.py | 2 +- .../models/checkdocumentaccessresponse.py | 2 +- src/glean/api_client/models/clustergroup.py | 14 +- .../api_client/models/clustertypeenum.py | 3 +- src/glean/api_client/models/code.py | 2 +- src/glean/api_client/models/codeline.py | 2 +- src/glean/api_client/models/collection.py | 2 +- .../api_client/models/collectionerror.py | 13 +- src/glean/api_client/models/collectionitem.py | 16 +- .../models/collectionitemdescriptor.py | 2 +- .../models/collectionpinnablecategories.py | 3 +- .../models/collectionpinnabletargets.py | 3 +- .../models/collectionpinnedmetadata.py | 2 +- .../api_client/models/collectionpintarget.py | 23 +- .../api_client/models/commentdefinition.py | 2 +- .../api_client/models/communicationchannel.py | 3 +- src/glean/api_client/models/company.py | 2 +- src/glean/api_client/models/conferencedata.py | 27 +- .../api_client/models/configurationvalue.py | 49 + src/glean/api_client/models/connectortype.py | 3 +- .../api_client/models/contentdefinition.py | 2 +- src/glean/api_client/models/countinfo.py | 2 +- .../api_client/models/createannouncementop.py | 2 +- .../models/createannouncementrequest.py | 2 +- src/glean/api_client/models/createanswerop.py | 2 +- .../api_client/models/createcollectionop.py | 6 +- .../models/createcollectionrequest.py | 2 +- .../models/createdlpreportrequest.py | 14 +- .../models/createdlpreportresponse.py | 2 +- .../api_client/models/createshortcutop.py | 2 +- .../models/createshortcutresponse.py | 2 +- .../api_client/models/currentactiveusers.py | 2 +- .../models/customdatasourceconfig.py | 29 +- .../api_client/models/customdatavalue.py | 2 +- src/glean/api_client/models/customentity.py | 2 +- .../api_client/models/customentitymetadata.py | 2 +- src/glean/api_client/models/customer.py | 2 +- .../api_client/models/customermetadata.py | 2 +- .../api_client/models/customfielddata.py | 2 +- .../models/customfieldvaluehyperlink.py | 2 +- .../models/customfieldvalueperson.py | 2 +- .../api_client/models/customfieldvaluestr.py | 2 +- src/glean/api_client/models/customproperty.py | 2 +- .../models/customsensitiveexpression.py | 2 +- .../api_client/models/customsensitiverule.py | 25 +- .../models/customsensitiveruletype.py | 3 +- .../datasourcebulkmembershipdefinition.py | 2 +- .../models/datasourceconfigurationresponse.py | 23 + .../models/datasourceinstanceconfiguration.py | 21 + .../models/datasourcemembershipdefinition.py | 2 +- .../datasourceobjecttypedocumentcountentry.py | 2 +- .../api_client/models/datasourceprofile.py | 2 +- .../models/datasourceuserdefinition.py | 2 +- ...tasourcestatusidentityresponsecomponent.py | 4 +- .../models/debugdatasourcestatusresponse.py | 22 +- .../models/debugdocumentresponse.py | 2 +- .../models/debugdocumentsresponse.py | 2 +- .../models/debugdocumentsresponseitem.py | 2 +- .../api_client/models/debuguserresponse.py | 2 +- .../api_client/models/deleteallchatsop.py | 2 +- .../api_client/models/deleteannouncementop.py | 2 +- src/glean/api_client/models/deleteanswerop.py | 2 +- .../api_client/models/deleteanswerrequest.py | 2 +- .../api_client/models/deletechatfilesop.py | 2 +- src/glean/api_client/models/deletechatsop.py | 2 +- .../models/deletecollectionitemop.py | 2 +- .../models/deletecollectionitemrequest.py | 2 +- .../models/deletecollectionitemresponse.py | 2 +- .../api_client/models/deletecollectionop.py | 2 +- .../models/deletecollectionrequest.py | 2 +- .../models/deletedocumentrequest.py | 2 +- .../models/deleteemployeerequest.py | 2 +- .../api_client/models/deletegrouprequest.py | 2 +- .../models/deletemembershiprequest.py | 2 +- .../api_client/models/deleteshortcutop.py | 2 +- .../api_client/models/deleteuserrequest.py | 2 +- src/glean/api_client/models/digest.py | 2 +- src/glean/api_client/models/digestsection.py | 14 +- src/glean/api_client/models/digestupdate.py | 14 +- src/glean/api_client/models/disambiguation.py | 14 +- .../models/displayablelistitemuiconfig.py | 2 +- src/glean/api_client/models/dlpconfig.py | 2 +- .../models/dlpexportfindingsrequest.py | 2 +- .../api_client/models/dlpfindingfilter.py | 14 +- src/glean/api_client/models/dlpfrequency.py | 3 +- src/glean/api_client/models/dlpperson.py | 2 +- .../api_client/models/dlppersonmetadata.py | 2 +- src/glean/api_client/models/dlpreport.py | 34 +- .../api_client/models/dlpreportstatus.py | 3 +- src/glean/api_client/models/dlpseverity.py | 3 +- .../api_client/models/dlpsimpleresult.py | 3 +- src/glean/api_client/models/document.py | 14 +- .../api_client/models/documentcontent.py | 2 +- .../api_client/models/documentdefinition.py | 2 +- .../api_client/models/documentinteractions.py | 2 +- .../models/documentinteractionsdefinition.py | 2 +- .../api_client/models/documentmetadata.py | 14 +- .../models/documentpermissionsdefinition.py | 2 +- .../api_client/models/documentsection.py | 2 +- .../api_client/models/documentspec_union.py | 29 +- .../models/documentstatusresponse.py | 2 +- .../api_client/models/documentvisibility.py | 3 +- .../models/documentvisibilityoverride.py | 16 +- .../models/documentvisibilityupdateresult.py | 16 +- src/glean/api_client/models/editanswerop.py | 2 +- .../api_client/models/editanswerrequest.py | 2 +- .../api_client/models/editcollectionitemop.py | 2 +- .../models/editcollectionitemrequest.py | 2 +- .../models/editcollectionitemresponse.py | 2 +- .../api_client/models/editcollectionop.py | 2 +- .../models/editcollectionrequest.py | 2 +- .../models/editcollectionresponse.py | 16 +- src/glean/api_client/models/editpinop.py | 2 +- src/glean/api_client/models/editpinrequest.py | 2 +- .../models/employeeinfodefinition.py | 2 +- .../api_client/models/employeeteaminfo.py | 2 +- .../api_client/models/entitiessortorder.py | 3 +- src/glean/api_client/models/entitytype.py | 3 +- src/glean/api_client/models/errormessage.py | 2 +- .../api_client/models/eventclassification.py | 2 +- .../api_client/models/eventstrategyname.py | 3 +- src/glean/api_client/models/exportinfo.py | 16 +- .../models/externalsharingoptions.py | 2 +- .../api_client/models/externalshortcut.py | 2 +- src/glean/api_client/models/extractedqna.py | 2 +- src/glean/api_client/models/facetbucket.py | 2 +- .../api_client/models/facetbucketfilter.py | 2 +- src/glean/api_client/models/facetfilter.py | 2 +- src/glean/api_client/models/facetfilterset.py | 2 +- .../api_client/models/facetfiltervalue.py | 16 +- src/glean/api_client/models/facetresult.py | 2 +- src/glean/api_client/models/facetvalue.py | 2 +- src/glean/api_client/models/favoriteinfo.py | 14 +- src/glean/api_client/models/feedback.py | 2 +- .../api_client/models/feedbackchatexchange.py | 4 +- src/glean/api_client/models/feedbackop.py | 2 +- src/glean/api_client/models/feedentry.py | 18 +- src/glean/api_client/models/feedop.py | 2 +- src/glean/api_client/models/feedrequest.py | 2 +- .../api_client/models/feedrequestoptions.py | 4 +- src/glean/api_client/models/feedresponse.py | 2 +- src/glean/api_client/models/feedresult.py | 16 +- src/glean/api_client/models/followupaction.py | 2 +- .../api_client/models/generatedattachment.py | 14 +- .../models/generatedattachmentcontent.py | 2 +- src/glean/api_client/models/generatedqna.py | 16 +- .../models/get_rest_api_v1_tools_listop.py | 2 +- src/glean/api_client/models/getagentop.py | 2 +- .../api_client/models/getagentschemasop.py | 2 +- src/glean/api_client/models/getanswererror.py | 16 +- src/glean/api_client/models/getanswerop.py | 2 +- .../api_client/models/getanswerrequest.py | 2 +- .../api_client/models/getanswerresponse.py | 2 +- .../api_client/models/getchatapplicationop.py | 2 +- .../models/getchatapplicationresponse.py | 2 +- src/glean/api_client/models/getchatfilesop.py | 2 +- .../api_client/models/getchatfilesresponse.py | 2 +- src/glean/api_client/models/getchatop.py | 2 +- .../api_client/models/getchatresponse.py | 2 +- .../api_client/models/getcollectionop.py | 2 +- .../api_client/models/getcollectionrequest.py | 2 +- .../models/getcollectionresponse.py | 2 +- .../getdatasourceinstanceconfigurationop.py | 30 + .../api_client/models/getdlpreportresponse.py | 2 +- .../api_client/models/getdocpermissionsop.py | 2 +- .../models/getdocpermissionsrequest.py | 2 +- .../models/getdocpermissionsresponse.py | 2 +- .../models/getdocumentcountresponse.py | 2 +- .../models/getdocumentsbyfacetsop.py | 2 +- .../models/getdocumentsbyfacetsrequest.py | 2 +- .../models/getdocumentsbyfacetsresponse.py | 2 +- src/glean/api_client/models/getdocumentsop.py | 2 +- .../api_client/models/getdocumentsrequest.py | 2 +- .../api_client/models/getdocumentsresponse.py | 2 +- .../models/getdocumentstatusresponse.py | 2 +- .../getdocumentvisibilityoverridesresponse.py | 2 +- .../api_client/models/getdocvisibilityop.py | 2 +- src/glean/api_client/models/getpinop.py | 2 +- src/glean/api_client/models/getpinrequest.py | 2 +- src/glean/api_client/models/getpinresponse.py | 2 +- src/glean/api_client/models/getpolicyop.py | 2 +- src/glean/api_client/models/getshortcutop.py | 2 +- .../api_client/models/getshortcutresponse.py | 2 +- .../api_client/models/getusercountresponse.py | 2 +- .../models/gleanassistinsightsresponse.py | 2 +- src/glean/api_client/models/gleandataerror.py | 21 +- .../api_client/models/grantpermission.py | 14 +- src/glean/api_client/models/group.py | 14 +- src/glean/api_client/models/grouptype.py | 3 +- src/glean/api_client/models/hotword.py | 2 +- .../api_client/models/hotwordproximity.py | 2 +- src/glean/api_client/models/iconconfig.py | 16 +- .../api_client/models/indexdocumentrequest.py | 2 +- .../models/indexdocumentsrequest.py | 2 +- .../api_client/models/indexemployeerequest.py | 2 +- .../api_client/models/indexgrouprequest.py | 2 +- .../api_client/models/indexingshortcut.py | 2 +- .../models/indexmembershiprequest.py | 2 +- src/glean/api_client/models/indexstatus.py | 2 +- .../api_client/models/indexteamrequest.py | 2 +- .../api_client/models/indexuserrequest.py | 2 +- src/glean/api_client/models/inputoptions.py | 27 +- .../models/insightsassistantrequest.py | 2 +- .../api_client/models/insightschatsummary.py | 2 +- src/glean/api_client/models/insightsop.py | 2 +- .../models/insightsoverviewrequest.py | 2 +- .../models/insightsoverviewresponse.py | 2 +- .../api_client/models/insightsrequest.py | 2 +- .../api_client/models/insightsresponse.py | 2 +- .../models/insightssearchsummary.py | 2 +- .../models/invalidoperatorvalueerror.py | 2 +- src/glean/api_client/models/inviteinfo.py | 6 +- .../api_client/models/labeledcountinfo.py | 2 +- src/glean/api_client/models/listanswersop.py | 2 +- .../api_client/models/listanswersrequest.py | 2 +- src/glean/api_client/models/listchatsop.py | 2 +- .../api_client/models/listchatsresponse.py | 9 +- .../api_client/models/listcollectionsop.py | 2 +- .../models/listcollectionsrequest.py | 2 +- .../models/listdlpfindingsexportsresponse.py | 2 +- .../models/listdlpreportsresponse.py | 2 +- src/glean/api_client/models/listentitiesop.py | 2 +- .../api_client/models/listentitiesrequest.py | 2 +- .../api_client/models/listentitiesresponse.py | 2 +- src/glean/api_client/models/listpinsop.py | 2 +- src/glean/api_client/models/listpoliciesop.py | 2 +- .../api_client/models/listshortcutsop.py | 2 +- .../models/listshortcutspaginatedrequest.py | 2 +- .../models/listshortcutspaginatedresponse.py | 2 +- .../api_client/models/listverificationsop.py | 2 +- .../api_client/models/manualfeedbackinfo.py | 2 +- .../models/manualfeedbacksidebysideinfo.py | 2 +- src/glean/api_client/models/meeting.py | 2 +- src/glean/api_client/models/message.py | 2 +- src/glean/api_client/models/messagesop.py | 2 +- .../api_client/models/messagesrequest.py | 2 +- .../api_client/models/messagesresponse.py | 2 +- .../api_client/models/objectdefinition.py | 16 +- .../api_client/models/objectpermissions.py | 2 +- .../api_client/models/operatormetadata.py | 16 +- src/glean/api_client/models/operatorscope.py | 2 +- src/glean/api_client/models/peopleop.py | 2 +- src/glean/api_client/models/peoplerequest.py | 2 +- src/glean/api_client/models/peopleresponse.py | 2 +- .../api_client/models/peragentinsight.py | 2 +- src/glean/api_client/models/period.py | 2 +- src/glean/api_client/models/permissions.py | 2 +- .../permissionsgroupintersectiondefinition.py | 2 +- src/glean/api_client/models/person.py | 2 +- src/glean/api_client/models/personmetadata.py | 16 +- src/glean/api_client/models/personteam.py | 16 +- .../models/persontoteamrelationship.py | 16 +- .../models/peruserassistantinsight.py | 2 +- src/glean/api_client/models/peruserinsight.py | 2 +- src/glean/api_client/models/pindocument.py | 2 +- src/glean/api_client/models/pinop.py | 2 +- src/glean/api_client/models/pinrequest.py | 2 +- src/glean/api_client/models/possiblevalue.py | 2 +- .../models/processalldocumentsrequest.py | 2 +- .../models/processallmembershipsrequest.py | 2 +- .../models/processinghistoryevent.py | 2 +- src/glean/api_client/models/prompttemplate.py | 2 +- .../api_client/models/prompttemplateresult.py | 2 +- .../api_client/models/propertydefinition.py | 27 +- src/glean/api_client/models/propertygroup.py | 2 +- .../api_client/models/querysuggestion.py | 2 +- .../api_client/models/querysuggestionlist.py | 2 +- src/glean/api_client/models/quicklink.py | 5 +- src/glean/api_client/models/reaction.py | 2 +- src/glean/api_client/models/readpermission.py | 14 +- .../api_client/models/recommendationsop.py | 2 +- .../models/recommendationsrequest.py | 2 +- .../models/recommendationsrequestoptions.py | 2 +- src/glean/api_client/models/referencerange.py | 2 +- .../api_client/models/relateddocuments.py | 16 +- src/glean/api_client/models/relatedobject.py | 4 +- .../api_client/models/relatedobjectedge.py | 2 +- .../api_client/models/relatedquestion.py | 2 +- src/glean/api_client/models/reminder.py | 2 +- .../api_client/models/reminderrequest.py | 2 +- .../api_client/models/reportstatusresponse.py | 16 +- .../api_client/models/restrictionfilters.py | 2 +- .../api_client/models/resultsdescription.py | 2 +- .../api_client/models/resultsresponse.py | 2 +- src/glean/api_client/models/resulttab.py | 2 +- .../api_client/models/rotatetokenresponse.py | 2 +- src/glean/api_client/models/scopetype.py | 3 +- .../api_client/models/searchagentsrequest.py | 2 +- .../api_client/models/searchagentsresponse.py | 2 +- src/glean/api_client/models/searchop.py | 2 +- .../api_client/models/searchproviderinfo.py | 2 +- src/glean/api_client/models/searchrequest.py | 2 +- .../models/searchrequestinputdetails.py | 2 +- .../api_client/models/searchrequestoptions.py | 5 +- src/glean/api_client/models/searchresponse.py | 2 +- .../models/searchresponsemetadata.py | 2 +- src/glean/api_client/models/searchresult.py | 23 +- .../models/searchresultprominenceenum.py | 3 +- .../api_client/models/searchresultsnippet.py | 24 +- src/glean/api_client/models/searchwarning.py | 16 +- src/glean/api_client/models/sectiontype.py | 3 +- src/glean/api_client/models/security.py | 2 +- .../api_client/models/seenfeedbackinfo.py | 2 +- .../models/sensitivecontentoptions.py | 2 +- .../api_client/models/sensitiveexpression.py | 2 +- .../api_client/models/sensitiveinfotype.py | 16 +- src/glean/api_client/models/sessioninfo.py | 2 +- src/glean/api_client/models/share.py | 2 +- src/glean/api_client/models/sharingoptions.py | 2 +- src/glean/api_client/models/shortcut.py | 2 +- src/glean/api_client/models/shortcuterror.py | 16 +- .../models/shortcutmutableproperties.py | 2 +- .../models/shortcutspaginationmetadata.py | 2 +- .../models/sidebysideimplementation.py | 4 +- src/glean/api_client/models/socialnetwork.py | 2 +- .../models/socialnetworkdefinition.py | 2 +- src/glean/api_client/models/sortoptions.py | 2 +- src/glean/api_client/models/structuredlink.py | 2 +- .../api_client/models/structuredlocation.py | 2 +- .../api_client/models/structuredresult.py | 27 +- src/glean/api_client/models/structuredtext.py | 2 +- .../api_client/models/structuredtextitem.py | 2 +- src/glean/api_client/models/summarizeop.py | 2 +- .../api_client/models/summarizerequest.py | 2 +- .../api_client/models/summarizeresponse.py | 4 +- src/glean/api_client/models/summary.py | 2 +- src/glean/api_client/models/team.py | 16 +- src/glean/api_client/models/teamemail.py | 2 +- .../api_client/models/teaminfodefinition.py | 2 +- src/glean/api_client/models/teammember.py | 2 +- src/glean/api_client/models/textrange.py | 16 +- src/glean/api_client/models/thumbnail.py | 2 +- src/glean/api_client/models/timepoint.py | 2 +- src/glean/api_client/models/timerange.py | 2 +- .../api_client/models/timerangefilter.py | 16 +- src/glean/api_client/models/tool.py | 16 +- src/glean/api_client/models/toolinfo.py | 2 +- src/glean/api_client/models/toolmetadata.py | 49 +- src/glean/api_client/models/toolparameter.py | 16 +- .../api_client/models/toolscallparameter.py | 2 +- .../api_client/models/toolscallresponse.py | 2 +- src/glean/api_client/models/toolsets.py | 2 +- .../api_client/models/toolslistresponse.py | 2 +- src/glean/api_client/models/ugctype.py | 3 +- .../models/unauthorizeddatasourceinstance.py | 14 +- src/glean/api_client/models/unpin.py | 2 +- src/glean/api_client/models/unpinop.py | 2 +- .../api_client/models/updateannouncementop.py | 2 +- .../models/updateannouncementrequest.py | 2 +- .../updatedatasourceconfigurationrequest.py | 23 + ...updatedatasourceinstanceconfigurationop.py | 42 + .../models/updatedlpconfigrequest.py | 2 +- .../models/updatedlpconfigresponse.py | 14 +- .../models/updatedlpreportrequest.py | 23 +- .../models/updatedlpreportresponse.py | 14 +- ...pdatedocumentvisibilityoverridesrequest.py | 2 +- ...datedocumentvisibilityoverridesresponse.py | 2 +- .../models/updatepermissionsrequest.py | 2 +- .../api_client/models/updateshortcutop.py | 2 +- .../models/updateshortcutrequest.py | 2 +- .../models/updateshortcutresponse.py | 2 +- src/glean/api_client/models/updatetype.py | 3 +- .../api_client/models/uploadchatfilesop.py | 2 +- .../models/uploadchatfilesrequest.py | 2 +- .../models/uploadchatfilesresponse.py | 2 +- .../models/uploadshortcutsrequest.py | 2 +- .../api_client/models/uploadstatusenum.py | 3 +- src/glean/api_client/models/user.py | 2 +- src/glean/api_client/models/useractivity.py | 16 +- .../api_client/models/useractivityinsight.py | 16 +- .../models/usergeneratedcontentid.py | 2 +- .../models/userreferencedefinition.py | 2 +- src/glean/api_client/models/userrole.py | 3 +- .../models/userrolespecification.py | 14 +- .../api_client/models/userstatusresponse.py | 14 +- src/glean/api_client/models/userviewinfo.py | 2 +- src/glean/api_client/models/verification.py | 16 +- .../api_client/models/verificationfeed.py | 2 +- .../api_client/models/verificationmetadata.py | 2 +- src/glean/api_client/models/verifyop.py | 2 +- src/glean/api_client/models/verifyrequest.py | 2 +- src/glean/api_client/models/viewerinfo.py | 16 +- src/glean/api_client/models/workflow.py | 2 +- .../api_client/models/workflowfeedbackinfo.py | 2 +- .../api_client/models/writeactionparameter.py | 16 +- .../api_client/models/writepermission.py | 14 +- src/glean/api_client/people.py | 10 +- src/glean/api_client/sdk.py | 6 +- tests/mockserver/go.mod | 3 +- tests/mockserver/go.sum | 2 + .../internal/handler/generated_handlers.go | 2 + ...asourcesdatasourceidinstancesinstanceid.go | 68 + ...asourcesdatasourceidinstancesinstanceid.go | 71 + .../pathpostrestapiv1addcollectionitems.go | 2 +- ...athpostrestapiv1addverificationreminder.go | 2 +- .../handler/pathpostrestapiv1adminsearch.go | 4 +- .../pathpostrestapiv1createannouncement.go | 2 +- .../handler/pathpostrestapiv1createanswer.go | 4 +- .../pathpostrestapiv1createcollection.go | 20 +- .../pathpostrestapiv1deletecollectionitem.go | 2 +- .../handler/pathpostrestapiv1editanswer.go | 4 +- .../pathpostrestapiv1editcollectionitem.go | 2 +- .../handler/pathpostrestapiv1editpin.go | 2 +- .../handler/pathpostrestapiv1getanswer.go | 2 +- .../handler/pathpostrestapiv1getchat.go | 6 +- .../handler/pathpostrestapiv1getcollection.go | 2 +- .../pathpostrestapiv1getdocumentsbyfacets.go | 2 +- .../handler/pathpostrestapiv1getpin.go | 2 +- .../handler/pathpostrestapiv1listanswers.go | 2 +- .../handler/pathpostrestapiv1listchats.go | 2 +- .../pathpostrestapiv1listcollections.go | 2 +- .../handler/pathpostrestapiv1listentities.go | 2 +- .../handler/pathpostrestapiv1listpins.go | 2 +- .../pathpostrestapiv1listverifications.go | 2 +- .../handler/pathpostrestapiv1messages.go | 4 +- .../handler/pathpostrestapiv1people.go | 2 +- .../internal/handler/pathpostrestapiv1pin.go | 2 +- .../pathpostrestapiv1recommendations.go | 2 +- .../handler/pathpostrestapiv1search.go | 4 +- .../pathpostrestapiv1updateannouncement.go | 2 +- .../handler/pathpostrestapiv1verify.go | 2 +- .../sdk/models/components/actionsummary.go | 54 + .../sdk/models/components/authconfig.go | 9 + .../models/components/autocompleteresponse.go | 8 +- .../sdk/models/components/chatresponse.go | 10 - .../models/components/configurationvalue.go | 25 + .../datasourceconfigurationresponse.go | 16 + .../datasourceinstanceconfiguration.go | 16 + .../sdk/models/components/gleandataerror.go | 10 - .../sdk/models/components/inviteinfo.go | 4 +- .../models/components/listchatsresponse.go | 9 + .../sdk/models/components/resultsresponse.go | 6 +- .../sdk/models/components/searchresponse.go | 6 +- .../models/components/searchresultsnippet.go | 10 +- .../updatedatasourceconfigurationrequest.go | 16 + .../getdatasourceinstanceconfiguration.go | 48 + .../updatedatasourceinstanceconfiguration.go | 56 + .../sdk/models/sdkerrors/errorresponse.go | 22 + .../sdk/models/sdkerrors/gleandataerror.go | 7 +- .../sdk/optionalnullable/optionalnullable.go | 250 ++ .../optionalnullable/optionalnullable_test.go | 1859 ++++++++++++ tests/mockserver/internal/sdk/utils/json.go | 12 +- .../mockserver/internal/sdk/utils/reflect.go | 4 +- tests/test_datasources.py | 36 + tests/test_messages.py | 2 +- tests/test_summarize.py | 7 +- 686 files changed, 8882 insertions(+), 2544 deletions(-) create mode 100644 docs/errors/errorresponse.md create mode 100644 docs/models/configurationvalue.md create mode 100644 docs/models/datasourceconfigurationresponse.md create mode 100644 docs/models/datasourceinstanceconfiguration.md create mode 100644 docs/models/getdatasourceinstanceconfigurationrequest.md create mode 100644 docs/models/updatedatasourceconfigurationrequest.md create mode 100644 docs/models/updatedatasourceinstanceconfigurationrequest.md create mode 100644 docs/sdks/indexingdatasources/README.md create mode 100644 src/glean/api_client/errors/errorresponse.py create mode 100644 src/glean/api_client/indexing_datasources.py create mode 100644 src/glean/api_client/models/configurationvalue.py create mode 100644 src/glean/api_client/models/datasourceconfigurationresponse.py create mode 100644 src/glean/api_client/models/datasourceinstanceconfiguration.py create mode 100644 src/glean/api_client/models/getdatasourceinstanceconfigurationop.py create mode 100644 src/glean/api_client/models/updatedatasourceconfigurationrequest.py create mode 100644 src/glean/api_client/models/updatedatasourceinstanceconfigurationop.py create mode 100644 tests/mockserver/internal/handler/pathgetrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go create mode 100644 tests/mockserver/internal/handler/pathpatchrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go create mode 100644 tests/mockserver/internal/sdk/models/components/configurationvalue.go create mode 100644 tests/mockserver/internal/sdk/models/components/datasourceconfigurationresponse.go create mode 100644 tests/mockserver/internal/sdk/models/components/datasourceinstanceconfiguration.go create mode 100644 tests/mockserver/internal/sdk/models/components/updatedatasourceconfigurationrequest.go create mode 100644 tests/mockserver/internal/sdk/models/operations/getdatasourceinstanceconfiguration.go create mode 100644 tests/mockserver/internal/sdk/models/operations/updatedatasourceinstanceconfiguration.go create mode 100644 tests/mockserver/internal/sdk/models/sdkerrors/errorresponse.go create mode 100644 tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go create mode 100644 tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 0cfbc743..8e553e3c 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,47 +1,47 @@ lockVersion: 2.0.0 id: 3e3290ca-0ee8-4981-b1bc-14536048fa63 management: - docChecksum: 168d09185da75c45f6edca32cb2bc2dd + docChecksum: b320c2a858de734c4f4641eb2db4e847 docVersion: 0.9.0 - speakeasyVersion: 1.722.7 - generationVersion: 2.832.9 - releaseVersion: 0.12.8 - configChecksum: 50bf621427a8287d9ca62293e512f86a + speakeasyVersion: 1.749.0 + generationVersion: 2.855.2 + releaseVersion: 0.12.9 + configChecksum: 7fcb9aea80caa0123a1d1b4b07dfed9b repoURL: https://github.com/gleanwork/api-client-python.git installationURL: https://github.com/gleanwork/api-client-python.git published: true persistentEdits: - generation_id: bcf8dca0-d5eb-40ce-a204-2aa32fe24c88 - pristine_commit_hash: 41297bcf79da7abf5156c3d09490fd4236aff892 - pristine_tree_hash: 639a9981217f2ac59f39e86a5e053a64e33f9fbe + generation_id: 565b875b-0a83-433a-954e-91c5a7ee094e + pristine_commit_hash: c90b362b8719980ea8533be65677a4d3ac4dc2e5 + pristine_tree_hash: b348f9a15a9220165530be228024aafb25888140 features: python: additionalDependencies: 1.0.0 additionalProperties: 1.0.1 configurableModuleName: 0.2.0 - constsAndDefaults: 1.0.6 - core: 6.0.11 + constsAndDefaults: 1.0.7 + core: 6.0.16 defaultEnabledRetries: 0.2.0 deprecations: 3.0.2 devContainers: 3.0.0 - enumUnions: 0.1.0 + enumUnions: 0.1.1 envVarSecurityUsage: 0.3.2 - examples: 3.0.2 + examples: 3.0.3 flatRequests: 1.0.1 flattening: 3.1.1 globalSecurity: 3.0.5 globalSecurityCallbacks: 1.0.0 globalSecurityFlattening: 1.0.0 - globalServerURLs: 3.2.0 + globalServerURLs: 3.2.1 groups: 3.0.1 methodArguments: 1.0.2 mockServer: 0.1.1 multipartFileContentType: 1.0.0 - nameOverrides: 3.0.1 + nameOverrides: 3.0.3 responseFormat: 1.1.0 retries: 3.0.4 sdkHooks: 1.2.1 - tests: 1.19.7 + tests: 1.19.9 unions: 3.1.4 uploadStreams: 1.0.0 trackedFiles: @@ -73,30 +73,34 @@ trackedFiles: id: 3d0bc04308fd last_write_checksum: sha1:b0c6864817dbdc3bde8fee4a1e142d51e89f781c pristine_git_object: a6800fed5ba94f25934cdd5b8fe3fa6832f51239 + docs/errors/errorresponse.md: + id: 910ef333346b + last_write_checksum: sha1:1f4ebb1db37a510e68d02e7f1f5b7b2fd63c0311 + pristine_git_object: 7ac30077e52db91693472ff9b82ee421d24014d5 docs/errors/gleandataerror.md: id: d8679ae13234 - last_write_checksum: sha1:3183d01d67f7287140f55de2737e649e7ce32ec9 - pristine_git_object: 4ea69fbe9f4add8572cfe6c755aca8fe1d2ba11e + last_write_checksum: sha1:a6567c83c6c0bf8eaed55f50af08001869d6a5de + pristine_git_object: 7c4c0d90fd0a2de3e48b99ce691c1e9a6ab03041 docs/models/actionsummary.md: id: 1ff225176066 - last_write_checksum: sha1:278bb81fcc7b886e7f2c7d04112cdd1adaf6492f - pristine_git_object: 3bf02ee017770a749252e2af6370bdd8b7904323 + last_write_checksum: sha1:e1adfabd2ed131a1414cb6b86495ad3116bb95df + pristine_git_object: fc60149cf9a0bc37e5609f6e1fd7534719980775 docs/models/activity.md: id: 78c9fe854b65 last_write_checksum: sha1:2bb3d1005124784d416910cff9777277facaebb2 pristine_git_object: d76ec39a136065ebc4abb068f012772760b691f9 docs/models/activityenum.md: id: e83caa6309bf - last_write_checksum: sha1:1bd70a0c6c402c10746be7a11f493a7cb1573ee7 - pristine_git_object: 249769c9314576554dcff1826d1d0823c7c31fc3 + last_write_checksum: sha1:dada375bf3ce6404db82354f2dffb0223e2bdab2 + pristine_git_object: 7e266e5547286d204720d0043374d5cf7bb7a65a docs/models/activityevent.md: id: 6fb2935f5fd2 last_write_checksum: sha1:ea2d439de41f2a481aa341f7337da1a9a9c451cb pristine_git_object: 6a4f00ff713a5a99f8006722c0e6847ed5941434 docs/models/activityeventaction.md: id: 8b40a2a5c7b3 - last_write_checksum: sha1:862e596ac515d66fed8b3f0aecb1a07db43c7a46 - pristine_git_object: d364b2f618ea82202976f354f4a1ce5eb5df320b + last_write_checksum: sha1:53a8104830b267072a14c0019d9e31beb6d2fcd5 + pristine_git_object: f2a30c1b9f3709f477f22f3a1507377ccb35e607 docs/models/activityeventparams.md: id: 45b35cfb2c89 last_write_checksum: sha1:c800299d146bf1563b15d48d47536abe1e1a021b @@ -107,8 +111,8 @@ trackedFiles: pristine_git_object: 31aa0600e412c0b6eae303d6ce4ff6a152f865bf docs/models/addcollectionitemserrorerrortype.md: id: 19bb11e23f98 - last_write_checksum: sha1:9b25446aefc18b4ea83a19bced450488b108dff8 - pristine_git_object: da1476fc245c3008f35dbfdb2ddd9a1e5c2e6544 + last_write_checksum: sha1:e8bbe6534ff70b1b2af9d28b4c8cb973740c7590 + pristine_git_object: 8a36415e53e937ea4f503df9a7f21c1595adcc49 docs/models/addcollectionitemsrequest.md: id: 77be3840df27 last_write_checksum: sha1:d3c2c8791ea4ad38979641f79b12473d5ef7b6af @@ -147,12 +151,12 @@ trackedFiles: pristine_git_object: a1664d98b1a9d02c1b2aa5fc8ec85a9bcdfc89e8 docs/models/agentenum.md: id: 1209c0033b50 - last_write_checksum: sha1:dee6147d8dec8665c584e1043096a012617d4917 - pristine_git_object: 2d52ff0296c170a67efa9e459d84ccbadfebc14c + last_write_checksum: sha1:ded3d81b230238d759bc5f0a1a9de8b8cfb399d2 + pristine_git_object: 561a7e7728db00d22208921c69d8ae9389e63774 docs/models/agentexecutionstatus.md: id: 4087123e1461 - last_write_checksum: sha1:bf35b6315cf3654117a529a944215bc366d133cd - pristine_git_object: c1bd49e6e3a94b09b3268bf6df07d3e0367070a4 + last_write_checksum: sha1:a7b37e7351ffaa54aa2384af4ffba8fc95fe9cee + pristine_git_object: d15717b2f9659e4aefbdf8e1560adb663102b0df docs/models/agentmetadata.md: id: 73ecfb89f67c last_write_checksum: sha1:0695be39013d7ee099dd77e65f5ef57bb97a3019 @@ -199,12 +203,12 @@ trackedFiles: pristine_git_object: dc590582264ec5e212808b30f60cb17b4a9ea024 docs/models/announcementchannel.md: id: 77e2f76c4a55 - last_write_checksum: sha1:db6dade7143f3a315bab7672c0083e1a3953fc55 - pristine_git_object: 17d0d36c5df3d8f789b3c3160c6c7f9cacaf2397 + last_write_checksum: sha1:e910c9e0f9bbde66ce0aefbb97f63263ae9be9c6 + pristine_git_object: cf846a339de5fab4017d9608d68d6e3e34a6dab0 docs/models/announcementposttype.md: id: 06f56ae76086 - last_write_checksum: sha1:421f88a4b7042b5987d783190241876440efb96f - pristine_git_object: 4fdf8058bb32d91e36d96ba1f1b54f4259914807 + last_write_checksum: sha1:c417ea9c3d3d0d397aff39310fec7bb6a6631f09 + pristine_git_object: cd25f0b90e6ef3586645ad5340e1a217083c5616 docs/models/announcementviewerinfo.md: id: 94b4b32f9d1b last_write_checksum: sha1:ead129b26d41a570bfb6c1b7aa789428140be339 @@ -215,8 +219,8 @@ trackedFiles: pristine_git_object: 7d8f1d017e4ffb671bf8037fbd6c156b433cc994 docs/models/anonymouseventeventtype.md: id: 8a14e5a8a712 - last_write_checksum: sha1:1336017c5a83d593f71ee775e1284064533c87e8 - pristine_git_object: c49c89c1b10a8731b3cd8d101fcf771dcf5eabd4 + last_write_checksum: sha1:f8aa5517148368188aed5be9784e76ac0ea510d6 + pristine_git_object: 484b59b07d1e829e2a31d7f3bcfd5c27b885630b docs/models/answer.md: id: 9ac735faad2d last_write_checksum: sha1:881abf7b8b3322f035dd0d258caaf51807ff5a72 @@ -227,8 +231,8 @@ trackedFiles: pristine_git_object: d9670acef650c59dfe7f0983b20c25ed6484cdf0 docs/models/answercreationdatasourcetype.md: id: 28abe8879511 - last_write_checksum: sha1:e6ed750ae063051f6b1fdd218cb521750c32ff44 - pristine_git_object: a3a2a0c09a4a9e284dd13ac13bd3d55aa9ae0b56 + last_write_checksum: sha1:42b03ea1b83924b05562f4d747ebe0deea555e72 + pristine_git_object: 2290212184627ae706a1b6d643b9ad048401ca9e docs/models/answerlike.md: id: fc0e3d3a62ee last_write_checksum: sha1:299e5a0177a6fa19ac83fbb53bf4185edc0b4327 @@ -243,8 +247,8 @@ trackedFiles: pristine_git_object: ef148e0a37abcea5520495c9e5897ad807541a24 docs/models/answersourcetype.md: id: ac6a657e8c7d - last_write_checksum: sha1:b8d33691e0cc34606e0ad8b4ae72ee7f3273fc99 - pristine_git_object: 052e5e4e097461800046b3263257d7abdcdb81c3 + last_write_checksum: sha1:e30431477256685c99a486eda882442270d5fdaa + pristine_git_object: 6de6108904db7850847317149806fbb54575d037 docs/models/appresult.md: id: 333a2b7c460c last_write_checksum: sha1:f9779ac516afac0d0cab5f0a9e4993b5e305f413 @@ -255,32 +259,32 @@ trackedFiles: pristine_git_object: 022c4ee4c9a283e7da5cb032c267577bd95cfba3 docs/models/authconfig.md: id: fbdae66f0362 - last_write_checksum: sha1:57f9fce2f290544135dae7f3d1ebdb55b1cf0eb6 - pristine_git_object: 4f7c019155bf58fe8322b2658cf2a5a0a3db856c + last_write_checksum: sha1:2061e1df46def924a504b7bccf89cd2f408059fc + pristine_git_object: 27e35de0f1bb6869a3c1c53979c4e906b2fa3ce6 docs/models/authconfigstatus.md: id: faed76680e4f - last_write_checksum: sha1:fd9ee4966ba3c2fff11a55dbc622c0e136218e11 - pristine_git_object: 60f45500e7b6bd289418735ce851c98a110f4a07 + last_write_checksum: sha1:b4337cf080b32707bf4d897552f3433ecd409f5b + pristine_git_object: 62132edb9479509e8474df1dc15ca34a209480e1 docs/models/authconfigtype.md: id: 631104fca2c6 - last_write_checksum: sha1:e597bfec95f9984d827b159271b24425ecd5cfa4 - pristine_git_object: 03e3f1134fa828af826475529520a1b3f489f630 + last_write_checksum: sha1:cf868619375d419c3e69d7b536c2a9bd58975734 + pristine_git_object: 0427eb93de1eeb4305c60569a4c72c92987de17d docs/models/author.md: id: b4139065dbed - last_write_checksum: sha1:a84ab82dff8606837d477f07ad83dbe0a8c04a54 - pristine_git_object: d936487d9cffa5693f8c6e4860f37669c238a752 + last_write_checksum: sha1:015462f693083cc40f7c88d90621ec5613fcd98a + pristine_git_object: 9145b8660b04968e115355c7cfa85711040d1bf2 docs/models/authstatus.md: id: a3855939ee61 - last_write_checksum: sha1:d3af97afc5994310d04817260a0928841c7e8f88 - pristine_git_object: 5ce9709767815597d038d72406185b40fef4e072 + last_write_checksum: sha1:2aaf208024005706afc64573d4904c31ed107f55 + pristine_git_object: f686ee274e68f0e9d850b47403c4b30d264f72bc docs/models/authtoken.md: id: 4bd9c62da20d last_write_checksum: sha1:792bc02293f4a693aa8f9062afc738bb9dbfd493 pristine_git_object: 171168a65d976e5322c475f85f673a8db5fad1b1 docs/models/authtype.md: id: e7d1386db3fa - last_write_checksum: sha1:731c2f301f20b0cf8780d80ce10c683b09fcbc19 - pristine_git_object: 7be58bb97b08fff4536f632ae67f01b45e12e4dd + last_write_checksum: sha1:c9a0046345344bc545a6ad2937956c653f812c4b + pristine_git_object: 120f98984fd9088eefaa77137bef62f43912089a docs/models/autocompleterequest.md: id: 17d479e27d90 last_write_checksum: sha1:e59c2e682e4271aee48faf382e069ec614f1f1b7 @@ -291,8 +295,8 @@ trackedFiles: pristine_git_object: f52bd9ee886df0323f70d1416c7f567beee45fe9 docs/models/autocompleterequestresulttype.md: id: b8d90b50b8a1 - last_write_checksum: sha1:ba2246fb302575968eae095e79f2da48c8244c9c - pristine_git_object: ead3f82a5624ba108214c3be1fc7bd3f4652f565 + last_write_checksum: sha1:384db0e85ba2259d36c469bf18aad238ce221de9 + pristine_git_object: 1133a59c5d24f501ea467fb19e9a467682cd9d31 docs/models/autocompleteresponse.md: id: a8f4f0d2e960 last_write_checksum: sha1:e80e1ab5896798594c21df4361f9c5711f55d8d0 @@ -307,8 +311,8 @@ trackedFiles: pristine_git_object: 50c4361043902ea66f73de0cca21e46eb72d8735 docs/models/autocompleteresultresulttype.md: id: 6836c607354c - last_write_checksum: sha1:c820abb8f2b120c3cf6a1a0ca00e3a9e6ad806ff - pristine_git_object: bb8a1893636ed8833970ed64b81031982af17e0d + last_write_checksum: sha1:400e45cf3c6c4373d774711f701ef567a3bb9b84 + pristine_git_object: 9e2a7661c61009d972b42f3fad2d8af966b95fc9 docs/models/badge.md: id: 1a875de7727e last_write_checksum: sha1:41161b237fd17651efebe457fac1d95052605a89 @@ -347,8 +351,8 @@ trackedFiles: pristine_git_object: 4663c390eb1ac356d16c42042bb36d96d15d37b7 docs/models/bulkuploadhistoryeventstatus.md: id: 19182dacc064 - last_write_checksum: sha1:0d0e61987889c12b092b3de2218d4016cf8adf8c - pristine_git_object: d146ed1ef5a7a2eb228734eafba32b3187ca0912 + last_write_checksum: sha1:81aad9b978d55bd5e4bb6b0b78736ae51c96a2a4 + pristine_git_object: dcc8036722980aeadd202cacc8343f4c40fcca0d docs/models/calendarattendee.md: id: 65658df6d5ed last_write_checksum: sha1:95c9c7713d8dd0387c417133e10f3e8fc015738e @@ -363,8 +367,8 @@ trackedFiles: pristine_git_object: 91c8c22a8b8193d6390213ea3b67c6063b605084 docs/models/calendareventeventtype.md: id: d46158398e36 - last_write_checksum: sha1:6e5e6b6df3eaf4f7d96f495259799e2c783119f6 - pristine_git_object: 8d5d6eb9d35caf1b2bab0683954efcbc53916074 + last_write_checksum: sha1:086fce57b60cd539b9ab120f24055d3d5388959a + pristine_git_object: d477e13e31d8af9e32a0b71dfaa896fad33b3c8a docs/models/canonicalizingregextype.md: id: 7fbd76463a36 last_write_checksum: sha1:8a160bf9d8941da21f49dcdcd60dca736abe56c6 @@ -387,16 +391,16 @@ trackedFiles: pristine_git_object: 31d5a62636ad0c94d41892b473b78a7988df0a17 docs/models/chatfilefailurereason.md: id: 7d31e70789c0 - last_write_checksum: sha1:fec1b0fc1a7112b996c5050aba2b6f3a30f4c2a3 - pristine_git_object: 64426814af5b0e5f252db06e7c8851eb079cb483 + last_write_checksum: sha1:c25843500d3d528b357a2739abf35da16f1a3f3f + pristine_git_object: cef1b10b3ccf662842807b61d80f42386068841f docs/models/chatfilemetadata.md: id: 0cc9ade06a58 last_write_checksum: sha1:231dba9ebb94cb688a9b1e3dafae879be6d56e5c pristine_git_object: 67979aa2200513b9e68f924662801b4515d21bf8 docs/models/chatfilestatus.md: id: 353dfcb79ee6 - last_write_checksum: sha1:bf150a35b7978f8efc8dfa5944f4326eae6a64e7 - pristine_git_object: ebbb19511b46565159e552579219ca1125c069fa + last_write_checksum: sha1:6fcb6d99dcbf732251fb77cd46173c71e2d96912 + pristine_git_object: 55e4883a17539d1c3cac902664c3eb28da5aeec8 docs/models/chatmessage.md: id: 768623ba5622 last_write_checksum: sha1:de3b12dcf57e893d4facbfc151263895f807605f @@ -427,8 +431,8 @@ trackedFiles: pristine_git_object: 743e1fd15ef2e5a212c755a793811ccbf19d46a5 docs/models/chatresponse.md: id: f59beb8f6c98 - last_write_checksum: sha1:fc09d73117b02239395524f00faf9661dc6b9c34 - pristine_git_object: 0ea540ed8c772f8f0e6b446ed5e0e4c7782ac99e + last_write_checksum: sha1:fb69e7b641548c4a72d60bb607b87443fb9abc06 + pristine_git_object: c1e42aeb62c37b61a4bf6ee0dcbdd44c8cb3feba docs/models/chatrestrictionfilters.md: id: cae12da2c86d last_write_checksum: sha1:0cbed53f5ff5fe8fe9f44909300ad9ab82ace936 @@ -467,8 +471,8 @@ trackedFiles: pristine_git_object: c4adf53fcc703010d5524af57ca9758c04e939d2 docs/models/clustertypeenum.md: id: 2f55d1ed0998 - last_write_checksum: sha1:d5fecab5a429e33244ba7f582d329dba91c07617 - pristine_git_object: 53fe04d6345ba2c01e8bcb86accd3445cc244b19 + last_write_checksum: sha1:5bc2294488eac58eb85c082b68dc12512c93224c + pristine_git_object: 11effcca09bc9721015d0a6171c3019f3037a5e9 docs/models/code.md: id: 2fcb3964c9c0 last_write_checksum: sha1:e7dda0d13324c09f7acda4cde816844a3f070916 @@ -487,8 +491,8 @@ trackedFiles: pristine_git_object: a6800fed5ba94f25934cdd5b8fe3fa6832f51239 docs/models/collectionerrorerrorcode.md: id: 0d8a5a9d335a - last_write_checksum: sha1:f4c7df20f5297abe7d667c1006c6aaf4f6006238 - pristine_git_object: 7903ee61efaa4f4219a5c03519b1388c0084c79f + last_write_checksum: sha1:7cb1a3a783edc7357941821369116cb68b0425d0 + pristine_git_object: dd389508754a634c35757d43d84cde8c0d20cb06 docs/models/collectionitem.md: id: 4960e28c5856 last_write_checksum: sha1:72297a3ca7b72b75a41a12073bb959e308051c65 @@ -499,24 +503,24 @@ trackedFiles: pristine_git_object: 1ce4ae9b5310e7aeb341de3d5dc80839b2a4ece9 docs/models/collectionitemdescriptoritemtype.md: id: a708a0061fd8 - last_write_checksum: sha1:6a64245db8875973141700e2fbcd5fa754498b1e - pristine_git_object: 25e2a57f27b7b50511c722ddd819306ff460b462 + last_write_checksum: sha1:39c753bf47906a1bc51b3513859979f77fc5f8d3 + pristine_git_object: 46d88741305849ceb9eb0ea3e7161356fb0bf545 docs/models/collectionitemitemtype.md: id: 77ee84f9265a - last_write_checksum: sha1:421a565c20802a5e8a836626c8cc941e546931f4 - pristine_git_object: 937308f8dec155a7d790627800ec6d2736ac6784 + last_write_checksum: sha1:483bef03d5ff45c75f2453ddc1833c7245427f2b + pristine_git_object: 69999acea317b698d421cb23824dbe7490da6aa8 docs/models/collectionpinmetadata.md: id: b2587a91cecf last_write_checksum: sha1:f48dbf2b3d98cdb316858e0d51ba04873c526b42 pristine_git_object: 3541f9f68eec64d451c0bd1dd2b5c0ca9bc377d6 docs/models/collectionpinnablecategories.md: id: 5ca430dab671 - last_write_checksum: sha1:6e50d9606d9e5f692e5590758e73a4c2e70919a0 - pristine_git_object: d9ab23f1041cc9663d760401a969b8d28faf6078 + last_write_checksum: sha1:0675290db8fd17fad831b6d7210c29f730332d2c + pristine_git_object: f9ed8d0540287369214ec1549a8a5a8888771473 docs/models/collectionpinnabletargets.md: id: 1679e91bb30f - last_write_checksum: sha1:1b2b8ef1a94315e9635962d72d253c75c9bad4fd - pristine_git_object: 742229663b14389183872b21446363a4f5d6a6e4 + last_write_checksum: sha1:ae795f89cafff161afd89ace89800e5ffda3b86a + pristine_git_object: e58d9dfb7c809eb0fe8ac0f795ee4e2af957dce6 docs/models/collectionpinnedmetadata.md: id: 46c604ec06b0 last_write_checksum: sha1:12fa1ba7289b21515a574c1f12e882a988ab8b82 @@ -531,8 +535,8 @@ trackedFiles: pristine_git_object: c5c009d177582eef349547c5de1f9b9a99371611 docs/models/communicationchannel.md: id: 8aab95c8335e - last_write_checksum: sha1:5eed432ef84b3443e5a525eb879220faf3739cce - pristine_git_object: eee4a8599943b0f043039516577f364412b64289 + last_write_checksum: sha1:95070961be8a99439ab49acc3d83ae50e42530ef + pristine_git_object: 4acce537794987af82c102e294cfd8d3f099cdcb docs/models/company.md: id: 25a3bf8dece0 last_write_checksum: sha1:9ba8857ffd2dfbf88f32095f35f561ea66bbc162 @@ -543,20 +547,24 @@ trackedFiles: pristine_git_object: 79a189506ba75c9afc180d0a5332c7b909d7d839 docs/models/conferencedatasource.md: id: 0ef7e380c9bc - last_write_checksum: sha1:c597b1a30b09f87991a13bb59c53400410134f35 - pristine_git_object: b9e1060aed3df9dcc4a396b895e26bd7529f6d61 + last_write_checksum: sha1:189843e83af6991d92e24b1d421668dc6fae4d90 + pristine_git_object: a01e5df992a0c9388565172c9b39cfb7a26653c5 + docs/models/configurationvalue.md: + id: 4dd9104463d1 + last_write_checksum: sha1:97fd02f694962abf4799b31a586b688966cac4ea + pristine_git_object: aea215fe87d00675a3b97d150d81470b16fe2a84 docs/models/connectortype.md: id: e6f4d8f19cd5 - last_write_checksum: sha1:9efd332a75fba3f2023b761f238f274680a46d81 - pristine_git_object: 940429843795c892fe1c541570432f0ab440547a + last_write_checksum: sha1:8fe938ab7879871ccd5d3d7d278b3188040d3f50 + pristine_git_object: 39fa8c6ec94d29683f81089dc954f03e0851265c docs/models/contentdefinition.md: id: 938260420b2c last_write_checksum: sha1:a2b0d83bf5bba8acdcf91da6af61471fe96a46b0 pristine_git_object: a8dfd5117cccf8959dc6688b829b36c480680e45 docs/models/contenttype.md: id: 78e9266f4216 - last_write_checksum: sha1:aa88820dcb37e4eb55531b8f049d00990d8cc344 - pristine_git_object: a68e84da71aaf71e5b238e424a5aaaa5730918be + last_write_checksum: sha1:7755464b42b31e074708e3fcbc2f6d50643a4a4c + pristine_git_object: f20d9c65cd50c9a5204a9bc6a06c12870381c4bf docs/models/countinfo.md: id: fdce0b0bc491 last_write_checksum: sha1:6ba12c90efff718bdd939e773d0426df695090d4 @@ -567,12 +575,12 @@ trackedFiles: pristine_git_object: f7bf1e242474f0362d50c45c04c217ca21472084 docs/models/createannouncementrequestchannel.md: id: 489eb87f68bb - last_write_checksum: sha1:51f29effd04f3bd8825a8f04960d4edbd24529ad - pristine_git_object: 2cefcb7e3b3c494a156d58cb5391d85135da8653 + last_write_checksum: sha1:f459e86f42918351e4a9c1a2a359f12cd073f5a0 + pristine_git_object: e9068e68350e26d5609f7c7450c6385abbf14a0f docs/models/createannouncementrequestposttype.md: id: a024b65d5db4 - last_write_checksum: sha1:b8f82bdff7d69ba3fc7535c58363842f55015f1f - pristine_git_object: f5442c4758dd1a228b08f9835aab8533a47a8868 + last_write_checksum: sha1:d5152f2a5b3abfe46562a0d0b5516558f6274615 + pristine_git_object: 0c04105de6c2b6a59b9040d673fbde577fb3ed3d docs/models/createannouncementrequestrequest.md: id: de0c3ac42c0f last_write_checksum: sha1:81b253aba6c657667e69d75cf93c6030a2118a42 @@ -631,8 +639,8 @@ trackedFiles: pristine_git_object: 2ecb8158e5265f1ddcddb4d0ce1231dfaf97f82d docs/models/customdatasourceconfigconnectortype.md: id: 7dd8e0da1ef8 - last_write_checksum: sha1:bdbd854dbad2c37a2b564402406fb5f1faefd6ce - pristine_git_object: 81126c245f193135e984d9a2df2c4298a1c280db + last_write_checksum: sha1:ed03cb8615d256289ff98d79f7b0131df48c1c19 + pristine_git_object: 0478f66844c4622dec82606d6fed5865c672dc7e docs/models/customdatavalue.md: id: 0646c2f2d3ef last_write_checksum: sha1:259403bd21db12ffe1d2c83510dbbb1f5f06fa5e @@ -687,28 +695,36 @@ trackedFiles: pristine_git_object: 04ae799b13b8747facae38cd235e17e4c94c0d61 docs/models/customsensitiverulelikelihoodthreshold.md: id: 4fd57e9cd6cb - last_write_checksum: sha1:c66508d672aa98532728665c9ecaae0e34b67c70 - pristine_git_object: b7676f4dbe586035eb67a4ed034aefb22bae9c42 + last_write_checksum: sha1:2f50620e3cc362c46de7a79e7daded8850dc3f00 + pristine_git_object: fae764188c3c67ea85608839ff84cb5ffd87b085 docs/models/customsensitiveruletype.md: id: 6bd863598a1a - last_write_checksum: sha1:cfc285f7e7851bf9d2b88a1732eaaad1cd8d6e75 - pristine_git_object: fe80b6f85d4bdadceee71772de79e0d28c77d61e + last_write_checksum: sha1:1c371d5f383860c537688f361928cb6ae662acf3 + pristine_git_object: 6961690df0348a2e1ed6f05630921ad81ff2ff62 docs/models/datasource.md: id: 1fe408a0fe08 - last_write_checksum: sha1:3ceb4f96933199e3755cdc21622485ed1569f66b - pristine_git_object: 154a81d3adcb8659b6917dc11dc086463a778bae + last_write_checksum: sha1:b4964019d65ec8d10f5c9e538349799bf18e22f3 + pristine_git_object: c9eaa5a7c4e5fec5262c430021ca8530cdde27de docs/models/datasourcebulkmembershipdefinition.md: id: 05ac54ce5eaa last_write_checksum: sha1:12fd86d9314abe47cdec93f997a7bdf5ac70f9a3 pristine_git_object: 8445ecad49bc3bbd7b064649b72e824713db1ae7 docs/models/datasourcecategory.md: id: 0480a1f35070 - last_write_checksum: sha1:9dad3acf74b5977a6476f86ba6c45781c352aa81 - pristine_git_object: 44d81a93960839704e0ee5f0d19ec4884aab0c4e + last_write_checksum: sha1:015d56c41be98ea2c521890e16153d81d293e77a + pristine_git_object: eccdbdeb57567caebb4ae64d7f8a263ed38a989a + docs/models/datasourceconfigurationresponse.md: + id: 7c6f38290f96 + last_write_checksum: sha1:10c0068be581150ab5915785029e610bdf472ab5 + pristine_git_object: ba3be1321e92d6af0bfdad972ec394d96dec7baf docs/models/datasourcegroupdefinition.md: id: 2b5e3862da5c last_write_checksum: sha1:594f0d360c5a2466e6492ca11e05a7c46c070208 pristine_git_object: e716c04f9ea29e7b8acca40f62f429b35c795614 + docs/models/datasourceinstanceconfiguration.md: + id: 968e0a9feb17 + last_write_checksum: sha1:7674d089b7dc06b3fdde2a7fe1a44e50b871ca83 + pristine_git_object: 4aa3cb988fe844a3994344f543171622bf11e227 docs/models/datasourcemembershipdefinition.md: id: 8e527b6d054c last_write_checksum: sha1:e381cf7d015eaa27815876df0388f2d92e96fa96 @@ -723,16 +739,16 @@ trackedFiles: pristine_git_object: deaaa99771f93f4b90dd93fae540370bde88af4f docs/models/datasourcestype.md: id: 25d08b2d7720 - last_write_checksum: sha1:9d41ff1d99694a784f9773315b2b792ffbd9083c - pristine_git_object: 41b7c17081f6d5f6b10671ed4928517a2671d1f4 + last_write_checksum: sha1:dfdb62057151fcb8a87f1450e42876de15310676 + pristine_git_object: d20e1336ce01423a29b5ed42edebe6f74ecb1264 docs/models/datasourceuserdefinition.md: id: f55c0a585395 last_write_checksum: sha1:c4137b26e8e08373fae20e3b3e70b4779f1101fc pristine_git_object: 43a88da5135ac8cbf4d76b542b4ed03403870d7c docs/models/datasourcevisibility.md: id: 1be157158a49 - last_write_checksum: sha1:3b9a1c67e10db898601285994835468e4c1dc757 - pristine_git_object: f9ff5b888bcfc3dd641d6e97e8cc96deb75d56b3 + last_write_checksum: sha1:a4e5af873ee3567294fa852244f34590dc3a807d + pristine_git_object: 3ae0d199f7ae7d287ed6015738f58b39257e31d2 docs/models/debugdatasourcestatusidentityresponsecomponent.md: id: 9e97db1d9971 last_write_checksum: sha1:b87f54d7eff6aaec0026cdee931d2ddd6a6e9d09 @@ -883,8 +899,8 @@ trackedFiles: pristine_git_object: ee7bb74980dd5f42d03ec3bb84804e2c13965e14 docs/models/direction.md: id: 5c2dbb7995cb - last_write_checksum: sha1:ac0c333ca94db94f29f7a0ba338794faa8c39762 - pristine_git_object: 14a61a1dc19c33014ea1ead924d0e2e02d94127a + last_write_checksum: sha1:a827dab6128d52fba4cbda0f543017e9fc64df0f + pristine_git_object: efe05ba95a985a7f8ec655a3d86b8c18191dd0cb docs/models/disambiguation.md: id: 7f98ff32a361 last_write_checksum: sha1:2c394e73d2a8dd69f57b523639bf166b4021c3e7 @@ -907,8 +923,8 @@ trackedFiles: pristine_git_object: cf64c8cf51510a13bab54be7e3f90fd6db7e5f30 docs/models/dlpfrequency.md: id: f4604a8ff945 - last_write_checksum: sha1:944330ad33b1bb325cd4ae91c483c477fa7aa5a2 - pristine_git_object: 9ae76ef7dc4183edd5ce3be7a2e92a127640db7b + last_write_checksum: sha1:59cf084fba6095ff5151b96ca8dfd4269f728456 + pristine_git_object: 17476f3f5a6693576fd0c699271fa1bad636427e docs/models/dlpperson.md: id: a7d2a215ac10 last_write_checksum: sha1:6e328f42974e9211f7a259efaf18f38e825d10a9 @@ -923,20 +939,20 @@ trackedFiles: pristine_git_object: 67dc82411941f609b7b00bc43ae7c1a57f1d7df0 docs/models/dlpreportstatus.md: id: b9c039d457a2 - last_write_checksum: sha1:27c9b01d38654965eac442a06961ab5778f02449 - pristine_git_object: ba04744a16469254104ae62f62250f0e2ac55d86 + last_write_checksum: sha1:fe360daac10e2aee01245b7dc9697950a9e7c489 + pristine_git_object: ed2a14b5b68de54335a7439d8b531781417ea127 docs/models/dlpseverity.md: id: fad6ecae05e8 - last_write_checksum: sha1:10754ae20b111bc6c2a625be13f05890713e2dda - pristine_git_object: f53e3d5b15034f8dee87a700647b81f109f32b0a + last_write_checksum: sha1:962be89ee33d95c57de6f2b1475b26dcb13ba271 + pristine_git_object: 4083ea25abee1ad91821316e10675608cdfd5270 docs/models/dlpsimpleresult.md: id: ca81e0658bbe - last_write_checksum: sha1:33c9868aa14972f5da45bdf04f8f4b282ae127b4 - pristine_git_object: f6e423848b36228b50191338741dc11a62412540 + last_write_checksum: sha1:bb79f1ce7cce83ea4d0b9f95e4bd8e12eedb63ec + pristine_git_object: 52a18a1148721667dfc7a24e9858cfba774d5c78 docs/models/doccategory.md: id: 821ad62d2df6 - last_write_checksum: sha1:ce8cdd4edff33650630ef4f0593cde4d7c4567f8 - pristine_git_object: 3f3a7ec68f32b10975bf09280585c338c97d8399 + last_write_checksum: sha1:dde799e6eb1d7b4b1515d636c07939219b3cfa0f + pristine_git_object: 3560e89449148b672eebef4ff2dbd84ca47d7b25 docs/models/document.md: id: cd1d2a444370 last_write_checksum: sha1:3c58b1bee296890b3ad00d72b32647ab4ae67bd4 @@ -999,12 +1015,12 @@ trackedFiles: pristine_git_object: f97ba78eea3e84426e32fa16906bff8c6e2de17c docs/models/documentspecugctype1.md: id: d65ddd3c18d9 - last_write_checksum: sha1:12765c9cd8ea56353e3e2e89bb99cb1f48bcb087 - pristine_git_object: 8dababc69ac733c8bed561b809cba8f7e2e7c278 + last_write_checksum: sha1:2f9426c2753077155877db7b8e39bc260d739a49 + pristine_git_object: 6b1e6c24ec175c5d5ed53f605e5ad94e2600fab7 docs/models/documentspecugctype2.md: id: 482fa3980aad - last_write_checksum: sha1:cb5ed0f37c8cdc80018d638860a50b9a5df4a32a - pristine_git_object: 313e7a436aeab3273592cbb6a98c799bbea560c6 + last_write_checksum: sha1:0ea452e225f56b3c8668f3b1259a3fd9a3f3bfeb + pristine_git_object: a105173da956c0521efb779e5d4f81d157c804e0 docs/models/documentspecunion.md: id: eb4d3f9f0d42 last_write_checksum: sha1:0d398dc3150ae343de568eef63c7c6e388721207 @@ -1015,24 +1031,24 @@ trackedFiles: pristine_git_object: 96a477e2b89f439d54159a148133652258b710d2 docs/models/documentvisibility.md: id: f8c6ea7ffd5b - last_write_checksum: sha1:582c7c683e3a73d84286751a1598e5c465a01632 - pristine_git_object: e8538a995473eeb36b08bb424e37ff253f00d5a5 + last_write_checksum: sha1:b876937f101fed72160c4fa8eaab648d0dd7b361 + pristine_git_object: 794df8a8d9a2d5d3bf631d75fbffe978f6c0044e docs/models/documentvisibilityoverride.md: id: cf7668665975 last_write_checksum: sha1:b93cb21e051d129f3e09d9c7ae9e7c18c68aa29e pristine_git_object: 263e653420811efe9bad05ad4fab78c3f03f6221 docs/models/documentvisibilityoverrideoverride.md: id: 9188f3bbc76c - last_write_checksum: sha1:38b510f7ecea4eabca8c95d6b03faced79b655d3 - pristine_git_object: 0f15995d393aa0facc6f566d209bdb5c0c2894ec + last_write_checksum: sha1:deb1298c3604293d690c62385300698af66e4e1d + pristine_git_object: fc4aad73b593c0e802664ba006cefcd43d53b03f docs/models/documentvisibilityupdateresult.md: id: d1bf815a34ee last_write_checksum: sha1:7bb6108de2c0162ac00f24bd46eb973f9f9a5470 pristine_git_object: bca6013351abf18095324e3e1728e71520ec8182 docs/models/documentvisibilityupdateresultoverride.md: id: d47b76c6dda2 - last_write_checksum: sha1:53040d5470ffb90cdc6f1863edc765f73ec2dc56 - pristine_git_object: c60dc32524e2dc72d14a6e974961b44082ef37d8 + last_write_checksum: sha1:e8023d64d851923cb7a380b776ba155b0d8e9231 + pristine_git_object: 519b41bac9f083d3b5a08c86bb8794186cb07c99 docs/models/downloadfindingsexportrequest.md: id: 1887e2a3af00 last_write_checksum: sha1:4998758be6bd6eb334cb0e12f71ea987e7bc5d88 @@ -1055,8 +1071,8 @@ trackedFiles: pristine_git_object: 07d1c82630deece31e284e2914d380fd97c74dae docs/models/editanswerrequestsourcetype.md: id: 4c53a25d9227 - last_write_checksum: sha1:2a9b1c7ef22fe5e0ede2b8e0e69b4e54bd9cbf43 - pristine_git_object: 19a8a4279c764a0c5707f9f808268b70a79ddbcc + last_write_checksum: sha1:dfed9e63125291ed36b20412bc229e53c85a7103 + pristine_git_object: 2b4fcbd78afbfb50f8560266c3587322bf138f0a docs/models/editcollectionitemrequest.md: id: e02a0f87262c last_write_checksum: sha1:32eecb9baa98e59b8aeffb296f1692d5b4e9c68d @@ -1083,8 +1099,8 @@ trackedFiles: pristine_git_object: 5dfbdfbac68f01d833e8f80aeb37c18a9d709744 docs/models/editcollectionresponseerrorcode.md: id: 9040965d42e4 - last_write_checksum: sha1:49e0cc9f6fe4a3bf92dc7bf6c50382bf8bca99c9 - pristine_git_object: e6f6a8faedc0f2e0d70f50dace6f3a509f770ff2 + last_write_checksum: sha1:255da65fe8ab153278ad5a5fababdcf95fa7cdc9 + pristine_git_object: 722a81f245ec5f464226b5ad2dbdc3817f9a81e9 docs/models/editpinrequest.md: id: 14bb9e17a143 last_write_checksum: sha1:11e046873d7975a69c248dd6c640482531048289 @@ -1103,16 +1119,16 @@ trackedFiles: pristine_git_object: 2ed673106d7587b01c35b1287ae6610c4f7d57e1 docs/models/entitiessortorder.md: id: 8792ae5f7e52 - last_write_checksum: sha1:387622ac24c5d608f68d62072b26f473b5441a4e - pristine_git_object: 3a360150ed4e7484373181cadde236aac8785788 + last_write_checksum: sha1:60d559deed52753aa24fb3c6ca3bfefc6c8d609b + pristine_git_object: 35de67c5831dd0a0e7bbbec5809969cf9804e8e9 docs/models/entityrelationship.md: id: acf0ecd9df7c last_write_checksum: sha1:15ee26661a58d80c4175fa8869d5751072d76f4d pristine_git_object: ab2b6841535c6d25816b2c825a6b56bd5324931a docs/models/entitytype.md: id: 130a2f7038b0 - last_write_checksum: sha1:fc92074673629ca7a55fb4b772afb5a4a7bc9fbe - pristine_git_object: e91144854fdb68760ee17f53e40ff4d22d16e882 + last_write_checksum: sha1:d46a25756cce3ffcd5790b65328ef2b8df491c8b + pristine_git_object: cc245095a5bdb777aed9468ad3deb10e7c5a864b docs/models/error.md: id: b96a6fb71e96 last_write_checksum: sha1:678b0f84e8f44d4eb599828cb3fb6d2520fa7c99 @@ -1123,32 +1139,32 @@ trackedFiles: pristine_git_object: aba28baec1db3447632d5e920f5766a354b304e8 docs/models/event.md: id: 311c22a8574a - last_write_checksum: sha1:2d16d2e416ab647f6543f046845f91b65a82d064 - pristine_git_object: cddb621e1a82d2155746e64b5d9424cd1f844fb5 + last_write_checksum: sha1:f4ccf1ce8426d12c66885e3aa07556540203c683 + pristine_git_object: f67e3806fa5280e206ee04f5bd114376a9a18fb2 docs/models/eventclassification.md: id: e77adeacd229 last_write_checksum: sha1:a946fb8b2c26b78a03a640d841a4f5222f8586c7 pristine_git_object: 7d993d783e287838072767df4727febafa8fdae8 docs/models/eventclassificationname.md: id: b1b7f46f0830 - last_write_checksum: sha1:023abeccc3735a6a3dbf5cd4a5fb2bdac99071b9 - pristine_git_object: f66268a0c7ca23508da17e25881e03401a95367d + last_write_checksum: sha1:c5b5cdc058f20892fb6efbe70b709f546080c128 + pristine_git_object: 809a1e8311a3309e58034ad7b0aa35fe91f2139e docs/models/eventstrategyname.md: id: e28a808b01dc - last_write_checksum: sha1:1f6fbf59687b6df3b31945ab463a2e121c901c89 - pristine_git_object: 51c0237020d03cd196c1ec210563364967cead8e + last_write_checksum: sha1:5fe888a1a5120889a681270563b8dfb8e24ce8a2 + pristine_git_object: 9fa8de74a849d5f7628c70defcd8e7f6d0f8121c docs/models/exportinfo.md: id: 08c8529beddd last_write_checksum: sha1:52c974d3e1a4740f5b41a2c96ef2674c4872a1d9 pristine_git_object: fd1547a8a4890b6565e01918acdef4dc255e82b4 docs/models/exportinfostatus.md: id: 00e8b292b3fb - last_write_checksum: sha1:7123b260311651a2ff48d6a66e1c3a573e7752f5 - pristine_git_object: 1639f2fa327ed0ab36a4cf9a7b523b5baad470b0 + last_write_checksum: sha1:a0c9f47ee9e748357aace4b84079d18a321aa52c + pristine_git_object: f257dc5200e63afb4c756a25661244c101e2363b docs/models/exporttype.md: id: b7a0e6ea465b - last_write_checksum: sha1:7129503908e24d7f01e1a5d783b8c1614b6fa6d7 - pristine_git_object: fda2a24f0002045062fc3fbaac691f4d091fd14f + last_write_checksum: sha1:3ce87da549fb28ffa7bfd06f3ae019730d9a86ea + pristine_git_object: a58a0943f2745a8d64385881b0036538f6ac03c2 docs/models/externalsharingoptions.md: id: f1ff0bb532c4 last_write_checksum: sha1:4aa8737cc989465e7ae6d0aecb0dd18d31e1acf6 @@ -1199,12 +1215,12 @@ trackedFiles: pristine_git_object: 6fe107ab85daab1088cd3582c1a3aac24e1b710e docs/models/feedbackcategory.md: id: 11d7d6ae413a - last_write_checksum: sha1:d6fa46c63cedeb912d877a5855bda8593a86cfd8 - pristine_git_object: 0cd81ec736a52c06fd74a865dfae336e2d7c3077 + last_write_checksum: sha1:83c93708b192ee7ed6aa3514456da224677eebe4 + pristine_git_object: 9251d2ec68ced96f390b93cf99c1b2a43b73dbb5 docs/models/feedbackchannel.md: id: 89419461712e - last_write_checksum: sha1:f49c87db4756488a0fc3c5a18e8f82e8d80797d4 - pristine_git_object: e1126a1f29bb6debf64096ba33967d41011f9a14 + last_write_checksum: sha1:4f19104093f394b1a7a4a0be08c976fc5863ff30 + pristine_git_object: 10a59bd3da2a1729a1d63d61794aec74559093b4 docs/models/feedbackchatexchange.md: id: 29903e964933 last_write_checksum: sha1:fd1cd864d67a4ad5acd5cc1d8452b54f275053af @@ -1223,8 +1239,8 @@ trackedFiles: pristine_git_object: a851a7f13eb25d515fa9b9244c5dfdc98fa14e2c docs/models/feedrequestcategory.md: id: 31a02f3064c7 - last_write_checksum: sha1:323ae6b23468f7e91b31606b707e6d3ea5737541 - pristine_git_object: b6590356d8a0a71bddd8320b51d92c7a4b5912a1 + last_write_checksum: sha1:200b0c3d0bf7168d55eb184303e3f80e8e4a1f6c + pristine_git_object: d2fdd8e24cfe514104d72d703be6c4d6ac2d2da7 docs/models/feedrequestoptions.md: id: 58eb26b19e77 last_write_checksum: sha1:fd2ab08736cef8156169b0cfee8c52e7aed1accf @@ -1243,12 +1259,12 @@ trackedFiles: pristine_git_object: 6318b0206b7d4027b036e78c709ed4eb259ccedb docs/models/feedresultcategory.md: id: a5f77f38d0a7 - last_write_checksum: sha1:dafd64ea3daaa6ed1710173d63aefa085d6471e2 - pristine_git_object: 5de26d31937be419bac63087ec2b81199e4e1a2e + last_write_checksum: sha1:7a897755d1a04438d2806e64513bc904d2da3b29 + pristine_git_object: d21a87b133ea32d7f48a9bf7cd49eab4f4d02515 docs/models/fieldscope.md: id: e6b52bcb22a6 - last_write_checksum: sha1:fd3c671bbaaaad1be401de980a7314e840184f86 - pristine_git_object: e57e72331bdf8088b7bcdb9e4d568c4243168f6a + last_write_checksum: sha1:13a1492ce39d2f89a01d626996a345a1339a1873 + pristine_git_object: 3c3c097ac04d2e75a6cff47985e6688cf027d236 docs/models/file.md: id: 4ad31355bd1c last_write_checksum: sha1:ade4d3c908c664a07a3c333cc24bc1bfb43ab88b @@ -1259,8 +1275,8 @@ trackedFiles: pristine_git_object: 65bdd1003fcb4ea405b23fc891b37c0791dd3ab0 docs/models/format_.md: id: a17c22228eda - last_write_checksum: sha1:a2edbc69f1288b7f57ae022e972d32e9f0fbf918 - pristine_git_object: 8e5b70d97b1c22756a423d6880f70562cc3dc8a2 + last_write_checksum: sha1:577734c6a90602d0e5e0a0e43e130367f6d4dbbc + pristine_git_object: d5119bf1f3aa290c96daf28eeb1743aa8e3f27d1 docs/models/generatedattachment.md: id: bd997931455b last_write_checksum: sha1:8a821c9febd74e3cf171fe1a7b2d3a139e7550cf @@ -1275,8 +1291,8 @@ trackedFiles: pristine_git_object: 45bd3342eac923ce91d9ad9be9c33865f3b8638d docs/models/generatedqnastatus.md: id: 539b7c1a607d - last_write_checksum: sha1:58ef90f687d397dfa347a5b2ea1b5ef932dd4bb7 - pristine_git_object: 5a8c54997e977bddfe521d58690e702227d526ff + last_write_checksum: sha1:88766a93162f9ea70a183c7937e6566994232b30 + pristine_git_object: a7b0cc919fcb4dc72c6717298fd386798b0c3f07 docs/models/getagentrequest.md: id: 743f3a4630be last_write_checksum: sha1:b6d2630bc17e91ec71d2bc7e01fec9f7cf046914 @@ -1291,8 +1307,8 @@ trackedFiles: pristine_git_object: 1585ad62bb0e81173a4ec0fda48e5d55f95a6750 docs/models/getanswererrorerrortype.md: id: d248499e9347 - last_write_checksum: sha1:208f691d55eb0f4de9e1b2721be81886943e6943 - pristine_git_object: d2af7588afa9aa93591e1ecd783247bf9c1849d3 + last_write_checksum: sha1:65aa17f028cee3c7745eceacef3f28c2e6584d4f + pristine_git_object: 3f9be2ece700fea1190f089d79661484282290be docs/models/getanswerrequest.md: id: 25f11c52ac77 last_write_checksum: sha1:17475690eebcc1076b3956f764f52ed3d16c36ff @@ -1357,6 +1373,10 @@ trackedFiles: id: 4cf100b4fe49 last_write_checksum: sha1:2209ee35f4f21791035a6785f464befc568e9afd pristine_git_object: 6bd845ab38a08ac7ec5473920c9d1f6567716ced + docs/models/getdatasourceinstanceconfigurationrequest.md: + id: bb085196abd9 + last_write_checksum: sha1:d2971d5d295c276de0cdcee2ba9d4b761b10f7b2 + pristine_git_object: 949f49d131967a1bf1906f604908c5d09c8b40de docs/models/getdlpreportresponse.md: id: 3e011132423a last_write_checksum: sha1:b9907518fd1ceb0348ba69ca31459073dd5e2160 @@ -1399,8 +1419,8 @@ trackedFiles: pristine_git_object: 8ec36f384e76e6bec77b1f1a33f87c402b01c9b5 docs/models/getdocumentsrequestincludefield.md: id: b352a208f521 - last_write_checksum: sha1:c9c6167178228dd2882592014307e541e5c8c0d8 - pristine_git_object: 1db38b744f2b4b86860c3407566bc0b49617f7f0 + last_write_checksum: sha1:85b6ba98a60acd04b0474fe13ed8b4250034228f + pristine_git_object: 6d537debaff2078ca507df6d0c50475d4a2df133 docs/models/getdocumentsrequestrequest.md: id: a8c374952e75 last_write_checksum: sha1:ee19224caa436cd2b5558e005c64775211aeb731 @@ -1479,16 +1499,16 @@ trackedFiles: pristine_git_object: 51f7027a16bc10bb4effbdd438eab18581703421 docs/models/gleandataerror.md: id: feb7c60631e4 - last_write_checksum: sha1:3183d01d67f7287140f55de2737e649e7ce32ec9 - pristine_git_object: 4ea69fbe9f4add8572cfe6c755aca8fe1d2ba11e + last_write_checksum: sha1:a6567c83c6c0bf8eaed55f50af08001869d6a5de + pristine_git_object: 7c4c0d90fd0a2de3e48b99ce691c1e9a6ab03041 docs/models/grantpermission.md: id: 740a53de1e0a last_write_checksum: sha1:6f0d12e70708144b4978da20cccda528785c9e0d pristine_git_object: ac3f4c6c2acd8442c8686be4839c70d17ac0b8d2 docs/models/granttype.md: id: c3d5681ac7bd - last_write_checksum: sha1:d0f6f7d09943a8da779946de718638ae3f31c017 - pristine_git_object: 503fb8a68c148300207bb8397d3e1280017f42a3 + last_write_checksum: sha1:b0129abfff6f0d70b545c8a39bc9a6a20a1499cf + pristine_git_object: 6e2e1b8f58fa22f1fdbcb1ec1f9e1ca07257cccb docs/models/greenlistusersrequest.md: id: 02c23967c0de last_write_checksum: sha1:f33ab26aeb1d057f22774458d7f97d527c438763 @@ -1499,12 +1519,12 @@ trackedFiles: pristine_git_object: c1d48433bcb643f3403e312a32ebbd2a91909f60 docs/models/grouptype.md: id: ca781cf2b1c3 - last_write_checksum: sha1:54f49f6a63e723fc9fe457f787b6805e13af1e39 - pristine_git_object: b1d6ca4fbb780ee1b20bda19abc3325d1b8cdefc + last_write_checksum: sha1:413a748c346eac3513abddae0d69276e14e52d0a + pristine_git_object: 4e38962c518a55b094e86abba5886f06b4e84c40 docs/models/hidebuiltinfacet.md: id: 338b17567126 - last_write_checksum: sha1:67fb3847ea851d86371b88191bac55aff61a2569 - pristine_git_object: 35925329252ac966f673004a1831ed0ccbb090b6 + last_write_checksum: sha1:6fe74dd1957d4050706a4bbce1c1c413fafe12e9 + pristine_git_object: 50276f1d34c2659a852e74252f4c2e6d00c5fa4e docs/models/hotword.md: id: 68f79504703e last_write_checksum: sha1:dd7f5a06470850e7195264d0f71af828c2a9a76b @@ -1519,20 +1539,20 @@ trackedFiles: pristine_git_object: 626e9b861b1737b314e2a507b4fcf50e4df5ae29 docs/models/icontype.md: id: 0e3967649a12 - last_write_checksum: sha1:14d1e8755793c9427e285f02a52c7411a095a64c - pristine_git_object: 611f3f3fab778155a19032a881db8207b9577dc7 + last_write_checksum: sha1:df0342bec10160e89cdb81e53ce76d7c79d96390 + pristine_git_object: f0abae40fd9bced57e8e5834a28d65d1d486ea4d docs/models/identity.md: id: 322b72470576 last_write_checksum: sha1:165032455fe9dfdf7b596adbb5f01aad2c8525fd pristine_git_object: 8dfae128497ae67ba74052bed92a34d7c8a7094c docs/models/idtype.md: id: d998108e5ea8 - last_write_checksum: sha1:7d7261f7776164fed2a8021b4df7f38cfbe0cd05 - pristine_git_object: d1f0b1f87de0c1a9c0fe50f83ad0a3559e8abaca + last_write_checksum: sha1:691f92007f621c3190dd8e17e293be0852457d96 + pristine_git_object: 4f71310b6864d240adb6739549f5f8fee4807538 docs/models/includetype.md: id: c81f8e97e293 - last_write_checksum: sha1:f8e16a541c39fa564fe06b0058fe97a18fed89ac - pristine_git_object: a01749bae69ce2f86cfa175826c874071b202940 + last_write_checksum: sha1:060845bfb32df30df1f8d9927c4cd550aca16c37 + pristine_git_object: bd1e080c6d5b6f159571b2169eab580e36769408 docs/models/indexdocumentrequest.md: id: 993d8499e413 last_write_checksum: sha1:aae876c02cc969d488ec475883c93e6b626dee76 @@ -1575,8 +1595,8 @@ trackedFiles: pristine_git_object: b45ddba581891e155a1e49a6e1fe741fa66ed1da docs/models/inputoptionstimeperiodtype.md: id: c6b86b1220fb - last_write_checksum: sha1:d6ef77da924ac56d32f6bbf5401d360bf8757bb8 - pristine_git_object: c3ec83a8e649aee1c92cfa59e40e99aeb54ac633 + last_write_checksum: sha1:3f99df003dbb91a5153899f0c82ff785f745bf98 + pristine_git_object: 26843791b062e373841a2b2242dc25b6ec82d8c8 docs/models/inputschema.md: id: 5efea712238f last_write_checksum: sha1:05d1c3d1aa27fe96584c28bdb93110e7f38ce2ed @@ -1619,28 +1639,28 @@ trackedFiles: pristine_git_object: e6acc93ce0eae76434a8ef9f94ba080e954f022e docs/models/inviteinfo.md: id: 3d5da9535438 - last_write_checksum: sha1:653cc53628464696143b2ffb85cadb0d3dcad5d5 - pristine_git_object: e929b03338151b780598fbe5b96ffa19bc3eb583 + last_write_checksum: sha1:5f65df8961f7c86a847f4808a3e1fffe97ae0082 + pristine_git_object: 627329922765aae3e91345adcf21351b2877ebc1 docs/models/issue.md: id: 44d611a73cb7 - last_write_checksum: sha1:f6909f3a5070d87eeb198d7f7c3d04a75ca718c3 - pristine_git_object: c6db8485f546c6e7564f04b8626c2a30208ba2ff + last_write_checksum: sha1:8970fa8af59fa236948d58eb90587afa8f81c60c + pristine_git_object: 7024b2f4514140f03c2dfc6ba7c5db04bdc216e7 docs/models/justificationtype.md: id: 8286affacee4 - last_write_checksum: sha1:9464386064d43020176b9a3994f1ac8bef3c2708 - pristine_git_object: 4bcceecfc6876a5b233087a7de8a54e635298e0e + last_write_checksum: sha1:b043c1fd47da813805e020b4d1453c72741ccc61 + pristine_git_object: 61127e97dcd151deccdac9c12fa6b037450edb04 docs/models/knowledgetype.md: id: 1e0c90679228 - last_write_checksum: sha1:b6cf154d1bf376e8994171cd32ebf3c0ee30e6a7 - pristine_git_object: 83754f3c0f2e304ac9b78c276bc5ed6eb4e8c4f1 + last_write_checksum: sha1:0030a7539b9362bbb59e0bbd36580676058b3540 + pristine_git_object: f08f4a637a80c1c1b0ecc1dde02a0df632f34083 docs/models/labeledcountinfo.md: id: 97b5245fa78b last_write_checksum: sha1:227db53f325db89debe1721de77bc8dbe6ea494e pristine_git_object: bff91afa3686f51d1bb1962c90b13bbd1b929be4 docs/models/lastscanstatus.md: id: 8aabd356c723 - last_write_checksum: sha1:e8a2f0fa4816d783f9c0ae45b03309b19aa616f5 - pristine_git_object: 32a47a4b2a1fedd8373e49bb4949e4d085840faf + last_write_checksum: sha1:4f573cd8188662713bd35a9e0ccad5fb58c5e6ba + pristine_git_object: b870d4d41898abb592af834330932c014ad09c17 docs/models/listanswersrequest.md: id: 6864867e393c last_write_checksum: sha1:e492b758d47f41c50b8ed2c91cb6ee197a67a647 @@ -1659,8 +1679,8 @@ trackedFiles: pristine_git_object: 9a0d72592d98d5f0cd2b8e6729b2596b0e5d116a docs/models/listchatsresponse.md: id: 56cf9a543286 - last_write_checksum: sha1:c2316ed4dfc6485cc889d79dfe69ea577c533738 - pristine_git_object: 95dfd85934c63bb2c3e09eb4b1cf89ef5dae0b8c + last_write_checksum: sha1:ea777d1de516cc4a5f76ab4bc308bea17a1dd50d + pristine_git_object: 76be2b6b41d5967fe143ce27cc1d728bbb27cf04 docs/models/listcollectionsrequest.md: id: 67e1b9abedd7 last_write_checksum: sha1:7dfe597ae0081226b8dddd81abd17d38b7557abd @@ -1687,12 +1707,12 @@ trackedFiles: pristine_git_object: c4ac2d31d21b0682eb015401a23eccb068314e3f docs/models/listentitiesrequestentitytype.md: id: 15ec59436444 - last_write_checksum: sha1:c904706e7833888e3bbc3678d460353829a0e022 - pristine_git_object: 8466478542a1bee6d3f24d7db7e1fe057ad72d1c + last_write_checksum: sha1:cb7f4664f81d08d7a6961e6bf931059a4ab34d43 + pristine_git_object: 4977acf6b7490bbca56d55d5e8861769ce979ac9 docs/models/listentitiesrequestincludefield.md: id: 22408579dc19 - last_write_checksum: sha1:2470f033b6a50c3ea4817a1b9a06f51860304b18 - pristine_git_object: dde5f54d1b3a27a037b24bb8214071230ad97079 + last_write_checksum: sha1:25b3f4a138b8c28449a213f4793cae253d16b003 + pristine_git_object: 443d5026adf0e717f1ad7fed318e648266b7558d docs/models/listentitiesrequestrequest.md: id: cfcc2081e0ed last_write_checksum: sha1:3023b6615096f5c018efb1b43524499b662094ae @@ -1723,8 +1743,8 @@ trackedFiles: pristine_git_object: c2daf74a3e83af43a3158e76b220dff3fc5a1578 docs/models/listshortcutspaginatedrequestincludefield.md: id: adaed923bedd - last_write_checksum: sha1:23ee57fe1fe07ede1b095d2c8533fe0e4ff918d7 - pristine_git_object: a06687123c10ceb41a2c332d719f83450bf7dcc0 + last_write_checksum: sha1:c743fe23333aa42d9871e4e11d412ec74a86d024 + pristine_git_object: b68782a765355611a739692df428ee3402a3f2a2 docs/models/listshortcutspaginatedresponse.md: id: 782aabefcf0b last_write_checksum: sha1:0bfe9c54078eff8b900ca0dd643b1ec62c4ffd5f @@ -1743,24 +1763,24 @@ trackedFiles: pristine_git_object: dc221748b44a4bc3e0be19654e2df6e128ee2776 docs/models/manualfeedbackinfosource.md: id: c5aed96ec5a0 - last_write_checksum: sha1:a884b2e28a750b530da1ff930b15d20ff48c1596 - pristine_git_object: 27c53bc4cbb9bee977cd76b5e1b753bad63f819d + last_write_checksum: sha1:032cb332121259781b84ac1bb92d9005bdd049d1 + pristine_git_object: e5e604b2b9ee894ad5d724c5eee4a0fe20ab123b docs/models/manualfeedbackinfovote.md: id: aab988027ef4 - last_write_checksum: sha1:9efcd3ff8b63f50da968b9e699a4b0b61b1d95aa - pristine_git_object: 401fb94b06b5b6728245a67eb9472c650e79d510 + last_write_checksum: sha1:ed4d4d324f14168de7e39b3870945096a642c9ab + pristine_git_object: f74b7a47fb68023f3d91a709b31526309caab8bd docs/models/manualfeedbacksidebysideinfo.md: id: 1819084e6814 last_write_checksum: sha1:038d7721d1cad413591e39aea2186fa0ed2461dd pristine_git_object: 48d47a8570112922d5baeb14f7cb9fb8f67146cf docs/models/manualfeedbacksidebysideinfosource.md: id: 3b67556d5130 - last_write_checksum: sha1:8f701188c5689582f5226d97d99bcacf789b7f56 - pristine_git_object: ac916e0d4997b549e89e11715975a27d6af6f16f + last_write_checksum: sha1:44ead8db7b5ac7312038dfc2040feeeefa0e0ff4 + pristine_git_object: f95896aee0aebe75d740efe0eca5fa4df49e5891 docs/models/manualfeedbacksidebysideinfovote.md: id: cf68b1f63cc7 - last_write_checksum: sha1:a2b6e09205758bebf090bdbcba30acfe75503229 - pristine_git_object: 3ba4a1bed8c0ebd3f754b4a500682415943db7de + last_write_checksum: sha1:6f62aad4e5e0583365e661548b8564d1b3c97e08 + pristine_git_object: ba4cf618261dec6b6829099ec1760a6fd48bce10 docs/models/meeting.md: id: 823ab6288010 last_write_checksum: sha1:9efd1c28c84b767ea662cd26598364b032e35cf3 @@ -1787,12 +1807,12 @@ trackedFiles: pristine_git_object: 9d44b3e3c25c22a3312ba9153974c8bc8b978d95 docs/models/messagetype.md: id: 7c0a714c5440 - last_write_checksum: sha1:e887ee280084510477a359ab96fda26c1dce810f - pristine_git_object: ba999504f3f78f00dd7d65f5cd6b807e2b6e4086 + last_write_checksum: sha1:0e6889365b4cb2e70786a18e10c26003d7f55426 + pristine_git_object: 8f91442a60a35b61cb10ca0e9509bf5eba723e60 docs/models/mode.md: id: 568581cb28bc - last_write_checksum: sha1:b24cddcdf25557a80895354658ad9f58ce4a5266 - pristine_git_object: bde5127c9ad908a35e5e22ab62d1bcd470584b52 + last_write_checksum: sha1:263515c9f97885b91b6cd5844222320658442b07 + pristine_git_object: b1cd1e56279e4db030fc140598c10231ff311137 docs/models/objectdefinition.md: id: 11daa0bec25f last_write_checksum: sha1:6990618d91fdb10bba60313d1b94e1f1be0dcc24 @@ -1811,12 +1831,12 @@ trackedFiles: pristine_git_object: 88ecad105ba636cef49eed138b4e0daac952f649 docs/models/operatortype.md: id: 89dd5c1bde53 - last_write_checksum: sha1:2335571ac3a19ad8248682147f9ade7c4d519ff5 - pristine_git_object: f7d9e8574c56fc79565866477edb22ffc16bb093 + last_write_checksum: sha1:503d883f051b5eb2db687d41c95e58e1ee99e802 + pristine_git_object: 7525e28380b5ffbb57beb76dfda514357c3ec9eb docs/models/orderby.md: id: 9e749ed80f72 - last_write_checksum: sha1:3250237330a097134b899ab4c9cf211f181ce3c9 - pristine_git_object: 96a7f95dd8dc585544468e8afe40b35f82566fde + last_write_checksum: sha1:0525561e99af7f049d797b94b7df2cf20176cc6b + pristine_git_object: cb24df145ff35afedfbcec164e7531136cd7500e docs/models/outputschema.md: id: 48e0d37a531a last_write_checksum: sha1:4b66a4ceff4de7d1382332e2107928df7ab32bb9 @@ -1827,8 +1847,8 @@ trackedFiles: pristine_git_object: cabbe6e5060ca81606726370df1d3cfeffee879f docs/models/peoplerequestincludefield.md: id: 1cc1f2177bbd - last_write_checksum: sha1:01a30732938d33aa76cf6124974fdae99efcde70 - pristine_git_object: f2216729be1c3e7ebba38fe275285fee7fcb52e6 + last_write_checksum: sha1:a02e302ceae15bdcd65b89c04a3d67252d95653b + pristine_git_object: 8b933ae8aedf742a3b75025f62b43439acbbd273 docs/models/peoplerequestrequest.md: id: acc3cda54b12 last_write_checksum: sha1:536bcc20d50abb8c2eda1d893650f69316f51e7d @@ -1867,8 +1887,8 @@ trackedFiles: pristine_git_object: 3bf2f1247f4a2fe0fd8c0c93f776df93057cb7ad docs/models/personmetadatatype.md: id: b6d1cc2d332e - last_write_checksum: sha1:6ca71902dd4909ace7d9e09cb6362f6fabb79c3d - pristine_git_object: 1f41993cd80014c8b6b31539317488f7406bf77b + last_write_checksum: sha1:fe678a00b3e162b7cf80a2ef0c718bf4e6bbe741 + pristine_git_object: 429584783250b15eba7dc4b9d4899fe4f6d725c9 docs/models/personobject.md: id: b61db667c399 last_write_checksum: sha1:a46315902270ad1be4fe59d63bc70674ffabe7cb @@ -1879,16 +1899,16 @@ trackedFiles: pristine_git_object: a4a52f3bcb30eedcceba09add09fc65dae8c946c docs/models/personteamrelationship.md: id: fffae2019126 - last_write_checksum: sha1:cbf7bd815ef1b17dc8f9d4ecf31162420f0425b0 - pristine_git_object: 9d958daac757d065311fbeed7dfc50c21bda6094 + last_write_checksum: sha1:39ce41219bb3ac550497d7461a641df0de8b3422 + pristine_git_object: a00dde5976017a8bdb0939fc35c52f09fdce297d docs/models/persontoteamrelationship.md: id: 7ca6e5720066 last_write_checksum: sha1:fdf351b504d8b654b8b6458e1aeff2c2ce733413 pristine_git_object: ad2118b32c73c1e83c0aa674ff2d0c6d772037da docs/models/persontoteamrelationshiprelationship.md: id: e3a09f4eb3e0 - last_write_checksum: sha1:da883cc8ed206c2f1199bb108f8c33adbb92ef82 - pristine_git_object: 2727c8ee1fba4296ec627a3daaad2a478cf84918 + last_write_checksum: sha1:1ad1f85a2dcfb4522f115df9a3f45a487578c4fc + pristine_git_object: bfb66e7a6c72f801c638ef0e27dac175f66613fe docs/models/peruserassistantinsight.md: id: 37bed9e00ed7 last_write_checksum: sha1:7543f948eea853768b8b8ba6a87bb180d62de66c @@ -1943,12 +1963,12 @@ trackedFiles: pristine_git_object: 91e3cb2eaf76f0b814ce9a2f7fb1d6b25ab5b801 docs/models/processingstate.md: id: f7dd740e0572 - last_write_checksum: sha1:424e77cd7143e308dc8a41f57aec6bcb5cd85882 - pristine_git_object: 1054736b9528a15c200d40ba78e8233f101bd3ec + last_write_checksum: sha1:21bcbddadd7313166578e1e6b7dc596e28c8a04a + pristine_git_object: 63439d0308aeec0d690826dbb9a35d1deb3a54e4 docs/models/prominence.md: id: 426f5a937205 - last_write_checksum: sha1:d1f37af2ab2e7f579f922b1fa5c69526aebe85bd - pristine_git_object: f268bbdcbb6cc02901354d666b0956a8dacfffb0 + last_write_checksum: sha1:999b72a93b980bc8871cf2233497fd370e8908ea + pristine_git_object: e2084849cec0bf8d693f7113b9b0fbd21382980f docs/models/prompttemplate.md: id: 11e24c1dd6c9 last_write_checksum: sha1:c4583b14ff8d8d1a29bb3beeb36ebfd356876000 @@ -1967,12 +1987,12 @@ trackedFiles: pristine_git_object: a1d9b7a2497fe865f3ee3435025328c14def9893 docs/models/propertytype.md: id: 7da644a61474 - last_write_checksum: sha1:37871b65113929e302156ce60ddfba49d67bd411 - pristine_git_object: 6ec9b3d371cdf95ddabd2d732432c892d5465327 + last_write_checksum: sha1:a988c052de3a01c472153677796cddf1ca75c4ef + pristine_git_object: f3ec28a8a2c0580380381d085c1b1468f63b316c docs/models/provider.md: id: cedb2a98f8e3 - last_write_checksum: sha1:55402a9d8dd1717bc142e73fdd2d61df4bce1edc - pristine_git_object: d83acab17ddb85f85f4c56807ae1ed61394c33b2 + last_write_checksum: sha1:d6899eeeb30af28988f37702ffd4fd00b44e8f9f + pristine_git_object: 4e51686e6e15ea7c11098d7766601d73fcb40f70 docs/models/querysuggestion.md: id: d204ce67c5d4 last_write_checksum: sha1:a0ff5b4d9d199993c2951c54b57e975487116470 @@ -2031,12 +2051,12 @@ trackedFiles: pristine_git_object: 9fae3b0a68d116bccc7918711829018e05d5f544 docs/models/relation.md: id: bd62bd10e24e - last_write_checksum: sha1:367a97e91b6f91483ce72ab6c7c508e01b0ed186 - pristine_git_object: 1912e0f8b123d9554894ecfe732d8366636397d4 + last_write_checksum: sha1:706b41145cf274d6a464710022cd258beb0f1e52 + pristine_git_object: dd90ac50fe5fc29e51081c509e45902b0423e555 docs/models/relationtype.md: id: a3e82ab5197f - last_write_checksum: sha1:5daabe0ea432b43eeb676e16fb28d5e927a79e01 - pristine_git_object: 647876dba4062828b8950044b27c882df12d56c1 + last_write_checksum: sha1:ef5260e78a563ffd9ef43519c9885cfe534ff097 + pristine_git_object: 2ca42951f8063802b0655f044836bd7c02202d4a docs/models/reminder.md: id: 0047a1b89b3b last_write_checksum: sha1:43ee9bee8ea2d7fd681baef92221422803babb81 @@ -2051,12 +2071,12 @@ trackedFiles: pristine_git_object: ab490c5442a9b52d0a5388ab39d3a4792f8d4ae1 docs/models/reportstatusresponsestatus.md: id: c6d3311eea79 - last_write_checksum: sha1:4768a71bfeedabe7c669f36c3eaf40f546654aaa - pristine_git_object: c74ecd90e4b7da724ee274cfd2a63532103c2163 + last_write_checksum: sha1:cb11955a7ece754400f4fd1a09a4586945a6e9b3 + pristine_git_object: fbbf6879eb3a324a311927d99fe558be1da01b65 docs/models/requesttype.md: id: 2e3b600ad04d - last_write_checksum: sha1:4afcb45c3b30dc2127810a796c589b817f4136d4 - pristine_git_object: 1859501ab79c0084ec7c8c65243a9ce3c056c77a + last_write_checksum: sha1:1f4f2b3f882695f70cc0655c6013e35e295e05a2 + pristine_git_object: 2d050701a58976f2076a0b9bd970a844c98ea22b docs/models/responsebody1.md: id: f324bedb3b30 last_write_checksum: sha1:998f6661be7e3d24c165ddcf3cc2c2c85d4de195 @@ -2067,16 +2087,16 @@ trackedFiles: pristine_git_object: 5a64d4a2875808416196d80e8598ac263382c31e docs/models/responsehint.md: id: 2fa9a49e2b25 - last_write_checksum: sha1:17184eac3ffe5a2eb9439c08857e1eed3caf08b7 - pristine_git_object: 82f866d3dff28ac6665ff997cbe60bcae43ed281 + last_write_checksum: sha1:b61a01fb7cb72cb85f3a5e5e456f56053313a4ce + pristine_git_object: fd0bd06d656ea1b976cf3a450bdfb89ebd4a1a4f docs/models/responsemetadata.md: id: 3e8a79783b6a last_write_checksum: sha1:622eac104c15d81360d841c8b8e5e03b4352b78b pristine_git_object: a0011a2fa1e6bf5171e8e06da65efb66e179f325 docs/models/responsestatus.md: id: 8e1106e0a4e4 - last_write_checksum: sha1:b7fd8904d1f1b50c979488fc82f9f403c90520db - pristine_git_object: 255ed6f1a118ed63b7521b1333f72d585fc18a26 + last_write_checksum: sha1:91e9b4a7f9fc27963e261a4f12f90baad3800d70 + pristine_git_object: bcd5413ee10241817bc51bd2104b5415723599d8 docs/models/restrictionfilters.md: id: 080254acc2eb last_write_checksum: sha1:4d6e84f502a02998c3d8c123fce6110e6a28c5f0 @@ -2099,20 +2119,20 @@ trackedFiles: pristine_git_object: fcc597abd3b5095bef1a5bdd9fd2bb372b2785b8 docs/models/role.md: id: b694540a5b1e - last_write_checksum: sha1:750cefe00c4ddee3abc4fa5251981487531aa960 - pristine_git_object: 8176a687d746d3fb71074cae218635571567695e + last_write_checksum: sha1:9f88b67c2e11ff6d70d769beff80158190c7d5c8 + pristine_git_object: f039c916bddf57012d6733253a30f781d61d9716 docs/models/rotatetokenresponse.md: id: bb8958b26e2a last_write_checksum: sha1:1a25b03ff78895912dbb7d50e6dfda816b67cb65 pristine_git_object: 82c1a5b5a7a8e2a1aee4719909c2c5e48f53dc77 docs/models/scope.md: id: c7d8338540ba - last_write_checksum: sha1:2bbc7553649867f3e08ff7006cdabf2b42d5aa2a - pristine_git_object: f1e506282a9aaa47981cf7f17fbf5afab3f56ca4 + last_write_checksum: sha1:14100818939e973ba9ea563c203ec40b39a1c113 + pristine_git_object: 189ff0f776f6bdaa5cee36d35444dd724f52e0d2 docs/models/scopetype.md: id: bbf7df39278c - last_write_checksum: sha1:19f1db3799158d3966ff62e720707715336eca92 - pristine_git_object: e6c2e396d2c9e5524cd45f7e159bc314a0ad81b1 + last_write_checksum: sha1:8d81c1586c14b6fa0547fdc277613894419c4e4f + pristine_git_object: 7c67e71c306fb2ec56162638dbf9beb068ced038 docs/models/searchagentsrequest.md: id: dd80edd4008d last_write_checksum: sha1:a6a2f3c53f8bd651c96eee45d73e83de4dce9564 @@ -2155,20 +2175,20 @@ trackedFiles: pristine_git_object: 0ceec198bd42b9c7785367267b733c8f3f1e6c96 docs/models/searchresultprominenceenum.md: id: b42f970c0c9d - last_write_checksum: sha1:945c0afac133e2717308b15bad8724d37901aad0 - pristine_git_object: 12605e2b9c2cb0a1545ba44825611bd9165b40ee + last_write_checksum: sha1:40adf871c5deb2fd183aebf65d4dd423c6f5b8dd + pristine_git_object: 65f9fa4b4c01602d85acbc95bed4d1241506db03 docs/models/searchresultsnippet.md: id: 9e1b4de38d1c - last_write_checksum: sha1:1bd580c4365dc9a568399d38cbe5b832f13b47da - pristine_git_object: 48c9b2b4837bdc8219724e92f8328b4b665e2979 + last_write_checksum: sha1:735dba7b6569940498505f4e75e9ebe0a63c2490 + pristine_git_object: 55f6c7547b1b938d3454e813cb60a896151e03f0 docs/models/searchwarning.md: id: c94f7679e23f last_write_checksum: sha1:ab1b71b733b6ab5906b7e60f218bc6e983d0143e pristine_git_object: 76000ccfbbaf2b2979d54617625f7eccbb227151 docs/models/sectiontype.md: id: 921ba624a16e - last_write_checksum: sha1:39c7dcf8ee7f01107d4927e14ca3dc6802f96e92 - pristine_git_object: efde24304f96bde409ed26920beb87f9322d1dca + last_write_checksum: sha1:8303f299a622a1b8ea238a81f90db6399066bcd5 + pristine_git_object: a9aa833111af162ca56ec269c90280c67a036df1 docs/models/security.md: id: 452e4d4eb67a last_write_checksum: sha1:5a8ca6c033f57e615f3ffa94175b82d8eb3a9822 @@ -2191,8 +2211,8 @@ trackedFiles: pristine_git_object: cce44d495574a77d559ba3f01d7e4514804efde1 docs/models/sensitiveinfotypelikelihoodthreshold.md: id: 3ee71d33a4d7 - last_write_checksum: sha1:7b50f0247ad07a6c09165e41fa2f27f7761c1e53 - pristine_git_object: e64355829076c9c9f333f1317eec637d85d89127 + last_write_checksum: sha1:e8354d546d4580055c9be0803efad0dcc6c1b7f2 + pristine_git_object: 7f825e04ad8edef5297451309815f20ef1a3ba0b docs/models/sessioninfo.md: id: 4f35f0cd75e6 last_write_checksum: sha1:54947b191223cc0100d33978470ef085255e0b45 @@ -2215,8 +2235,8 @@ trackedFiles: pristine_git_object: 64b1554570d3fcb4b0449bee384314793d54fc6e docs/models/shortcuterrorerrortype.md: id: e1bc39b68a8a - last_write_checksum: sha1:b575a3e05d41c294daf87ae995b425f59dab2dcd - pristine_git_object: a253b5366e2a7b610237a51be51015f755da88ff + last_write_checksum: sha1:302761ab3b7d221a4ca91fa9b609e53891b945cb + pristine_git_object: 737b2781df70717480fc76172af46e45577d5310 docs/models/shortcutmutableproperties.md: id: 78d6ffe3cf2c last_write_checksum: sha1:84ae6b4acd2e66edb0f0b641949a001abeccdef1 @@ -2243,8 +2263,8 @@ trackedFiles: pristine_git_object: 3163bd9b142a7e47cdff754d0c540909ddd26ad8 docs/models/state.md: id: e560b4e72643 - last_write_checksum: sha1:2e518b932b28e88bb7f75c61d6528742e58e5ef6 - pristine_git_object: 3e6199e2ec8d8a8acfe2c959ec5a3c814acfad85 + last_write_checksum: sha1:9d1ff41934e2a8f7258825dbcb425b41c94b4fda + pristine_git_object: 0b0039c52ef671a23e097a64f73ba80f24671789 docs/models/structuredlink.md: id: da6d9150c7ab last_write_checksum: sha1:df24ab2b09f885ebd7a4631bbeaf6a5dac93eee2 @@ -2259,8 +2279,8 @@ trackedFiles: pristine_git_object: 3291d8df76ba41b9dcc65e6fe069d0c40455662d docs/models/structuredresultsource.md: id: 065642e7abe3 - last_write_checksum: sha1:e4fa446a21e6677b04224b3c6b23da770594ea6f - pristine_git_object: fb03b801d9a4cde37aa05205f1e80f6ce44e2970 + last_write_checksum: sha1:49da95e857c000c5dc316bab657d36a060e90616 + pristine_git_object: 75ce27201b7dd633cc2f77b858e727a2c75f3f31 docs/models/structuredtext.md: id: f29072cb71a7 last_write_checksum: sha1:ea77efd10d4b272a7f95d83f31013753fc74113d @@ -2307,16 +2327,16 @@ trackedFiles: pristine_git_object: 8d7abd87759341052e2d21b22eae68411f2ba00f docs/models/teamstatus.md: id: 89e4b47e021c - last_write_checksum: sha1:1c278061bf516141e7c78c88a281f20044b2dab8 - pristine_git_object: 18176a760e4880651f14f9d80c7a88e6acfd1b7d + last_write_checksum: sha1:245862eeab99d1c9cc129fadf457cd215c97b127 + pristine_git_object: 4e615f21867c3fded047054f4eea766b084d2d0a docs/models/textrange.md: id: aa2834f24faf last_write_checksum: sha1:fefcf37a7d5795a2065ef20d809d4b394c4a3f46 pristine_git_object: ca53248daee8f03db9c78a84f6a9a9322d4759c3 docs/models/textrangetype.md: id: c3f36772bf19 - last_write_checksum: sha1:23a0dd8e9afffdc59c710477f2a64230b0521b76 - pristine_git_object: 8d8927a7f8b050a4b9f2ad95b32ff0ac7cdac6dd + last_write_checksum: sha1:6bc6095a9e4042f15a55c76a7db32705ae06fbae + pristine_git_object: 1da1c5ecfb57d12722c631412af4700f1f4ead7c docs/models/thumbnail.md: id: 67df0baa2bef last_write_checksum: sha1:63f363692d3548792f187d7b0256753e51b0a8f9 @@ -2339,8 +2359,8 @@ trackedFiles: pristine_git_object: df34cde7f877567e4a7d7a6cbbfc5416610b9d34 docs/models/timerangefiltertimeperiodtype.md: id: f0522eda6cc6 - last_write_checksum: sha1:cd3a0c854a08f6416008b8fa48366257651ad7e0 - pristine_git_object: 30a69147d2116563f81bc90a543481d9fc690fff + last_write_checksum: sha1:45e661129d7ef5a7b7d53c4c359f1d1a1933670a + pristine_git_object: 64f1bba3aefec45ea846c103a9c666f9149e868e docs/models/tool.md: id: 8966139dbeed last_write_checksum: sha1:e49814f5bc36e497d901a65b3a4aa64261f8a1a6 @@ -2355,16 +2375,16 @@ trackedFiles: pristine_git_object: 1ef5b029096d561cc42e52d6c71854a31e15d63d docs/models/toolmetadatatype.md: id: b1a95a1b5c7e - last_write_checksum: sha1:c2d6a5156818a07f5aef0533422b64b28bfe3728 - pristine_git_object: 8c8c0caad20408efa6763ccf91c7d03e8d6cc691 + last_write_checksum: sha1:374c9eb85ef4a69eeedb560a73b92211a55ae7b1 + pristine_git_object: 5e5d327fcb2856a5660ed76a38034ad77f27dc9d docs/models/toolparameter.md: id: 2e4b709a8f8d last_write_checksum: sha1:0dbc63f023bc40328a0049651f3b3d2d2414dcb8 pristine_git_object: 3fa3eb6f84d159104e562fc68e25b9bf28c091c4 docs/models/toolparametertype.md: id: 6e769c2bc63a - last_write_checksum: sha1:da81cc913ce83c18531a75c85c62544fd6672335 - pristine_git_object: c9304b8a58230b562d36d47493562a2dc94342e8 + last_write_checksum: sha1:9ad438ad09ca09e625564cf0da3e3f59ad309682 + pristine_git_object: c6fda07a3035c653da0d4409b7baac502ec84057 docs/models/toolscallparameter.md: id: 5cea7f92f640 last_write_checksum: sha1:712d7288e576894278440908916b239126ecce87 @@ -2387,20 +2407,20 @@ trackedFiles: pristine_git_object: 4fc04799b7fd88ff49f8e91c7a9975a39a73d6a3 docs/models/tooltype.md: id: 5e2ddf7b3863 - last_write_checksum: sha1:687dbb04be7aed941efee29fcb14269d9dcc31f3 - pristine_git_object: ea9cde8de86093172d2cd91f998078ffa1eac008 + last_write_checksum: sha1:af9eeb7a0cbd9ecd79a0f8fb1eda22009a23a114 + pristine_git_object: c7f7adecc74cc4072799169c68332df2d8932c44 docs/models/ugctype.md: id: 675d62d57771 - last_write_checksum: sha1:30a5948367e5057f4bfbc79bbfc1784aa393445b - pristine_git_object: ffb3d59b7d83e940ee855d8889d512f1c2495883 + last_write_checksum: sha1:d2947eca00264ea1c1d3f02daf5d0f17c0a224f2 + pristine_git_object: d1ee0c131e02a2d9373a75d71aae2636e9d704cf docs/models/uiconfig.md: id: c4d3817a701c last_write_checksum: sha1:dd422e5a1bbf9af85722cd43c5437716b8bb3017 pristine_git_object: b4baf6ac9ed785704e91c7c821dd40d1f726d721 docs/models/uioptions.md: id: dc415240cfa7 - last_write_checksum: sha1:8120476ec9af4330b9afb125a0884d376798f52c - pristine_git_object: ee50fe80fdbbaa979a24f74e9947fff1819e74f7 + last_write_checksum: sha1:047eab64e277bd948c39b0ef2733ee0bfea82a0b + pristine_git_object: 658ce2f53147228ae816674a68c9ffee72ea2453 docs/models/unauthorizeddatasourceinstance.md: id: b0a4b91f5b89 last_write_checksum: sha1:252dfa0628b61ac47ac34245bc7812ba4a7cb17d @@ -2419,16 +2439,24 @@ trackedFiles: pristine_git_object: 00da426a4573950bf4382c785bc3b97142957469 docs/models/updateannouncementrequestchannel.md: id: 0ec5a9b511a9 - last_write_checksum: sha1:5559b23293178dc3176fba2d48270c4009751b40 - pristine_git_object: aea73b618f8ba4b3bab7a9bafb990c416631d8a3 + last_write_checksum: sha1:8eb84e595e238facab67c2089e95c05546d62fc9 + pristine_git_object: efb4113fe14249cebfff870fedff388b46a1fd03 docs/models/updateannouncementrequestposttype.md: id: c4fb8de3c6b0 - last_write_checksum: sha1:3fae77b086ef0f31131463443921a9409a206550 - pristine_git_object: b5229e364ac6e41857ea55794dec5ae7759de607 + last_write_checksum: sha1:ae8959f21c8515e8a34c4d5a91c361a75a295b4e + pristine_git_object: 78d1989de091e3a248a330cbb3659fed073fe024 docs/models/updateannouncementrequestrequest.md: id: 1f63a3763a40 last_write_checksum: sha1:a31407e081b2b90412c3b07162ccddbda181547a pristine_git_object: e08d3f9c8a6cec4f310eaeddfd9cc981101e9fa8 + docs/models/updatedatasourceconfigurationrequest.md: + id: 63517c4319b5 + last_write_checksum: sha1:06e2a875f4305e6afa50168d4c91f9b68c281b37 + pristine_git_object: 938e8f1b385c9831916cc3d151aaeab65d43f933 + docs/models/updatedatasourceinstanceconfigurationrequest.md: + id: 5230dc3a739c + last_write_checksum: sha1:5a41bbe2580b258489b341371634e3e5a979b98e + pristine_git_object: 50e0f667546eb80337155afc9d9a503b9f522a41 docs/models/updatedlpconfigrequest.md: id: 3bcc0c7398d0 last_write_checksum: sha1:1a0b62f51d306beeb83f6f8ef7d68c6a85eab65d @@ -2475,8 +2503,8 @@ trackedFiles: pristine_git_object: eb8f7dcb8b3db7f74033c2c002d4000543398055 docs/models/updatetype.md: id: 4e32b28bffa5 - last_write_checksum: sha1:926ff43031b3b748fc9e1e0694eadfa261cdc5d5 - pristine_git_object: 36f63fe0671c76ebf906773b6b71b0fb2ce4c6eb + last_write_checksum: sha1:4a1d4c8b62f84c91cbb4e5bedad5356dd2ab4421 + pristine_git_object: 9208da7a22f7a9632ff93faa326408a5c8802c04 docs/models/uploadchatfilesrequest.md: id: c52c3f25ab45 last_write_checksum: sha1:99a112866bfd01c4ed2389b94112cd83e5fcd191 @@ -2495,8 +2523,8 @@ trackedFiles: pristine_git_object: c39bc4c8185092b7bff6ef2d70c4ef80aae468fb docs/models/uploadstatusenum.md: id: 71048534ec39 - last_write_checksum: sha1:1790b719ffeb5b1cd8e42369423a8aad4402c3d7 - pristine_git_object: 56e0e46058cb2124fa8abedd45d78581b338d501 + last_write_checksum: sha1:bf315ac7ce23f4359859d4e00483bb6547314418 + pristine_git_object: a46e1e00e1a8117bd32935823ffbcdb38c731376 docs/models/user.md: id: 8306f1e41187 last_write_checksum: sha1:2b7119a504a8ed2044d41c522319269c116e35f0 @@ -2507,8 +2535,8 @@ trackedFiles: pristine_git_object: 90d7bb168aeee6f8c87a0756556309390ccb5d5a docs/models/useractivityaction.md: id: 8b611b38e1ec - last_write_checksum: sha1:b1fe03d92d0f74fb32f3b04e5cc062b8d469d72e - pristine_git_object: 495baa78b82ba00f841ce18de4ca54e4bf98a92b + last_write_checksum: sha1:77b143836a0e3489fe1c0b74a78bf5a76e320b6b + pristine_git_object: 24d98acf55487579fb7a65ba7f32fe53df2d6093 docs/models/useractivityinsight.md: id: a9213240776e last_write_checksum: sha1:d21f208280f0dd69c3e83ea4b822450aad7456a5 @@ -2523,8 +2551,8 @@ trackedFiles: pristine_git_object: b65d1028ad77effabb6af26688ce6ca20d0023d9 docs/models/userrole.md: id: 63aa1e945a21 - last_write_checksum: sha1:34692fa55aa59545c63a6b875432452e549ac050 - pristine_git_object: 211f4f264cba482797c0a4c08de069a55b602fc0 + last_write_checksum: sha1:ad2368f4372f98ec6bb84dfb27e8fedb06810268 + pristine_git_object: f74d5aba55621cb07d692eee7166e749c65eb428 docs/models/userrolespecification.md: id: 9b017501aae6 last_write_checksum: sha1:04a2724b1e60ed87c3f111614afc9e792d4de7f7 @@ -2563,8 +2591,8 @@ trackedFiles: pristine_git_object: a6f11ec43188eb67372972dbb50aa5252021c4e5 docs/models/verifyrequestaction.md: id: 27ae6bec5143 - last_write_checksum: sha1:98746cab184ce77a1d856a7f50a454287541abaa - pristine_git_object: 32df67b29e4daa768a598043b25bdeb9148d0c3e + last_write_checksum: sha1:0857e0d94ea445b78fcc9490e4a911bde61f570c + pristine_git_object: e711cbe91d212255db8e32d3fcb0f3260b42ca3f docs/models/verifyrequestrequest.md: id: 881201e9e321 last_write_checksum: sha1:4a0de4594e64cfeb0c141ca242c3f8c26e028883 @@ -2575,8 +2603,8 @@ trackedFiles: pristine_git_object: 13f5dde99980decbd4182124f1f033f58308d933 docs/models/warningtype.md: id: 0b9df591f487 - last_write_checksum: sha1:c2eb99d70a6980d44d807c54f76266ac2ec80d6c - pristine_git_object: e40d81ceb25d2f5a551670dd23e1bb7744457028 + last_write_checksum: sha1:d13bf7d08b648f318befe58fcedb3628001d67fb + pristine_git_object: 2935dbc78cc448dca3501e7c8b7ab16a414752f1 docs/models/workflow.md: id: a782201b7327 last_write_checksum: sha1:19c0d6bbf95e9ff133ccfdc3cad22965dab1832e @@ -2587,8 +2615,8 @@ trackedFiles: pristine_git_object: a89e9d79c08bbef75e9ce179b8b926e59ffbae0d docs/models/workflowfeedbackinfosource.md: id: 76d13d36f56c - last_write_checksum: sha1:02ace7095580183c4cb5c6b162e131bb63d2af5f - pristine_git_object: de4dcede5c79c79fdeeff18c6848042d46893538 + last_write_checksum: sha1:dc0b4584f7a50f28ec32ad448e0200682982d67b + pristine_git_object: 57ce7f1c4b7bd8f2c4ee31b53037c41b077f463f docs/models/workflowresult.md: id: 8409c730a266 last_write_checksum: sha1:1ad28bc9bfeeaaf43266e4ca8926bedd231c768f @@ -2599,20 +2627,20 @@ trackedFiles: pristine_git_object: b39290561c61d2866b50a503ea54d05a57277a90 docs/models/writeactionparametertype.md: id: aff45ecb60ef - last_write_checksum: sha1:ed806d34ce1a6a7e993934bfc34408664f23574b - pristine_git_object: dbc9543a62b7d9ff14a4193fd5f949c45447f9d1 + last_write_checksum: sha1:54da6bf2d72450ae22fb8886dbec8a7ca901559a + pristine_git_object: 50cd2a8911f81a07496e325aab0ea3f2cd698d5c docs/models/writeactiontype.md: id: eb923b8f9910 - last_write_checksum: sha1:d31ffc33d5fe32c33c346b6e43a689763c5ca8ed - pristine_git_object: b90f9f6bfff40f13ae6d86aeff20b6d1764b0315 + last_write_checksum: sha1:f0960b6f6dc931d6bed43481241839a41db5a2e3 + pristine_git_object: 35c9db68f999c0d549f467e88eaff85723d7ae1e docs/models/writepermission.md: id: ae89309e8936 last_write_checksum: sha1:e1635e99db5bc7cb1f02a91cfeacbdb71beecb21 pristine_git_object: 61dd41f0319201cc105e29174ab1cc0018cecbce docs/sdks/agents/README.md: id: 5965d8232fd8 - last_write_checksum: sha1:ac437d9707a34794688d275ba9b9daad024f0410 - pristine_git_object: bf4a2db8f086430f20eb25bf3cc7652b3a4bcef6 + last_write_checksum: sha1:f4fd02ccef64c791d216a40e1c9fcd4dfa43bd2e + pristine_git_object: 2856eeeb88599fe960b4060271977966c0650d39 docs/sdks/announcements/README.md: id: 3d2e130a217c last_write_checksum: sha1:ecfa655bb27dee6890656542cfafda0aa6ed1ab9 @@ -2655,8 +2683,8 @@ trackedFiles: pristine_git_object: f311071e89056a0df703b15f5ebdd17de75e9488 docs/sdks/datasources/README.md: id: 024d3ed36945 - last_write_checksum: sha1:9e06819a20a8e78cc82c7b4ea7c84e69206a4d29 - pristine_git_object: c9f66bdb622b4684f9f8d14a8ba8720b2809f463 + last_write_checksum: sha1:717afc78a8ff1b75fc467f73d7804507a7dbb848 + pristine_git_object: 03c2257dc739cd6b6bfc5b5201c2e962a04a4b32 docs/sdks/entities/README.md: id: a140ac5181b9 last_write_checksum: sha1:c5955573d5570bc98bb911311860abf4c85d19ac @@ -2673,10 +2701,14 @@ trackedFiles: id: 12c7fa0c818a last_write_checksum: sha1:6ef7ed841d5ee04864791ef63a43f728d931b713 pristine_git_object: 9e293dca8d87e21416cedc1dcc033cf091f9baac + docs/sdks/indexingdatasources/README.md: + id: aa113bda8cbc + last_write_checksum: sha1:9e06819a20a8e78cc82c7b4ea7c84e69206a4d29 + pristine_git_object: c9f66bdb622b4684f9f8d14a8ba8720b2809f463 docs/sdks/indexingdocuments/README.md: id: 7ca38da53414 - last_write_checksum: sha1:4d55ef9f7d2e8d0c4457753721f5044943a46db4 - pristine_git_object: 20c38b1320ddeb840b17748de9ec9e5e05b618cd + last_write_checksum: sha1:497e12866259c8c648985afd3f610d0ec1cf53ac + pristine_git_object: 184a39035ab589e6cecab631f18eca2521a5fd47 docs/sdks/indexingpermissions/README.md: id: f13d7f2a062c last_write_checksum: sha1:06ef4e2ff054e62867b2c6add2e90abcc7d0ea5e @@ -2695,8 +2727,8 @@ trackedFiles: pristine_git_object: 0aa193b38d7d95cd3301469f9a6ad1260a1b1b51 docs/sdks/people/README.md: id: ff7b3ee21c2b - last_write_checksum: sha1:4bb2592f2d27226672308fa1f3cb5c7ebb7691fb - pristine_git_object: 8b35d44df3afdcf9a3e3bc320a315da2651d095b + last_write_checksum: sha1:46141250c3e083e1fa4f244b4e66adea510f69fb + pristine_git_object: 4450bbe42caf5db7c75d7881863b0972fa7f13a6 docs/sdks/pins/README.md: id: e887aca9ba0f last_write_checksum: sha1:c11aea840d911395a606a528575fe224c8a6b86a @@ -2735,8 +2767,8 @@ trackedFiles: pristine_git_object: e2fda7fe263c2a111e53872e3ad5bc324b4dccfe pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:cd9618a071dc65e548c604011f7922a19bd4e112 - pristine_git_object: 358810d2a9d3bd25e6fbe61eaab9cc0c6b9e374c + last_write_checksum: sha1:4303358b763c488897a3ec7f2f11e666cbed14ab + pristine_git_object: 3dce96bfa6c29e5d5d8367a56a3296bea2766f72 scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:c2c83f71dea61eb50c9e05da83b16d18b4da8794 @@ -2763,12 +2795,12 @@ trackedFiles: pristine_git_object: 58c4d70ac1797b86ff5c4237cafbc344c42d8f64 src/glean/api_client/_version.py: id: 0ce22b26136b - last_write_checksum: sha1:1e660e8b70d98a8dc857edd2b64e505881b58095 - pristine_git_object: ff2fde5492a4ff878e3ea49923b2f26af789a187 + last_write_checksum: sha1:7eebbd9751e42bb2be299fddcd4503aec2fd2f15 + pristine_git_object: c4504a0018c788d0fb9fc4a6f4ce6a3d62cf4e82 src/glean/api_client/agents.py: id: b925701a9217 - last_write_checksum: sha1:c1688c3d141db7707458f3ac7ff29c4a71e6812b - pristine_git_object: e83595d0b12f20855f2e75dae207c28168c0f25c + last_write_checksum: sha1:ee99ae3d58f7f77ac2eba99c104d04d53c16c09c + pristine_git_object: 134cc9bac9504c13c06a316f74fcce7dfc6eb054 src/glean/api_client/announcements.py: id: 452f3d593912 last_write_checksum: sha1:f46bdf97d06f038b579907fdb879a65bc995d326 @@ -2827,28 +2859,32 @@ trackedFiles: pristine_git_object: 756e122c3e258805290344aa6d978b351bcbfbf5 src/glean/api_client/datasources.py: id: 22aad0060f38 - last_write_checksum: sha1:07f1693c31b5372fb55f178e5b9bd02b7c40c3bf - pristine_git_object: d7340a086976fc1e2d3f10acaac30895defbc504 + last_write_checksum: sha1:4bae18a40be4792dc8c78b4f0b79e2c2cfbe6ec6 + pristine_git_object: 60e6da53662c711d224bd5731140220c9152cb18 src/glean/api_client/entities.py: id: 38ebbab2f8a0 last_write_checksum: sha1:2cda7b3a04563e5e452eb65a71e357e34707e144 pristine_git_object: 2564ac766b63e3373d8db9350570edcf319d211d src/glean/api_client/errors/__init__.py: id: 88bbd5450191 - last_write_checksum: sha1:a070425d6b343a94b14e395754898f1169c899f3 - pristine_git_object: 185efb348fb668e36af44ca0d59cf401ca40c003 + last_write_checksum: sha1:c690818d01852a6dfe4049feb3f7e0069ed09a58 + pristine_git_object: b8998ad3d52363edb5c468d4da1f0d11dd2e5c7e src/glean/api_client/errors/collectionerror.py: id: c0932ce3ae9f last_write_checksum: sha1:0b5f08e5372726fe70cd721719c386d0e21d0dcc pristine_git_object: aa03a80dd8295663dfa6b12558de485cd17f3c1d + src/glean/api_client/errors/errorresponse.py: + id: 908371c9ccd7 + last_write_checksum: sha1:8aebd1486c552bb87f95f8bd1f2d4cb7a8323f96 + pristine_git_object: 70cab4aacef1e755b93552a80c88cc9998f134ea src/glean/api_client/errors/gleanbaseerror.py: id: 1d7d890ee3e5 last_write_checksum: sha1:75b3f2e5195423e6a5f5be3b3268d3eaa0b83e74 pristine_git_object: b2f7acde3c293f63d1af370cf1bd4266048c3834 src/glean/api_client/errors/gleandataerror.py: id: 8bae5389c0bf - last_write_checksum: sha1:87460de08c511bb260863496050be12c17831c23 - pristine_git_object: 7b0dfa056f506e6b3c33c3a648b43d41287163b8 + last_write_checksum: sha1:d9db844614059154744d99927a7468306de298c2 + pristine_git_object: 754c85de70a38e982ea6368b9c4f922883a9a040 src/glean/api_client/errors/gleanerror.py: id: 9f1d85652f59 last_write_checksum: sha1:a7a2bc1335123c6bd8c9f945a9c653f061e14167 @@ -2875,8 +2911,8 @@ trackedFiles: pristine_git_object: 89560b566073785535643e694c112bedbd3db13d src/glean/api_client/indexing.py: id: 46c62151847b - last_write_checksum: sha1:25a4b21167ee3b2148c858a17dd377fcf032d697 - pristine_git_object: 27b07e8e6b7df92743407034732d27968a16e86b + last_write_checksum: sha1:ca2f3df9dc68bbf4d1d666ffe4a197e40dd89e7d + pristine_git_object: 3a668c8ce7805ea922a292ce35ff9c4f1f4d6afc src/glean/api_client/indexing_authentication.py: id: ab6b40ef5aa5 last_write_checksum: sha1:0df45ff755a309dbad2287463b541b1a7fc4d8ac @@ -2885,10 +2921,14 @@ trackedFiles: id: 97727f0727c1 last_write_checksum: sha1:1e39324e38f2abbaf1bb65dd2a5525308f9a92e1 pristine_git_object: 7e118cd30a61f7e8eab81c9e2b5efd83c4c5a594 + src/glean/api_client/indexing_datasources.py: + id: 9520e2db8686 + last_write_checksum: sha1:664c01e7d5f697ebbaa91ab37f662d605d58a10c + pristine_git_object: f5f5506766b76212d51986d2ec10dfeaf9b1eae7 src/glean/api_client/indexing_documents.py: id: b5c2b64ee1fa - last_write_checksum: sha1:d480232a8f694d6596e45943ea59e03448c636d6 - pristine_git_object: 4cfffdbcf6eb129d99c11b9834ec5f5a571c62d9 + last_write_checksum: sha1:b2f315d743b4ebb70a82c936c78f454564efafb5 + pristine_git_object: b529ffee988ae02a29716f9958a2de7eef03af09 src/glean/api_client/indexing_permissions.py: id: 86fd3f14396c last_write_checksum: sha1:71243cea148f15642f0875da0679008c0b9f4019 @@ -2907,296 +2947,296 @@ trackedFiles: pristine_git_object: 1c182cb0150642014463e1ceec8bc8b785e5b9f3 src/glean/api_client/models/__init__.py: id: d5f6ea5efcbe - last_write_checksum: sha1:063f018262ae580319a4e731ecb96e5f42def78d - pristine_git_object: 87205efe337c29272a0f98670502f8ba401e231d + last_write_checksum: sha1:6239f4bb2a3b69fe65135925bcc3e04983c6af4d + pristine_git_object: 980bdd63db8f58a09de5485817a4cafadb1b3367 src/glean/api_client/models/actionsummary.py: id: 34ccdf9f1526 - last_write_checksum: sha1:feac9468c6b2885ce11bf306ca94d3de53aac70f - pristine_git_object: ed3d1250613625c71ef8e73ae4b26b4ba6522b79 + last_write_checksum: sha1:cfefc6678a5612dc8d50f2b0074dc54bb88e00e0 + pristine_git_object: 399db3e4ca60dc5a26085e908c780329b872d7b4 src/glean/api_client/models/activity.py: id: 6ea27628a0fd last_write_checksum: sha1:27f676cc8276973c98176252bf06e2b4b965935e pristine_git_object: d5bc29a46f4e35c5115aaaf0fd1ba770bbd637f2 src/glean/api_client/models/activityevent.py: id: e335c36684c8 - last_write_checksum: sha1:d59b76e49c0c02e96f903bcb2457c5ec3fa6958d - pristine_git_object: 8fe3b064e553c819f9ae60b6c77d35ab6dddec12 + last_write_checksum: sha1:8ca663ccf2ef6fa2b20b1983ac1bd71799d6c594 + pristine_git_object: 4f6bc8f3f3dcc86be5395566c7363e7951ef273e src/glean/api_client/models/activityeventparams.py: id: f6c9399e1ae1 - last_write_checksum: sha1:620afde2c4bd20eb699d2985a2b20332b54dff64 - pristine_git_object: 338ee8641c10800cc4506af57874efa5c0192df8 + last_write_checksum: sha1:46cc6bcdfe08d88c42c885dec74b11fb9b0c0ab7 + pristine_git_object: b084d4af9c37f9360038acba8620f6a928c8b3e0 src/glean/api_client/models/addcollectionitemserror.py: id: 331e64597a08 - last_write_checksum: sha1:dc81d045dd1a2f4a2dbda4db095e022409e83c67 - pristine_git_object: 8c28813170570876fe983e4d0e9429a729478ba8 + last_write_checksum: sha1:9916a2da0c372d08b784e1b4bf0f069af6966af4 + pristine_git_object: aa8987c802029d1182fb7e93adc90b79b18298cc src/glean/api_client/models/addcollectionitemsop.py: id: b74e2acd56ce - last_write_checksum: sha1:74940403af74efbe25adfee529aa347215e05465 - pristine_git_object: 63d983e7368cefb2c90b88ba4f8615a517bda8e0 + last_write_checksum: sha1:9fcffec0959386f010452d2f7b086a130b6ca0fd + pristine_git_object: 2cd893c637bb8b92fe77b5a2f20c0e9a08cd4f0f src/glean/api_client/models/addcollectionitemsrequest.py: id: c17a58ee4169 - last_write_checksum: sha1:5b96c85c3cd37c90c546025df26e33c222f7725c - pristine_git_object: 72713ec964f341cfec6752569d7ae089f6c5e1a3 + last_write_checksum: sha1:39bdc6f03c053fb55adcbcb2209d8e2ecc9a4988 + pristine_git_object: b440c09be3cde09466a4d70231a5552a056aec44 src/glean/api_client/models/addcollectionitemsresponse.py: id: 692242e4f85c - last_write_checksum: sha1:942696b0c698bff1a1c01b51ad75c1088c41a62b - pristine_git_object: 776d7a2a3d7677b125a39a9d820067ecde8c0440 + last_write_checksum: sha1:ffaa821257699b0ba311f1bbf832eaeb8d2a77a9 + pristine_git_object: 80294bce5a22bd4bde89abc607fdd453e1c23541 src/glean/api_client/models/additionalfielddefinition.py: id: bbb5186e656e - last_write_checksum: sha1:c1c1d3c437feefafef553fe1da929f6f3af7585f - pristine_git_object: 0b381cf2d9934f9c85156e601a6ee8f012fca758 + last_write_checksum: sha1:62f14ca1273b7c784c38c46f853862d81a298e3d + pristine_git_object: 75e99935bb393ea10f44d384ff629e6445dae2f9 src/glean/api_client/models/addverificationreminderop.py: id: 333d8f0e3e72 - last_write_checksum: sha1:a7082555b05284d95566fd94212459d457c5e51a - pristine_git_object: f50d3fae512c0caeee0df58211b1c05a57a03e73 + last_write_checksum: sha1:3385d15b62664b2816a9c1671158de067dff21df + pristine_git_object: b6b9c1a245a6092084d14c4842cfde2696b8c477 src/glean/api_client/models/adminsearchop.py: id: 3008f93ed424 - last_write_checksum: sha1:b9b39cbdb7798099e81629dcbc98161ce3da15ed - pristine_git_object: 2f774337a58efdc326fe412bb926b2fcdc7a6ac8 + last_write_checksum: sha1:1320bfee596c5f9ba009617da324a6b32c51883c + pristine_git_object: 6578e5e3116dec2bf0f6d7a138668e614fbfa4e9 src/glean/api_client/models/agent.py: id: f8192dae32b0 - last_write_checksum: sha1:b967e8801ae200688c17457b16cb99e2f7ca4b85 - pristine_git_object: 51443a2df3edb4ca3574a495d45757b7d93d8789 + last_write_checksum: sha1:3ed08dc2b92d12b407c7e9f7d4ecb5308a6ed3f9 + pristine_git_object: ce46c0888ed7f928eacc8c3f6ea4d8bc03521a54 src/glean/api_client/models/agentconfig.py: id: 6bc960f78847 - last_write_checksum: sha1:196005383cfea5363c720347a6e24df58c16f4fa - pristine_git_object: a4b95362d9e5803519846a73b4b41d0481d94239 + last_write_checksum: sha1:58b2ce5dbc8527ddd55997535408fd1100780b2b + pristine_git_object: 2a7bb3d113f4379cc94a8299f64b98ac3b52c90c src/glean/api_client/models/agentexecutionstatus.py: id: ab4f2c2f8eed - last_write_checksum: sha1:b7333d24342b551d95d36dd4ce1021db65fbfdc6 - pristine_git_object: fa71fb35d11dede8cb81dbfc83f7ec2fa2ea52d0 + last_write_checksum: sha1:d3bb768f118d7474a4fae0a7685922c6405d0f90 + pristine_git_object: b93cae26675bab7b692af5f97f005040faff7958 src/glean/api_client/models/agentrun.py: id: b808ffdaa4d9 - last_write_checksum: sha1:69120d4a77c7f4670973a7e41af55b4ea2af1f8b - pristine_git_object: 4c519b560d3fffcab870f148df81060487beb16f + last_write_checksum: sha1:152bc21e131ae652cb409cb64934d30c82d538dc + pristine_git_object: 0439dfdf5688b4cadb00dbbf24a97436e55530c1 src/glean/api_client/models/agentruncreate.py: id: e987c7a76285 - last_write_checksum: sha1:d02fda45ed106de951c65f67dbc23110223e66ee - pristine_git_object: 496807b00439dc1486393dd942b21194707d2887 + last_write_checksum: sha1:463bed5e1b5259ba5ad2521a1c022a7cc778d6b6 + pristine_git_object: 407bbcb8c3da61750d7b2de36281851dcf836595 src/glean/api_client/models/agentrunwaitresponse.py: id: 063b87daf535 - last_write_checksum: sha1:a8afa7c0621527c4b83cc59ac61b6a0973f86181 - pristine_git_object: d43eb2a685ac8eab0d604c682756a1b37eefa796 + last_write_checksum: sha1:6a4a302684707e649a91c32c45192b6d2e06650e + pristine_git_object: e09e51eb6c09dbb2493276a6e99dbfd43503f18d src/glean/api_client/models/agentschemas.py: id: db15c1840e94 - last_write_checksum: sha1:1e8b2ba0fd73677b2fd8d87d4ffc8bf6243049bb - pristine_git_object: 5f36cf42035e855e6b6c931cf9dc178ddd18d467 + last_write_checksum: sha1:79afa78f45c1dd30adcbdbb6fb133ef292985720 + pristine_git_object: 9feaabfec6f4b7225c1b4ba572671b0bd900ef7c src/glean/api_client/models/agentsinsightsv2request.py: id: 754887d301a3 - last_write_checksum: sha1:e90aade3fead8137c69f5252bab2c272ab7b5bc2 - pristine_git_object: 80aea6aac4ab16204f73b838093628d049be63ea + last_write_checksum: sha1:1311b9194f1aab2b93f646175c54b7ced2522651 + pristine_git_object: 027fbade0c78c6974ff596ccf77a0149eeb7084b src/glean/api_client/models/agentsinsightsv2response.py: id: 2bb9ea2bc70e - last_write_checksum: sha1:26f509405bf31ab74a3c635f22a300999f3736a6 - pristine_git_object: b009d88f82c38684eb77cca58f87f3b697a64150 + last_write_checksum: sha1:6fc1738e963ea52ac699b75e0fefb17bd41470a1 + pristine_git_object: 64eb67f7f3435b7e03e3f3c293b4261c2313ccd9 src/glean/api_client/models/agentsusagebydepartmentinsight.py: id: 50317bf09cb6 - last_write_checksum: sha1:c1269fef7eb1d9ddfc4dbea9af4a6fbfc3f5059c - pristine_git_object: a5b69b912a9bdfe8fef8069e278f97cd75232ecf + last_write_checksum: sha1:6ee545d0cdd6246b7b743870984e71276ab7dfd6 + pristine_git_object: bcfd9c3071b5b45fcc0e64f404eb8e8f83e51cbe src/glean/api_client/models/agentusersinsight.py: id: f40366a65563 - last_write_checksum: sha1:3e0f2e0d1814bb9f0e314af1b1bc01b4f0f0e545 - pristine_git_object: dfdf8b6762031d1164226197f2a29493b6dbd774 + last_write_checksum: sha1:8190b560df9c90f0728f4d752c68eea4c1834399 + pristine_git_object: 13ed679e9400d9033694cfe6c511fb29cbb6932c src/glean/api_client/models/allowlistoptions.py: id: 956eeade455c - last_write_checksum: sha1:aabccb5a61e95ec52fb70108eef34fd120868402 - pristine_git_object: f49943d26a8e71d4c0795c3d4ac8c8b811634ab9 + last_write_checksum: sha1:a561950c840b4f1e53361dd3bea159fc618f659b + pristine_git_object: 123b345c647c7b305de2915ba7534f9c550eadc5 src/glean/api_client/models/announcement.py: id: acb78a04f33a - last_write_checksum: sha1:c253f5ae1abc67f3f7a68b21ccd2cbac00d086d5 - pristine_git_object: 10be615e0dcea2003e3d71e4ddb44e9d231ff11d + last_write_checksum: sha1:82e36a8d52a19173760fa7ecb21badea1a3247c1 + pristine_git_object: d6948fb7e471f7923309156e6fbb177dc032ac4d src/glean/api_client/models/anonymousevent.py: id: 6b288f5ca26b - last_write_checksum: sha1:57b389f5fbe18625fb2a3caf16841e342ff4f6bb - pristine_git_object: 03b8cf1d6d9c7357703cbb20d80b533434274f38 + last_write_checksum: sha1:d7e0c848973745ff65222d74f7c2f278bdada0cb + pristine_git_object: 96c2e34b459baaef343e118b8f4177ceb5532b99 src/glean/api_client/models/answer.py: id: f7b69d1846ba - last_write_checksum: sha1:b28d496872409cbd73da3250e62ebe866775d622 - pristine_git_object: b6791d1e8e0488a77be5c6aa073787582fdf0e93 + last_write_checksum: sha1:ec71396a7903d23c5a3379090a3fb72047726fdd + pristine_git_object: 8d68b1f9f33128aedd993f850d48036fbc513d69 src/glean/api_client/models/answercreationdata.py: id: 85c82aca1720 - last_write_checksum: sha1:dfc6c75e412895a40394a7fb2486d7ee2f95b120 - pristine_git_object: 70d863df051980571cc4c8eccaf1b23bdbe4fd23 + last_write_checksum: sha1:9c49bd902b00bfe8f10ffb92e71f89db99e5d89e + pristine_git_object: 2e5aee70dae8c703444e5665f4518516ce3d9edb src/glean/api_client/models/answerlike.py: id: 9425fe88486f - last_write_checksum: sha1:484dd2c05fb88547af6f541fa61d7761703aa393 - pristine_git_object: 0752df84892e9ac18017e32d1e6a8a1b4ad2e49e + last_write_checksum: sha1:08b729b9374fda266ee3c889985d6a092b5dd6d1 + pristine_git_object: abee3d1ad9a75461cd60429454ce56948ba71a0c src/glean/api_client/models/answerlikes.py: id: ea4601f607fe last_write_checksum: sha1:f921c97ea220ffd86a43907f35323a17618c95a6 pristine_git_object: cd1539f06f5fc78656fd0bcb090b0841cdcca997 src/glean/api_client/models/answerresult.py: id: 4b17918508eb - last_write_checksum: sha1:867da5cf78e8cf1e8dfc8f287e3ca1c9c06218f8 - pristine_git_object: c4d0873c1a1e5518429d5807e131ad6ca4083cf0 + last_write_checksum: sha1:d37ae7f86578dabc53a28b2ba1ce3f2bfdc7d1a2 + pristine_git_object: ae01d20a03ea529b63456191789e105e2b98042e src/glean/api_client/models/appresult.py: id: 90f48896fb46 - last_write_checksum: sha1:b89404b7cd58f73b0a2c91b125cccd0cc6f2c01f - pristine_git_object: 6c7a23cbec5e09d58b3c9ae7df7093d0a694e233 + last_write_checksum: sha1:3c4b307b7a965ff51f2f8b9c0d8d558563b397b7 + pristine_git_object: 2105b7fe8cacbb74eab2c4d13bee7fe20af2c855 src/glean/api_client/models/assistantinsightsresponse.py: id: ce7387f28d84 - last_write_checksum: sha1:5bf623fa7fcbfee1e568f642ed05f43a816dd3e1 - pristine_git_object: 700d8807b56085904c763bcc748f4956ad2f0aaf + last_write_checksum: sha1:bc60749d512ef7134d12cb08a018312f28978746 + pristine_git_object: d6fa5492574a8b8fd863a26764f321e628d96cae src/glean/api_client/models/authconfig.py: id: 9e88a246ee36 - last_write_checksum: sha1:cb4761c20c3260335f8e9155ce002e5b271c681d - pristine_git_object: 4179e9d2c4884514cbc0d6b67a21fe4744db982b + last_write_checksum: sha1:2f21b4a21e546d8d9ea9732843084855eb976a0d + pristine_git_object: 65c26d2e98d6db6ffed8f5c7fab6356c642a1f69 src/glean/api_client/models/authstatus.py: id: 75167e3b3ad0 - last_write_checksum: sha1:d89b931424ebacb324e54f53df822ca788bc6dc8 - pristine_git_object: 0916a8319eca076dea3eef19c17d4f0e3bc673a6 + last_write_checksum: sha1:4cdc7988894d6c50dbc42d0613bc22dbe6a29666 + pristine_git_object: ea66e4544c221d502b224d8c6479cc5e3adb9872 src/glean/api_client/models/authtoken.py: id: 32cff6c3af95 - last_write_checksum: sha1:05d6a1988895ae285d96f101785640ebf82a247b - pristine_git_object: 5734e3c6866b7083f9f5576b3c2a18ea9bb2cd8a + last_write_checksum: sha1:0ecd2db30ec7f1e00e4809b57d3300e82c90438a + pristine_git_object: 7551c7f655fadd39b5469074d0bc14b1a5bf7a01 src/glean/api_client/models/autocompleteop.py: id: 64525dda05ca - last_write_checksum: sha1:1fc647fbecdcc7ff2d8686fff1c871a1205ca6cb - pristine_git_object: 1becb54cacdf896e31007d57c71c8d6b32b9c997 + last_write_checksum: sha1:712542e009a8dfae0df4658487b58eac2c799238 + pristine_git_object: 97d2bf4e337f24d11d53d15916bd5c59b9942b66 src/glean/api_client/models/autocompleterequest.py: id: 23b29c9e7dcf - last_write_checksum: sha1:eb3a6af81c297c032e1b05652b2c741532d7da9c - pristine_git_object: 8aa1ff023d00c53d390f05e5a21c0a06c09902f7 + last_write_checksum: sha1:6ec652c62c839121a1cd8cb85ce40fd512ad9005 + pristine_git_object: c57ae464c54fd02c6be6ef63489be48df01ef855 src/glean/api_client/models/autocompleteresponse.py: id: 860297c9ef84 - last_write_checksum: sha1:b8ef853363e0368aa9ffb4ccd4aed2ef27f6826b - pristine_git_object: 3dbd74976fbe39ac070a1a469741d6643cabc438 + last_write_checksum: sha1:7972aeb2f5bd1c56df96bbd708088add6d5f04fd + pristine_git_object: cca14924a08bed4d2ca091fcbd03ce88d602fae7 src/glean/api_client/models/autocompleteresult.py: id: e88abde43844 - last_write_checksum: sha1:5bfb07e61d7871fac3b045b39eab0a1ec18cc8cd - pristine_git_object: 2a7b178947d872fcab6a5cba60c3766b20a6481a + last_write_checksum: sha1:6dc42389dd4578ac166fb84fc85143d71c940c52 + pristine_git_object: 7b4d801078a8deb7bd0ebc803d0e2a32372888ed src/glean/api_client/models/autocompleteresultgroup.py: id: 10a91a57b6a0 - last_write_checksum: sha1:0095e9e0dc59aa0a847a3933265e6291d222720e - pristine_git_object: 561c86e021d559ba03e612da360258b393fac497 + last_write_checksum: sha1:018ee99331256ffcb4b17c746bc880f0d289bdf5 + pristine_git_object: 09788d2bc5092a529eac8404546d46baf43189ec src/glean/api_client/models/badge.py: id: 81bb71933ec7 - last_write_checksum: sha1:672ab57235f3801e8ab92a0d8e5ba750e9ab1d9a - pristine_git_object: 8829ca8275bb84c17a61f383bf77b9b1870f6583 + last_write_checksum: sha1:102e5350c47971627eab93b6839c66b959a1dc7c + pristine_git_object: d5675152919e152bd5aaec27e96f623722de3da0 src/glean/api_client/models/bulkindexdocumentsrequest.py: id: 5c7c3ed649f7 - last_write_checksum: sha1:b9b8de3aca3c6c8d5c0a42bb955f197e3dff7208 - pristine_git_object: ecfba8c765ec2ee9a654eaee939445def7a4ad3d + last_write_checksum: sha1:1bafb9a88332bf0f11978fa7e65b4c32e1769e45 + pristine_git_object: db14fe54b9d48ef247e86f79a05b483924f89007 src/glean/api_client/models/bulkindexemployeesrequest.py: id: 8c5302b89bc9 - last_write_checksum: sha1:c225fdea2f5e7b603041b311c66c1dbcc913ef69 - pristine_git_object: 82373576ca46ebf416f5523df75eae310a68299f + last_write_checksum: sha1:83a188739492734fc0df01b9e00238825cb452e7 + pristine_git_object: 43014e311dab71ae1067e8de7ba83d161670d02b src/glean/api_client/models/bulkindexgroupsrequest.py: id: 5a112a41efa1 - last_write_checksum: sha1:8c6f5d80cd43a4f96498a9161fc5cec1345578ba - pristine_git_object: b30a8fc3ee610b71331d28d90a107d68804f2dc4 + last_write_checksum: sha1:679a7ee4740eea591466c0a6e1a407614988afa8 + pristine_git_object: 99f12d8b8314866e18dc08f7332baa43ac88c2ce src/glean/api_client/models/bulkindexmembershipsrequest.py: id: dd713fbaef52 - last_write_checksum: sha1:5b707fb0f60cdd3b554ab456ad2b810d071835ff - pristine_git_object: e28298713b162708d4e302f15bd2fb660650a4b2 + last_write_checksum: sha1:53f4bfe3b8aebdf2c4bd03b13c4c9e24ef2507ae + pristine_git_object: 81740610a725a531e9b2f956a02457299b7cb7fe src/glean/api_client/models/bulkindexshortcutsrequest.py: id: 1bb21d370a7c - last_write_checksum: sha1:651f61242ca14365e77d336ce55e1d05d09f38d7 - pristine_git_object: cfbc36b6004a226f8270ee5a771b314711ce7dd9 + last_write_checksum: sha1:65d752cc0af955d44cd26281c6bf09ab5abdbd84 + pristine_git_object: 3aae4c0386d42c07cfe1c538e6eb3867456b33f9 src/glean/api_client/models/bulkindexteamsrequest.py: id: 663f4c5a52ca - last_write_checksum: sha1:4bf814e3fc50ee446895a8bed75cf26c54930bf1 - pristine_git_object: 21eac916a49f0d8852bf1c5f9eb26368aae34362 + last_write_checksum: sha1:d98f49c6a7e9f6ebe150a5d31ce71b498e871925 + pristine_git_object: 0fd38bfa3271f6c478078e2d44192b1442dc2766 src/glean/api_client/models/bulkindexusersrequest.py: id: 25684d0e6ae6 - last_write_checksum: sha1:b7b6c86b42d74185e6dbb0f4765099e774edb974 - pristine_git_object: fc487a53466ce443dfc4b1aa20b7bbe3df5a2f80 + last_write_checksum: sha1:f3cf6fbaab6f08e3b63f7442001bd56e3293f6e1 + pristine_git_object: bfbff92f09bf17a68f920d2c17ed2891ce33536b src/glean/api_client/models/bulkuploadhistoryevent.py: id: e0fc56b32d01 - last_write_checksum: sha1:ac3c2549c067a1ad53b9a5fd366be1fa4d7f4380 - pristine_git_object: a5e3d43dcc61dabdfa80f12c7c416ff5d15a570b + last_write_checksum: sha1:ede0ec6c53bb1b18e920fa8de1fffdcb19476bf4 + pristine_git_object: b1daac94dcc8d49e2d6f0782f7e9963e3c2e0ad1 src/glean/api_client/models/calendarattendee.py: id: f061e829600d - last_write_checksum: sha1:11c42afe51b5feb76f88ee90f13f5babf8819b19 - pristine_git_object: 3f79c72a47a0bc9ad9ead44d06aa9a1ba1e94d62 + last_write_checksum: sha1:6fb65213e2d42e6e76c67862f3ca52d3af73e6c7 + pristine_git_object: bc67f962fe6fd6e4bf605922ddac1b85a14d775a src/glean/api_client/models/calendarattendees.py: id: dd3d8d18619f - last_write_checksum: sha1:2170a33a351c0a2b6787f74d55342e5709c76ac2 - pristine_git_object: 71bc24186e52e5b79b65af58b30e292297064a27 + last_write_checksum: sha1:164b0511757d1c19d472b65e3d1d513091d09781 + pristine_git_object: 40d5ce80074cfd76645b910df1f5fdc0c0014405 src/glean/api_client/models/calendarevent.py: id: 1b4d4993373e - last_write_checksum: sha1:e1df6445a4e182aef2c4a4ff92f3f22f95620457 - pristine_git_object: bf08702d47e3320372bab2d237b1810daaf9d21a + last_write_checksum: sha1:1a2fd8d18b4e5b73dabfb0e91a895ababb232644 + pristine_git_object: c954de14ea1cf3d55b4f0c647efab056a8df3d79 src/glean/api_client/models/canonicalizingregextype.py: id: b2cd5b9de633 - last_write_checksum: sha1:fbe47d3fcba8de2ba377f1b6e50b271ed6e134ae - pristine_git_object: db7e8b6cd3d8a6f6c9141ae5c33f0de4fe2b8551 + last_write_checksum: sha1:63eb44ad7f15925c9d47460f997a2ec8271d7a88 + pristine_git_object: 33218a642269f788bc33a1c1347b2f094f02e61c src/glean/api_client/models/channelinviteinfo.py: id: 71173b2b0492 - last_write_checksum: sha1:2a658f2b9d0a7228df5c33f4ab24d630965bd922 - pristine_git_object: d7d38ee42fc4cf30b50eec6de95d6af42ff6bb0b + last_write_checksum: sha1:b3d6d14d7f1ff53a4fa61bbba741d30b7dabfa4f + pristine_git_object: a97c2ccda77238b4eb4198887e879a4505e94171 src/glean/api_client/models/chat.py: id: 5566eef6a9a3 - last_write_checksum: sha1:30c75bb6a1252723da71fe02731cae355149eec4 - pristine_git_object: 389e22684f8739f1698aa9d61a506ebfedf0de74 + last_write_checksum: sha1:c3c1a2655b64e0203c0ef2d11204be23a2f5ee81 + pristine_git_object: 2c89193d682e1258a9d5e072c05546b30d21c66e src/glean/api_client/models/chatfile.py: id: 58a4c45c2027 - last_write_checksum: sha1:17b528ff2e3f71d5f507c7224812b089d2f7ab05 - pristine_git_object: c852218652c34be66fb9f6bfdef6ed3547655264 + last_write_checksum: sha1:3c40dc0bc96e493132f0b40ca73a10e7bd1a53e4 + pristine_git_object: cf7a5a7ab3f014d3a292949f84dee01b17f0e36e src/glean/api_client/models/chatfilefailurereason.py: id: c60997a33e36 - last_write_checksum: sha1:025e7cc000253326a9efd004cc5c7225f775927f - pristine_git_object: fdae31905651d8b10cbe8d645e41584a3dae769c + last_write_checksum: sha1:5f85f87d571be1ed3f67e3563720fa1e02e2ef1e + pristine_git_object: cb81e15e55a5889f6503eefe8103c320df460e0a src/glean/api_client/models/chatfilemetadata.py: id: b8648f87910e - last_write_checksum: sha1:609a346f41bff5cab804a30640f0c26377c1c033 - pristine_git_object: 2c657df73e5a66ec0add1a4063fef791021a8e61 + last_write_checksum: sha1:ba4dff8262465c5c878c12a84f82829c64cd0618 + pristine_git_object: b4cb6dc4f77e767d75cc0c4ce8402236536907c6 src/glean/api_client/models/chatfilestatus.py: id: 0e6c1c7a372c - last_write_checksum: sha1:0c3e5390a70a53dd6e3ef035fd7de1f2c1567e1b - pristine_git_object: c9a17724686676e11d3633dfb11ad4ab9c1cce45 + last_write_checksum: sha1:4af0557f8574e729bbd16805c2d02172bbef9eb6 + pristine_git_object: 0628b167f1b538ab6b9c0ed6021708456aa98c31 src/glean/api_client/models/chatmessage.py: id: d1d93cc94501 - last_write_checksum: sha1:4196e6ca580fb6027d7a460c43b038003f2be72f - pristine_git_object: 1755a240907fe7b65f7e3f5b933541fb3ca0e27d + last_write_checksum: sha1:5b0d3c530b2c6c9f34e4f54c2b670b85abed7627 + pristine_git_object: 5c636cbb81c9c203f4b12047eec4d7c54fe8e6f2 src/glean/api_client/models/chatmessagecitation.py: id: dae0d568e81c - last_write_checksum: sha1:b778c145ec6fa153cf06eddaba2de7fc74994959 - pristine_git_object: 2e21f6729af81e22b9ce0a8f9412842d2c23cc4e + last_write_checksum: sha1:e280bf3e6243e183e3afb454cd06c8e7c4b42df4 + pristine_git_object: 5ed24dfff3f3cc7949e7713f61af56f5d4ff00a3 src/glean/api_client/models/chatmessagefragment.py: id: 86344b2c1c3d - last_write_checksum: sha1:af2f740a012698dbe9c8ebf1c07d2c3ec089d264 - pristine_git_object: 959ad3ed48ee3a16d80a3c1a0d8f183dae7577d2 + last_write_checksum: sha1:2392b86cce1778d331813a1355430f2665ab9ab2 + pristine_git_object: a7d3bf333c791320d449d7b49eaa850a0134aade src/glean/api_client/models/chatmetadata.py: id: 0469e4eebd69 - last_write_checksum: sha1:2579cce233a8d9afd4b7287084ced47e5853b19b - pristine_git_object: 8c8f68510a8e4440690176e4fde4842c77025cc7 + last_write_checksum: sha1:6665183f9ae42b7258ed3b47d8bedbad19c5c7f7 + pristine_git_object: 81530650eaea827b2f252692a69160808e3b2143 src/glean/api_client/models/chatmetadataresult.py: id: 560168f894a8 - last_write_checksum: sha1:a145fa39e0e074707dedb9e09886aaa3fd0f3f5d - pristine_git_object: 040265983ec7ed189c310a6f6a6c57ec1386dc4c + last_write_checksum: sha1:199c99f194397c58aa9f615198e6289a11326cc6 + pristine_git_object: 53e0ef9787b0ea167b78aceb773fef1b9d28882b src/glean/api_client/models/chatop.py: id: 324d679cb5db - last_write_checksum: sha1:050cd58ebbb9ec53dbfe226024ef977768c131e0 - pristine_git_object: 5f74227be6a9e4a4f7c1489ac300fa2cae16a4d4 + last_write_checksum: sha1:1c73e74f9797932c4474c5459aa28694a997c0c0 + pristine_git_object: d14b8817de80260f39a0c79a07e5cd806c02e179 src/glean/api_client/models/chatrequest.py: id: df889fc72055 - last_write_checksum: sha1:625674933934523e8e98a2fb3e85c4ac4e64dc18 - pristine_git_object: 3e72aea468f1c9c83d45155388fa88f18544f3f4 + last_write_checksum: sha1:1789889c241b2613c24b26d7966e1182210652ae + pristine_git_object: ca0d3695d12775e30120b5f1b6a69167c4ee7bb9 src/glean/api_client/models/chatresponse.py: id: 9ae42b3bd99f - last_write_checksum: sha1:59bf0345b51d68f21811d34ce203a26ce4c6f113 - pristine_git_object: 1ca6171214235ca5b1c1594e7bceab314bc7645a + last_write_checksum: sha1:f9756232b0683da50c34a7185a493c677b76d1de + pristine_git_object: aec6f19f3a83527a2d2470d9a7b8c88589dfe031 src/glean/api_client/models/chatrestrictionfilters.py: id: 634c14f688c1 - last_write_checksum: sha1:ad469e59884fe6280376b1952943067000eaedb8 - pristine_git_object: 5774e85b3d78631ecd7c44333a74a2f9b43e99fc + last_write_checksum: sha1:5a289b25d5437cee31503eb48db72b6bcf4c5d37 + pristine_git_object: 51db943bb852f5bbd6dad0212aa87ee03e44e830 src/glean/api_client/models/chatresult.py: id: f449bc617fb6 - last_write_checksum: sha1:d6bfe6fb77485420e97b159cff5e147ecf81c078 - pristine_git_object: fb22190273b85224b570ca6b753ac4fba0ccf215 + last_write_checksum: sha1:b0cd2f69fd271a5993007c401324af975310ac9f + pristine_git_object: 8058b2bbcadc2eec393752b623d65d41487f40b9 src/glean/api_client/models/chatstreamop.py: id: efb7f50ff6d0 - last_write_checksum: sha1:7ee59dcedbccedc1bb191d181477bc37e47a5a6c - pristine_git_object: 71a17b379b1b37442036f1e1e275cdb86c4810bb + last_write_checksum: sha1:b81b04aa413db5f339f318e85bb57ff7b6883bb1 + pristine_git_object: 6ce3ce9bca35b6fee469e40b1b99a1e8a54fa733 src/glean/api_client/models/chatsuggestion.py: id: d1672ba5a41f - last_write_checksum: sha1:af5300d40538b057749a14a5ee07e6ba9d5c69f2 - pristine_git_object: 11bec4d52ebe555fbec0423ec66badc8c516ed5c + last_write_checksum: sha1:9fd2e6ca8aa3bf82df9a74777ebb28f323952353 + pristine_git_object: 68870bcaf545488baf5f1f4439b3fd1d8f1d13b8 src/glean/api_client/models/chatzerostatesuggestionoptions.py: id: c2b8ed9c9949 - last_write_checksum: sha1:cbab16f7d4e844d51bf2294e9d7de92ce1891275 - pristine_git_object: f4a630c009419f6f9144d393a808957c75b1eb3c + last_write_checksum: sha1:2d1b44dcd4d7b15343829548833a2e257b3106e2 + pristine_git_object: 75527af1ac3173d43991fbfba5265a832d9bf41c src/glean/api_client/models/checkdatasourceauthresponse.py: id: 4b92648bff66 last_write_checksum: sha1:383e77b55a1ef1d8a4014954daacecefabb594e1 @@ -3207,104 +3247,108 @@ trackedFiles: pristine_git_object: e5985de81b6d3d8de11cc0d9a0e33db4b25bbb14 src/glean/api_client/models/checkdocumentaccessresponse.py: id: 493311f0935d - last_write_checksum: sha1:ba045be77409bfa51f5928a807f6437bd88bd2b1 - pristine_git_object: fb2cdec6985876d88878e912a94ee09a414f08e8 + last_write_checksum: sha1:5c989b057b2e656267e785ecff45e6b9535d2b50 + pristine_git_object: 373b93887dc03fee309a02ca7efd3a674081def0 src/glean/api_client/models/clustergroup.py: id: f84bec5b82fe - last_write_checksum: sha1:e2e9b9504731b3aad69770171ff8717deee7eec5 - pristine_git_object: e8a93332bee413de9069b238947d3f238b119230 + last_write_checksum: sha1:be8057f49d12a16cc4effc809f1aab20f520304a + pristine_git_object: 9805a2fa98454cc3c517a168b47e1d630fafe178 src/glean/api_client/models/clustertypeenum.py: id: 0ddd45a5d0d9 - last_write_checksum: sha1:b25da71fd0a80257766af1096929f9cdf0eb52c7 - pristine_git_object: 3e83e2efa461dd1d1e8ed06277bb1dbab8e35fcd + last_write_checksum: sha1:1f63c4b39dde561b3339908f8a9a35a6bf0f7257 + pristine_git_object: d599d8ac677a258ec0041ffc08142138b410fc2b src/glean/api_client/models/code.py: id: 11b08e43c314 - last_write_checksum: sha1:6575c61b2a91631596ff71a3eaee73c1433db2ec - pristine_git_object: f5fa571e0c8d80ad3042e6c760463ecc40c4be03 + last_write_checksum: sha1:64058aa3ea083da1c1a9da5f7d6cdfa937e06ee4 + pristine_git_object: 140e792f4f3fbb381c998a268ddb63b214c3cd64 src/glean/api_client/models/codeline.py: id: 564bd44a480c - last_write_checksum: sha1:b8a3cd17fac00a86ceb3fc27b3dea303aad5b03b - pristine_git_object: 0a678f65c17b94c433fd45b857032a5938e609b8 + last_write_checksum: sha1:f5090a720f6119223b2a62a2d9d7acff35e77c75 + pristine_git_object: 70e471cce63e5391e096b6039c539a0cabd45592 src/glean/api_client/models/collection.py: id: 1c8d82c8f456 - last_write_checksum: sha1:0ad62a7a49f22c06e9d97c6486396a279cc22188 - pristine_git_object: cdf2108fb6fd51bb4476a250a48e0aab9075971f + last_write_checksum: sha1:07940e8dd87e72eaeb8d4955c9e357ba43e6db83 + pristine_git_object: 9bd7d4bb696194c0c3f4ffa9f90fa5d5644fdc9f src/glean/api_client/models/collectionerror.py: id: 12c5118f6fba - last_write_checksum: sha1:b68a0905674ac00856c42ae33e8be68efbed3945 - pristine_git_object: ed055edac1066978af979f2b1cf8fcfee9292002 + last_write_checksum: sha1:f8671540bade2e1c8d978ffacae8c69e4ad94a06 + pristine_git_object: ef1aa0da4454c57c0c8d635bbe89d3961043c027 src/glean/api_client/models/collectionitem.py: id: 42e837b333ec - last_write_checksum: sha1:ad4186636755dfcecaeb00165c14ec40f955709a - pristine_git_object: 5a4f41f2a672a05632df078f8108a1ec04799f4b + last_write_checksum: sha1:0ed5cb53712a6475a259437a0f8e6c3684d87303 + pristine_git_object: 0cbe6492422c383011f3f964c79271e6bfd5b90f src/glean/api_client/models/collectionitemdescriptor.py: id: 8211e595e120 - last_write_checksum: sha1:ddc64bf36a957e2228786341a55860362e751733 - pristine_git_object: 09ebf335b9dd3a897884f2148bfe3f5c5730a182 + last_write_checksum: sha1:c9d390805c830d49e727d3556d1d20ef80c13961 + pristine_git_object: 6642f487e16e9edd2360cbe8ecd1f615d648e5bf src/glean/api_client/models/collectionpinmetadata.py: id: ff51c8a765b6 last_write_checksum: sha1:7fb4960f3ab9bfdfd3d1ae54f2b8be79ce48a4d0 pristine_git_object: fcd3edbe1c44ef3b7be0ceb77f1b3c1c137359e4 src/glean/api_client/models/collectionpinnablecategories.py: id: 319efd508d76 - last_write_checksum: sha1:79f857139cca1e295e78c3edfe755568b27f9946 - pristine_git_object: d28cd94ab7648cca4fd758055ba8ac44afe407ca + last_write_checksum: sha1:db649f26c3107b6497a9ba6cfda8a495cd35d00c + pristine_git_object: 55c467b9b6e46f86e9d82f9f86273f6215eaaece src/glean/api_client/models/collectionpinnabletargets.py: id: e4d5f87c0adc - last_write_checksum: sha1:ecde48b3ce184d46bac79212fce769a26fa89c78 - pristine_git_object: eac2d5e73e21405b25198d7925132b197482ea73 + last_write_checksum: sha1:65c20e406a0bbc95cc4d69702e71bbd8cb8c8faa + pristine_git_object: c440d47330824d6e174617b25ee22c54055f6a7e src/glean/api_client/models/collectionpinnedmetadata.py: id: 20fcaec70c41 - last_write_checksum: sha1:22df092fd625128d399186c5723906e1e0eebab2 - pristine_git_object: 44100bf476178fd48adf58263ce6caa6ea41416a + last_write_checksum: sha1:be7edb98638bc572edbbe0874467e0640d50534d + pristine_git_object: 2e54e6a4236658c73900fd253a11f87476212933 src/glean/api_client/models/collectionpintarget.py: id: 74c6f50fcb8b - last_write_checksum: sha1:4b1f196c2b73f27ff5222eca93b37aacb69ce252 - pristine_git_object: 173bcf4fb46b0164a9dbf4071304f3ffb52824a7 + last_write_checksum: sha1:e5004349241e75689545b525384e5fa74a32b01d + pristine_git_object: cd3f16f2cb0e21b872739e71eb928011a2db7174 src/glean/api_client/models/commentdefinition.py: id: 7a510d4ae16a - last_write_checksum: sha1:5f8869dfea479ac71bab09d2eaba853484541c94 - pristine_git_object: 46409ef9cce130bae42cb98eb84bfb2eacfa727b + last_write_checksum: sha1:f271a75d2302080cfc3bb13f75d8b96d5aee3eab + pristine_git_object: 121b9722f9045ff05a67cffb43505721dc0d36ed src/glean/api_client/models/communicationchannel.py: id: 097ef2bc37d8 - last_write_checksum: sha1:8c36e783ae2c093098418e7a70029849cfd1021c - pristine_git_object: e315cc1daee3f0fc6a900da424f69ccbdf4707be + last_write_checksum: sha1:9240b0a6b43557df8f3d2c0db453b484162271c8 + pristine_git_object: 36d9d830a9c46f6addc6a92f828ccdab8d18885f src/glean/api_client/models/company.py: id: 3fac904660c4 - last_write_checksum: sha1:d5fee828207745c6edfb4cbb5554a96d84200fdb - pristine_git_object: 6f272141fa715f456b56e02c27c26f236e67460a + last_write_checksum: sha1:def2aa60670960e10e8aa5c7565337c020134113 + pristine_git_object: acd9da9d2661cef93af2800856d5e4303b511fe9 src/glean/api_client/models/conferencedata.py: id: ca82aa4c03bd - last_write_checksum: sha1:658befbb40482aed3799f2b163762b09c0909e19 - pristine_git_object: a890a8d1221fdde21ec1d2986ab59992c9b764da + last_write_checksum: sha1:26c738d7e9a9b1274272c129797492ce2e753acd + pristine_git_object: a9f6b4b4f0770875017b146f8ad1972598d387bf + src/glean/api_client/models/configurationvalue.py: + id: 78d9bb1ab4a6 + last_write_checksum: sha1:b6cfb7404ae94095d01f3b9e570e72a3ff765451 + pristine_git_object: c7458c5dff426902019aaa8953f43e746bec5bc9 src/glean/api_client/models/connectortype.py: id: 12d50eaaf8ba - last_write_checksum: sha1:5c160e04787ed30652694e8a7ec41fb8420e1250 - pristine_git_object: 8d612d979830aba61a136b5f2992176df4490dbd + last_write_checksum: sha1:adbdd18a3d0dcab7c1a8fe9abdf49ce8a60eb8d6 + pristine_git_object: 8e99dab8e7283ea64e5dc2e7f770999ddcceaef8 src/glean/api_client/models/contentdefinition.py: id: be5d817e66bb - last_write_checksum: sha1:8c4923b2e58d965aa4f33fbbd2021c84a62a27df - pristine_git_object: 64f617a90e69a720b5687911c988ada836f02f06 + last_write_checksum: sha1:2b3be2d484b398dce5a73f782b205cb2080abae4 + pristine_git_object: 03e7f7a29e5b2a95e134ffd8e77b2543e332cc77 src/glean/api_client/models/contenttype.py: id: 7a299752fd19 last_write_checksum: sha1:d9e2eaed594a998478317ec74724140c7df3c184 pristine_git_object: d2bd38375fba44565353db89de9b9740754438d7 src/glean/api_client/models/countinfo.py: id: 2ff7e2d8021d - last_write_checksum: sha1:0e1eddc376375ce78a5080233fd1ecd74d11b071 - pristine_git_object: 2d24b6f285648babfebc438532563102855b5d48 + last_write_checksum: sha1:5203cc6e6506bd574e163b2b18d879c4b19c8a99 + pristine_git_object: 83d1aa3b243827c0f27678d94a209aac0a4417b3 src/glean/api_client/models/createannouncementop.py: id: bf2cd073d77d - last_write_checksum: sha1:813459335a23b231a77625c5ee514e5dfee19792 - pristine_git_object: 684220b8f843dfd36ce0a5251c14afb64c777658 + last_write_checksum: sha1:a636cc5aa94d72878446b69b6ca0e3e91482de2c + pristine_git_object: f07a4fec86ab542f0ffbbb15bbff78c713d8642e src/glean/api_client/models/createannouncementrequest.py: id: 00c8eebb1b76 - last_write_checksum: sha1:a76c25ac11be0f4d78126cf8e616d4cea251bb72 - pristine_git_object: a6bb4e294135a1e7b9345b904e37d7032ed9e554 + last_write_checksum: sha1:115327b63baea457b53722ceed3ced22ec3faa10 + pristine_git_object: b7cbb6c5f423e129af176c18fb43bc9ccf26645f src/glean/api_client/models/createanswerop.py: id: b638c379e2fc - last_write_checksum: sha1:d90e73526f1d1da4b9047dfb22155438138b7bc4 - pristine_git_object: fce45ee23f7e6bde6762d9cf4fc0c774e5d6a293 + last_write_checksum: sha1:58f9ce98eaced362195574b76b2e07d15a94399e + pristine_git_object: 6e7cc76309ae26967744adc2cf0f2a872e541e3c src/glean/api_client/models/createanswerrequest.py: id: 80adf1814683 last_write_checksum: sha1:b59b546cbb77e7d99b7bc76f1785105ccba73cbd @@ -3315,236 +3359,244 @@ trackedFiles: pristine_git_object: df588893beddadf98a24dce5a51a3d411650a937 src/glean/api_client/models/createcollectionop.py: id: 3610855a3415 - last_write_checksum: sha1:ff0eb9d2062f623f08d8d5e8cf2963284b2db143 - pristine_git_object: 639bfdb5f007cdad4c8f58b5b1ffb6e7a5300b42 + last_write_checksum: sha1:d9956fdca945a40dd4c1bed5c63135a40667dfd3 + pristine_git_object: 3b504b1b99dfc8ce348317d6a57e69105625095c src/glean/api_client/models/createcollectionrequest.py: id: e39b15f0ef35 - last_write_checksum: sha1:c5c98399277431018361fab52a052ecaeb5b67a1 - pristine_git_object: 46d5874e2c589df4cc66e96bcb87990414482cb3 + last_write_checksum: sha1:560db966fd538b24ebf2b840232227a5fd3f8eff + pristine_git_object: 8ed97b034d81f04d3bbbedfd3fc16220ae260e6b src/glean/api_client/models/createdlpreportrequest.py: id: ead547f06612 - last_write_checksum: sha1:ffee07077069fd462be197d74ffe153ae6d93dbe - pristine_git_object: aa1c7eff113e3ebcff12448f7d01971d8c675dd0 + last_write_checksum: sha1:210a43e865c34e1d7924981e78f839759c1b403e + pristine_git_object: 9de15343384fb845d5fb9899558aacc78ae87285 src/glean/api_client/models/createdlpreportresponse.py: id: 12ae9b936795 - last_write_checksum: sha1:d8bb2f7615e9c998fb1228f6512d23ec23cb669e - pristine_git_object: 7c8ceccb12da7806e3e7672749ff9b687285ee29 + last_write_checksum: sha1:05354e5f55b3b4f1ca7b4d02c193923c92229316 + pristine_git_object: 2fecf5afae99509ff096862662ce44755ca93042 src/glean/api_client/models/createshortcutop.py: id: 3f448216dcfa - last_write_checksum: sha1:1c4201be4d230cbae51868118816a2ee028a6948 - pristine_git_object: 2bc9e3a811275976517af66e0fedf5d8e7fd7044 + last_write_checksum: sha1:b7a09a333e2d0631b5fe661446a3bce66ef37a5e + pristine_git_object: cd9cab879f6da0da1750e3923346e2e8c1a4c216 src/glean/api_client/models/createshortcutrequest.py: id: 8f0d2ac9fc83 last_write_checksum: sha1:84dca7fa3be62505699da379896c138737e35774 pristine_git_object: 828bb6b941a861a6ea3a0d3b8aa671d00566a4d0 src/glean/api_client/models/createshortcutresponse.py: id: 65fdd9436d15 - last_write_checksum: sha1:3486f81cc682577721ab35862f25b83155a18014 - pristine_git_object: 5e0188c159d786099e824b9c495d7e1232561861 + last_write_checksum: sha1:285ec74a6e451aa0a6698d663cf501dbd0a24bd6 + pristine_git_object: 7fd2e6eb90ed6027e2647312ca3550abc0292b74 src/glean/api_client/models/currentactiveusers.py: id: 0a092cf79074 - last_write_checksum: sha1:77753739e872bf5398e102f1ce9bebae1681e45c - pristine_git_object: e225e27361ffa3b42f947127b60abbb58d684583 + last_write_checksum: sha1:576704455fa223b1e2afd2f24522e1f6bdb73cb6 + pristine_git_object: 10c5f7792a3472b1089b7eb88e0bf68ebfa7ac7d src/glean/api_client/models/customdatasourceconfig.py: id: fb9b6a1441c1 - last_write_checksum: sha1:98fecd72850fc62bd936783384093df7dac3cf02 - pristine_git_object: 1e4a488d8db678307fae6617de0ac6cfe49c78f7 + last_write_checksum: sha1:61fd17497a8f0eb3a2eeccd8eec68a2a30cc548a + pristine_git_object: 635c888a5958270b094a87b594bc345964b09f20 src/glean/api_client/models/customdatavalue.py: id: 956eba94ae1a - last_write_checksum: sha1:74edb94c3b8e0e1f1d3f92352f13af31f36245fb - pristine_git_object: 27cb6070f10d5e942cabd8320f998760b6e8248b + last_write_checksum: sha1:76c80857d8b125cc75d3da0da1d2f489dc9847e4 + pristine_git_object: a07d2e8123855a0e7ee36cde832f24a5b3ce0b52 src/glean/api_client/models/customentity.py: id: 3c7bd33b38bd - last_write_checksum: sha1:d9a1d15256ae96743fdf97222663e065f0ab848e - pristine_git_object: 91112399b940409f3162636f613baf270043e045 + last_write_checksum: sha1:9f9097039509e6ee5cfc81dbe56e4c6353eadd72 + pristine_git_object: 6cb844ccdf3c17c7ded504794f429fa55d0a2c2c src/glean/api_client/models/customentitymetadata.py: id: dcf591f96aae - last_write_checksum: sha1:cb43ec6be962abccada1038aff31fd9b9a079815 - pristine_git_object: 61ff7ce5c71d464bc69db741230cb1becac0c877 + last_write_checksum: sha1:8bbcd0ea720d666c10f9ef03c786e367cc8814f0 + pristine_git_object: 45958c271f08ae88e33e9c29f99d8a686609ff61 src/glean/api_client/models/customer.py: id: 1fef6bc6efb8 - last_write_checksum: sha1:c9ed0ecfc3df9f5c1daef2e6b290de44a1d4ce6a - pristine_git_object: 1035ba7613d5f170a3ebce814169fc11a0d24e70 + last_write_checksum: sha1:e89622df4b4eebfcf6d695ecd8e4bb1323df2caf + pristine_git_object: 7154cf22a51ade828a632372eef3943187a2def8 src/glean/api_client/models/customermetadata.py: id: c2d608b51a0e - last_write_checksum: sha1:f90f172424d781fd166f3843d6bfb071489904b5 - pristine_git_object: a90dc83408cc9018466c9e37e91a70d5c11d29e1 + last_write_checksum: sha1:59b2c20c2f543014a1f621828edb52fed77ea5f1 + pristine_git_object: 35adf587037b0c451cb4f860d6b47641738df086 src/glean/api_client/models/customfielddata.py: id: 0fad2537d170 - last_write_checksum: sha1:ce5f54d563b0eac575f740a57b9f05b2e2da400f - pristine_git_object: 4fa86992f67e5f5cc9809cbc90080273ebfcfb3f + last_write_checksum: sha1:dd89903e9fb786b24fe2ab83ff58b332eca9d48f + pristine_git_object: 5e85ebbf44a73b4712ff906c4f1dfd51478d0d7f src/glean/api_client/models/customfieldvalue.py: id: 1dd25f7f2a34 last_write_checksum: sha1:679f5b4ca7795d50d45ff39f44787382a42aab6c pristine_git_object: e799e19282d5658f1d473ac884ec49295659085b src/glean/api_client/models/customfieldvaluehyperlink.py: id: 7e45aa49655b - last_write_checksum: sha1:64c5d07470b2cc661040c747b23839e199d99980 - pristine_git_object: 9f0b03506f1d48039d681412375a29202e5a094b + last_write_checksum: sha1:d8b517f05e2f6b20273606618057177d7baf276a + pristine_git_object: 44931d1280ca6b9a49d158a78efdd0b5f1c2b3df src/glean/api_client/models/customfieldvalueperson.py: id: 3a124f20f649 - last_write_checksum: sha1:158973febd582095e372677321eb5d1d12486861 - pristine_git_object: 09dc8c55ac7604c7c1149ad352d6b9830324e424 + last_write_checksum: sha1:2c9d0778dbb0f85662e8a390171128f28908718b + pristine_git_object: cb264f2b46ead516ead3d08277dfbccb85fc0790 src/glean/api_client/models/customfieldvaluestr.py: id: a3569fe0d790 - last_write_checksum: sha1:a6a3094682c7d5a73da4f34dbbcc6c3c4126c645 - pristine_git_object: 339df32c65a41406ef8f009d973a76487f6b7c6d + last_write_checksum: sha1:7b22ca993cde9d540e85b97f71afcbb1b3dcb0e1 + pristine_git_object: 68f0fa1e9afe47831a8611971f0c59435631f08e src/glean/api_client/models/customproperty.py: id: 86c08b8668b7 - last_write_checksum: sha1:e9fccd9c5c1b16a54f31b47160712b8c95e8a830 - pristine_git_object: 27b23f792c2fed8b6c7fa229b724c82b42fef2d6 + last_write_checksum: sha1:180a0db0e23351154fdbe9cd2461b4dba1f3f884 + pristine_git_object: 584ffc76b1ae579c7dca6aff2ee019f4a8ff1e5f src/glean/api_client/models/customsensitiveexpression.py: id: 2268022ee406 - last_write_checksum: sha1:74f4ac5c994a40b245fa195c2d91074a987f3bbb - pristine_git_object: 1842e19bd26836c19f9ec035aa879412dad83079 + last_write_checksum: sha1:14109c3cfd41d0683caccb867ef4ff7c562931b1 + pristine_git_object: 4d5258721ff717ef3e4aa8fb2f78869a1edba5c4 src/glean/api_client/models/customsensitiverule.py: id: 80d2ba78e110 - last_write_checksum: sha1:558af30f6668b745cb2a86f2d25f65db30d4f180 - pristine_git_object: b1c06a84d33a647a1d30feafca72605a737f4d34 + last_write_checksum: sha1:ff15cdd2af8454e5232b1b86b0313a85cc3e5c1f + pristine_git_object: c767e33d6eeb7ae8b29d69789002319a9a3d8931 src/glean/api_client/models/customsensitiveruletype.py: id: fbea8b8f6a75 - last_write_checksum: sha1:1e04a196aa25a5d4ce012e17912a7f2ae38da2ed - pristine_git_object: be887e842d3374374ba8cc71504d09fc4b72b67a + last_write_checksum: sha1:ddbdf0eb4821466cfe7d82ae3116a42da0b8f8af + pristine_git_object: b273ac9824d6a273765462dfd73483c75c4c46c8 src/glean/api_client/models/datasourcebulkmembershipdefinition.py: id: 8e48908cf200 - last_write_checksum: sha1:2dbe0097ea064113d445953b02e8e18bd4d8ac92 - pristine_git_object: 3113d5021832616ed3e5b4e273c2346f6611d996 + last_write_checksum: sha1:43a938decc4fa2a720552f9938bccce9eb34ff5c + pristine_git_object: 31e0065c79f1e101f367ad006a220ecd77feb8c5 + src/glean/api_client/models/datasourceconfigurationresponse.py: + id: e9a385b637e9 + last_write_checksum: sha1:69a5dd2f67380cfe0fa0bc5c37eddb5796560ffc + pristine_git_object: 15b227d993619ed946b21ec7e94a9d31b968b195 src/glean/api_client/models/datasourcegroupdefinition.py: id: f7c84882fbcf last_write_checksum: sha1:324acffd92e4e0753b7c3238f17d41f6ea66d5d3 pristine_git_object: 745d20c30b71f9c6c0a9bfa5807373bc29b79e76 + src/glean/api_client/models/datasourceinstanceconfiguration.py: + id: 706b80a1fa59 + last_write_checksum: sha1:ea2e402287097244228eff8122c2337dc1658bee + pristine_git_object: de6cd8aaa59ff7ae08ba5535508b72229ddaba56 src/glean/api_client/models/datasourcemembershipdefinition.py: id: f881717d8c97 - last_write_checksum: sha1:1b9e18dedcdbcb47ec1a2f021c6bfd7bd7f008e8 - pristine_git_object: 92097a8ba60d163ff4330f42f25482586671c071 + last_write_checksum: sha1:55c4d00beb916ccf371479414929d8dee2a77259 + pristine_git_object: 4243bb1bdfbb0129f30faa1db9a9cfb39ad707b8 src/glean/api_client/models/datasourceobjecttypedocumentcountentry.py: id: 783986f380cb - last_write_checksum: sha1:2ca8096be967fc6050165875a70598591b527252 - pristine_git_object: 9f0ab3eed6253300f818f0e585fee21a7411071d + last_write_checksum: sha1:87b6cdf3e69948aab8760e557f97f3a7f89db641 + pristine_git_object: 306d5d5b95306ee95732096d976082188de779fd src/glean/api_client/models/datasourceprofile.py: id: 456012f17305 - last_write_checksum: sha1:e8e809db35cd4020a08d5108730d61629b79ee92 - pristine_git_object: 550e0cff6a7a6bb456ebcc23a11a4d0a610439f6 + last_write_checksum: sha1:69eb65b9262dd4540d6d17454ec8ae20c5a1c5ec + pristine_git_object: 4a54a6d305e50cd12350ed991fcba1b7e7d17197 src/glean/api_client/models/datasourceuserdefinition.py: id: 38b5026bf17b - last_write_checksum: sha1:971332622cf7af6d70629636c1091526ae62b96c - pristine_git_object: 687934d63999ffe8fbe8b73c53c464beb999d96a + last_write_checksum: sha1:e47a04958803e2eaea2bc54aa060dbf29911e969 + pristine_git_object: af754d51335f0f6779d01dd8b9da81f01cd0d32d src/glean/api_client/models/debugdatasourcestatusidentityresponsecomponent.py: id: 8d269f54a53b - last_write_checksum: sha1:143a0fd6c153fc0cf38067558c9495df82ecfd1d - pristine_git_object: 291568948befef5444d5d6a84f9e1aba7a3f33a6 + last_write_checksum: sha1:70298c03c6c7b789198a722a022cdb99c7ed91e1 + pristine_git_object: a027cc7e75d3e2813ea488dd3d22fb06e10ff922 src/glean/api_client/models/debugdatasourcestatusresponse.py: id: 706c4bfc6802 - last_write_checksum: sha1:06be5c202c9d509ce33968f71b647e6fd87aff43 - pristine_git_object: 46212470a9f431cabfbd3230a118819f8fbc9f0b + last_write_checksum: sha1:8f8a32dc749ea17fc47279bb015a94bdc7d844df + pristine_git_object: b77b38550bef6b1680c89edfc693fb20a17c362a src/glean/api_client/models/debugdocumentrequest.py: id: c27a3d5acb34 last_write_checksum: sha1:994d4388bf08f2a89c7891aeb7d98c7bf67c7215 pristine_git_object: dc89fa28dbc67a12a81647f926e4f07bccf94a01 src/glean/api_client/models/debugdocumentresponse.py: id: 402ae6981b99 - last_write_checksum: sha1:16f5e005ad32d30d1f84b40e4653671d4b33b113 - pristine_git_object: f1432270c654d5b1755e3e43ab273f14232fada9 + last_write_checksum: sha1:98e1148fdf2c7e85c766977fcf1df2a6bce8d316 + pristine_git_object: 3efc18aa3f44b3b9af44d33f4c1ffe5b9a21d971 src/glean/api_client/models/debugdocumentsrequest.py: id: c10b882fec7e last_write_checksum: sha1:7905ad4bdc31857de0dcd02466e8741efd5ac14f pristine_git_object: dbef6d989965bd13c1bf888bdc73871fb6a822e0 src/glean/api_client/models/debugdocumentsresponse.py: id: 07f2f669954d - last_write_checksum: sha1:3eab396a414873294edf5d3d1621840f4a3003cf - pristine_git_object: f5d7055f948ba097f1c031bf526b79064047b85f + last_write_checksum: sha1:dbbb300623addbc206e7e0f9c85b56e1fe0753bf + pristine_git_object: 54513fca6b64242dddb8c3e49cfd2bbadba05d93 src/glean/api_client/models/debugdocumentsresponseitem.py: id: f81e17f56601 - last_write_checksum: sha1:1fc497ac9598db56173a3d7849a2dacc3b40eae1 - pristine_git_object: 0e105610ff9a0be84355819693d9b67747d797bb + last_write_checksum: sha1:a6baf222ca5b27b9a5b07ccc8aad4abb50ff18d6 + pristine_git_object: 63165771269c45faaa9c26dea3845e3f0697a10a src/glean/api_client/models/debuguserrequest.py: id: 59058d67caa7 last_write_checksum: sha1:9eecafdc03b80d7cea180b4612ee80170559718c pristine_git_object: be474f543698ca7f9af69caa5f85edd475c688f1 src/glean/api_client/models/debuguserresponse.py: id: cb3193f272e8 - last_write_checksum: sha1:b609be9393ede068a36b9c6ad7a52f72ad1e773b - pristine_git_object: cf4313de698e79a3b10abf289b29d71c6d0faf48 + last_write_checksum: sha1:39d67bf5c67156a043f75be97f2f9596d07e5f1d + pristine_git_object: 43e28fa95ff536027859954f4d65b33962eeca23 src/glean/api_client/models/deleteallchatsop.py: id: 70e1ea929ffb - last_write_checksum: sha1:b0cf9bca5bc08642983a3cbcf46438d7c3a1daec - pristine_git_object: 882f202f056ebd9c2fd3f6e1e1f184399db25b11 + last_write_checksum: sha1:369fc0d61a4954709a19de273ca7af3b5609ed79 + pristine_git_object: cac2a62d4d9eb0a34282cec2352d0aeb9ada2114 src/glean/api_client/models/deleteannouncementop.py: id: 85d058f754cf - last_write_checksum: sha1:4e635d52bd5f1d57cc465b0b429717a0944eb9d5 - pristine_git_object: 91f7951a4b0ae72564011cc9bc70914d2a46b515 + last_write_checksum: sha1:751635bf690f307b3ecffed6c060ebb4241f2594 + pristine_git_object: c7b39677713491caa626b72d5ed36e690db4c46c src/glean/api_client/models/deleteannouncementrequest.py: id: 6a5ffa31b42c last_write_checksum: sha1:b4aafccf05ae6cf9e5bc4d7687cff0de113c8fb5 pristine_git_object: 7531e633f00e150f21ffef89a0fa0edf72efe34c src/glean/api_client/models/deleteanswerop.py: id: 02d7a4c6a024 - last_write_checksum: sha1:07b9a39f153dfe1b47ea035452ddab61a483c2b8 - pristine_git_object: 76ffff92d77a34d74333b4c71a8431b971eae420 + last_write_checksum: sha1:4598916a9173b30bbc23e3d6c046f14778eb0539 + pristine_git_object: af7a16d7d1101d14496145832afa36bc989dbc4b src/glean/api_client/models/deleteanswerrequest.py: id: 2cacee52b8bf - last_write_checksum: sha1:72cb4a60d36bf86e1605fd9047843041d9d5437d - pristine_git_object: 93e3bd233ff80ccf4517af425c5d2a6d8cd3cad4 + last_write_checksum: sha1:f320c2a6b1551d50b75345ee71387bc8017a1668 + pristine_git_object: 5c83ec3e53e6de8d808f7ac6d380233fab5e1f5c src/glean/api_client/models/deletechatfilesop.py: id: 2e2bebfda978 - last_write_checksum: sha1:f56b9d74c50b4856107ce72e282103413862a217 - pristine_git_object: cdbd0c7f329dafbd3b8b915649f33a318717d062 + last_write_checksum: sha1:587e5fc8521761966725c6ec75c53b1b1d67a13c + pristine_git_object: 01f8e688236c44261b9811a03e8ba2ada07ac61d src/glean/api_client/models/deletechatfilesrequest.py: id: 88da4a9374bb last_write_checksum: sha1:b810a9543d244e127ae67a849c594a6383b935ca pristine_git_object: a6c201fa600c95a7c412dada776c98a69b3649ce src/glean/api_client/models/deletechatsop.py: id: 2e921316a955 - last_write_checksum: sha1:0d948d72b13ece94ea664389c5c7a57adffe3f16 - pristine_git_object: 540084d3a7ed02a7c5142cc09b165f916a617eef + last_write_checksum: sha1:f05a6eccda7fa3c44e7eb0d27cc48553433cc103 + pristine_git_object: fc7d30831ad7679ce3d5b2de1fc517a3e03ef194 src/glean/api_client/models/deletechatsrequest.py: id: 2d0590f39c7e last_write_checksum: sha1:ea5fff9198321524287177fc1169a5a4e02d486c pristine_git_object: 7a5dcced0cbfdaa71c354942f76c8b56e06973ff src/glean/api_client/models/deletecollectionitemop.py: id: 503debf60d9d - last_write_checksum: sha1:8518d2e47156ea57cb2940f385c2921820cafa2b - pristine_git_object: 9d185806c9bf1252b80369a35b153f749e754315 + last_write_checksum: sha1:122d02a8d5ad93e3702a824bfd0a6ec31de8e13f + pristine_git_object: 10966910072d0ff5d174f2fc0dc21e58ef7cbb49 src/glean/api_client/models/deletecollectionitemrequest.py: id: 396cb5c63bc1 - last_write_checksum: sha1:1460970f50ee58655e46759a3fe1af0a4a5598ee - pristine_git_object: 64236e1bc830d8be471ccc72911245fad91a3c62 + last_write_checksum: sha1:297e26618b55c0f5602109411590c82e45532643 + pristine_git_object: ac801e8c995b381b772c42bde8b569ed2eef17d7 src/glean/api_client/models/deletecollectionitemresponse.py: id: 719afcdd05e1 - last_write_checksum: sha1:a147310b57bac75981e185d1fcaae47ae37ed560 - pristine_git_object: 05b69dfa7ff2cec9d0bf401280514de26816c319 + last_write_checksum: sha1:b7b33418baac21d35ac06e818972e16dddb70736 + pristine_git_object: eb2315c4a6bb510cdd4fbd6ee3ca9d652f201cd8 src/glean/api_client/models/deletecollectionop.py: id: 1fbb23e9ab7f - last_write_checksum: sha1:5df95504c207385d88d9efb5506ff61746828ff1 - pristine_git_object: 53473bb94ee0a9c139eb275885e96be182bfa2b7 + last_write_checksum: sha1:fc1f5117883bd14396e4ff16f4f7f1a7ce5db3b1 + pristine_git_object: 8721ecb5719d57c1c5290dd4351eb3155c2c8db9 src/glean/api_client/models/deletecollectionrequest.py: id: 92b4c2c55a81 - last_write_checksum: sha1:9816775a443795c6857e6d92c1eb3246c008e350 - pristine_git_object: 6dc7e806f70faa0ff16a6a10a928fe91f57da9f8 + last_write_checksum: sha1:18b903cd96816d11ae375241231d9f0853039104 + pristine_git_object: cf68ff3b3686a0e659dd9d527b967ad79cf96297 src/glean/api_client/models/deletedocumentrequest.py: id: 30a742ac49fd - last_write_checksum: sha1:1ee33093973b4b28b34146809831fb93522dbd60 - pristine_git_object: ecdf225a09b35f31548f6eaa9168f0fa9af01848 + last_write_checksum: sha1:a052b03bfb19b35a12dc707c11d21cfadc26573b + pristine_git_object: 3fb67bc981932021022fba62d26bc33e884f66f4 src/glean/api_client/models/deleteemployeerequest.py: id: c26f5e141c8e - last_write_checksum: sha1:da1d97abe1224f4d7c799bab65cd431c5c8b2d64 - pristine_git_object: e1dc59d9ae098cbcace4f9bf702484b42d906951 + last_write_checksum: sha1:4dd432594034522a7391b632415666b8c149843d + pristine_git_object: b413b5163e6209c0e806ba56a92ae156a76594e8 src/glean/api_client/models/deletefindingsexportop.py: id: cb139c7f368e last_write_checksum: sha1:1236b4c0a062a8cb3a931b82a1aef3dd5cb8590b pristine_git_object: f71666c1c1f089fdeb1bf101c97ace1d6c547539 src/glean/api_client/models/deletegrouprequest.py: id: 6f2a57e8b635 - last_write_checksum: sha1:988ae37a5d3e38370b6c3bc86d0ae99811d4ab1c - pristine_git_object: 69837fec3243857607f9e1a5a4121ea7f15c205b + last_write_checksum: sha1:3839469d5974ae53924f5a60a5d523009670a44d + pristine_git_object: 651551f3c1131a18e4599e822f75acc5042f8630 src/glean/api_client/models/deletemembershiprequest.py: id: 506e49c72483 - last_write_checksum: sha1:3ea89dd3d6173290a78d0a42a831cd245fb91f43 - pristine_git_object: 4d7397b8b17cffffa45204947e7484be4a72e8f2 + last_write_checksum: sha1:8d41a4313c653936ce3dd23d10ac4129d5515def + pristine_git_object: 60f59a29f726fb7c70fb5494553b6c183c9d089a src/glean/api_client/models/deleteshortcutop.py: id: 48c5f989a2b4 - last_write_checksum: sha1:32adeaae7c5604886cfa991c3026c20578b3803e - pristine_git_object: 0c9baf910e754b1abf5a26ae865b69b80eda4310 + last_write_checksum: sha1:d40c8bec32037531625e20f6b377424f7c05da8d + pristine_git_object: 5862db4795db83a0e2ac2a163c63b16dbbfa6baf src/glean/api_client/models/deleteshortcutrequest.py: id: aa4724c9617e last_write_checksum: sha1:8187e9166aab564f906ca74323a65e89956244d5 @@ -3555,124 +3607,124 @@ trackedFiles: pristine_git_object: d8150a4165d730c9a1ef335adc9459a0eb625a90 src/glean/api_client/models/deleteuserrequest.py: id: f32055902e5d - last_write_checksum: sha1:5412dd08ccc31eea8d63a8961a62a1cc457438aa - pristine_git_object: 4ed4035e311f347fb22c56eeff107716fe9319a3 + last_write_checksum: sha1:db790fffc0ba0e89bf3885f0cd62670233b8da34 + pristine_git_object: a8dd578b52a5f43839472aa334e1a4078c068b80 src/glean/api_client/models/digest.py: id: 4fac29d7abb0 - last_write_checksum: sha1:4d804c52290e77ef9bd2b074a872907174b06692 - pristine_git_object: aae5e37dc43c46c6513467e0ea67695fb114209f + last_write_checksum: sha1:db26bf2c5feec4127083fc67bfbd2a00fd7058a5 + pristine_git_object: 432716a8c77136901868139929fe3bed31c7891f src/glean/api_client/models/digestsection.py: id: 35356f6b6146 - last_write_checksum: sha1:bd03677e68a7368327032f25ea5099b922a7112d - pristine_git_object: 3916bd17da42242d033349f39f486a17d5522d59 + last_write_checksum: sha1:02e35c9aac817d24447212c13a7af801da601775 + pristine_git_object: 17ac661e03911171207909c19f543d07bf8317f0 src/glean/api_client/models/digestupdate.py: id: 604c4e51476b - last_write_checksum: sha1:0581e0ba93f155f0e49918809c4fa6134cfea95a - pristine_git_object: caba0d3bfb7a521bea50accfb5dd67211398effe + last_write_checksum: sha1:62e0cba5f2cd591fa2cb864650785c4b5dc9e528 + pristine_git_object: be8228945bccff16c400c65e856b3e7d57fe3be5 src/glean/api_client/models/disambiguation.py: id: 7223d97bb07c - last_write_checksum: sha1:b7490ede0956558797ea9ee2d0f92a4fc373c49d - pristine_git_object: e4bf574ed973a568359539edc476ea085b3bcc28 + last_write_checksum: sha1:e0aa82a2c527386c86012464bb62533065c4b9fa + pristine_git_object: 68a5514fdfd10149d39bd7255cf9550fde9159ef src/glean/api_client/models/displayablelistitemuiconfig.py: id: 93c058182294 - last_write_checksum: sha1:2f026c937d0dc4d493b66683b7bdfc170f1ec8f0 - pristine_git_object: 58fe8665dca39f57507bc354d1916e9bc35514ce + last_write_checksum: sha1:dbd7adee8f83eb2473c9142738129106f599c627 + pristine_git_object: 3e0031b797c3153b0f85b2d219b553fb6f259cf1 src/glean/api_client/models/dlpconfig.py: id: 5012b123f4c3 - last_write_checksum: sha1:e3b2206074650f669aeb81596bf468310679fd1f - pristine_git_object: 38436a19ca424f6255bd9a807a7cdf614f35536c + last_write_checksum: sha1:ece6188f60c80ab57d3cf8b84c78dcfc2b9420d7 + pristine_git_object: f68bba2b791930a7eff5708502c833d255211f18 src/glean/api_client/models/dlpexportfindingsrequest.py: id: 8776242985ea - last_write_checksum: sha1:e38298b082e934aa4d7e0a21c8a88c019aa73661 - pristine_git_object: e38155cf4182e0c28744477fa9746921b33df2d9 + last_write_checksum: sha1:81c95d4b4d5d5cae491602e8e287ef5ef5cb3044 + pristine_git_object: c2495c2d00a83ab042cd5c609e0005a35b8b6c9a src/glean/api_client/models/dlpfindingfilter.py: id: 6ef2e5304df7 - last_write_checksum: sha1:4ee397d4930547c52cc24afc73285c7ae93f40dd - pristine_git_object: 4b8b53771328627ddff1db948f18c675ad305b19 + last_write_checksum: sha1:ec6c89e5e0148ab2e76714de8b21b5a480c53d09 + pristine_git_object: a78e2193eddafb93eeaf25ccff4b66867c1dcc88 src/glean/api_client/models/dlpfrequency.py: id: f6f484c2d7a4 - last_write_checksum: sha1:7c48fc297e95a40d143de6e4b81b76f7db4dbfdd - pristine_git_object: a7da3a83ac16c0fd906e64fd02f84a17b03d1396 + last_write_checksum: sha1:487ce5e7651214ea7906d0d4e74371544cc436f8 + pristine_git_object: 334f894fe2a36391f40ff6831cfdc5aeecddbf21 src/glean/api_client/models/dlpperson.py: id: 15e2ffa25e1a - last_write_checksum: sha1:5bf5af63c77909290460f8f241a930d14b783476 - pristine_git_object: 277be9f672a1dd612398d8ca1e37db439f40b184 + last_write_checksum: sha1:27cbf3c12e4030b22aa288dee8fe7e64c5bd3a5f + pristine_git_object: ee020352948bddad54865a2ec2a07319e050c97e src/glean/api_client/models/dlppersonmetadata.py: id: 3ead76577617 - last_write_checksum: sha1:ebd57a0d3c6085d30fdb9411d784722a0dae6b00 - pristine_git_object: 9f5e147e42bbc1ec1e83dc63b74a83438aac0415 + last_write_checksum: sha1:cd0b82e98251470d360c1f48b82709eaabd26b2a + pristine_git_object: b3d764a642d07433b4682663b864d93d0436be6b src/glean/api_client/models/dlpreport.py: id: 6a534cac7e31 - last_write_checksum: sha1:a7c2ea0698e34b2757b7fc52846847d81b9674e4 - pristine_git_object: 706524ef5ec4900b94009f7790cf56b06041aa63 + last_write_checksum: sha1:38adf9732c5e7b0893042e971b2d6527a539c62f + pristine_git_object: ff433f126aea8fc5ad18c336f9e9370175059827 src/glean/api_client/models/dlpreportstatus.py: id: 4b288f23576f - last_write_checksum: sha1:82107288d2c55c02aa96efe668fc1be326b380b7 - pristine_git_object: 89f5b52fc7c0778a18fbf466d58872733ce85743 + last_write_checksum: sha1:9e9bbab7ec6b06d3034ea61f19208cf15be3a98b + pristine_git_object: c7768ce7bd50c02cbd7a212ab45e721e81002e54 src/glean/api_client/models/dlpseverity.py: id: 3c14229136ab - last_write_checksum: sha1:bf9f62b4c6e594bf9ea24964a1d777fad8a98ece - pristine_git_object: 625f32b87d94aaaf420f5521f3961fec9df6fdf9 + last_write_checksum: sha1:f61afbc43794f1cd3fe453fdd7bbc2a6386c9343 + pristine_git_object: bd785981c594353dada51425cefe60b44d806ea5 src/glean/api_client/models/dlpsimpleresult.py: id: b50c9a50553f - last_write_checksum: sha1:8424527d5f2924602749fc42883b7fd2789e2d5e - pristine_git_object: 83e953255d0df7f94b267511f117d10bc06957c7 + last_write_checksum: sha1:fdf7ae261c37a65ec7354426e7003934325f9efb + pristine_git_object: 212efae1a21283c3d96458029e9b64886d2100ae src/glean/api_client/models/document.py: id: f62889df4380 - last_write_checksum: sha1:d250fb540bb21129e2a3c8c5923a5fab04c0bb20 - pristine_git_object: 43f4b20ec132f8a771fde70e5221952684916225 + last_write_checksum: sha1:a73296a815249b9e3fde674ed033d8dd56a2873e + pristine_git_object: cb56b4f3f3663839963a70c0f70b427e5fbc9933 src/glean/api_client/models/documentcontent.py: id: 5002c1dea323 - last_write_checksum: sha1:83485a0ac91d8fb2e276e01007e3727c7ab1d0b2 - pristine_git_object: 1de9c4df5287ef48451418d4cfef123d9789e902 + last_write_checksum: sha1:7e6e56c2b204cf60eaa660ed7097aecfe3e11f76 + pristine_git_object: 7a6ea0bf0feb7bb6f13045ca67007c9b73da4dd5 src/glean/api_client/models/documentdefinition.py: id: a1d959d6d441 - last_write_checksum: sha1:81145f66382ea2e0d480f69562642a0cc7c12824 - pristine_git_object: 0f4e186002849db04982f2cd04a89f7578d80b04 + last_write_checksum: sha1:4437a60abba42afd2bd3c4f061fc882238ec353d + pristine_git_object: 99b4520fb04deb5887ef0b3d8cb1bfce49c628f4 src/glean/api_client/models/documentinteractions.py: id: 1cbd7f0ca8c2 - last_write_checksum: sha1:3a3887d26ac9786622953187a8b540721e1890dd - pristine_git_object: 31f53e955adbbf5e4326e2862e4c93cd8bbe1651 + last_write_checksum: sha1:1c43b48bba2be30ba492015b1ae3cbdd1ecba059 + pristine_git_object: 84214adbac5b07697d99ab6f0d84fde8acd6321a src/glean/api_client/models/documentinteractionsdefinition.py: id: 08e2b97a68ab - last_write_checksum: sha1:15cf8a98941819e151c802876a8f0fc55c53805e - pristine_git_object: a0f8c83d0df22df8877603b209d08fb44e472b83 + last_write_checksum: sha1:6ab5f0352e6cfcd6a1a6cb5f6a77998c7ba387e6 + pristine_git_object: 2dd25c44d762268701ebc58dff904235d05ee7a0 src/glean/api_client/models/documentmetadata.py: id: 203606bfdd41 - last_write_checksum: sha1:80b7d35dbd045f3042224b0d4feb99cc10d351df - pristine_git_object: 19cb2dc2f1aec134489beb7e77ce1d8eefa6e121 + last_write_checksum: sha1:111cf76a7d9efad936ebcf85471929b2fa30c915 + pristine_git_object: 4f50069b606ace363a0d81c6a5342fb902efdf71 src/glean/api_client/models/documentorerror_union.py: id: 1851ad2d77e1 last_write_checksum: sha1:edd4bee869906b3874fd1640bd3657e9aef66292 pristine_git_object: 36b3f551c2ebc4b6cbf5347a424519798ced4cfb src/glean/api_client/models/documentpermissionsdefinition.py: id: 7a87c280a424 - last_write_checksum: sha1:fb66eacc223573fc1fb5effd113fe4bc5a5f5377 - pristine_git_object: 0fb6a7109f90f26f64d26869fddd12867b47bc8c + last_write_checksum: sha1:b2793a322c6b31579a2f02366338392515238a2c + pristine_git_object: fd87de54c048ebef28c2b9679aa08b8b0b131937 src/glean/api_client/models/documentsection.py: id: 860858e3da34 - last_write_checksum: sha1:eb831c3934340cbab388c7d38b00142b558c5973 - pristine_git_object: 2a00129600c74f79a112dcb48c21b699c0cbc696 + last_write_checksum: sha1:d66f0bb43d34d05166ac4e1cf24c5999951dfb96 + pristine_git_object: 6825bbb05b8da91f0aca07bf2520d9862afff2c9 src/glean/api_client/models/documentspec_union.py: id: 9b7e01401389 - last_write_checksum: sha1:522461b2b802ae0a3042e655e3aa2d10a450c1d6 - pristine_git_object: f0509023b7a24899c6936e9f23bef10bb94886c5 + last_write_checksum: sha1:3468c91bf86df1225779ce22a465f35ee2fad8cf + pristine_git_object: bad1222f53682be8f494f78cc15206f71240467e src/glean/api_client/models/documentstatusresponse.py: id: 03c5597a3ee0 - last_write_checksum: sha1:535d9ba8ae657b97394e8d8e5beb149f77dfd5c8 - pristine_git_object: 9ab97c4243b15ba896a3d721fb2eced875864f19 + last_write_checksum: sha1:6fa0c35f03862802e908f0ff16c1b93d09b42286 + pristine_git_object: 41cc9ad2da11dd704f76ae2539a7215adb6f54c5 src/glean/api_client/models/documentvisibility.py: id: de44fa8f48da - last_write_checksum: sha1:6f4e5a80c9e554fc9e19e881f5bca1e096db10f3 - pristine_git_object: fb5813a945e04d9c777afb2a874a7b4310772905 + last_write_checksum: sha1:985c869e95a61595826842cb225d63dc3d8c4d29 + pristine_git_object: 59bfc0522f5c880450dca0184b601a0c4c6617f2 src/glean/api_client/models/documentvisibilityoverride.py: id: d5c36989b68a - last_write_checksum: sha1:527b2a6ab55361ac5814720f780d4026663426ea - pristine_git_object: 27fb5add33e2d14cf590821a741c6d5b50d26c24 + last_write_checksum: sha1:807f300f1b55dcaa2792e36be0769b81ec3b8e4d + pristine_git_object: e5d6ad033ea29dd1347c5d944ceef5c3ac35e8a8 src/glean/api_client/models/documentvisibilityupdateresult.py: id: 499e53f55b75 - last_write_checksum: sha1:5d3242a167c224fa8b6a9bf2c4942583138d4986 - pristine_git_object: 2781be2ad675b42f33071a999baef52bb108c071 + last_write_checksum: sha1:201bec37f9d6deb5c2184787c189f9b69caa306d + pristine_git_object: c48a36b1b1287dbea4c6311e849a38528c5c419a src/glean/api_client/models/downloadfindingsexportop.py: id: 2694d3597292 last_write_checksum: sha1:272810d856c01cc1fe68b55286be0092fd5ddc06 @@ -3687,684 +3739,688 @@ trackedFiles: pristine_git_object: d6059a8fa23d3cc41298d1cfb331d266d793b53c src/glean/api_client/models/editanswerop.py: id: 7236676e3bd0 - last_write_checksum: sha1:b9246305f64d4116d8b36ae02d2f5be0cde3e7e4 - pristine_git_object: f253d316836fdae536856e1c09a662bb61cab143 + last_write_checksum: sha1:a8358d6fdf546ffc6e39b043feb9d5cb37af5106 + pristine_git_object: 8aef450a39d487fb49ec3cb7ae7d75d6b995e584 src/glean/api_client/models/editanswerrequest.py: id: fe09a7824140 - last_write_checksum: sha1:d52305d0eb6517d352cb06a86bdf2b519fb13b36 - pristine_git_object: e33151be17a7b7bde125254dbd7087f85753e678 + last_write_checksum: sha1:9d7fca50a693408e520274948d466e03ddb5cdb9 + pristine_git_object: 42fbf75e12622697133e2299821da9d17883e6f2 src/glean/api_client/models/editcollectionitemop.py: id: 1384524a3498 - last_write_checksum: sha1:04b76fc546b2b39dcfb226bb51788a612027a177 - pristine_git_object: 64b91d3abbb507b21742307e7f41c5e7186c2611 + last_write_checksum: sha1:865dfe05a5b6c8ed22163f74d6eee818174b3a1a + pristine_git_object: ec47c58541a4e621037751f5dacce3bbaad8f13d src/glean/api_client/models/editcollectionitemrequest.py: id: bc22cf6084f5 - last_write_checksum: sha1:470e26362cc5f15d9eb1ae941571f42554f00c14 - pristine_git_object: f5a550a9f6d38d2706278be59d427d1abf06c5aa + last_write_checksum: sha1:ef0c68dff9f30c0267ad153f86280b89df7b5e23 + pristine_git_object: d263fa2ebee6e474dcf4a69f004c075ece4d491f src/glean/api_client/models/editcollectionitemresponse.py: id: 1932a6ee55dc - last_write_checksum: sha1:a70c5c0f863d675568f714759f792b0f4d15f5bc - pristine_git_object: 447740a0843cf4cfad48920b7f92e938adb8591d + last_write_checksum: sha1:35202968456ac47ec2d53903bcf930dad879aa6f + pristine_git_object: 0803aa97a25fb8fef4fee326f9e774bd8700389e src/glean/api_client/models/editcollectionop.py: id: 6bbb39f451cb - last_write_checksum: sha1:b886c78c124b0eee3f79390fbacaf9fadd6a0bd0 - pristine_git_object: ebc50afc35e13d30dbdb47ca2f075eba8f8c5c26 + last_write_checksum: sha1:4e26166deda0974b97350d77d0cf0f0a6f11ef45 + pristine_git_object: 89876fc83292098da540fe0a4593ebcd22bc0776 src/glean/api_client/models/editcollectionrequest.py: id: fb314a816369 - last_write_checksum: sha1:3bf47c88ec2c996e6687c336d2c1b3dfcf0b3a87 - pristine_git_object: 09a38ab2c438c189cc6c473cc9f5f96a528f2d4f + last_write_checksum: sha1:e0873a34e4ea4e5b86c942f40b7a6416caaddb9e + pristine_git_object: 7a4edd70390dec12ae19ebdd044da70cc945f836 src/glean/api_client/models/editcollectionresponse.py: id: d5021e1e02ea - last_write_checksum: sha1:d3b7fa65db3e8b8e02746fb7be1c338aa0c9161b - pristine_git_object: 43e051a9568e591c786b1956041d73e3fa96ae96 + last_write_checksum: sha1:aa52ba2435dc9636cf73136895c15b9374337cfa + pristine_git_object: dcd4373fec82d8f630753ea407a4275b7843479a src/glean/api_client/models/editpinop.py: id: ccf2c7c31a0e - last_write_checksum: sha1:362557599334d8df280cd62d5dd818ed519f0221 - pristine_git_object: 6591f97bbf357bcaebefbf8807cd0c5f5211bd41 + last_write_checksum: sha1:4283c5ec511a7e85a96bfab308fc38974421eade + pristine_git_object: 608f79b9fafda26b5330d562955b6e971d8f2aff src/glean/api_client/models/editpinrequest.py: id: 394a855b5f16 - last_write_checksum: sha1:3721c4ff5669015600347c3696f42a7c4b60a57a - pristine_git_object: a11e31decefdfd5cfca234e977336694616f6ccb + last_write_checksum: sha1:2ab581efcb31ece5d80adac97fdba88727fc9da5 + pristine_git_object: d19c91a1f64bbbed70c05885945ea5a5d95146e7 src/glean/api_client/models/employeeinfodefinition.py: id: e16fd44a957b - last_write_checksum: sha1:94bdb6d33517ffe8e01b8bf29a3bff790051a60c - pristine_git_object: 63897a83a7b0f6f11916dc38c6eedc110f2bc473 + last_write_checksum: sha1:18735a28300d55395d99334d622495f4e70897c8 + pristine_git_object: 0dff10f097d92e57d2e962895aab04d58ee9371a src/glean/api_client/models/employeeteaminfo.py: id: f50b29739646 - last_write_checksum: sha1:c59551913dfc3511d5f5725b0e3597702c15dedc - pristine_git_object: 1505b40dc6cc6318fa0bb146a79c5608c7d05607 + last_write_checksum: sha1:c5c1a5c9397fc297e5b724a203ec7eedd43d9dad + pristine_git_object: 91d78b8d4a7c6b7298689c189a03963746dae920 src/glean/api_client/models/entitiessortorder.py: id: cd626c042435 - last_write_checksum: sha1:3748f760b70c5a78b1b001073c1d0b8e862d1a6e - pristine_git_object: 76d80c681674fbf494dd0205499e21275377b13f + last_write_checksum: sha1:606f29ffe3a88b92c0c916b49c5bc1a290b9637f + pristine_git_object: f3e5ae63a7927d043a525616b22e8e9a5540df69 src/glean/api_client/models/entityrelationship.py: id: 0494cdf060ff last_write_checksum: sha1:ca39e9ad5a91d34509e8d55401df9d0e77f7ce84 pristine_git_object: 0c2c8e5c3c921f30cf17ca89339d192d9d102323 src/glean/api_client/models/entitytype.py: id: 22a4370b1380 - last_write_checksum: sha1:10dd0f78d620747d60368e5d2f874dfa200647ef - pristine_git_object: 43e538599309d65615c83de006b63d6ba9131b9a + last_write_checksum: sha1:b091bec335fef2262c725afa624f188a92ba4b10 + pristine_git_object: af479617f97e668b22634dd88373471ceea7c7a6 src/glean/api_client/models/errormessage.py: id: b2d0a949c567 - last_write_checksum: sha1:da8fa8ad368d85903af1bcde7961d3f42a664852 - pristine_git_object: ae0438664bae1d8b6dd6b29aae80011de45e3fdf + last_write_checksum: sha1:333dcf5a80490f22926497048e1ff8c19423375e + pristine_git_object: 5979617bcbe5d35a2b952ec6ffb10c23455987e7 src/glean/api_client/models/eventclassification.py: id: 6430165e5712 - last_write_checksum: sha1:bb217709c0a06f5c32100f9a1c35e979d5a00758 - pristine_git_object: 2a2dc56b23204cb87362b9e250e57152bfca53d8 + last_write_checksum: sha1:5fe02ee5694772d7b2d508f1eb5e457e1a85d72c + pristine_git_object: 7ed6e3fc0abf297b40dfe43a3f8f0bb3b7335e6c src/glean/api_client/models/eventclassificationname.py: id: "00e500099220" last_write_checksum: sha1:a6474e7214348deab1e02765dc1f6281d8fb3802 pristine_git_object: 01bf73544b870d294c46010643e8bbb21c98765d src/glean/api_client/models/eventstrategyname.py: id: 72f93cc36b77 - last_write_checksum: sha1:5de70362e2a1252dd712ed013460c7ba4e5a3887 - pristine_git_object: 5ede7c8c9cad35bbf68587ce4247ee51cf74b55e + last_write_checksum: sha1:f359da6c05742c564e50b84faba2ea0652cd59a1 + pristine_git_object: 2fc0a34fb83cf361d4167e22685f67eaa1cd269c src/glean/api_client/models/exportinfo.py: id: 7039fdf82b53 - last_write_checksum: sha1:3a531fbdc7b6b503d12a9e3c4b556557988b7e59 - pristine_git_object: 9a2325f909e24ce4912114488c49249318276152 + last_write_checksum: sha1:17551757c1ced91bbfbf1c5c1f98aa3f55d0a4c8 + pristine_git_object: 039b187ecc533dbd35fe6819fa438b554e6d9cc2 src/glean/api_client/models/externalsharingoptions.py: id: 0df611382e60 - last_write_checksum: sha1:a97d071c79734c837c1728c2973bbaa7eac7cf9d - pristine_git_object: 56e3fbdc31f50d327b50447fcccd2cb9d217cfb5 + last_write_checksum: sha1:ff79f9f97203c88bc89c051e73e9082c3861b6c5 + pristine_git_object: 0a42520db5f584280bc1edaabec655c38be65c4d src/glean/api_client/models/externalshortcut.py: id: b9c91219a7e1 - last_write_checksum: sha1:a5bfd45ae4768ce7e3989b8445e735d2b1f35ffc - pristine_git_object: 65bbb62af0c2a818ed6478f18b623ffa3f2b6eee + last_write_checksum: sha1:2f36eb751587c541581934c644e77bd08d922392 + pristine_git_object: 33344b4108708a0eaab4a47d04bb9f9923efa29d src/glean/api_client/models/extractedqna.py: id: e4498c224e1e - last_write_checksum: sha1:efe66c0f2e596f74a88bf1606c790086bf59bf52 - pristine_git_object: 917b3930bd65e9c698d07bf839719c93b6316575 + last_write_checksum: sha1:02c76af5edabda94ce2f4d95914cefec7f050f53 + pristine_git_object: 6a255674fde15bd601bdd6ef074de6187971410a src/glean/api_client/models/facetbucket.py: id: 3dabbd5bcfb4 - last_write_checksum: sha1:d89a28a53042df94de80e564bc2dae6662881d66 - pristine_git_object: 262dc80ff996c9177179a4ffd9c88025861116eb + last_write_checksum: sha1:af84cbf7988dca4f7d998bafbdd41eae2ee90e36 + pristine_git_object: f8d356f73ba7ab657d3955f6435a94a6b700981f src/glean/api_client/models/facetbucketfilter.py: id: d1e4435eff08 - last_write_checksum: sha1:8cbf01df3ca65f6a3be16650562da1852e7ff9db - pristine_git_object: 771de45452020af4a9dbc8a697ca79ad68d0d556 + last_write_checksum: sha1:3fd7e6b2f08b1c29c9999eab2d12406c156012d2 + pristine_git_object: 19df5a17e69c63bd0355021b687b4598189172d8 src/glean/api_client/models/facetfilter.py: id: 0092f5488ed7 - last_write_checksum: sha1:32b74fdb36b22a6ba4a924a054f2cc1b32a6bd4e - pristine_git_object: 8f69363f670a0f368646e0737e36a17da9c26c70 + last_write_checksum: sha1:71945c896dd40a6072a619d0226ff79b626e5e41 + pristine_git_object: d882c35ba28f7be55ddc5b5f4a47bee27f01fb01 src/glean/api_client/models/facetfilterset.py: id: 24a068134424 - last_write_checksum: sha1:daf3623fe44a748c145e7f4cfbf8eb57f752b659 - pristine_git_object: 660a4cfd2bd0c88bcd0b9fbebf1817ad380d3524 + last_write_checksum: sha1:cac7cc417665fe2d95c4a9de2a4b7095d0abb0a5 + pristine_git_object: b1f689e7cbe160b1191780f88c1b66db4666fcf4 src/glean/api_client/models/facetfiltervalue.py: id: 2538d6322ce2 - last_write_checksum: sha1:09a30da1d2e454c9fd2f31b2f3a66967d29e2ceb - pristine_git_object: ee889ffbe521d236d0970d9a991487491eb46d26 + last_write_checksum: sha1:c794c9a21b0d1154d00df89d4808c7b7739e3d02 + pristine_git_object: 3df021969492d908928d8f3680a60b4261a65c39 src/glean/api_client/models/facetresult.py: id: 0b08040192a1 - last_write_checksum: sha1:0c21c0dffedd210c1524c4ac03485d3d8b692188 - pristine_git_object: 8b424a4163c6b6c7917745f5f258e6ffac066019 + last_write_checksum: sha1:9c5b4fff2ca3c99cfc7921b95cd40fdecace8192 + pristine_git_object: 6cea2b89790635cadb5afbe94e4b6a409933dbb6 src/glean/api_client/models/facetvalue.py: id: 37b332e83210 - last_write_checksum: sha1:c27484c829f67d84101f79bf704426adedc8fca1 - pristine_git_object: 6a461b85515e30157f9881510c99fd9fea76ada9 + last_write_checksum: sha1:4dd701b69d4079c4f068d692e02cd4a87903f7f4 + pristine_git_object: fdf378c8dc7f45bf2e638cd1e4900f4464d5d938 src/glean/api_client/models/favoriteinfo.py: id: c8966a607f00 - last_write_checksum: sha1:bf44d5b80309b4bf4af82e5efb354cfc1772099b - pristine_git_object: 3c88b9647ed7148ea20fca6971c09d893db9e22d + last_write_checksum: sha1:6c5eed7096282ad3c4444bd15a43bd7c55ab5d68 + pristine_git_object: 17359e01fa84c77c0074e5d321ae7ac50451a48d src/glean/api_client/models/feedback.py: id: 511140b14aff - last_write_checksum: sha1:b9a4dc761128549b63ecc6d14ab1785fada489e7 - pristine_git_object: 43acf3789fa0b4b33788e1d9c2364893edb5f89e + last_write_checksum: sha1:42d7d9de08cc949065be226e21c9c71b7b9acb33 + pristine_git_object: ba97137e474c1f7d5b3809b7bb40873eb939e74b src/glean/api_client/models/feedbackchatexchange.py: id: 8a8e469394a1 - last_write_checksum: sha1:76434eb0026ed0c44d1ea53554d81eb4f60b1f79 - pristine_git_object: f3b37dc63d1e9f0b61054c3851009cc5af639327 + last_write_checksum: sha1:fd19bb89b532bb5ee4c798e352a83af00e03d118 + pristine_git_object: 291794c5d27686fed3c85ef0f9212fde461cf0a2 src/glean/api_client/models/feedbackop.py: id: d74abf6b0a42 - last_write_checksum: sha1:faa425b4ba84b3d7d7c7569950fd09e037ae9989 - pristine_git_object: 43338d24117a2b2f4dd568237be9403bf09dfcac + last_write_checksum: sha1:fa5e1e58653c2ab36c5f6c50cfe32541eaf65a3b + pristine_git_object: 44041cb376d89949c815ea1e7813505940605855 src/glean/api_client/models/feedentry.py: id: 023eb6c10ae1 - last_write_checksum: sha1:5c665b772cdfb2f4cbd01c6f0642811d95068fdd - pristine_git_object: ae5a612b54653ac242a8ae6479c83b37ec01657d + last_write_checksum: sha1:681761fe515f80e3b77227c8302b767e48f402ea + pristine_git_object: 4dcd26a02290a066b33783def4aaa752526bd805 src/glean/api_client/models/feedop.py: id: b8067ac0a127 - last_write_checksum: sha1:5785aaa7871eae155d76917b70f37e1015c0fe93 - pristine_git_object: da94a1eb0e06d6040cab805de7b4944a9a4465fa + last_write_checksum: sha1:c58cb0a3a01925eb14d84176c5c6e9d8f4d84cf1 + pristine_git_object: f39626285f84630e5a9233736d652914b759d44b src/glean/api_client/models/feedrequest.py: id: 33496b6a5bab - last_write_checksum: sha1:3d9287bdc33a4a9c0accba447ee3ff3591f87467 - pristine_git_object: 4638b5e727980c43e7b38ad8609a4c21d90b248b + last_write_checksum: sha1:c43b7146ffd3601ce040a14c7c38070e25ee4989 + pristine_git_object: ffe6a5185cf98943a48641e48d34f12418c2ddc1 src/glean/api_client/models/feedrequestoptions.py: id: b99003fbf522 - last_write_checksum: sha1:f88fac43121f2dbd07e485900fa654bf5401dc67 - pristine_git_object: c1f2faa69db8e4c029f3954accb7b7c921c72971 + last_write_checksum: sha1:d5ffee29242075cbe6d2dd5ec916b0c3d40acf54 + pristine_git_object: b0d65380ac5f1bbfcc8b3bdcf8b44bd22b760a31 src/glean/api_client/models/feedresponse.py: id: 4a48e189e0c4 - last_write_checksum: sha1:9785770e7b697a09da33f6503ec7a8d87dc84f02 - pristine_git_object: bf833fd23bd31bf8a71ff755477d54e9d1fa653e + last_write_checksum: sha1:84c63b88f2f6fea64ea6f15d41e776bd57e95181 + pristine_git_object: 683438c837601f483526ec18756fadc7222edb24 src/glean/api_client/models/feedresult.py: id: ae187332b37a - last_write_checksum: sha1:0aee65004edf1c3064f7cc76892783bac5d4ee70 - pristine_git_object: f6bec358821bfb5585e416d7fa77d2c73f0f696b + last_write_checksum: sha1:3de4c8440913181ee1e1d8bdfd709a3788fa995c + pristine_git_object: d486724b05cec7939e867726cb9668077a645620 src/glean/api_client/models/followupaction.py: id: e2de5c4c8524 - last_write_checksum: sha1:0eaa912005684ae12060f0a4014a4f79bd7785e3 - pristine_git_object: 45106ff320229c7bf9e06be23502b2612f748ce8 + last_write_checksum: sha1:49e1a826449081fecfcd828c940604db949a8533 + pristine_git_object: 5a44621581bf4944e7e56a5964a655d7bc081d5c src/glean/api_client/models/generatedattachment.py: id: 257c5ef9996e - last_write_checksum: sha1:ad22a66e98ccf6d5417bd68a727f63efd5982dfc - pristine_git_object: a5a3a950bc930df6514f3e2d5d76ef1c3c4fb486 + last_write_checksum: sha1:8e29bc6b5a6ef39fc90852c801e10bda5e2ef8cf + pristine_git_object: f431eeded29a29c46d37e0f6977f8aca5e3d1261 src/glean/api_client/models/generatedattachmentcontent.py: id: cd6ddc3356e2 - last_write_checksum: sha1:6737d5071dc3ce32dfffbff89cc1b5df574f3bc3 - pristine_git_object: 01bc041b16d38b41b259e29ed6a641ccf6527176 + last_write_checksum: sha1:121cd44820c25f12d1e8290dc9c195661e7f25ad + pristine_git_object: cc022b56eeb282ea4f508c9cd87f28f81b0f51fe src/glean/api_client/models/generatedqna.py: id: c505fd0d1ece - last_write_checksum: sha1:8726cbf98d7304152dac6d1beae35e165b2b13e7 - pristine_git_object: 04c0536e6d62983d4706d8e7c13bdfb4b9e59fc4 + last_write_checksum: sha1:977cfe47cea6e8bba465d0a96897d7ca2b964286 + pristine_git_object: f1fbf6355ef61a62a6b005133879be71fb3a775f src/glean/api_client/models/get_rest_api_v1_tools_listop.py: id: 34cf81e82af3 - last_write_checksum: sha1:9e5027f9774624385e72bb6bac456369860b6fa4 - pristine_git_object: abdaafee6ba2b082cd94635c0470c0b2c22e27f8 + last_write_checksum: sha1:4f84149547bee459f0a7f05a9b37c7d9d256af7e + pristine_git_object: b5265a6086412a71445036330b444d889e033cf7 src/glean/api_client/models/getagentop.py: id: 40981170ded0 - last_write_checksum: sha1:dc02e4df39f775f461942b48ad8c1c7e7a398f58 - pristine_git_object: d0057193cba1aae48c88aefccb4ea381b3e5e5dd + last_write_checksum: sha1:69acb6eb3a47aa7033c5661c241c8467e9f806a7 + pristine_git_object: 9cb3838322708bd13002d26f6970c663fb989105 src/glean/api_client/models/getagentschemasop.py: id: 21bfced8e2bc - last_write_checksum: sha1:962ba13795905925c483c8c3bf53e170e5bb1330 - pristine_git_object: 49e8e1d462f73fcc10f88477696567cf3270539f + last_write_checksum: sha1:c6c9064deb5103dad3bbb21e008ee089ec7ac0d6 + pristine_git_object: c381cdaea97ca53818651803a51a2dd133e4f9dd src/glean/api_client/models/getanswererror.py: id: 7d4df3bf2bfc - last_write_checksum: sha1:506183d20b0e4546648d81907e914be5d89b0c82 - pristine_git_object: dc1a13d880eab799f4b4482ed9f9aa0bb6f3d809 + last_write_checksum: sha1:e8dd4317871d0643b9156c5110f0757113e2f820 + pristine_git_object: 102fadd9bf967b99a1fee20027e4be5ed6902943 src/glean/api_client/models/getanswerop.py: id: d02c69702982 - last_write_checksum: sha1:c39e1d250ec79b89621d461ca696cc5e88fabcac - pristine_git_object: 49aa5a14b88490161fdc821a90522038a7855293 + last_write_checksum: sha1:169959016e00ee8aab88f0378e3e6ced394575ad + pristine_git_object: 3a64977851c11a39ff5f3ca5f82b3eaf71f922fe src/glean/api_client/models/getanswerrequest.py: id: 51b52ca6bdd1 - last_write_checksum: sha1:53cce91a828f33f839b100264c3098d00ddf9473 - pristine_git_object: e566159c8e0893279384f854974343267f623395 + last_write_checksum: sha1:49ba892a13c8c344e0ec4417a8793461db0ac6d3 + pristine_git_object: 5a1648a161b019200d53e5aea51c2f9504fec1bb src/glean/api_client/models/getanswerresponse.py: id: 29a80a8d4d70 - last_write_checksum: sha1:223c70fc10ee555fed6a39fbafc08ad4aa31d1dd - pristine_git_object: 2223d5530b934116a41c0f682fd33e608bdcd1b9 + last_write_checksum: sha1:5ddb79ddd6acd5b78f2ae5d761e5eda34949ef65 + pristine_git_object: 6bb54cef2ccde6c095fd17214c783da77dbd6037 src/glean/api_client/models/getchatapplicationop.py: id: 320af39d31c3 - last_write_checksum: sha1:bdc480286b99c4d9c92215ba878dda2766b1f91e - pristine_git_object: 7757b5b3c409a0f7b92935fa480d75953a966302 + last_write_checksum: sha1:838ee71b14a211d21ff189a2962c02cb0825dd42 + pristine_git_object: 8431fc2efa1b8e3f6e5ff275696e68935e67c979 src/glean/api_client/models/getchatapplicationrequest.py: id: 6e15de2008bd last_write_checksum: sha1:9788428769ee01fbe7bc39b4281ce952d2a8e052 pristine_git_object: 5406833371cf8145c2c245108bce7a7f5b4424fb src/glean/api_client/models/getchatapplicationresponse.py: id: 8147c65ec269 - last_write_checksum: sha1:75622b3d172193701e60ed987268c4d16ee8e806 - pristine_git_object: c2b617f85539f18828c74d80b94cba268545c410 + last_write_checksum: sha1:513e7c852c94bc4f2e2009825fc0c5c72190daf0 + pristine_git_object: c4b388714d4ecbfbb9476a055d4c950128c72007 src/glean/api_client/models/getchatfilesop.py: id: 48b9a5c63e2c - last_write_checksum: sha1:d03f42eaf94946c8ebc63402b670f5d4666d4677 - pristine_git_object: de9515ca950611a24d8db606949f3a60fa901f0a + last_write_checksum: sha1:b3584731846f91629eb30a5e44ac46f7306d9e08 + pristine_git_object: d0ba2bef4154af18be6b5eda11d225b6ef987b70 src/glean/api_client/models/getchatfilesrequest.py: id: 86e8fe781667 last_write_checksum: sha1:6b76bab1d15ffaee5754f5045b0701ebc994a26f pristine_git_object: d29ef1be18c9bec94ab9b207159a0b729ea6e9b9 src/glean/api_client/models/getchatfilesresponse.py: id: af6a057b156e - last_write_checksum: sha1:1edac41c43ab3f93380bad3b79e4cd1b890570ee - pristine_git_object: 626f22cdb2b7ff24b61e5d329b6e08966b4eb369 + last_write_checksum: sha1:f28d5c86c08e69aad88cd5c1d10ca499e4324395 + pristine_git_object: c3d8e2e9a736ecbd9edf70d415e8a2ee79263d21 src/glean/api_client/models/getchatop.py: id: 2b157d86e810 - last_write_checksum: sha1:a2955637435b53f73bc59b82a86be9411e42fa15 - pristine_git_object: 1a5badde64552d38b4ec87f36f29cd4625a5a802 + last_write_checksum: sha1:7fba50ab316f12a352e22aadd1066aace9bfe2ed + pristine_git_object: c4155fe3abc66d93dfa10efbc84aec804425a1d1 src/glean/api_client/models/getchatrequest.py: id: 408479eb0833 last_write_checksum: sha1:7d4a3169cb0ab0954471eca8f5066cbb0f265e93 pristine_git_object: ddc9479885a8be6494fdf7840b269983e715b138 src/glean/api_client/models/getchatresponse.py: id: 0ed1381b51b7 - last_write_checksum: sha1:ba25aecc99a02a81a728b713c2fd14104ccbfb78 - pristine_git_object: 97efa484816953f30ff8216d897e0eeecce8179b + last_write_checksum: sha1:c26dfa56429195e39101c679451ec27039318052 + pristine_git_object: 7dfadab71ab57286727d953366b23b7a78e4d476 src/glean/api_client/models/getcollectionop.py: id: e46c77b755f4 - last_write_checksum: sha1:130499d9547e14140ec98e26af05e9b89dc33561 - pristine_git_object: 01f41badfbeb75fc5e2f9e6e96e5f203ca5b90e3 + last_write_checksum: sha1:6f9ac4feda4a8d879faaaf64ce7dabb47c3d73c6 + pristine_git_object: 92fdcda500ba4cce82ccf9ecff86bacf17f717b1 src/glean/api_client/models/getcollectionrequest.py: id: e133223930a2 - last_write_checksum: sha1:4f12a9bc808e896655767012c863a13846367481 - pristine_git_object: f5279103f91621ef64cecc033d9c2535e78f06e8 + last_write_checksum: sha1:d1747dcafee4b85381dd7652232d618a0d3be960 + pristine_git_object: 36d10443a188e97aff3ba27f54a4481805e21c56 src/glean/api_client/models/getcollectionresponse.py: id: 458c44d7b658 - last_write_checksum: sha1:0f03b586b07c04ecad7f6b714a716ebcd2989228 - pristine_git_object: 14a983364315c31ed6a1ce455f92262d773bd2e7 + last_write_checksum: sha1:16e8c68e2b5d82acfbe68fc1afa721e2391327d7 + pristine_git_object: 60e567f266fb1a4af74c4f5841c73fe048ef7ae3 src/glean/api_client/models/getdatasourceconfigrequest.py: id: 42b2eeea0fdc last_write_checksum: sha1:72e44bdd713ea77abbd991bd01e7f433cd2443ea pristine_git_object: 0fa42a25ca61cb0ca2430b59780801adc55c754b + src/glean/api_client/models/getdatasourceinstanceconfigurationop.py: + id: 2d3c120f1d97 + last_write_checksum: sha1:18081db02ec047f57c1ca29fb90201fa33d69cd2 + pristine_git_object: 25a21bd1a03a9e6966f1e979e2be8830d4f93243 src/glean/api_client/models/getdlpreportresponse.py: id: 0e0111b5d484 - last_write_checksum: sha1:ac2b5a4bd5bb5a72c9b33abbb37295193e8e3927 - pristine_git_object: 6b2c3478577c9b00fe97bc6b1bf0404ce30929d0 + last_write_checksum: sha1:0f3a4d3aad6cfe33e17c54e2c39175007354df39 + pristine_git_object: 7af2ec3d8f6dfcb26f20db7f043345ca83fb1069 src/glean/api_client/models/getdocpermissionsop.py: id: 085293ca24a4 - last_write_checksum: sha1:2e2e8f01020e2e7da4ba77af5a93bd1205aba2b3 - pristine_git_object: 50cd4245a969f4c9d43da3b1ea253373fc1c9d8d + last_write_checksum: sha1:84df043245e69ed11b0e459e814df92f1f6d48b7 + pristine_git_object: bc562e4133d5f22e83ff3724de9846808e3bf7f7 src/glean/api_client/models/getdocpermissionsrequest.py: id: 9e472fc389dd - last_write_checksum: sha1:d056dc13b14085bdabad363d4d1bb0f3791658a8 - pristine_git_object: 2d5c3a2740405bddcdcd7ab6478d40a82145abb9 + last_write_checksum: sha1:ca6532cef63e26ebe9c30c6c5014a738853c9b63 + pristine_git_object: 4c4a4e5b966c56189c9e4deee8230829ab67329c src/glean/api_client/models/getdocpermissionsresponse.py: id: 44cd7997b6a0 - last_write_checksum: sha1:e81b9977188cee2feb47000b111236cbf9dc8854 - pristine_git_object: ea2c1d1856785b4636a9aaa32ac123daed4dff54 + last_write_checksum: sha1:161c380681479f837ebde8e21e94d941747971cc + pristine_git_object: 061e8975f7dd87e8eac8bff34990e8ee47205c56 src/glean/api_client/models/getdocumentcountrequest.py: id: 46fd4fe893f8 last_write_checksum: sha1:2de1cfa7ec68a49963d911e61b230a6475c73c72 pristine_git_object: 4fd7db81273bb4929fea350bbba1cacb659cdea8 src/glean/api_client/models/getdocumentcountresponse.py: id: 872d5066d91b - last_write_checksum: sha1:bdd3e408419f4d87345a5a362ac43e4a3ed4f177 - pristine_git_object: 87ea3695b43a1f67addc7ceff46a2afe7c5cf1a7 + last_write_checksum: sha1:f8e81b4b74396f7942acd3b0c6f4e90c68c1ed7d + pristine_git_object: c3400b20d46c97ec22f85c21e187fed51e2d1834 src/glean/api_client/models/getdocumentsbyfacetsop.py: id: ca5343a63eff - last_write_checksum: sha1:8f82ba5170cc5843a5282f1fafa9412d75ce7f6d - pristine_git_object: ccad698f7b6edb655296487c01b9df8fb7113055 + last_write_checksum: sha1:1ba5ede62829dd92ba085fad3bb369b1a91d1e16 + pristine_git_object: a6bd1531c8e9cb22cd78f1cd81f3ab1ff0a48027 src/glean/api_client/models/getdocumentsbyfacetsrequest.py: id: 095fa51d67ed - last_write_checksum: sha1:4effcc495f15fcaee6135ed1e2853d3fc5452649 - pristine_git_object: 8e45e60288dedc2160223266f0a10ad2ee00c40f + last_write_checksum: sha1:35e96ab17f29008bf4200233dc35bcfc6b13395f + pristine_git_object: fe741831ac78eff9313f2a4d2429d234a6cb05af src/glean/api_client/models/getdocumentsbyfacetsresponse.py: id: ffcd52e8e229 - last_write_checksum: sha1:67e4654acc038894ee73de32bab94b551ae09608 - pristine_git_object: 2b7fabb26ea18c8ffb34c6b73658ff340c8aafcd + last_write_checksum: sha1:fcd96ad7ac48bbdf88f97599f6de011034fb4cdf + pristine_git_object: e7e0337a8366b17eb417470ccd229183be4d6181 src/glean/api_client/models/getdocumentsop.py: id: 957b85b955b7 - last_write_checksum: sha1:3350965ca7b362d090f81a17305e2635d930015e - pristine_git_object: 41ab78e24389c2f97d66b9962f60a1a722e292c4 + last_write_checksum: sha1:0b3377188c15091c04de3190bc0f4dd76e60435d + pristine_git_object: fd29b3ef55a3ab4fa940ccd8a5bf93bfae99568f src/glean/api_client/models/getdocumentsrequest.py: id: 35b06c70131e - last_write_checksum: sha1:79b37bed20692233578dee1e7544875841928dea - pristine_git_object: e83eb311d998bf143ecde735b32e35027a2fa6d0 + last_write_checksum: sha1:62bb272f1ca7b3b9a6cff8a8bcb5d0e58cb817aa + pristine_git_object: 8e64be35de3202a3d86992ed79c006b294c04deb src/glean/api_client/models/getdocumentsresponse.py: id: b2062b96f07c - last_write_checksum: sha1:3c6d2d48007da09fcc6de7d5412706733bc9ff30 - pristine_git_object: 5c9db4d4c8c580112b995f5857bcba8116d4d56f + last_write_checksum: sha1:fef5c4b3503684eb5b1d2c0616f3b221fc429901 + pristine_git_object: 6448b8887248c18fa48e24ddc30967aa287c0328 src/glean/api_client/models/getdocumentstatusrequest.py: id: c1363f61d9b3 last_write_checksum: sha1:2fdf84dbe3fbca26a2d63d9fff578eae218bc0a1 pristine_git_object: 1a4b391ee1398d7592461f9bc5bc03f62cc36bae src/glean/api_client/models/getdocumentstatusresponse.py: id: bf15cdc33856 - last_write_checksum: sha1:3586f6084c60f5f0ad1ac9cdcfe2063f5502bcd0 - pristine_git_object: c75a7d882ace578b090d4e74717fc8bd5ac5eb8a + last_write_checksum: sha1:e1437df5bd1e3b8d165e95a75bee4761f6a16ab7 + pristine_git_object: 5bd4fd926abe4057a27fb4bcc0c74f1da0c67e48 src/glean/api_client/models/getdocumentvisibilityoverridesresponse.py: id: 4fcb987e34c9 - last_write_checksum: sha1:4ebf0c7caafee66dbe5c4512841fab8dcb1d57c1 - pristine_git_object: 3eb6670267d8a29089876a352f1ca0436f9ac316 + last_write_checksum: sha1:7960ab3d4485c54864c3eee76fd2192f01156b54 + pristine_git_object: cd81ecd7cd1918e4c482cd012a9806640b160fee src/glean/api_client/models/getdocvisibilityop.py: id: 0f3847de9013 - last_write_checksum: sha1:c1a156df91e4a8c8d62eac9165eff49b822641c8 - pristine_git_object: 682cb48fad24a16f4724ede2de371ccfcf696f0b + last_write_checksum: sha1:e424ef68054082c29c96f19f973babe17c62009c + pristine_git_object: 198ee640c908f13a53a84f7939e6ca704c99e684 src/glean/api_client/models/getpinop.py: id: ead822eb0da7 - last_write_checksum: sha1:d09ab0d3537690415d3619a772adacbee1afe83d - pristine_git_object: c854e8f0f247429d0c6bedd79610465432ecf36b + last_write_checksum: sha1:7f09359a7f5bf28b8713a604d99fd867e20ef8c4 + pristine_git_object: 7c1467b483924b32030847362d876c06d9392d73 src/glean/api_client/models/getpinrequest.py: id: cd845a071792 - last_write_checksum: sha1:08f98be6d86e5ff7dfd4552f28142b3ce960fb48 - pristine_git_object: 758669c95046dd75071956cf63df538bb60e53c0 + last_write_checksum: sha1:abdf087dcbb9eb9d07653a621ede460ffc6da8a2 + pristine_git_object: c11fbc5cec96be3d49fef79a8c781ee1c5537adb src/glean/api_client/models/getpinresponse.py: id: bceff8932b22 - last_write_checksum: sha1:e66dfe7d16eb8caf0e9696139d8c1c58fe2d255b - pristine_git_object: bc1e6e9d25a3a2f4e74a2e1c557ba297b3f1261b + last_write_checksum: sha1:e041099339214bbb075517d340bff8a631821a80 + pristine_git_object: a45629314fc8a15640430e588e61d92b6953fdfd src/glean/api_client/models/getpolicyop.py: id: 58d603f46a48 - last_write_checksum: sha1:cdad80cc390d66ab0cb960ce9d762255f1d7ffe3 - pristine_git_object: 22ff00bb314687bde26d04590c19ecb6dce74f09 + last_write_checksum: sha1:560594f5d11e53df0bba0a74a369d9538b1a98ee + pristine_git_object: 95b3502e755a161a68ab37661de93509664bc9bb src/glean/api_client/models/getreportstatusop.py: id: 109bc89ef9e7 last_write_checksum: sha1:d6b857528734b75999673d80dff04999994fb2e1 pristine_git_object: 17fc561771d65ffe3d3c15fec7099aedaf8f3341 src/glean/api_client/models/getshortcutop.py: id: 441211afbd50 - last_write_checksum: sha1:8fc0443a07d0dd5e7be19a6142190f3a2ed91ff1 - pristine_git_object: dd5c270c46d0e91f72ffb9b5589cb19c238f91fb + last_write_checksum: sha1:788d31f5eddae3579775a820b5b495fa6da0f1ee + pristine_git_object: 3ca7f668d58fc3288f4623c10342c7314e718953 src/glean/api_client/models/getshortcutrequest.py: id: 0c01b7f76574 last_write_checksum: sha1:18d613e1443809e7142560cb14db3b987c91af6c pristine_git_object: 6efe832b0a6facfb137cac38c0ff8db1d4d03302 src/glean/api_client/models/getshortcutresponse.py: id: 2d10a576bd7c - last_write_checksum: sha1:d5d5d0d52375a859083e7e58500196817f5350cb - pristine_git_object: 865ad0427959cec24de5cf884d20a80377462389 + last_write_checksum: sha1:d8df32d525b0631a0261f888b89ef14b54dc03fe + pristine_git_object: b20fa7417eb5341f53bdc78ecdf42db7a1488678 src/glean/api_client/models/getusercountrequest.py: id: f313059beab2 last_write_checksum: sha1:f2a54a902e9dfa08b5ed7ccf4e542b9b8b24e4a5 pristine_git_object: 093c81b4a2331f5bdbedd95dbf68f5310eabc3f3 src/glean/api_client/models/getusercountresponse.py: id: 9cefa2386bed - last_write_checksum: sha1:717e81f01c0487a0f8f9653ecc12e96a1c275c2e - pristine_git_object: 887e08ab07409ea38e6351c8da2f36a2f08fdd7d + last_write_checksum: sha1:1df6f1867005284d418a4f3e1e833424e41cd4b8 + pristine_git_object: 9a042fa5adc978c6210d795e56e6b1ba576c2b05 src/glean/api_client/models/gleanassistinsightsresponse.py: id: 10a2648cbcf1 - last_write_checksum: sha1:0eb01cbadf49ebcba17cfed8dfe2f27b7f47a774 - pristine_git_object: 5a8b8c4ca76c23ac31550210d033fda8b47c4bc3 + last_write_checksum: sha1:ed5864db022cd7c00d2f1f97961eeb575e79c599 + pristine_git_object: e6c29553c9be312eb50df7f0035c8c1485494891 src/glean/api_client/models/gleandataerror.py: id: 86e8dc6c1eb5 - last_write_checksum: sha1:61e26eaa8e58f81b916f333f4c011eddd4acd876 - pristine_git_object: 707fe60fb4a9055bc6f3372df5929af5a67383bb + last_write_checksum: sha1:43fa5675b38cc9bd175f8fd22e9d39756025bc5b + pristine_git_object: 7672589b96aa71f8d3a290a4e5770f9a2b104683 src/glean/api_client/models/grantpermission.py: id: 0cfd67112b08 - last_write_checksum: sha1:9235ebc4130201f32acec912451caa4689ed17ef - pristine_git_object: 92df0762cf0f6dd5cd75b4a3857a573a7660b726 + last_write_checksum: sha1:4de0791ab2cfedc646dfc39264e1c0ab08899ec1 + pristine_git_object: a1bb68065a5470dd33a3f1a9f19ca773d26af20f src/glean/api_client/models/greenlistusersrequest.py: id: cc54677a6916 last_write_checksum: sha1:a96583391fcfa804c899066bac902344bc5b22bc pristine_git_object: 85f19cbf2b8e66d45efdd067db1a9d98227edb4d src/glean/api_client/models/group.py: id: 5387fa5912b5 - last_write_checksum: sha1:12568033a44a5f14e6b4f947fcc69b57fc9b901f - pristine_git_object: 8b846642c55305e7a320f742b24dd46d1f7645d4 + last_write_checksum: sha1:4fc88663c2502f55e2d742818c0c11864d089781 + pristine_git_object: f1b4a7e932c2605014da90f15aca4546c4f0a68d src/glean/api_client/models/grouptype.py: id: 64925e34480c - last_write_checksum: sha1:6c8d73f709e074154923b8eb682544df19b0398f - pristine_git_object: 30e949feec9063c0aae4e55a98a9a664ce4254bf + last_write_checksum: sha1:c8119cbb1f44d407b78c99228be80c65cdcdbcf9 + pristine_git_object: c94336ed992ffa187193a41ac0a1b2e072d25338 src/glean/api_client/models/hotword.py: id: 0a4b0a179e14 - last_write_checksum: sha1:366562e7db6998836b47b70df9ec0c4c3b12191a - pristine_git_object: 2f606c0285b17a546ec506e4fb8b5e2dae0e0e8a + last_write_checksum: sha1:8852104f422c25d298bbc9d2975e820ef744a5a2 + pristine_git_object: 51dcb03045ca4ab19de12896f64de549c895b168 src/glean/api_client/models/hotwordproximity.py: id: c4440dabacaf - last_write_checksum: sha1:81a45db61ecbb01e8dac0d09f5d21c776b7457d6 - pristine_git_object: 358c86568bc6f919f2c9f10e54278029956909fa + last_write_checksum: sha1:dcf5fd4dfecef6347eefe3e5b7fe26b7a6e9cc10 + pristine_git_object: ebc0ed38777b6f9204728ae0966181514d98815e src/glean/api_client/models/iconconfig.py: id: fec761319e41 - last_write_checksum: sha1:71ae3fefd42fad2c3f3bb826466f47848eaa7740 - pristine_git_object: 97ca9a256ec13c0e1da5ce9a91d18b39bbe95192 + last_write_checksum: sha1:40a570ee41fa86918ceb63a79b5b358d70ce07f8 + pristine_git_object: b7109f6b54dd975c977f0a13e3221c036c9c4cdf src/glean/api_client/models/indexdocumentrequest.py: id: 39de79505ed8 - last_write_checksum: sha1:1948967b77f2d0d0f23a2da8484d3c25c69faa7a - pristine_git_object: 6e9ba14c0c46a01632655594301676e3b5eff0d0 + last_write_checksum: sha1:f1e607bb1939b44c99540a787ca0d10fec8d62b6 + pristine_git_object: e49af0a9479f0c90dd6291525fea63063a9e7f27 src/glean/api_client/models/indexdocumentsrequest.py: id: 937c4ecc3c74 - last_write_checksum: sha1:c3a0c29bb11e9fdda9bf4d1f3060881d6204b1e2 - pristine_git_object: 2da2986a990adbc3e14b68fe3d892935a5f677e6 + last_write_checksum: sha1:044953c271e765a9d5658589877ab6d2ebb79f33 + pristine_git_object: df0dc41e64413f34c866522afce394c1d68e2f91 src/glean/api_client/models/indexemployeerequest.py: id: 3d41098a24df - last_write_checksum: sha1:e6d001c3a2580fb30afa4b54dd757f20b7f3af81 - pristine_git_object: b058f4731ef8fe7429faaa560fa0f96e2006a0b7 + last_write_checksum: sha1:09b003dd744dd993e99f3abf4e03ed0c42cefa0a + pristine_git_object: c37c66ac44a15692b83c7bc8fde36d4646a140c2 src/glean/api_client/models/indexgrouprequest.py: id: 46b3cc16858a - last_write_checksum: sha1:38bdc806da9a77668316168880a468b635447e71 - pristine_git_object: 06043c3044699909c2eef48b787bae868ed8ab43 + last_write_checksum: sha1:1e1a7f0953a25540b46850a1f0add8f5b62ae717 + pristine_git_object: f0b242fdb93194ecfc77237eea3d106b4218af15 src/glean/api_client/models/indexingshortcut.py: id: b2089569a74d - last_write_checksum: sha1:2b845959c7d6645f09150b312dc9d2b9ad174a78 - pristine_git_object: b5bd4014fdd9f54f72fbf6ff3d0f50d47a48e9e4 + last_write_checksum: sha1:dce40fe8a0919c9cf65c41f6326309cfa414b834 + pristine_git_object: 82edda463beb607dba65ef99a478f35282652e00 src/glean/api_client/models/indexmembershiprequest.py: id: d3abc4681996 - last_write_checksum: sha1:f83f7feb47d596db4652e42ac36e5676c8d2d423 - pristine_git_object: e6acb4c69dd0bcb546496da7744c30b1c3fa0992 + last_write_checksum: sha1:7c5ee232a8646b4c930561a7f74106dea63ddb66 + pristine_git_object: 471ea84bd5fa471cc2e36fa9ab03469145f2726f src/glean/api_client/models/indexstatus.py: id: 1b79f41f207a - last_write_checksum: sha1:6cce91d187e3a493d2bab14ef0005bcec68fcf7c - pristine_git_object: dee0af8f956df31ff6251976b6ea5eaba8299337 + last_write_checksum: sha1:28ac8a8e2040156b23c3e72aad289c63afc8ebe1 + pristine_git_object: 51863783f2e02d6e1d3bacf72285c04ac742119f src/glean/api_client/models/indexteamrequest.py: id: 7b27fe5b6d69 - last_write_checksum: sha1:3c24bd9b92c85d7e135238ccaf34bfae2e08f67b - pristine_git_object: 2f0be026439e357cfe49c1c5cdfa39f3ad2f9e83 + last_write_checksum: sha1:1eb31cbb1f1626a5c3cc0b64e8c69156449b628a + pristine_git_object: e524f95153e6223216a49dced56da167c4c33560 src/glean/api_client/models/indexuserrequest.py: id: ff0180ed9f7a - last_write_checksum: sha1:13c467c30367bba9c776c6e7577c58ef76897c08 - pristine_git_object: 21e0654e94d799c3f1841da75c14ba31501a6cd0 + last_write_checksum: sha1:703d8aba1460cf9a2a1a6cdc392aa8015e2871f8 + pristine_git_object: 7acd43d1583cc67dc4f370b9a3b981aea698b75a src/glean/api_client/models/inputoptions.py: id: 29608097f74b - last_write_checksum: sha1:992b3142ce575d302a4b2bbed6af966e4c06e0fb - pristine_git_object: 07eba7dd96b4e5d8db4988f69e5c95c21675f796 + last_write_checksum: sha1:bbf99f7a5e44866c614da7679d0a259e5b722a05 + pristine_git_object: 63d2569b2da5fe7881df3f25db4db70425c6e7c4 src/glean/api_client/models/insightsassistantrequest.py: id: ff69cec68e31 - last_write_checksum: sha1:61b5756d08f5013309a14d4a9a538522c6e6a0d3 - pristine_git_object: c485a36e560896934fdbba41397ec403efc14610 + last_write_checksum: sha1:439ad26c2d83ca909aecf3d546506d681bfdadf7 + pristine_git_object: 88e40106f45e787691ddfe772098384b898365c5 src/glean/api_client/models/insightschatsummary.py: id: 06b2f68e597d - last_write_checksum: sha1:29ddfb59bbb2eaa2d13b57893eb59c365c0f45e5 - pristine_git_object: 59ad00a9e5e26efbbf8f20c7dc0d3ea9b8385165 + last_write_checksum: sha1:931b0ef589cdc9faac95e1a3abab4f5bd9d0de8e + pristine_git_object: fcc83ccdc8fb1b89bc42ef7206c9596a7dcf34df src/glean/api_client/models/insightsop.py: id: ded0a3337a07 - last_write_checksum: sha1:57177abb71c5788ef3d0afb37d1b17cbcf470f68 - pristine_git_object: ef886121e9aad14a27333d4aa7a29778530af8d2 + last_write_checksum: sha1:c88dc9426f3a524eab216f55c273173413447622 + pristine_git_object: c0de2bef0cfda6986cec13f9a02557f3b3bf02fb src/glean/api_client/models/insightsoverviewrequest.py: id: ba00a51c6496 - last_write_checksum: sha1:34a97bbb50706dc6552d0d8ff5bbd143f402af8d - pristine_git_object: 7a55cdac711caaa6547a9eddce001a127fc0122e + last_write_checksum: sha1:4b2933a2bc6d94a665799211e2e58be8e436aff5 + pristine_git_object: 5be6e4bb1a8d0f3625ca6ba7fcb6267f6b42d9e5 src/glean/api_client/models/insightsoverviewresponse.py: id: 9f278319d18c - last_write_checksum: sha1:133233cb131d2ffa9cfab3f841e9aa9500732fa6 - pristine_git_object: cbda27d6ea172d6070f6f1b4f969ae8fa9a439c1 + last_write_checksum: sha1:061217b97153e2d043e85d3fe7a2adae8779a0bf + pristine_git_object: 874941a4adbbaab147df806e91818583f04a0ba3 src/glean/api_client/models/insightsrequest.py: id: 72fbc9d1c47b - last_write_checksum: sha1:2790474b4221ec3d8af324a358267aead988db30 - pristine_git_object: f3a427a026a7659ae20d19bddc23297d9c034c4e + last_write_checksum: sha1:ba897351884e324f6b7005cbb8ea6893186d1448 + pristine_git_object: 9138fc7087357f540293c573302d6ef0a0101b78 src/glean/api_client/models/insightsresponse.py: id: 8d5ce8feb796 - last_write_checksum: sha1:c30bb04ebfb065b46c1ccb1ef841c6ba57d9d717 - pristine_git_object: d85e2e5537904652848584344922145c3fa67a7c + last_write_checksum: sha1:20b2916b5e4ad8e1c61aecc6db451cc53646873a + pristine_git_object: f93836b93c65f446dfc388b0b6583ebc11231cab src/glean/api_client/models/insightssearchsummary.py: id: 876b12a69ab5 - last_write_checksum: sha1:164a9faedf3d4276faf03b25e31c9dcec69b432f - pristine_git_object: d4152b602eda2a3af52d7c203743e1039bc7756e + last_write_checksum: sha1:7be50f5e2dddb2f3094df9a8c04e58269ebd9803 + pristine_git_object: 4e4c5b9dcae56b99f4aa481a29aae987f8566609 src/glean/api_client/models/invalidoperatorvalueerror.py: id: 92783a6d0aff - last_write_checksum: sha1:fc3b2265568327539ac547466f17be35c92e0941 - pristine_git_object: 4ed84420941dca5ebf2f05246fff5047d4265a3a + last_write_checksum: sha1:5903d231e24afb30c1bdf5c7dcdece23271b23e0 + pristine_git_object: e9e0ee2bfce4031bf643d9ce963b10b03b435ca2 src/glean/api_client/models/inviteinfo.py: id: ba829cd6990e - last_write_checksum: sha1:308837a393d9fceb21d423c5c5cf0762548dfa25 - pristine_git_object: 3b68e8a5b16606e5e7807ba293526316d1f26535 + last_write_checksum: sha1:856c72279e4df25f89c2d438af2e958a2f576ccc + pristine_git_object: 34094c53eae9098b7a5795cd13f4fde67b409072 src/glean/api_client/models/labeledcountinfo.py: id: 35eebfd45449 - last_write_checksum: sha1:40cb55c9487a4a10c8734c648eac64f68fd34964 - pristine_git_object: 4e448701487741621804acd375c7cb2184670a09 + last_write_checksum: sha1:a4ac8cd329658fd70eb890b21fb7f9cd16c9077d + pristine_git_object: c123fd88245ed5d782c2ae83e275530c3d85add2 src/glean/api_client/models/listanswersop.py: id: 6df22dfa5611 - last_write_checksum: sha1:048a3e4133897873255ff3997d40265f4f47a72d - pristine_git_object: f94bc53b50d30c39f3ebe4ec6fd30d87da33595b + last_write_checksum: sha1:b7bc88a7995081c1a37c2bb1588037c25f050fd8 + pristine_git_object: eb99f4463abf15d7c14b276968b9df9c18d3d6b5 src/glean/api_client/models/listanswersrequest.py: id: 182308b967ae - last_write_checksum: sha1:1a0ea6fb6fc1c83271cd3b1f1df8fea91105da95 - pristine_git_object: 3f6a4892b605192d8133e2952f8aca1d25d2ade9 + last_write_checksum: sha1:824fcc94dd21b633c4464e9139b65035fb2c11c5 + pristine_git_object: 6868a5387ab04cc1ae7b697d90790ca3ce5476d6 src/glean/api_client/models/listanswersresponse.py: id: b7fd2c05b83d last_write_checksum: sha1:abc77f90517a39866282b1bbebdb9cb0ff0ad1db pristine_git_object: e92608b140a8de3049806f599fa8fe54e4961e2d src/glean/api_client/models/listchatsop.py: id: 94b86456aeb7 - last_write_checksum: sha1:124b2b64133fc8706539d98e0724a1cb172849d0 - pristine_git_object: 883801d64cbe4f06e5c84460ae520edda1361420 + last_write_checksum: sha1:23b209b16d154e0f3bd78f85c33f7239c85eddf1 + pristine_git_object: cdd71758afcdf9af89db81c0028d65538d2f5f14 src/glean/api_client/models/listchatsresponse.py: id: 50a66bb0b05c - last_write_checksum: sha1:e73ba9404d217b3ddf1f97a79928e49a8355ca7f - pristine_git_object: 0276cc2923ee8eb00b2b21e7304f16952b2ef750 + last_write_checksum: sha1:eb129db5e5cf7b921fdac6359b9143b7808b0791 + pristine_git_object: 4c33ac6b11e411093153cfcdf04054b59352979e src/glean/api_client/models/listcollectionsop.py: id: e09e0878038d - last_write_checksum: sha1:03521e75f16b8a1b049cd438a1fbb7579a7ce646 - pristine_git_object: ff908cda41d66674f8c9e45f5402b8bfcd149fad + last_write_checksum: sha1:342b62a14338d35b99b933f0002ce823b29ea17b + pristine_git_object: ad00f15cbffb1933b2dbec0fe497ff4a1062e956 src/glean/api_client/models/listcollectionsrequest.py: id: 1a996c119c07 - last_write_checksum: sha1:26b4cd05536d39ffd20c59eec65e6ae079938e96 - pristine_git_object: 3135d632494645686fb498ef018cfa6e6910db35 + last_write_checksum: sha1:9129200407446b5ee984d4736b5f288fa85760b5 + pristine_git_object: 88e267e26f6d0adc5e6ee81b10c24d3a74de752c src/glean/api_client/models/listcollectionsresponse.py: id: cedec0f42961 last_write_checksum: sha1:2c5a2d4a11b94edcc23ae4083a4c3db6d0f1a8b3 pristine_git_object: fcca4d58be24bae30d9081726ac639c1c99e0153 src/glean/api_client/models/listdlpfindingsexportsresponse.py: id: 880bcb62cf12 - last_write_checksum: sha1:b6467c6eeade32481f87a13e73f6616d3363ec01 - pristine_git_object: c1d089b03491b7d8fca8ad2b00e43adbe07ce2e5 + last_write_checksum: sha1:d878c47568278cf5ed0b549f846c07d6e0c88b1b + pristine_git_object: 4920345fcc4ad3a006dd32b032d713c61926f46f src/glean/api_client/models/listdlpreportsresponse.py: id: c300fd0a9a6c - last_write_checksum: sha1:45d83bf83ed6b5febf4a3ced2bcb7a861502bedf - pristine_git_object: 67cf82427664b4f8de0cb2d3e357084206c74245 + last_write_checksum: sha1:1ca2655030b725401fc82df4bf6d131294f5424d + pristine_git_object: df22a92d646bca5d72ca874462ef4e46cd245f43 src/glean/api_client/models/listentitiesop.py: id: 06a2c7e16783 - last_write_checksum: sha1:efcc450f078116c4663f2d49a5c1b677f0375ec2 - pristine_git_object: 7f583865ecb67b25c1356ba1ecce4631089410f0 + last_write_checksum: sha1:f0940efc625659323ca06e0c1bbfa2a6649237b0 + pristine_git_object: c64939c3d9029fbd5ef6d06a1fd63341cbbc3e37 src/glean/api_client/models/listentitiesrequest.py: id: 80b3dc9dfe99 - last_write_checksum: sha1:cca1bf0a8a7d56a377926d2edf7c8813afd3559e - pristine_git_object: 4e490d239191e02c2b2e0d92b8d4f484c0a173eb + last_write_checksum: sha1:96f5c285b5972f0bed1ceb952d15983df1d3ade6 + pristine_git_object: 699e39c20ce0f71475c7664f3609ce771143db33 src/glean/api_client/models/listentitiesresponse.py: id: 8cbc0b717442 - last_write_checksum: sha1:3deca291852909f6a1311ff602de87118a999f07 - pristine_git_object: 348cfb97ef3dcba7a55b1c6aa2c16cf46d1189c4 + last_write_checksum: sha1:5e7e8d4251e63106adcdf4bf256d55ed7b9d8ecb + pristine_git_object: 6f8be48a370fceec00ce87133f9e6d286e70bae1 src/glean/api_client/models/listpinsop.py: id: 3d0b32b3a1ef - last_write_checksum: sha1:fdef4cbb09567d5dccc0c60b994063a754bef417 - pristine_git_object: 3b96ea93922ecabf0d283a4244a8351efae7e729 + last_write_checksum: sha1:f125f2e4c0f68f7c74225c4c6cc9f85d8eec1240 + pristine_git_object: 147e4bd94d72c9a31df92a7fd1687ce6abc34069 src/glean/api_client/models/listpinsresponse.py: id: d8ffc5ecc72d last_write_checksum: sha1:de24dc3fec981597fb7db5b5712b017857a3743c pristine_git_object: aa39d3adc17c52d5463923aa02405af36c4ccbf2 src/glean/api_client/models/listpoliciesop.py: id: be81e93eab44 - last_write_checksum: sha1:df800c729c506814967caaa17acb1e6e0d3467c8 - pristine_git_object: 02965a79b16c97d50181b0f791f4771645575ca3 + last_write_checksum: sha1:4ec9c87f64d63c1eb4e28855d516beca829af78e + pristine_git_object: d0b1cc73635af1b6d993cf26841329f04dbb852f src/glean/api_client/models/listshortcutsop.py: id: 299c0fa933c2 - last_write_checksum: sha1:4c862da30de4c08bce045dc7479179f2399bfa24 - pristine_git_object: 9e75a23981416b81d572f02bdfd35555c4164093 + last_write_checksum: sha1:cade0e2fc55c9774df6c3af1ca083ad252a8d655 + pristine_git_object: 8b99ab97753c080ce3ae1d09b38a9f932d138dff src/glean/api_client/models/listshortcutspaginatedrequest.py: id: 4a13f02487cd - last_write_checksum: sha1:aa0870f1ff51812fb557cbc04b377a69d9487ccd - pristine_git_object: 536bcd6f336c4b999b1a2c7e3a7b3b79c7953711 + last_write_checksum: sha1:62f506af550b18168f473a2a4df79f6ec39cd97f + pristine_git_object: 30b1e2d7c8bb25c1ff0b8ef87fb5705e32433de4 src/glean/api_client/models/listshortcutspaginatedresponse.py: id: 5ea70beb7323 - last_write_checksum: sha1:33586e8a5020a5f269f8ad2a47474ebf522776fe - pristine_git_object: 96630662d351e4422b98e29a4f24d3724f410edd + last_write_checksum: sha1:15867a78d0e32fa85137acd522e541d4e9fe0f07 + pristine_git_object: d8359a2f30439e9e813bbc38d6406177f5f50260 src/glean/api_client/models/listverificationsop.py: id: c0fd4141bc31 - last_write_checksum: sha1:7f3900a87426b35bb9eae6b925e3b39ec16e22e9 - pristine_git_object: c0d3fbcc28b55887e0fc8d81eded50c95dc88d35 + last_write_checksum: sha1:e31b71c4265848b8af683a87062c10034cf6c7dc + pristine_git_object: 16e9645ac5ecfebe78e1d640f885c2ac6ed0c8e3 src/glean/api_client/models/manualfeedbackinfo.py: id: b7e93f70592f - last_write_checksum: sha1:8cbf4c5853191e213965a626e9ba0e85f0abb3dd - pristine_git_object: fdd40da7f847db5f682e964c9231a05f526276d0 + last_write_checksum: sha1:67176ee0069ee1aabf054411efe29ecc2be66f1e + pristine_git_object: 624adbd26ad9533d411b6a38675f4be5c3a16cf3 src/glean/api_client/models/manualfeedbacksidebysideinfo.py: id: 5cd6cc3b46ca - last_write_checksum: sha1:70401e647fb9e0decb071696fe2a7a72de756276 - pristine_git_object: 24122bd57124a63f6cf941b4abff0f821d091c84 + last_write_checksum: sha1:b2717bc4112725c29f9d41376e51fc1212ab844f + pristine_git_object: f0f511048d7e6766eddca8222503bfa475ae120a src/glean/api_client/models/meeting.py: id: 0b1f0fdee050 - last_write_checksum: sha1:d6cecaa5b414d09983eec0bbe3885d0627ecfaf6 - pristine_git_object: 14be3483a80677bef02210813885c8d89fb79bbe + last_write_checksum: sha1:d727361f35d0138e09cfd1bc1e8480afd0996795 + pristine_git_object: c3c75325b3963366f30722e868b0a315df3f6557 src/glean/api_client/models/message.py: id: d2e44a188d40 - last_write_checksum: sha1:385e3f64c58bb8746f31fb8992c5868dc343de16 - pristine_git_object: e23c15b2fc5eeb63657599d99e8d1400a4c7d1ee + last_write_checksum: sha1:2e4eb38d13b95be09550527ce132fa4fac53a8af + pristine_git_object: 9af1fc143591bce1f25e5bb02c8987d0c28f43f1 src/glean/api_client/models/messagesop.py: id: 60537c3f3449 - last_write_checksum: sha1:96acaa835d51973f024d97bf98d47f08b87261af - pristine_git_object: 0c30b2daaff222b0f2fac79842fbf29b5a09d521 + last_write_checksum: sha1:0c6da7e005f1115eb21821ae94fad6fbc1bdc2ab + pristine_git_object: 8e1735a0ecd72434644c9fd7025a168acfc735b7 src/glean/api_client/models/messagesrequest.py: id: 5664726a791d - last_write_checksum: sha1:8d54ae9c38031b3c563503bc63d3d73fdd9a8de6 - pristine_git_object: f415de124f95f20b11b23d07db42bb680897b40f + last_write_checksum: sha1:8c056897df7ee00748de5c8e7f580e77a620afe8 + pristine_git_object: 2076bc4f4b990f248b210ed495f793bee5be8ca0 src/glean/api_client/models/messagesresponse.py: id: 1c7a6e4dd845 - last_write_checksum: sha1:120e5d14859175724f6bfde03cd119a4df8bcefc - pristine_git_object: 28584294b900a5925054380d37b2623f766c15f0 + last_write_checksum: sha1:1d0fcd8f638347b2c5a09b544ae9b350bab23416 + pristine_git_object: d68228bc28c443824b2b73ff1c899053769a56b9 src/glean/api_client/models/objectdefinition.py: id: 96d425234754 - last_write_checksum: sha1:f0b4493a08fcfa00141c346b2227a6ba56ab45cd - pristine_git_object: 148c3eeee5f3574d5c469ffbbe35c05429541fe9 + last_write_checksum: sha1:bbf4d288df6ccc0bed076dbbc0f6a0ee6dba9d3f + pristine_git_object: f9c359d3f7be386a2e9b6a7d9af5fed1613c4c1a src/glean/api_client/models/objectpermissions.py: id: 6a2561118579 - last_write_checksum: sha1:a8e544a6845dba4a08654a0bc42e4a2582b332f8 - pristine_git_object: 5515fd875a11a126043bca0e95cc7097b9448fa8 + last_write_checksum: sha1:e3d51c6afdf467afe6559222130ac627a2331625 + pristine_git_object: efe9cecc59c9206139c445c77a279b2f711d3e81 src/glean/api_client/models/operatormetadata.py: id: 820aa2772189 - last_write_checksum: sha1:590e474f963d00e0606e3a2814148b24393c4618 - pristine_git_object: d03e9506e19ffba46d23c19ebc785735c1265c16 + last_write_checksum: sha1:b172fe562b7c47bd30f87b81549863fe7740c2b2 + pristine_git_object: 09ba687a03f46086f068df7e719aaa2ba202cf74 src/glean/api_client/models/operatorscope.py: id: 143660b5a54b - last_write_checksum: sha1:1fa91c313b4259beb30b7d590d5c32b3f2a45be0 - pristine_git_object: 9e41ae93ecc85070299afb9319b4c40235a25c6d + last_write_checksum: sha1:6848b985c4fb11d0cddf528125d95e3bb26014a0 + pristine_git_object: ebb5f578619d9698b2afab352bd015fb1192fe44 src/glean/api_client/models/peopleop.py: id: 0701e843e962 - last_write_checksum: sha1:4fb8d5af049944b81d62112d0da7407459f987d3 - pristine_git_object: 7bae939964a08d06398d8b97c52b562b43596ce7 + last_write_checksum: sha1:b75a218c54e4ac93510c44f19dc99fa5803447b7 + pristine_git_object: ab286401ed0296450b2ba4751cdb51ccff6f5a5c src/glean/api_client/models/peoplerequest.py: id: a7dcc3001149 - last_write_checksum: sha1:e079841018acb50b448bd0e792db9216c0032c52 - pristine_git_object: 33101b5585a88ad668444ec65f697265fa43e179 + last_write_checksum: sha1:3d45a0ac68de0c33d9e040aa3e263653808803bf + pristine_git_object: 520c04d8b03a50d6c062827eb9dde4f67057f46a src/glean/api_client/models/peopleresponse.py: id: 85f4d95884f9 - last_write_checksum: sha1:7065c3bbcf57d9e86dc86299183f60329457f04e - pristine_git_object: 6665c089b8ff23390963df95e8a585ed78663475 + last_write_checksum: sha1:ed99cd7a6f88c2b90a020d44ca984544e9693cb6 + pristine_git_object: d882d545defeaa06530c915d56890293ccef94c7 src/glean/api_client/models/peragentinsight.py: id: 4b4b57287b69 - last_write_checksum: sha1:2196e8151062252f974c7df6670763d3f3666968 - pristine_git_object: 1e5e6c0ae05b4790226b756a392f14e0d6f45ea4 + last_write_checksum: sha1:f2d08bbea537a274e2f7f1e6786894a4bfcd6416 + pristine_git_object: 37bc51acd2527f1e03e8bdb1229e1378bd933323 src/glean/api_client/models/period.py: id: 41a45b1daeb1 - last_write_checksum: sha1:a026a2e6d70231544ea98e1481386c813cb49889 - pristine_git_object: 9cc1735d027b275f00b0074f6cf9acb01961c94b + last_write_checksum: sha1:a90f23fbb4cd6574f0e53b39f28653fa796d7140 + pristine_git_object: 5e03da4d0ebb1324cbb67b470e6b2884abee7efd src/glean/api_client/models/permissions.py: id: f123070d7860 - last_write_checksum: sha1:afeafd1aa898d7b252bf880387b48f233568fb30 - pristine_git_object: 22994126467d356fbffe986487e79fbdc8b16e73 + last_write_checksum: sha1:3b0334bad215f8d510541690dd14c118146547a6 + pristine_git_object: 51f12fd45d92bddf1e7324b8ad76136fbbe8e440 src/glean/api_client/models/permissionsgroupintersectiondefinition.py: id: bd15f722101b - last_write_checksum: sha1:699a9c4e8e2dad43fce526ea395b4915df0b99b7 - pristine_git_object: ec3adbc7e4ffc7f069469dfeedca823a52fe77da + last_write_checksum: sha1:d70645b20533b35240e169281bfc04361c8942ab + pristine_git_object: 52b20386d1215ca9d5ddf1510c569954ae510c38 src/glean/api_client/models/person.py: id: 486c8c3db123 - last_write_checksum: sha1:fdbc1bf13ddf8cf83532b603e0de4198dbc5709e - pristine_git_object: 45a6fb49c4e2b665cae7c525d4fe29fb4e6acfbb + last_write_checksum: sha1:277538c34f3024a5aa55ea6476e84268555c3eb5 + pristine_git_object: 24355a993c1e2b4e370eac468508ccf90242ac1c src/glean/api_client/models/persondistance.py: id: 307f87d6cd91 last_write_checksum: sha1:90c27054198a8779074839f5226724e81271b462 pristine_git_object: e9511127696034578efc1cc3b778b87564be531e src/glean/api_client/models/personmetadata.py: id: c3af6f3d50a4 - last_write_checksum: sha1:19f4e1d39b6f0bf2d38ae53f417938ff9a91b08c - pristine_git_object: 113c013c438a2a6a2a065910502f8d3e52d0663c + last_write_checksum: sha1:39f3e43e7c45854d4ddb3ac0a97cf0a08ccaa874 + pristine_git_object: 4cddfb2ea40f6d2d3679d244614c83f494a538f2 src/glean/api_client/models/personobject.py: id: 59af9c1e1c5f last_write_checksum: sha1:8e37069549deee32a725de213e86c704bf1352ab pristine_git_object: ab476930b20a2aafb05dc45a84edc2abf666a128 src/glean/api_client/models/personteam.py: id: af542996b2bc - last_write_checksum: sha1:35ff8182143974a0e1fc50954e96a18fc3850410 - pristine_git_object: 9901d3e3243a983ef70a2e7f6a1c8c1635b8fa52 + last_write_checksum: sha1:6e79f1a13d0e41ac17f90d0647cee212fb566d93 + pristine_git_object: f0b080d9fb622465ea1e63cb9a7df477f74525ad src/glean/api_client/models/persontoteamrelationship.py: id: d81f4d7f9bd8 - last_write_checksum: sha1:228be121735e0cb122348922461066cef1a701af - pristine_git_object: 6cb4d329f709e57186df6f26be075a4e6ef6b33c + last_write_checksum: sha1:c1dba4b3a689988ff60346d0e29e9217aeeed6e5 + pristine_git_object: e2f3055250a808a9ae22bf8732b7027c7a9c36b6 src/glean/api_client/models/peruserassistantinsight.py: id: aad2213c6217 - last_write_checksum: sha1:74bf0d3fce89166352965da456ed3068e356f0d7 - pristine_git_object: 1bbfd0b7bf2d92926c527e695d15dbb481a07c42 + last_write_checksum: sha1:d873cd304aa0cbe532deb0d41142b61cf993dff3 + pristine_git_object: a24e6f5d004a03a816e2e4eb13594aa3229f20bc src/glean/api_client/models/peruserinsight.py: id: a243b1a405fc - last_write_checksum: sha1:f87e1f76de30f5100f332b1007e0158466d2143b - pristine_git_object: ffc353bedcc6a39869a6cac07339d73b632032e0 + last_write_checksum: sha1:d16cc308c4c2ceb2eeab6bfdedd054206c298374 + pristine_git_object: 8c459101dd826f42377f51bf006a380406373af1 src/glean/api_client/models/pindocument.py: id: 77cd94d61387 - last_write_checksum: sha1:886b8b419c5c3a822a9ff320e2db16ec0df67b02 - pristine_git_object: 2d54ee036d9b7c3a6d54eb969bcd32da5de03feb + last_write_checksum: sha1:e10a59eb835492e79ee1c22148cba76e4eb0477d + pristine_git_object: 7d438a35fc7f1d9bd3f98a4412ae47851d20f130 src/glean/api_client/models/pinop.py: id: 9bccdd6255f1 - last_write_checksum: sha1:29fda8e912ea573678318db4882553a291bafada - pristine_git_object: 55e046361364b823edf38b024911d7206fff0df0 + last_write_checksum: sha1:d3fdbceeda27177a9c8f8b5bcffe8857a07ac1f6 + pristine_git_object: fb63cdf7183848a077fec7d668b6b4cfc544e796 src/glean/api_client/models/pinrequest.py: id: 5b14b683421a - last_write_checksum: sha1:d94aa7933763b49f73a3e81b181a93f7bcdcfbe7 - pristine_git_object: 59b1c69f32cd53d4fd288991df5c9f6b4470abd5 + last_write_checksum: sha1:73484002a7a37df4baaf05fd282bf904acf54cc9 + pristine_git_object: 1e291af2ba4ec81b33d9b03faad6cb8365c8ab55 src/glean/api_client/models/possiblevalue.py: id: 6046129b9c7d - last_write_checksum: sha1:e9c4cf04a8f5bb461479d013e2a1abc40067fa5b - pristine_git_object: 8ce8997e646edf9dddc15cfc5928604da5014b49 + last_write_checksum: sha1:4495a1288f312de877f9bcaa547f35178119ca59 + pristine_git_object: 1881d2039a7b9e4f08c6af33c908a78f051033c1 src/glean/api_client/models/post_api_index_v1_debug_datasource_documentop.py: id: 9259c6838b6c last_write_checksum: sha1:dbf680ef7ef2bd63047e7c641dada0fbaeedb4a3 @@ -4383,532 +4439,540 @@ trackedFiles: pristine_git_object: 79c5a3b12381321be26a7d703e00aec02583a2e3 src/glean/api_client/models/processalldocumentsrequest.py: id: eca970f6b17d - last_write_checksum: sha1:f2f32126910b26ffe57c48fa2d2004b23e1f49e3 - pristine_git_object: b06f9338b7b1d1283ff8e7642490bc2f67267cd5 + last_write_checksum: sha1:1f8d977cd86106f1205fccbd6f7c8898a6276217 + pristine_git_object: aa29557c7b29a299b1d195dbd21d60b60672f2e4 src/glean/api_client/models/processallmembershipsrequest.py: id: 237c53ded9e1 - last_write_checksum: sha1:d7ed9c8c1ba72e2167603b32eb2c61433785fd3f - pristine_git_object: 30d55883d462e012a4b0b7032820aa6291462357 + last_write_checksum: sha1:1d520decc6fa8c1bc8960a6b3443fa4d8c33232e + pristine_git_object: f1bba49df88d0d730d9ecf83257dff950d6acf8e src/glean/api_client/models/processinghistoryevent.py: id: 87811e111132 - last_write_checksum: sha1:5c66f1a40fce1e0b497c50b5759650b0a86e4a32 - pristine_git_object: 1f396af07f52f97f9eba6735180a16f967b39a33 + last_write_checksum: sha1:c7dd17b990ab3f56b5f817e397e672f639ad5920 + pristine_git_object: 61b4c04786eee4c0f2e8a864f6eae2564444236c src/glean/api_client/models/prompttemplate.py: id: 349206a29c89 - last_write_checksum: sha1:8a5e9738c59be86b88037a5f590d20a18bee6d24 - pristine_git_object: 79f23aa5b91181ba351eb67b4f2965f3bfa82ba3 + last_write_checksum: sha1:2845d4ff5af26c13353fcbd8060e37bfca043195 + pristine_git_object: 90327467d4d0d687879f460836a2a714abf3f071 src/glean/api_client/models/prompttemplateresult.py: id: f4c9cc06db98 - last_write_checksum: sha1:a850f0d20b9dbfc8c8da8e5b6f483714300573c0 - pristine_git_object: 83dadeda33bfe6a4cbc6a4953627354d0af122e2 + last_write_checksum: sha1:f177b5c594718d1f96f33c8dc4b38f6ead291ff9 + pristine_git_object: efd9ff4700d2bcf26b3593bb40b1d34f6ce6e4fb src/glean/api_client/models/propertydefinition.py: id: a5640d2ddbc8 - last_write_checksum: sha1:2a4ccd9b9360534685f2a6fce2b371c71ff45dbb - pristine_git_object: 8116de2d2aa95d93219cca38063736cf063b0a20 + last_write_checksum: sha1:12b576616f68951d77feebcaae0045c4deb560e0 + pristine_git_object: 64ffc11a40316658690227006f300d7a6a4e04c3 src/glean/api_client/models/propertygroup.py: id: f592edab23dd - last_write_checksum: sha1:7e06b0a348880244352809c95ce0be5ba5e3cb72 - pristine_git_object: c9e1565af2bf13b9e3a95a810da43c4c7635caab + last_write_checksum: sha1:7a2c704e758bd2703ea9dab202cb663e2784429f + pristine_git_object: f3ed0cfdf6036135f807e6a2d882b2aace08cbde src/glean/api_client/models/querysuggestion.py: id: d999a3a9d983 - last_write_checksum: sha1:46d849c55908f69b82a4eb33d3a09d5a3a52ab01 - pristine_git_object: b0cf9ebc3a2e20d6d6fba975dabd92f243e52674 + last_write_checksum: sha1:d43fb0420b33b016822529d740992d7a5d8274be + pristine_git_object: 39b6d5e513142fa23df9103d52e52a1b2df3632b src/glean/api_client/models/querysuggestionlist.py: id: a0b2d6cd9e8d - last_write_checksum: sha1:6f14742e4c4d4ba2893938762bbf48867ec8520b - pristine_git_object: 8d5b0fedd461aa35cb427bd96d989accb305401b + last_write_checksum: sha1:9579a516d26837e13e185e9e996391d9f8e8ed55 + pristine_git_object: 8723c878c36f42f2c72654b5c752c0b366b5b50e src/glean/api_client/models/quicklink.py: id: 0304461c2f90 - last_write_checksum: sha1:73b41ae0507ced2e67a87a15a688943d45953558 - pristine_git_object: 0312b05d54abb2bb90fec5c347fcc5c562f3cdcd + last_write_checksum: sha1:80359422d1067bb6718c30c71c371929cb2d85b9 + pristine_git_object: 75045a1ff55daf62bf893cbbb5a52a4287942806 src/glean/api_client/models/reaction.py: id: 076b69450df3 - last_write_checksum: sha1:2fba20d30abeb7cd48a36392e4ad83ad25417a59 - pristine_git_object: d6af14e2c6b394603c35eb1a060d47c8b97fbf44 + last_write_checksum: sha1:d4a5a1c380a3b4caf64ad3377817376a21071ef6 + pristine_git_object: 40dd0af419479f13e301768f57172ba163037a49 src/glean/api_client/models/readpermission.py: id: 13410259df92 - last_write_checksum: sha1:6bbacbd60aecaf4e8d10020dbd46a05f5ef4e5a7 - pristine_git_object: 9ac9f9e25e97e55877820a762f1ecfbb72fab46a + last_write_checksum: sha1:0f5edfe09499050d43d1e50357025eb98516e251 + pristine_git_object: b82781fdc48bac49fc6adcede9a821d4d0874a59 src/glean/api_client/models/recommendationsop.py: id: ee5dd14cd496 - last_write_checksum: sha1:448097fe0d644676361b5ddaf75f70724dec4018 - pristine_git_object: 5407cad0f16607a7183e9e6fb511607ce076e226 + last_write_checksum: sha1:4bb0c267213c83cd9fbe74dd460ff03d1373a3d7 + pristine_git_object: 02f83b74189ebfdf73c92a7f45ad619b87cb4df8 src/glean/api_client/models/recommendationsrequest.py: id: a520b92b656f - last_write_checksum: sha1:54aebb420b343eab2f4ba254b85618b325971c86 - pristine_git_object: aad3b572b6dc7576a389b04291e118579bf713c5 + last_write_checksum: sha1:d6d5b9faae629d5a6112b9e3da7cd4d6552d7953 + pristine_git_object: 507d92fa93023593dca8dc8bd3bfe3796f20af5d src/glean/api_client/models/recommendationsrequestoptions.py: id: f4240d7e4353 - last_write_checksum: sha1:d0b93f5bf6b8d511124f27f404d8d7b8c5cc0d9d - pristine_git_object: 9cf1ef644280f386eddfd4b5d8e80ae9a9e60b31 + last_write_checksum: sha1:ac1ad1caf79117cb8c5b742731a05bd185711c11 + pristine_git_object: 162c9f7685718a17f9aa40e0bcd289551b34750d src/glean/api_client/models/referencerange.py: id: 99d8cc67073d - last_write_checksum: sha1:13c3bb06690976fa9356015d8821b33ae5e646ef - pristine_git_object: 45726489c4ea6a2a664e679bfb833b4ddc49e1ed + last_write_checksum: sha1:51fe4767defc867fcce553a39cccef816a6e0e0a + pristine_git_object: 851c90fafd1ed4ceda5edc31cb61157608a4ebd1 src/glean/api_client/models/relateddocuments.py: id: "956195080413" - last_write_checksum: sha1:bd9688bde6bf74d4f4270d62ef3c75146d08c78f - pristine_git_object: 034a4c3a437b9f641a8ff4934ca4748d7648ea33 + last_write_checksum: sha1:6b452cc2d10c4c7981a46c4c398a84dd08d12bc7 + pristine_git_object: dd59157988a53eb0383142ced28ee17d30ec78a9 src/glean/api_client/models/relatedobject.py: id: c8937c435039 - last_write_checksum: sha1:420e9303bf60fc927a99d5efda0174d8565d1464 - pristine_git_object: 621be80f72da95beb1dcb591a1f77df0cf90c30e + last_write_checksum: sha1:af8f0e69f54b6dae715a0ec62eb1faf21f931856 + pristine_git_object: 94a1515c39e6ab1ff3120dab4576195df637d2cb src/glean/api_client/models/relatedobjectedge.py: id: 73ab27238170 - last_write_checksum: sha1:d4c219fcaccba36bc7238dc91cc4ce1aa9ec80f0 - pristine_git_object: 06d322ec14b613cc6820fe932a9b402a8c5d748c + last_write_checksum: sha1:4291bddffff01dd38c0509314714fd6b483fe935 + pristine_git_object: 6a5b09725efd25c6ca0684b4db6b962790d12d74 src/glean/api_client/models/relatedquestion.py: id: 7a4bcc49206c - last_write_checksum: sha1:74212dc6ea2f7aad6ee41dae6239fc1065cd0c0b - pristine_git_object: 2985a98da9ec63bd43e438031b09eb85758f7447 + last_write_checksum: sha1:46f1235014e4f384daaefeb1b398c572ade0f00a + pristine_git_object: 0bd513ec01b8dd34acdf5d6c82baab1e7150edde src/glean/api_client/models/reminder.py: id: fa39219753da - last_write_checksum: sha1:78309aeb9f9d01ef3156a029d63431abfb254af5 - pristine_git_object: 7d4c867778762fdcdce8fd30296f02a4aae5ac9f + last_write_checksum: sha1:9c771e2bf1f3187443201deb26161e3ce30f42b6 + pristine_git_object: 8a084dd759778243af1f96f3980d9c46fa228a0e src/glean/api_client/models/reminderrequest.py: id: b74a3f389e9a - last_write_checksum: sha1:d613cffb2d427f05fab72fcefbb6479f2127d102 - pristine_git_object: 774077db3c79a83593958d01595ed3f6b6b8a6e8 + last_write_checksum: sha1:fd9a85afc919d58e42c3a0dabb32c75f13a56576 + pristine_git_object: 5f4e8c646b852f53287e854716e5ddf76e60f7e0 src/glean/api_client/models/reportstatusresponse.py: id: 772284b8ed0e - last_write_checksum: sha1:5254967a9c2c2afaf99e2eafdaa6faaa0e6614ef - pristine_git_object: 2522a82e660b9911510d19a6d2c6dabdd975b707 + last_write_checksum: sha1:6bbd579bf04952878b62702c53ac089940b09314 + pristine_git_object: ea27cecbdfb8bf2dff2b4062579aa3fd70d9c580 src/glean/api_client/models/restrictionfilters.py: id: 2fb7b9c3c114 - last_write_checksum: sha1:a4a5b50c69652947127d21bc5e87798107a22d3c - pristine_git_object: e81d750b0d7b390261ecbd8684703fc6a6e3671e + last_write_checksum: sha1:0c2fb811b3872765eb43b50354d5134c63d31bda + pristine_git_object: 2e649d73bb1a3382337ae1f2f0be2ca96cabe839 src/glean/api_client/models/resultsdescription.py: id: 15c668146af5 - last_write_checksum: sha1:a6b5f472260b8a0dac0f2a81e6c90b6a8a309046 - pristine_git_object: 4bc3fb84e32e69d074c8f13c4d8050a9b4cdbdad + last_write_checksum: sha1:9b06335149d9880a28c945e60ebecf497b3e78d3 + pristine_git_object: 7c8140e5c18542cb5b7b13c7f4cf734013d13ac5 src/glean/api_client/models/resultsresponse.py: id: 64338eec2f88 - last_write_checksum: sha1:668bfd50a4ec6a1510f2716c9394b19765251922 - pristine_git_object: 2a0a44ec155d0e059ffa2dd6ef249f2e21a6b756 + last_write_checksum: sha1:9de171e1987517e200acfb2f98d957ddbe939631 + pristine_git_object: b6ea890230d3c9255ca137b3e671f70f07c672d4 src/glean/api_client/models/resulttab.py: id: ab5996a4e338 - last_write_checksum: sha1:991c4ea5359bc3be66927d437db8724ae3bc1969 - pristine_git_object: dc9f86947be3eaa172abe67f6eb11e0242863569 + last_write_checksum: sha1:47e64ce6b2f42edcd5e311218791fb375f9752e8 + pristine_git_object: 3683f422ddd5b3065454a5a14ccb9639d96dbc9e src/glean/api_client/models/rotatetokenresponse.py: id: 77a67fdbdad9 - last_write_checksum: sha1:6411c68d488933b6bcabda8fa9a2df3fb22b7732 - pristine_git_object: f9b9e44f8b3128fa27e85accd60bf34bf3f23a0c + last_write_checksum: sha1:70fa60be71c4eb8e04999ca6d84b9e72cea19540 + pristine_git_object: 723b5b9c9e2e7ba03737eee2f019a3547385f027 src/glean/api_client/models/scopetype.py: id: 2f48507a9410 - last_write_checksum: sha1:d460ea7e8d17a038e43c2eb26ce16ac276140d87 - pristine_git_object: 3f3b0004bc5152c445ae5e6b2a52e3a2d416d9fe + last_write_checksum: sha1:4245fb548034949fad3ffea8f6afa5ddea1ffde0 + pristine_git_object: e45814ba47a94bde527ff4fe6f216224211eb3af src/glean/api_client/models/searchagentsrequest.py: id: e4777828bb53 - last_write_checksum: sha1:304fec4d49f1ea5033de379d68809ee463e569d2 - pristine_git_object: 4d307075f24e37f45f12a45ba8e4b7efaf7701fe + last_write_checksum: sha1:49a2951cc53859434c49bfd408bfb8f20be732a3 + pristine_git_object: a66f7d033ec65907f16edeafe241698a99ef93f9 src/glean/api_client/models/searchagentsresponse.py: id: ab538c03a9e7 - last_write_checksum: sha1:78cb08b2b8368185e15e940502493264d58bb8c9 - pristine_git_object: bd830265ca4c50f5ae03d63862fe17860b3214f9 + last_write_checksum: sha1:966d23f457caf948ccb9c3146c896cec9aeee922 + pristine_git_object: 9e6b9852b797e99e0b0fdacddc14e29c0a9b733c src/glean/api_client/models/searchop.py: id: bf0e9fa90f9f - last_write_checksum: sha1:2bde07420388dc6d2ea32df36c4e370b07c6e88e - pristine_git_object: 08c2a35bfb2579c5f96833dd9ee970b369af61a4 + last_write_checksum: sha1:ceb0ac07f9ef9da3f864de222967630d84295626 + pristine_git_object: d1dd1a5c5cd0cbdbfec3d1b71a11e1c5172eef20 src/glean/api_client/models/searchproviderinfo.py: id: b68ee1b0b172 - last_write_checksum: sha1:54f6de47cf2636093dd2f7be38417549a4fcfb83 - pristine_git_object: f929badbbd89b3b0e946642dee7fce32b9c19ac6 + last_write_checksum: sha1:7eb4317de4570eac02a377fcd3f6d15533390667 + pristine_git_object: 84921983d237d16b44dd1746590d7a78dafc818a src/glean/api_client/models/searchrequest.py: id: 719f98a441ea - last_write_checksum: sha1:53727733e6f91d12cbe1a1a1630d62b75cd3d1a9 - pristine_git_object: 6464d28596e81459524eefbabb0b76da6baee202 + last_write_checksum: sha1:0b58de889fe0fa092d1457860a54e3a377ab22c5 + pristine_git_object: 535df87596e62767f1f8499a01547f754786078f src/glean/api_client/models/searchrequestinputdetails.py: id: f9016fc47ba7 - last_write_checksum: sha1:0505c1dfc6fdbc2f6c885df9a7c8b0a2298dc3b7 - pristine_git_object: f5ea350845369391ec299ffe056f8f471299bcb8 + last_write_checksum: sha1:9590af880bb1d81811808c2f319899523e12fabd + pristine_git_object: 900e4ff23c51d2f7b4182a92cf04782761914c3d src/glean/api_client/models/searchrequestoptions.py: id: c7963bd59328 - last_write_checksum: sha1:cc91cc0d63d811f44d4cce961d0bb356c9dfee40 - pristine_git_object: 9ee1139fb9b5619fb6eafd782e6a11d7e20c6bda + last_write_checksum: sha1:fc025a6e49aaef42f90f7287592799e53d479ab1 + pristine_git_object: f5006c08f5f60180cb4c99ef4c37855f4d4a0893 src/glean/api_client/models/searchresponse.py: id: d705ad40d03c - last_write_checksum: sha1:83d422a78f65c92a234626e4b8e2e55a279596e4 - pristine_git_object: e1749ab7d3ba853d443188baaea120e173521934 + last_write_checksum: sha1:6cc100f27205541e4ed49ea7046c303fe13b2963 + pristine_git_object: 0135246be23f25b95e11d3d167095e9707730cf1 src/glean/api_client/models/searchresponsemetadata.py: id: a10bad5e36b4 - last_write_checksum: sha1:2d5a30857d1b3f1cfe5c9a8548cc318c95922be2 - pristine_git_object: c7157ae618ad475d51fcdd87ea55802e931fefe0 + last_write_checksum: sha1:ee67e32b1b616e61867bcc09e81346be64296054 + pristine_git_object: 0d4c2a385af0f5da372d8a647d591ccb6e9468a2 src/glean/api_client/models/searchresult.py: id: 80390a0977b7 - last_write_checksum: sha1:f02cd34af816102446a9df80a898c1dc84bb34b4 - pristine_git_object: c476686ed7b98ee0b8e069b13963d1e75d627ebb + last_write_checksum: sha1:8ef2dd214f3e8c975ae28bfd7432e871f2b6d449 + pristine_git_object: 9bcd86392b024ba6a7c5b4727cc5b88198fe860d src/glean/api_client/models/searchresultprominenceenum.py: id: 611302793a36 - last_write_checksum: sha1:4225ab438686c0ad0beb7c0f11bcb523a01e3e67 - pristine_git_object: ddf2e8f1cfe9e3860a5753d118bbde9bbb3ed34c + last_write_checksum: sha1:75da9f35ae33d71515f58654134b6d614f453ecf + pristine_git_object: 27ef471f64a9f280f3142d2f9b825c0058b2c365 src/glean/api_client/models/searchresultsnippet.py: id: 70ba81075b57 - last_write_checksum: sha1:926645aaabf6aac684e5018645b73cf6dfd723a0 - pristine_git_object: c235ac1f310e375c69bff593f56d226d37793e0f + last_write_checksum: sha1:cc85a1cd95b1f93826fc1d45d0e6f555ca17ecb2 + pristine_git_object: aff7d94f9b899037827b4af40b273915ca8c99ce src/glean/api_client/models/searchwarning.py: id: c2eca228f00f - last_write_checksum: sha1:4951154af78b80453a435e8f3b7f235e5142720b - pristine_git_object: 72c2fb915b0a912916067ff56e5b5d6054f8b8c5 + last_write_checksum: sha1:0a2bcceeceee257d807202e5def6d83dfc85e05e + pristine_git_object: 79a0826de8a9db054081f8b9cdcc3831b1735dbb src/glean/api_client/models/sectiontype.py: id: 9b5de392015d - last_write_checksum: sha1:6bfac99bee31c88303dbda27576b7f283eb0eabf - pristine_git_object: 2dbb489e5e57896b6bac27ee2e7aa6d9b6acc986 + last_write_checksum: sha1:130b8a1f543787e1f3f63915036bcf448ec52ceb + pristine_git_object: 59fe1bb6ae5db2711599be0bb64971a8a8aa4c9f src/glean/api_client/models/security.py: id: 79159407101e - last_write_checksum: sha1:d6eec3a1ca1d3a71d6c2ba5d89d45b6ed644bb9e - pristine_git_object: 1a757df267f6cc75b67c61b244732b463e3c9429 + last_write_checksum: sha1:8969db847e8b331204e2b1eaf5e1bc16c54048bc + pristine_git_object: c248ffd0c4139a8d90f3d9e90af34490f940f7c7 src/glean/api_client/models/seenfeedbackinfo.py: id: 6a7a196ed797 - last_write_checksum: sha1:52ea020b14fed5e0fb5627c74b661e49caab8930 - pristine_git_object: ff374c226ee35a2eccdb5d7d08fbad8951538db0 + last_write_checksum: sha1:31b5cbaf866e30162e40c35ec7701fb8e0045e5c + pristine_git_object: a5ebcfaa179fba1405e7aad53f24fcf9acb58110 src/glean/api_client/models/sensitivecontentoptions.py: id: 156ff45324dc - last_write_checksum: sha1:3f6a5eb7ada778c813e4ec9ff02d365eaad5fc34 - pristine_git_object: b8c1e5cf072830b5fdf1d8d7e25700952c5ed606 + last_write_checksum: sha1:54cefb7a0c7833fe1047b9f2dd1320ed3dc059f5 + pristine_git_object: 9c337af1b714eb5f38a87ab7f67baa8cbfd3edd9 src/glean/api_client/models/sensitiveexpression.py: id: f2d93e2a2977 - last_write_checksum: sha1:ff579b2754d2ea3f9e8fbbc8e35c47e929bf09ae - pristine_git_object: ddc4bf2e43c37f93aead49b02339dd7780d077cb + last_write_checksum: sha1:8b4146543b62a90884a429e0b8c1fab6f04b2b11 + pristine_git_object: 4f4970c317e5e47b92aecb2b35e6d6976807a2d4 src/glean/api_client/models/sensitiveinfotype.py: id: 6d9d1a461507 - last_write_checksum: sha1:eeda43e2e6e951aa72c007d7b4b29633b5c89307 - pristine_git_object: 69c211224ef92c406a6cea81fd9bf10c2a3476f8 + last_write_checksum: sha1:46bfc2535d5d097c56a89af5e3c7e966d4760d45 + pristine_git_object: 61ec44733bdc5ae0deb7b9c710f42b67246990d8 src/glean/api_client/models/sessioninfo.py: id: 4127a11bdfbc - last_write_checksum: sha1:f81f0f43df044f115bc04120f6122c9a52d764b2 - pristine_git_object: 0a0e4aff91502fa8478933b693dc836c541fef13 + last_write_checksum: sha1:109e98c476f5bf747e35b7051e2702961c518167 + pristine_git_object: 0a0ab5212d819022274b18bbd66874850c679af3 src/glean/api_client/models/share.py: id: 39287bae7e7f - last_write_checksum: sha1:416660f853ee1f27b81162be497e61f193e332f4 - pristine_git_object: 5e5d5781e7efd01a7e0afdf6d24592f6ef34e3e0 + last_write_checksum: sha1:7baf7314be3c109a90756455cd32f420ca2ea823 + pristine_git_object: 3356d1fb50d14a4d11fe4f7495add5cd422cf7ea src/glean/api_client/models/sharingoptions.py: id: c757da755d4e - last_write_checksum: sha1:b906e15ba6b25b6cdf40bc7345df07f3004a6b9d - pristine_git_object: 9b2e311f1977d689f19cf1cc93d9884515743440 + last_write_checksum: sha1:83b965766c7df4a7b84c3eb9a535bae2c7207819 + pristine_git_object: c6ffe6942fcc6f6cbb8aaaa146c5871f8f4d7ddf src/glean/api_client/models/shortcut.py: id: b40331355c7b - last_write_checksum: sha1:5809b7d470c829a26ff7a4fae6eac906b1d7917f - pristine_git_object: c36e2aa4522107840f3d5fcb3d8b11cbd33bb97f + last_write_checksum: sha1:0759fa9909cb34e0aa5d8c50aeecb99826288c62 + pristine_git_object: 3b086609585b1ebf364f32dcd7ddd217ff0d5a01 src/glean/api_client/models/shortcuterror.py: id: 2f86c1d02a49 - last_write_checksum: sha1:267fbcee22f522f1dba995b778eb6087a32d57f2 - pristine_git_object: bc2d9b7fe2642c63690226658357a88c3c806200 + last_write_checksum: sha1:9fe0fd6f8ccde62c2d2eb8eb01e0c56cbfe5a1df + pristine_git_object: b4922a4c5c1d6f564bab4ecdf3ff0823225aafd3 src/glean/api_client/models/shortcutmutableproperties.py: id: 16671c35b7ba - last_write_checksum: sha1:15dad72640797d70f44e84a8bcce767d809daa9b - pristine_git_object: 8bd56d9b74d6dd5c5b0f620b848c3270eb13fcab + last_write_checksum: sha1:2fd1fe7e2d31469e380ae47fd7fc62213c9e24de + pristine_git_object: a70757ead51012662c34111b312c65df755b7990 src/glean/api_client/models/shortcutspaginationmetadata.py: id: 84d3ffe2fd5f - last_write_checksum: sha1:6703ecac0bce93c421fbd7e68d91bf98bcaa4726 - pristine_git_object: 21d1f8b9976ab478cbd6e0b894a6c0657fe958c8 + last_write_checksum: sha1:ec6b065434c14409bfab5041e0ab7b062f672b17 + pristine_git_object: dd14f76d91c1c9ae65d19d617726b5f2fc4837a8 src/glean/api_client/models/sidebysideimplementation.py: id: 76cfd351a2aa - last_write_checksum: sha1:32ea2fbc47877278dfa82f80b17bb34aacdf5c54 - pristine_git_object: 563b887fb32ad128b2aa23f617f1b178e8afee3d + last_write_checksum: sha1:f829edc84b796610597ed5497f7b670517ee9f0e + pristine_git_object: 2df5ff06886601073ff704d1af1176ab8bb8d9a3 src/glean/api_client/models/socialnetwork.py: id: 7d186cb460af - last_write_checksum: sha1:29bf9bf610821fd14b0959f01de528b998eb681b - pristine_git_object: 1eff28bbf98ca16b73e1528ee4e0dfbed0f2334c + last_write_checksum: sha1:009db644209b7aa50fce2b7b061442d74364d0d8 + pristine_git_object: 6540572a0892130ab3ef3210d038663d93f68000 src/glean/api_client/models/socialnetworkdefinition.py: id: ff972e9d65be - last_write_checksum: sha1:83bf1d893576a5cb21ecc575efbf9dcbb01a0297 - pristine_git_object: 1706b24d2b007ba0cc261e47e333f1a8cfd3ded4 + last_write_checksum: sha1:7b593b4870d2aeb2536629e1be9b750b8f7db385 + pristine_git_object: be8259cd81a246b9a1bbc371d1b0eb6c6682ba3b src/glean/api_client/models/sortoptions.py: id: 7e730ebbc35c - last_write_checksum: sha1:1ed251bfd4c155785a0eba1aa1ce57763430e823 - pristine_git_object: c0dc6acd891db286623eecd16fd4f210628234e0 + last_write_checksum: sha1:7a69b99ac2d064cb8364579fbf2ab7eefb7d591c + pristine_git_object: b47e3975573c6b4fa41b97a1ee74c06d76040a2e src/glean/api_client/models/structuredlink.py: id: d619bb983c4a - last_write_checksum: sha1:d34655249eda9951070156a9cdcc76021cdcd8df - pristine_git_object: 46704423785f7b6a46f0f5f1b528eb8283bbca37 + last_write_checksum: sha1:253c8b08c395c4d5354d84dd4303a6a7cf6f4df8 + pristine_git_object: 64e4e5b9503c69a7fab950d8e05d25dfab543be4 src/glean/api_client/models/structuredlocation.py: id: c0c11256d82f - last_write_checksum: sha1:c3b9bd6185353d9ec6d6764ae8f7d09357cda6ec - pristine_git_object: b4281e4e2e4a9058ac0be6d86f6e0262bd3c50c2 + last_write_checksum: sha1:7d0283180442f7c282f013b05df46aade77b1381 + pristine_git_object: 8fc2a7f5653b37df6ce2250dfcaec28d14ec6f89 src/glean/api_client/models/structuredresult.py: id: 1777b707d24b - last_write_checksum: sha1:0eb9dc0e8959d4947afcddd83c1603a4682cc647 - pristine_git_object: ece0abe67a14e54392afb30f40b099ed84c373e7 + last_write_checksum: sha1:f25435006d961e8157f1788d55b019ac2e98798a + pristine_git_object: ead2bdf1a52968bce716d6fce3519b69fde650d9 src/glean/api_client/models/structuredtext.py: id: 5a5980e70744 - last_write_checksum: sha1:c27d7710c18265efe0f3ae36a3a5218834ce0411 - pristine_git_object: 3df45b9ab5fc83bd674a94981f5576b56bbd1264 + last_write_checksum: sha1:cc017d001d800043a1069074138676d128fa6814 + pristine_git_object: dcf058b2fde6c92bd6f0b8ab893e4d53c137da3e src/glean/api_client/models/structuredtextitem.py: id: 283dcc948aaf - last_write_checksum: sha1:862fce6aabc3a2a7c2f5d305f83637badfec77ad - pristine_git_object: dc9fbe041363bc1b22b5bfda6e72f87ec5d878c5 + last_write_checksum: sha1:4d4bf0925e74117d7e739bf5d70b7e06e64c6153 + pristine_git_object: 6eeb60a01e6fa04e8f2baa9a0914ce62b1661962 src/glean/api_client/models/structuredtextmutableproperties.py: id: 04eeabe42124 last_write_checksum: sha1:ff30b684a5689d343ba2f8e4ae6b60228a5e3767 pristine_git_object: 4a55f087a9b19d542b32dd8064185b090e76b787 src/glean/api_client/models/summarizeop.py: id: 2b87b3e6aa4c - last_write_checksum: sha1:3142a3b1c9e631579c4b96d2b05c49a4baf58126 - pristine_git_object: d476d017d45bfef7eaf17bcb2b02852a92d85b9c + last_write_checksum: sha1:47eb38ea7bdfd516866d08dc9214bbc215022f94 + pristine_git_object: 1211d870deb4159e03665024bdd728e40f3adf81 src/glean/api_client/models/summarizerequest.py: id: 368175eae49b - last_write_checksum: sha1:c4b30147d9bab18252865e4e4e5ff980eea78bf6 - pristine_git_object: b593cc159ccc791fecd6cc9f290c08ce0368d7a7 + last_write_checksum: sha1:860fbd11f01580645fbfa605f8e522b121be9eb2 + pristine_git_object: 2ee5dfa9b22efeb68b34df86294dc9e0bc03c7c4 src/glean/api_client/models/summarizeresponse.py: id: f49fb35062e3 - last_write_checksum: sha1:dcdeb817f6fe04ade12d0ece49e3a77bf9e6c3ed - pristine_git_object: ac7cd7ca83c9746deccc57f7a87a13af28a410b9 + last_write_checksum: sha1:6095fad01602ee9d8810920aafee22caead3b35a + pristine_git_object: ca5dc1b69bd269c493e2a3ee40f1a151b2a3056a src/glean/api_client/models/summary.py: id: ec310b5768ac - last_write_checksum: sha1:3910a034243ab3985993a8ac4b7e3f005956206e - pristine_git_object: a99d75250f0054283cd58035654a7808e2458a2d + last_write_checksum: sha1:2512e7b07e429ee63d5066edb6b30ad7209f11fc + pristine_git_object: 35573db75a59c75e36529c5d7885760cd0b68390 src/glean/api_client/models/team.py: id: 8899a02080f7 - last_write_checksum: sha1:5c9a717187e8fe5d67bf2eeb8095190a61da80a6 - pristine_git_object: c688efcded11ab107b167ad9d9b6c950c5ffc353 + last_write_checksum: sha1:87f9abc7173690f5eab49c3668e542f4f07aefcb + pristine_git_object: 7fa4e16213e567c637369a357d9f87e34d2f59d6 src/glean/api_client/models/teamemail.py: id: e0dd0042405b - last_write_checksum: sha1:132b7d70088f21bb60f3d6837637bce513498c0a - pristine_git_object: 429737173b5a0f3ad1c86b16ff619927ffc9f8ef + last_write_checksum: sha1:42e472b5890b4b0c1c0ae31c078a4b4d9e0f5f7b + pristine_git_object: 73f5b4cdd89f726432ee186f5ab19098daff70ae src/glean/api_client/models/teaminfodefinition.py: id: eba67dbd2ba5 - last_write_checksum: sha1:6d40abf9cc682f382d38bb37afd17cb3d5d8d3c2 - pristine_git_object: 161acbfeeb8e391fe0ade6b874629778a165f3b1 + last_write_checksum: sha1:15ffb877c242c1cc3402afde5609e763242d5491 + pristine_git_object: d5e57583e32aab947759344d5f9689d108c4b462 src/glean/api_client/models/teammember.py: id: 6c0e36f8a165 - last_write_checksum: sha1:23383328303a5f8b50fad83c2fdca984c1937b43 - pristine_git_object: d6cece46d1ce6bf24e0233b882eb5060218b535d + last_write_checksum: sha1:a2881555a6e38ef335aae7523962b4310e028609 + pristine_git_object: 9b534f8c969ecea239d10d528cd1c85de8284151 src/glean/api_client/models/textrange.py: id: fd0971fbe1a2 - last_write_checksum: sha1:764d7773d4cce699f50bedc6c9fff66ca1b3fabe - pristine_git_object: 2d665a5175674f42972967a8905ee1333c3c9646 + last_write_checksum: sha1:0d1f2487aa4c25d5511e9028e63aad0ef356ac93 + pristine_git_object: 9cd52eba35b4e1580aae1f49c905fd22dd493267 src/glean/api_client/models/thumbnail.py: id: f1c4780867a9 - last_write_checksum: sha1:a5bcb1ac09080d558fcb1233ee92499c2292186b - pristine_git_object: b1defb4059e11ead313b65e1aa006ee30f1bc219 + last_write_checksum: sha1:73a1890db32d564451fa4fb369b79221f5604c1b + pristine_git_object: decf9c1fb4bff8b96d6727dd46b90ae6de12f5cc src/glean/api_client/models/timeinterval.py: id: 391f82a52f47 last_write_checksum: sha1:c9259a0abf0a4076b3b112c648b1106f07d145d4 pristine_git_object: b9dc81f9a345f2d2bb564847a37c1df49df5ad5c src/glean/api_client/models/timepoint.py: id: a7733c748aad - last_write_checksum: sha1:23c826150c13f4290537b1600cb7daabd9306188 - pristine_git_object: d595ff326d5b6e4628aef2bee565c585a97e8570 + last_write_checksum: sha1:3f62245e7d556bbfaf91016e7c2e9464ed1100c6 + pristine_git_object: 66bac1cf115489de64e164a35a7de1f18a86a2b9 src/glean/api_client/models/timerange.py: id: 781aa895d3c7 - last_write_checksum: sha1:f35b0a676f0b941121290bc505147af121fbaf7a - pristine_git_object: c8b09f0dfc36c43b457735a04f05b40defd00a3c + last_write_checksum: sha1:01b81d6451d3f463730d7e5bd2ffaa9c4abb08f8 + pristine_git_object: 7ac2cf3c5844baaccbf4a8aabdc54289a653c46e src/glean/api_client/models/timerangefilter.py: id: 0eead7612909 - last_write_checksum: sha1:80a5705ef0d89b517c49398428ba467352cb981f - pristine_git_object: 92f7896e6fe209e76f49ef557b5ec89edcf4b8a7 + last_write_checksum: sha1:ba3eb8497c8bd60817be9067eda04a28caff34cf + pristine_git_object: b8ad317806ded0ecdc42bd4d923de199881e4922 src/glean/api_client/models/tool.py: id: acaa76f0ab87 - last_write_checksum: sha1:e7c5f78afb4df7a4055f87b4b48157475e6add8a - pristine_git_object: 7252330cef23eb73eb1dc59d7d8e861698162979 + last_write_checksum: sha1:d6eefafc0dbe06ada923be3af630ca6c40cbd45d + pristine_git_object: 86839d1b3a9942ee9890d1bbcb29d4326ea63685 src/glean/api_client/models/toolinfo.py: id: f210c6276023 - last_write_checksum: sha1:641917d251dda9d4be07e214d2b4d1e9671fcd91 - pristine_git_object: a83308e92b4f42f49bb53e8b81ae6af103f296f7 + last_write_checksum: sha1:0fb5a9601b9e8ecd9cd71c2f82624fbac8a592f7 + pristine_git_object: 9bbfdf3278d0a840ffbd7de03fa1cd3927bee8b6 src/glean/api_client/models/toolmetadata.py: id: 7ed199e1f217 - last_write_checksum: sha1:2c9ffcf95cc30526a0a8d15de1c11a8fdccd6760 - pristine_git_object: 10e8f64dfc89c729232a8ea787cb30962b456cf3 + last_write_checksum: sha1:93f394a1653533d3c9c4515dd9b94b5c4a2aaa70 + pristine_git_object: a87122b41ef7ae14ff56b4f5e18bfc59e2763957 src/glean/api_client/models/toolparameter.py: id: 630b822ac98b - last_write_checksum: sha1:efdfb57855d6f12507bb9b16c32669abcacd5a57 - pristine_git_object: 31e41566b184b56f787bb46a60815d89bc6c03ca + last_write_checksum: sha1:f74e8f9a8b2c6b6e33f203a47ce22b726956b4b4 + pristine_git_object: 2e00547de68060483eb4c0bd03776f98448ad333 src/glean/api_client/models/toolscallparameter.py: id: 983b41ea115b - last_write_checksum: sha1:1dde2fd7bfd393a253f0303f067362deebe8ba44 - pristine_git_object: 461023ac4486c92e40ea832405b576b63eec53e4 + last_write_checksum: sha1:38a941f1f6839953e84f6f197ce17bf47e84481d + pristine_git_object: 43b68c3eb55f56e8fc1eb10358fa78dc7acca56e src/glean/api_client/models/toolscallrequest.py: id: 9af3249fec36 last_write_checksum: sha1:a0e99244668fb57980063d3ec7ac932580116ee1 pristine_git_object: 235e9ae1251be7b423ffc8acf100eea5a02af808 src/glean/api_client/models/toolscallresponse.py: id: fe536f511452 - last_write_checksum: sha1:d6e7114636aba15761680a74c005351f1795cf06 - pristine_git_object: 9073465b30116f021595fb68bf52437090bc4431 + last_write_checksum: sha1:cfbece61e77a75264b9969fe7197135393087b29 + pristine_git_object: 9949402b2ffc01f5070ca7153d7269151ea1e3b2 src/glean/api_client/models/toolsets.py: id: 72b778695427 - last_write_checksum: sha1:418154e0e24672655aeb96b128d486f19709c240 - pristine_git_object: b16347d3b5eb8d9cf20ebb2e6acfa8f7e45d5a45 + last_write_checksum: sha1:769b67c2c1f91052572476e4815eb7c86df25703 + pristine_git_object: c1ecb2c2d2fc66f7f60a63730124c56fae49ce95 src/glean/api_client/models/toolslistresponse.py: id: 80ee602f49c0 - last_write_checksum: sha1:41d36332e5f5b1dd11bfa2a24c4e3beddc451251 - pristine_git_object: d20d237b50f1ee24740e67aeaee522b0999d5fb1 + last_write_checksum: sha1:fcb7dcb2d397e61affaee277952ad255b1f3a947 + pristine_git_object: 8b5a32ccf25fcfb0fb904e8046bf1b36110a3880 src/glean/api_client/models/ugctype.py: id: 9afda9fb9dd7 - last_write_checksum: sha1:8f7e4236f023551cae93d5a75872ea6d1a3d3c29 - pristine_git_object: 9594a7bfffd04c21e4fdf0c792b3474ed631cb6d + last_write_checksum: sha1:7bb78a72d4d92f1c8a40fac54473773b6021273c + pristine_git_object: 7ed8033e228711e774ab6486840e0b85f159413e src/glean/api_client/models/unauthorizeddatasourceinstance.py: id: d3507c78b8df - last_write_checksum: sha1:f296ce21379e31857108f7d3f0c77c4346385bef - pristine_git_object: bec92224397eb6772fbc857bb6048360d48b5eb1 + last_write_checksum: sha1:e86e33256eecf3766c2cc9fedeab56e34e0f129c + pristine_git_object: 526f77245423fa7bdea4fd79611568ce7d1ab604 src/glean/api_client/models/unpin.py: id: fd3f7ecf7a4f - last_write_checksum: sha1:38b097cc87897b932f2f52ecc1e8cebc9a7833a8 - pristine_git_object: f8feebc7d73e688fc756430e6471e408c8f3ca66 + last_write_checksum: sha1:4a6c085a7adc9e096bf94eaa44c10385f1b67e17 + pristine_git_object: 406ddefe413ec39dd66dd60c2a85e87be9343881 src/glean/api_client/models/unpinop.py: id: 37bd03782f09 - last_write_checksum: sha1:3694dccfbe5bfbf13a82d9bc7d6199d09273336f - pristine_git_object: 4ba6dcab861a50f1285428fbdad13cbfe44a32f4 + last_write_checksum: sha1:c5e5144c2a07f606228a79f9cbc582b8d0c98477 + pristine_git_object: 788b1fdb04944cb32b07461c5a0ecdc5a9f24e16 src/glean/api_client/models/updateannouncementop.py: id: d409429a77e2 - last_write_checksum: sha1:7f5ef05d52977197960cce079e980d5e083544c4 - pristine_git_object: 05d4fd15147046bc45cf6eda8099defba814a969 + last_write_checksum: sha1:ade4910fc7b004a312259f9c4b6aa7fd036fd292 + pristine_git_object: 8ccce4d02d629fff50652a4174c6f54999946173 src/glean/api_client/models/updateannouncementrequest.py: id: 4e395ad26b24 - last_write_checksum: sha1:e64f4b907ba1a3772743265b327ac18786567362 - pristine_git_object: ef92fe1d3b9a1b80dca2de84fe415d3c13c9a167 + last_write_checksum: sha1:3070d15dab71d888ec5e8d7cc4fd513fceac4946 + pristine_git_object: 04efd10306f68210dc6f0af333ca4794d1f7ac77 + src/glean/api_client/models/updatedatasourceconfigurationrequest.py: + id: 2d2985d17d84 + last_write_checksum: sha1:e08a352d5d8c680c7d07e762f8eacefbb5122bc8 + pristine_git_object: e1a2c5a3409aaa0d3dc3a187d2a2c294064771ab + src/glean/api_client/models/updatedatasourceinstanceconfigurationop.py: + id: 8678b3d30355 + last_write_checksum: sha1:64a508426d218a72ef740a0d5aa0bd2924b421f8 + pristine_git_object: 1f77deeb8fb6a8a875f49e590e9a98381e5fce41 src/glean/api_client/models/updatedlpconfigrequest.py: id: a3d254d01c5f - last_write_checksum: sha1:34623e584ba9a2816d236628d4b0c7a8b2d3649d - pristine_git_object: 9111f9594e279c16a0f3b4cddb401a2f00a56a7e + last_write_checksum: sha1:a7e3e3ac77f9d12bf18f4ae19eff7efe1cea597d + pristine_git_object: dfa51cedbbfd90f614d4081984c46e7a1f3784ac src/glean/api_client/models/updatedlpconfigresponse.py: id: ebdba2bf5b4f - last_write_checksum: sha1:f92222e8d3f302abd684094e2c7d62a3a8771e62 - pristine_git_object: d415f88dc3a7afa2f8b45fb526a82273c5da51cb + last_write_checksum: sha1:90fd4a8d4128ea8868bffa008e820edf789f7187 + pristine_git_object: 216e80d9c8139898c93a80490dba41386e952ad5 src/glean/api_client/models/updatedlpreportrequest.py: id: 955dc0f697ca - last_write_checksum: sha1:55a4f8cb42668fbe54332b3beab188aa6d251ceb - pristine_git_object: 63f109621370d73b887ac18861f96f2ae392be89 + last_write_checksum: sha1:fee504071f3fdd7137f1f6a48ff4d02a5a1a0c60 + pristine_git_object: 8fdd3dd17dcf39232d8ca3d595cbcfd3289f95ef src/glean/api_client/models/updatedlpreportresponse.py: id: 4d603da790ea - last_write_checksum: sha1:2ac8aba5b1984b62064116ac115c4841e799a173 - pristine_git_object: c65474b8476df87408a80b0504e69c2238ac7981 + last_write_checksum: sha1:4721c153bcb2ffaabfa9586d5277567d7a48029a + pristine_git_object: ecb9e43f2342345855f4ae68c761086209ce119d src/glean/api_client/models/updatedocumentvisibilityoverridesrequest.py: id: 90d244edbd6e - last_write_checksum: sha1:361acce6d6e7374db7016978da474b2d79aa4bef - pristine_git_object: fb26ba90ef6e415ff44e4aeefb93effcb25e7eef + last_write_checksum: sha1:2bbfff791dcfbb383b15a1988cc33a2d634cb895 + pristine_git_object: 94e18dacb0a992d93450e5ac41d11a16ba0af086 src/glean/api_client/models/updatedocumentvisibilityoverridesresponse.py: id: dbb7fcf4b9d4 - last_write_checksum: sha1:eb89683defb43f64128e48b927838226fde298f6 - pristine_git_object: 1dacc41065ed2bdc0862b32727ae1979a78496a2 + last_write_checksum: sha1:b9a064834b34f180499be5782d836c94fce64cb0 + pristine_git_object: 480787419c72aada57f0bdaa35c13910392d5af7 src/glean/api_client/models/updatepermissionsrequest.py: id: ba573c50cb8e - last_write_checksum: sha1:b6dc59843c51d97af8d47a5b4ee64b2f539fae27 - pristine_git_object: 984179c54f46d46cc8258523329e161d245a9d55 + last_write_checksum: sha1:f27ed068709eeec81b4b0bfb9fdf9308055e8824 + pristine_git_object: 0c622986c397c5307162b457e7b4f42c0eae5f14 src/glean/api_client/models/updatepolicyop.py: id: 2ba2a5f2e331 last_write_checksum: sha1:1d85a868469b55eeda4ca98ad2ced3865d00705f pristine_git_object: b34f7fd4589842113a042c9991b5dd58a82b411f src/glean/api_client/models/updateshortcutop.py: id: fca201b21308 - last_write_checksum: sha1:123501c6d68705b9db5135b2a2385991c58fcb20 - pristine_git_object: 5b9d8daf1d15b39150e3d602d36c53157f16ca6c + last_write_checksum: sha1:212766f3c8400107ec76808b0ad9c696949e4100 + pristine_git_object: f047f8ac73141a5daf60adffa1a7b02556747d57 src/glean/api_client/models/updateshortcutrequest.py: id: b8914e398f61 - last_write_checksum: sha1:5670d992a36cbc1e7bce08e1adfb3ecac03c2c7a - pristine_git_object: 738571d293501fe94a924408dd500cd4bb195986 + last_write_checksum: sha1:e150c110b1a22d17f7d3890f7641b9259c105fe4 + pristine_git_object: 4b89b63afb6be07639b415aa1e966e25fb0a649c src/glean/api_client/models/updateshortcutresponse.py: id: 0080d0c4a831 - last_write_checksum: sha1:1278222ba09cbe424d45094f2193078c71979ccb - pristine_git_object: ed28c5ae287b6c83e83cae488702f3a7046ee6d6 + last_write_checksum: sha1:d663c9a98c3a61ec5d1c5cfc7e91d5463c9a4938 + pristine_git_object: 9c51a9a413af75272894448766fac05e234923d5 src/glean/api_client/models/updatetype.py: id: bdade91a9b2b - last_write_checksum: sha1:e4958a4a45413b8e471a5311068792ab8c6adb96 - pristine_git_object: 687544d47bd9c1e71f933ec6fb4e5a33f197b49b + last_write_checksum: sha1:7b185f14a24c29e8b53ce58533971828af23f4ef + pristine_git_object: 6a51a4bbf41b92eae18eeca9df409b52522ab70d src/glean/api_client/models/uploadchatfilesop.py: id: 29eaccdd7727 - last_write_checksum: sha1:4754d58e641d54d4d16c2f2423ca2c1ecf99cbdf - pristine_git_object: 6d4bdd5f363926d9372678ae09864f36e5831e2f + last_write_checksum: sha1:49c7eecd495fafef3262c61a38cca3ca16c057ef + pristine_git_object: 4aafc91088fbdc1fe88f61ea577e131b6bbea769 src/glean/api_client/models/uploadchatfilesrequest.py: id: c648ec79e147 - last_write_checksum: sha1:01c19e13e954a4b2aea2896007d555e94bbf74cb - pristine_git_object: 898603b055f0c682056919b906d8dc80e9159c64 + last_write_checksum: sha1:30d482b8435697b94c62f72ae38a235ea9e1f2e6 + pristine_git_object: 8e8d01c07cc98fb2347ea8e94b0ecc3d1a10ee0b src/glean/api_client/models/uploadchatfilesresponse.py: id: 73c5f35b8280 - last_write_checksum: sha1:c4f0cb7fb4d5c57cddbfc1c712e9f45b4036f9be - pristine_git_object: 123f81d5fb8ac5a1e2c54dca98e39165528bee1c + last_write_checksum: sha1:8876a4b054e7099e4ab7be02969b945f19618a92 + pristine_git_object: a707d722e5da141e451a2c017a9e56ce292f01ef src/glean/api_client/models/uploadshortcutsrequest.py: id: 4f829de3d1cc - last_write_checksum: sha1:f80f4c6bee4701a1b1d49098dcd13f5ad38ef804 - pristine_git_object: 292988f6e1fae0b2665567fea0f33ab87b9d6ccb + last_write_checksum: sha1:fd127151466f2fb034ed5039fdfb9a2ccd0440d0 + pristine_git_object: e73b9c17d98242d041111ad18c5d0c8a9b35d4dd src/glean/api_client/models/uploadstatusenum.py: id: a93d3718abcc - last_write_checksum: sha1:867bb71590ac5c8188a6123232f168bbdecbdd43 - pristine_git_object: c7ca19e2a45578fa30dc8ca998f2e4197149cd17 + last_write_checksum: sha1:3de738be3c16545f46bc3a05ba903e5cab17a216 + pristine_git_object: 950f6a404fa4ea4f8667a58817fd471f0b000b7a src/glean/api_client/models/user.py: id: 4a3ebe791009 - last_write_checksum: sha1:1d8ac49787f531c6d9eb2535d649e7103c0fd890 - pristine_git_object: 01fc7ac27357a9e8f11513cbd740b11b53728e4f + last_write_checksum: sha1:6d89823e90d4e93add8c251f1acb02b62a032963 + pristine_git_object: 3a8ab795961f4f19f29a41c1dfc4572fef3613d1 src/glean/api_client/models/useractivity.py: id: 7ed02b8eeead - last_write_checksum: sha1:0ada3cb3d5fb89e9b4e4c2725373fb99869fa0e5 - pristine_git_object: 5108bb40601228bd8798e2bfae259b48becae62e + last_write_checksum: sha1:d66376c26f1c30cbaf8accd738bb678b53687ac3 + pristine_git_object: 17d6333ec93d40cdc66a0c34905b8448fa950298 src/glean/api_client/models/useractivityinsight.py: id: 07ac5bf2e903 - last_write_checksum: sha1:9831f8d682fde6d6cc3620e28daa778e986e8800 - pristine_git_object: 76d1560024db47e6a7efe3863300185d7bb0f9f1 + last_write_checksum: sha1:98d6ae5191726e765f8eb4f39fdcebf3fa9ae5be + pristine_git_object: 692a10352b2b48ca8c2f24a65fd5b18b35a2abac src/glean/api_client/models/usergeneratedcontentid.py: id: e51bf3d3e0b3 - last_write_checksum: sha1:59eca6f26e30abfb8589fd5d3edb6e1231b2be65 - pristine_git_object: 04553f56c25dbe69a3d7c321915b1bba87069920 + last_write_checksum: sha1:70c041ff5c91f2778fd6e516cea33e04dfe684ac + pristine_git_object: cd30606c9a481635c29b032b245e8759d82516f9 src/glean/api_client/models/userreferencedefinition.py: id: b094f30ebd7e - last_write_checksum: sha1:bddcd58c482e445a8863776067d2a49e1ba0cfa7 - pristine_git_object: 9c914212cf415865eb92b0e538b0b24b4b4e442f + last_write_checksum: sha1:21b47a5c10ca61f02a14f58ab0c8c23ea5da1fc9 + pristine_git_object: ae7ab2967f8de4d7dac2cf03053d528a91bee43e src/glean/api_client/models/userrole.py: id: 63599e4c3216 - last_write_checksum: sha1:d4af1e99c1ee0fbb990b5b7e6c12eaa5f6a1c1fb - pristine_git_object: f4aa28fa6fb4bd2effb97fa28569a9fba7271800 + last_write_checksum: sha1:4ec82f0c733b59d7b8de27a5d655e8edba17e88b + pristine_git_object: 2768603fd77e16d9f82da184d9e236a9e2a8fde2 src/glean/api_client/models/userrolespecification.py: id: c746dd831aa4 - last_write_checksum: sha1:26aaf275b11e92afc1cbe7c115a0cf979a9973e4 - pristine_git_object: b6902a8c240c1dbd277b6ad7d726dfd9c5aefd25 + last_write_checksum: sha1:63e66be2502d6fc53e1ef2000c81f727c7c7be93 + pristine_git_object: 485de693b31d4e66a0f97fdb883c71695deddce2 src/glean/api_client/models/userstatusresponse.py: id: 30477cf9a61f - last_write_checksum: sha1:e5681fa1f9894a2ca8b37eab2ab57233caa3b0c9 - pristine_git_object: e8fb646ff576ff3eae2c46df59899988bc979bf9 + last_write_checksum: sha1:96b0eba205dac7e1729d80f36b1ec83445f6e391 + pristine_git_object: 0ee6f353859f22c0772d82b3d187779a9bc05e88 src/glean/api_client/models/userviewinfo.py: id: d03415292af5 - last_write_checksum: sha1:9bc5a59461e0220ad3b82c7b510f476fb52f8ca6 - pristine_git_object: a81bd1ea1d07274bd46f3b5f601e105e91baed1f + last_write_checksum: sha1:48f8ae7205dbb6bf549d0ca7d0ac646c7ce92b9e + pristine_git_object: 9dfde209095574f6bdd7f8a580635fd06971ddde src/glean/api_client/models/verification.py: id: f20b858aacfe - last_write_checksum: sha1:b5a6f0075cc0ed99893b1c25f392b3c733d76432 - pristine_git_object: 4aa8837dbf80e8e486795e1377812f49b4b3d5f4 + last_write_checksum: sha1:3255ba06f7cc4851886e5849ecb08c8974b7d8ff + pristine_git_object: 014203d0d0fc8e884c28db44fb6b8aa0f4887213 src/glean/api_client/models/verificationfeed.py: id: a4d305725b8f - last_write_checksum: sha1:c5c5ccdc36871293a8a9982b62c9afac19fd93a9 - pristine_git_object: 00a88599419d459f1f870f66f35e7a59c4c8bcc0 + last_write_checksum: sha1:9113b50bf3349d304e489ce838fdd6f98d2ed8e7 + pristine_git_object: 46752ed82d3dd5a89347be26cfe8fd15c3defca1 src/glean/api_client/models/verificationmetadata.py: id: 16a575323484 - last_write_checksum: sha1:4f4957407e2f8e8fe444504a07df2385f10c943f - pristine_git_object: b53e27c228c6efef97b6e6c7aa2b9b02b34cee40 + last_write_checksum: sha1:9188962a6d01167cb9a043929edcd73117d6f7f6 + pristine_git_object: a04d6ea398204a7d84b37756759e24ffb100a5e1 src/glean/api_client/models/verifyop.py: id: 99ea97ea1819 - last_write_checksum: sha1:f8b74beda2df572d23be942d3f8fcb353ef54b83 - pristine_git_object: ba4ec0690ac82c2a0dd879efd53eea6471e136b8 + last_write_checksum: sha1:fd1ab5a3d7882ed9a2a08bb88621d918eaae7c9e + pristine_git_object: c4c3e68112f54b31a11cbb442f021fdbedc0a29c src/glean/api_client/models/verifyrequest.py: id: 7a0d65d316c5 - last_write_checksum: sha1:773210acccd0d2665a2bfa1d8aecd4829cfc9710 - pristine_git_object: acdc17d5eeaac57038aa3a2c80e62837ff2690c2 + last_write_checksum: sha1:3ecb78e68f8c63b8dd9211638062de15a91b69fa + pristine_git_object: 7c93b46f83ad101dd6862f42f7bda2e7e8e12399 src/glean/api_client/models/viewerinfo.py: id: dc44fac102b9 - last_write_checksum: sha1:3475d911e27f276f8c91025e359b38374e256ce1 - pristine_git_object: b27ade10d3eb1f02c1956f33f7da6aae34e8216d + last_write_checksum: sha1:894263c20c3dd83f12fee778e389ff8b363d91a3 + pristine_git_object: c85d80b8e9da0b2f99777352408e26947e014e7a src/glean/api_client/models/workflow.py: id: e59e0fe5f663 - last_write_checksum: sha1:21a4afe44430b007e269272463239ffca96427ac - pristine_git_object: 1cde5ddbd831c5f4d80f9c8cf0d64e9796ebb135 + last_write_checksum: sha1:53104e250d1d249a39b5f6321f80f540fdbedabf + pristine_git_object: 63f937293e0761ff8095f7855d2ab5a446ad29a8 src/glean/api_client/models/workflowfeedbackinfo.py: id: 720e747620b1 - last_write_checksum: sha1:76c2be5bfb84637f8028e7ac64d9bd942cb7f2db - pristine_git_object: 3c8abf0e46c8ab2f9aa8cf67748ba2d2e8576b06 + last_write_checksum: sha1:fea4b83ec5656ae417c8bd061e84da594170ce32 + pristine_git_object: a0d06dbc26ecfd2d925cbbd9cc428cc857ab2c1a src/glean/api_client/models/workflowresult.py: id: 9e8c0e8e72ce last_write_checksum: sha1:2fc30549bf6d27cec977b7ec878b0dfca15f21b0 pristine_git_object: b3e81a84fad5595cccb410baafe741420914243c src/glean/api_client/models/writeactionparameter.py: id: 3a7daceaf3fc - last_write_checksum: sha1:14b9e94734e9f25e5f006f575e1c47f3a966165c - pristine_git_object: cd9682d9f9474e24b050e26503a4d9ef8ff77907 + last_write_checksum: sha1:3df741b5e9c69a1889b8135b1c7baaf7a2131ca6 + pristine_git_object: 65b3d94cc5cf6a65bc909386d5c5ffaea6e3092a src/glean/api_client/models/writepermission.py: id: e15ed09cb123 - last_write_checksum: sha1:cebd5dc2e98d93b6ecae3bc236d0dcc748b92f25 - pristine_git_object: 4a9c4635d3ed78a5b63c770dfbcb16373789a90e + last_write_checksum: sha1:fe32a275a30e01eeb69c059cbdbbb9d7318c71ad + pristine_git_object: 85e816dc7cea2c95b4e067d756e428be2696d0a4 src/glean/api_client/people.py: id: e32c03723ded - last_write_checksum: sha1:02560fa5e7b4358ec6c3677c27e7ee575f241d7f - pristine_git_object: 984073db79503d8bde3a58f8cddc54ddfc2ee331 + last_write_checksum: sha1:1fa96c3a881b57c81745946eac38a67bf50359ab + pristine_git_object: 0c13dd320022cb3f133f0e74405070bd8afdf3fc src/glean/api_client/pins.py: id: 4a37ead65f8a last_write_checksum: sha1:9c72f34fc747fd9753beb6dcb967366d8c1c9181 @@ -4927,8 +4991,8 @@ trackedFiles: pristine_git_object: fc7fbb02488d301c6bdfcfe1430d61e35efd4e6f src/glean/api_client/sdk.py: id: e2de37b3ce92 - last_write_checksum: sha1:87a22ee048fef8c5ac40fd39aae8027b032849a2 - pristine_git_object: a0a9f4fe7d0fa93eed408014189bb36e537da847 + last_write_checksum: sha1:1163580d802a75e67fb9d7111f48cab2e2aa07d5 + pristine_git_object: 45ece9f998e7dddb67d9f6095097fdaad576234d src/glean/api_client/sdkconfiguration.py: id: f356ce00b5b7 last_write_checksum: sha1:1ae43e08ae57ae277b3ab5e66b52d020149ebe00 @@ -5042,9 +5106,9 @@ trackedFiles: tests/mockserver/README.md: last_write_checksum: sha1:aa2bb9124570a1c12a3c81d728100c305a59220c tests/mockserver/go.mod: - last_write_checksum: sha1:44fa2062991ca9acb37a7ade5fb75d0b7731154a + last_write_checksum: sha1:c2b6f5a81e03003990983f5befd1da3f1a0396b6 tests/mockserver/go.sum: - last_write_checksum: sha1:d487c9e78318f86734588c530c3dfd01d02dd044 + last_write_checksum: sha1:cdeb52f5f4c63d07ba612730867a95b0ddb14b2d tests/mockserver/internal/handler/assert/contenttype.go: last_write_checksum: sha1:2d059a68e53e70b269ddf897f8c6017f94434e18 tests/mockserver/internal/handler/assert/header.go: @@ -5060,11 +5124,13 @@ trackedFiles: tests/mockserver/internal/handler/generated_handler.go: last_write_checksum: sha1:32101ddff940c59f43a805af303cf645a2bcca0d tests/mockserver/internal/handler/generated_handlers.go: - last_write_checksum: sha1:2aaafbb3aade11b06561dc8efe935abbe714195d + last_write_checksum: sha1:19821864a3ed96150e35949d5d12e9220cfb6ff6 tests/mockserver/internal/handler/pathgetrestapiv1agentsagentid.go: last_write_checksum: sha1:5210b43a5c1c7157ff57f7140449d82dc622931f tests/mockserver/internal/handler/pathgetrestapiv1agentsagentidschemas.go: last_write_checksum: sha1:a70fc628d284a0c11701c7d69a5d22dfdf118706 + tests/mockserver/internal/handler/pathgetrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go: + last_write_checksum: sha1:be1ef6d303273236aa6b9797453a04bb778cdd62 tests/mockserver/internal/handler/pathgetrestapiv1governancedatafindingsexports.go: last_write_checksum: sha1:06b13f04c06621c32cd5d4664612a3804ffc49c2 tests/mockserver/internal/handler/pathgetrestapiv1governancedatapolicies.go: @@ -5073,6 +5139,8 @@ trackedFiles: last_write_checksum: sha1:08b8057f91f2a800304987937336f033580406df tests/mockserver/internal/handler/pathgetrestapiv1toolslist.go: last_write_checksum: sha1:8b0d26cd221009e78396ed0c573e78c0ac719e36 + tests/mockserver/internal/handler/pathpatchrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go: + last_write_checksum: sha1:14d3e93a3f37b61145188a9e6544398fcfc200e4 tests/mockserver/internal/handler/pathpostapiindexv1adddatasource.go: last_write_checksum: sha1:f1c92a8b8e4db16ee9334d7e28f8abec8c52d50e tests/mockserver/internal/handler/pathpostapiindexv1betausers.go: @@ -5126,11 +5194,11 @@ trackedFiles: tests/mockserver/internal/handler/pathpostrestapiv1activity.go: last_write_checksum: sha1:740b590218da942539e85a585bec78c0777ae934 tests/mockserver/internal/handler/pathpostrestapiv1addcollectionitems.go: - last_write_checksum: sha1:a1e78caa1e86ea292ff66e059c407fb0f276b337 + last_write_checksum: sha1:bd9aa6512282c2641b398d1166dc17d7dc3576ab tests/mockserver/internal/handler/pathpostrestapiv1addverificationreminder.go: - last_write_checksum: sha1:c84407a2fea61f697db312567614db6b63718d19 + last_write_checksum: sha1:2a7596e25accc1641c76ae54ab8cfa440d7418ab tests/mockserver/internal/handler/pathpostrestapiv1adminsearch.go: - last_write_checksum: sha1:eca93b5859c110232d3d2235976ea5d4681fc2e1 + last_write_checksum: sha1:8ef1b12ee725ee32fb6a0a1e0e812594df97e06f tests/mockserver/internal/handler/pathpostrestapiv1autocomplete.go: last_write_checksum: sha1:094d64ddc73a91d38e64e3be18690ebb9d4ef3d3 tests/mockserver/internal/handler/pathpostrestapiv1chat.go: @@ -5138,13 +5206,13 @@ trackedFiles: tests/mockserver/internal/handler/pathpostrestapiv1checkdatasourceauth.go: last_write_checksum: sha1:bfd126dda7eb1a68c0edd1403c89770a4907aec9 tests/mockserver/internal/handler/pathpostrestapiv1createannouncement.go: - last_write_checksum: sha1:fe9097d90fc9db0248506b6d1d27a5551dda73c4 + last_write_checksum: sha1:0b93fd5d83fbe115c126538e632ea7a1710d8c9b tests/mockserver/internal/handler/pathpostrestapiv1createanswer.go: - last_write_checksum: sha1:6a6b05425a6494a71f8a08d279543f65823900c6 + last_write_checksum: sha1:34a049bd08ca459694f08c0aef6c69105e48fdd0 tests/mockserver/internal/handler/pathpostrestapiv1createauthtoken.go: last_write_checksum: sha1:6ce83ba03066acb436796c018d19715615f548c1 tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go: - last_write_checksum: sha1:f9f4c718408bddadbdf826194f07970bb111e57e + last_write_checksum: sha1:14b4a1d98dd55ce2b487ae1aaab4a7dece08df25 tests/mockserver/internal/handler/pathpostrestapiv1createshortcut.go: last_write_checksum: sha1:dcdf684a85e20db1aee571db9a54a3ee259d71d5 tests/mockserver/internal/handler/pathpostrestapiv1deleteallchats.go: @@ -5160,67 +5228,67 @@ trackedFiles: tests/mockserver/internal/handler/pathpostrestapiv1deletecollection.go: last_write_checksum: sha1:9c5945878376ea9aa9a5131b1b84a3fbb767fbd8 tests/mockserver/internal/handler/pathpostrestapiv1deletecollectionitem.go: - last_write_checksum: sha1:79f243475eebf77737d10bbc989f245b2ff3309a + last_write_checksum: sha1:251679b6e156fcc46098b00632d785b836b4e9ed tests/mockserver/internal/handler/pathpostrestapiv1deleteshortcut.go: last_write_checksum: sha1:7a7a40095e3b2fd22ecc7652e63ce0e298543f96 tests/mockserver/internal/handler/pathpostrestapiv1editanswer.go: - last_write_checksum: sha1:016651547e2d9c780c1d75c9593bedba2600046e + last_write_checksum: sha1:a900ffe60028d458e86eee644a23eac954fea183 tests/mockserver/internal/handler/pathpostrestapiv1editcollection.go: last_write_checksum: sha1:c1fde968092c33335e16fe7358978e581301163e tests/mockserver/internal/handler/pathpostrestapiv1editcollectionitem.go: - last_write_checksum: sha1:cd1260ecb88413845c61b637050fe97f56c51487 + last_write_checksum: sha1:bccda39ad0b6d11e247c2723b67cbf40fe3f4d7e tests/mockserver/internal/handler/pathpostrestapiv1editpin.go: - last_write_checksum: sha1:0b1a1c2907efbe01f3c32bbc893f6217be0f2f5e + last_write_checksum: sha1:331563c80356e895a84ab898df7c359da3c70b45 tests/mockserver/internal/handler/pathpostrestapiv1feed.go: last_write_checksum: sha1:c102414f84ee6adb3c314425a2c6d051c4501b2e tests/mockserver/internal/handler/pathpostrestapiv1feedback.go: last_write_checksum: sha1:2ba56c655e63e01a5c46fbd7beb087077a6deaea tests/mockserver/internal/handler/pathpostrestapiv1getanswer.go: - last_write_checksum: sha1:3bec6f7cd190f9394bebac2407f9d7f1e606e479 + last_write_checksum: sha1:80bc08894cebfd78f82d3d80f93fd85a11b55d45 tests/mockserver/internal/handler/pathpostrestapiv1getchat.go: - last_write_checksum: sha1:089475adb3686c656bd0eb52940285a7e037ab83 + last_write_checksum: sha1:b48e2313407814ee4f8ed181b8e5299a84960c44 tests/mockserver/internal/handler/pathpostrestapiv1getchatapplication.go: last_write_checksum: sha1:7b81898137fdb3a89b4dcfa318b9b5b92e8860c0 tests/mockserver/internal/handler/pathpostrestapiv1getchatfiles.go: last_write_checksum: sha1:3ce17b01cd64de13a1b737a3326c320ad3603b1a tests/mockserver/internal/handler/pathpostrestapiv1getcollection.go: - last_write_checksum: sha1:0554ff04a21f99f7e86320236d761715fc4d1e52 + last_write_checksum: sha1:da0e722fbe604ac4d80e9796901ef5783c793911 tests/mockserver/internal/handler/pathpostrestapiv1getdocpermissions.go: last_write_checksum: sha1:b2d67531e58089109953dc3ed416bd6b4e7a8373 tests/mockserver/internal/handler/pathpostrestapiv1getdocuments.go: last_write_checksum: sha1:7225fe43412ee32fe701c5fa9ed76440f693d649 tests/mockserver/internal/handler/pathpostrestapiv1getdocumentsbyfacets.go: - last_write_checksum: sha1:158e213985342eebc839b90b0d7f779c6bb3d147 + last_write_checksum: sha1:eeeef0766d261c473bfa892639abdade30da9dfa tests/mockserver/internal/handler/pathpostrestapiv1getpin.go: - last_write_checksum: sha1:e01833096990defa11712dc6654cea7e9ab2f417 + last_write_checksum: sha1:4d9561275f57cf77b9f52b99bc21b1d27712a38c tests/mockserver/internal/handler/pathpostrestapiv1getshortcut.go: last_write_checksum: sha1:327c7d7c4e53607f8912156c8997b1713d7590d2 tests/mockserver/internal/handler/pathpostrestapiv1insights.go: last_write_checksum: sha1:4648f4b752507c33020b12f301dd5a48aa95e839 tests/mockserver/internal/handler/pathpostrestapiv1listanswers.go: - last_write_checksum: sha1:e77c9140ef08683b112e16a0cb45370c1f912564 + last_write_checksum: sha1:b31b0eb64b63a103d3bf4b682bd865a185698054 tests/mockserver/internal/handler/pathpostrestapiv1listchats.go: - last_write_checksum: sha1:422bc0247c489677f9c84114dcd7116852fef1e6 + last_write_checksum: sha1:b6ffb2a9c5fc46d1737657cefc57b8a4804ee92d tests/mockserver/internal/handler/pathpostrestapiv1listcollections.go: - last_write_checksum: sha1:65e94db468d4c523ed9beab0c3a6e022849e64b0 + last_write_checksum: sha1:501f7d4bd03e2c28aa7a7d12a78ff6eec0efcc24 tests/mockserver/internal/handler/pathpostrestapiv1listentities.go: - last_write_checksum: sha1:e8d8ffeab6c0ebb370de40c852f4af059610da69 + last_write_checksum: sha1:950062481cce0b74dd0d936947eba20fd7168ace tests/mockserver/internal/handler/pathpostrestapiv1listpins.go: - last_write_checksum: sha1:c5b8661376acf14fb45c94786a73407e3ccfce7a + last_write_checksum: sha1:647bbd8e35c0b3ec4b2aae304c6eb1fd2a6aa7ea tests/mockserver/internal/handler/pathpostrestapiv1listshortcuts.go: last_write_checksum: sha1:23ba4c891bdf622f8520cfcb2982eb8033051c4f tests/mockserver/internal/handler/pathpostrestapiv1listverifications.go: - last_write_checksum: sha1:7b99f010057f6b98a1221d36c4eb56c1db2b0024 + last_write_checksum: sha1:572e81aac862f264f9c369e33e439493e3a9a9f1 tests/mockserver/internal/handler/pathpostrestapiv1messages.go: - last_write_checksum: sha1:410a1891eccae89371ea0a5ad56e1a8e929d08c4 + last_write_checksum: sha1:9d687b6f21535528f0a4157fa4900a14d8cd84d7 tests/mockserver/internal/handler/pathpostrestapiv1people.go: - last_write_checksum: sha1:7a2c7c4195547c84ad45b183e8f3ad0992d531fc + last_write_checksum: sha1:e5404d64a70fa90dee7adde105d617b6f6ffc15b tests/mockserver/internal/handler/pathpostrestapiv1pin.go: - last_write_checksum: sha1:db295f34ab138d1140b72af4a2351823405d5dc1 + last_write_checksum: sha1:478cbba00e1b9fdce1c7293f77ae45c61fe6afab tests/mockserver/internal/handler/pathpostrestapiv1recommendations.go: - last_write_checksum: sha1:1fd737e7116aee5777f6805e5687923531d171b0 + last_write_checksum: sha1:86179e1f769213b4d293746b68dea637e9bf50e2 tests/mockserver/internal/handler/pathpostrestapiv1search.go: - last_write_checksum: sha1:936fe2abfb7a02c61f1fd7fc399938da801cc744 + last_write_checksum: sha1:a71a7f68fe9c25edd70364a49d4631f60999af67 tests/mockserver/internal/handler/pathpostrestapiv1summarize.go: last_write_checksum: sha1:eafbc420f54c1395f41af4735d74af6105c8d50d tests/mockserver/internal/handler/pathpostrestapiv1toolscall.go: @@ -5228,11 +5296,11 @@ trackedFiles: tests/mockserver/internal/handler/pathpostrestapiv1unpin.go: last_write_checksum: sha1:4ad6d409b1f7c8e66b8e3ec423016f5bc7e94605 tests/mockserver/internal/handler/pathpostrestapiv1updateannouncement.go: - last_write_checksum: sha1:42784b2ebcaca0fd7f555940c78bfcba20622237 + last_write_checksum: sha1:3758a38536ab57e88e20157a7d92d9c88575ce66 tests/mockserver/internal/handler/pathpostrestapiv1updateshortcut.go: last_write_checksum: sha1:a77e29c3d560d8c77687dea16a48c82d18d16746 tests/mockserver/internal/handler/pathpostrestapiv1verify.go: - last_write_checksum: sha1:d0c25ff992ff9b089ec906c3f8c0a38b1fade91c + last_write_checksum: sha1:81e23075ee7fa39fa4c5feaf617483fe4b366b1c tests/mockserver/internal/handler/values/files.go: last_write_checksum: sha1:e1e9d78c165e2a35d165f120bd8dcd7b42c33a33 tests/mockserver/internal/logging/doc.go: @@ -5252,7 +5320,7 @@ trackedFiles: tests/mockserver/internal/logging/oas_operation_call.go: last_write_checksum: sha1:1ec2244b5fc171dfe7e4e339420b2b17f0df48c9 tests/mockserver/internal/sdk/models/components/actionsummary.go: - last_write_checksum: sha1:26174d625f915fc8a07febb491ccce4dd6d1cbbd + last_write_checksum: sha1:32cfaf32c20b96fe223b11c6150435d39c9be8da tests/mockserver/internal/sdk/models/components/activity.go: last_write_checksum: sha1:62ed2988de11a8af0b36342f9e557621d32cb6d4 tests/mockserver/internal/sdk/models/components/activityevent.go: @@ -5310,7 +5378,7 @@ trackedFiles: tests/mockserver/internal/sdk/models/components/assistantinsightsresponse.go: last_write_checksum: sha1:1646bc05ef8352596a60c567dd6c437008d79e31 tests/mockserver/internal/sdk/models/components/authconfig.go: - last_write_checksum: sha1:8578900fdd9b3a60beb101207991b697b701169a + last_write_checksum: sha1:93a6fcb3623220dc1540f3f09780edf67be51add tests/mockserver/internal/sdk/models/components/authstatus.go: last_write_checksum: sha1:ca2727d0dcddf2ee072f3b26529d2952d7e72a21 tests/mockserver/internal/sdk/models/components/authtoken.go: @@ -5318,7 +5386,7 @@ trackedFiles: tests/mockserver/internal/sdk/models/components/autocompleterequest.go: last_write_checksum: sha1:1afcc6580c049f904d96944dcbf6f96dc9ba0b5a tests/mockserver/internal/sdk/models/components/autocompleteresponse.go: - last_write_checksum: sha1:cb095d71f723f218f37e5846e06708f2c62831c2 + last_write_checksum: sha1:ac7d26f25b2828f520494f4fbe7cd7c2beb9f44a tests/mockserver/internal/sdk/models/components/autocompleteresult.go: last_write_checksum: sha1:8438ff71f398ed3de8208f2f2c8b2d63819c83f2 tests/mockserver/internal/sdk/models/components/autocompleteresultgroup.go: @@ -5374,7 +5442,7 @@ trackedFiles: tests/mockserver/internal/sdk/models/components/chatrequest.go: last_write_checksum: sha1:7d090933c080d356c3716f23a13b2b92cdc93ee9 tests/mockserver/internal/sdk/models/components/chatresponse.go: - last_write_checksum: sha1:9ac97b99d0307f7027ccde644388b29c463de31b + last_write_checksum: sha1:4c8a0d78656e7d6d5f68b5c13734c4c8de76a815 tests/mockserver/internal/sdk/models/components/chatrestrictionfilters.go: last_write_checksum: sha1:528172b6e5a087f2f516ee7e192a7772bc1ee373 tests/mockserver/internal/sdk/models/components/chatresult.go: @@ -5423,6 +5491,8 @@ trackedFiles: last_write_checksum: sha1:26417a78d66849ecd21f05bf40899c5db373f39b tests/mockserver/internal/sdk/models/components/conferencedata.go: last_write_checksum: sha1:64eabce460dc274803c7fb0b7bb45cc9d58d8463 + tests/mockserver/internal/sdk/models/components/configurationvalue.go: + last_write_checksum: sha1:ddbf742f0df37badaee68310779ed24a2895bc72 tests/mockserver/internal/sdk/models/components/connectortype.go: last_write_checksum: sha1:0e2f6006ffa974b582362f1d259dd55fdb02a00e tests/mockserver/internal/sdk/models/components/contentdefinition.go: @@ -5481,8 +5551,12 @@ trackedFiles: last_write_checksum: sha1:f30c464c189f3ca3bd09a64e0949add64287ed40 tests/mockserver/internal/sdk/models/components/datasourcebulkmembershipdefinition.go: last_write_checksum: sha1:7461564626030cdc092d351d101243469e0cf16a + tests/mockserver/internal/sdk/models/components/datasourceconfigurationresponse.go: + last_write_checksum: sha1:0e571c4aab6d7ed0f03e2d834369353cdf4b82d3 tests/mockserver/internal/sdk/models/components/datasourcegroupdefinition.go: last_write_checksum: sha1:7901f25f2a1b52801631df10246ed50357d37837 + tests/mockserver/internal/sdk/models/components/datasourceinstanceconfiguration.go: + last_write_checksum: sha1:f4022b1e8bf17fcaeaaf52f4cdcf1763749389c3 tests/mockserver/internal/sdk/models/components/datasourcemembershipdefinition.go: last_write_checksum: sha1:b2671c4d71318bb6c61f5c7a8b374ef7a5c3f544 tests/mockserver/internal/sdk/models/components/datasourceobjecttypedocumentcountentry.go: @@ -5734,7 +5808,7 @@ trackedFiles: tests/mockserver/internal/sdk/models/components/gleanassistinsightsresponse.go: last_write_checksum: sha1:5b8a4fdefd05ed9e53cbee94c32b0a428175ad22 tests/mockserver/internal/sdk/models/components/gleandataerror.go: - last_write_checksum: sha1:574707e36ef6fbd82f22e354f1771cde58491703 + last_write_checksum: sha1:fa6d4a5917a90f72a97628ba20e31dd31b02af0c tests/mockserver/internal/sdk/models/components/grantpermission.go: last_write_checksum: sha1:83d69c5a502306994095bc1a515d6c52798fa696 tests/mockserver/internal/sdk/models/components/greenlistusersrequest.go: @@ -5788,7 +5862,7 @@ trackedFiles: tests/mockserver/internal/sdk/models/components/invalidoperatorvalueerror.go: last_write_checksum: sha1:6e8e407afa9e6caf4bc946a51054037a0b64100f tests/mockserver/internal/sdk/models/components/inviteinfo.go: - last_write_checksum: sha1:61032a89375395328097e99d31bf547ae52f5870 + last_write_checksum: sha1:a34f4007a255687f057ad9d07c76096ffc122a99 tests/mockserver/internal/sdk/models/components/labeledcountinfo.go: last_write_checksum: sha1:93763fcdc7d3a1e7b6ffc5cfc2e77fe7270e736d tests/mockserver/internal/sdk/models/components/listanswersrequest.go: @@ -5796,7 +5870,7 @@ trackedFiles: tests/mockserver/internal/sdk/models/components/listanswersresponse.go: last_write_checksum: sha1:e2ad7ae1bcf8e0d09fdff647ae2831019c8b23e5 tests/mockserver/internal/sdk/models/components/listchatsresponse.go: - last_write_checksum: sha1:5ddbcdb15822645a1187dc548c18ec852c849800 + last_write_checksum: sha1:97dd22a5070cf9f35b9aab05f606db34182e65e3 tests/mockserver/internal/sdk/models/components/listcollectionsrequest.go: last_write_checksum: sha1:e78e428237fc334a732d4a44e524e28a1e31e5c1 tests/mockserver/internal/sdk/models/components/listcollectionsresponse.go: @@ -5918,7 +5992,7 @@ trackedFiles: tests/mockserver/internal/sdk/models/components/resultsdescription.go: last_write_checksum: sha1:222d4cd162257aa1fa51a4618c5fe5878f620e51 tests/mockserver/internal/sdk/models/components/resultsresponse.go: - last_write_checksum: sha1:0f0c1e24f84e466afbe162723e77c992ea86234a + last_write_checksum: sha1:11f1bf56e8b41e71b3b458d39f4a18b9ad7ae0e3 tests/mockserver/internal/sdk/models/components/resulttab.go: last_write_checksum: sha1:0c61e42fad9332219ca1e3642fb386c3cf9228ad tests/mockserver/internal/sdk/models/components/rotatetokenresponse.go: @@ -5938,7 +6012,7 @@ trackedFiles: tests/mockserver/internal/sdk/models/components/searchrequestoptions.go: last_write_checksum: sha1:17ee2976b192f2b65f9b431afb0e9056aae72278 tests/mockserver/internal/sdk/models/components/searchresponse.go: - last_write_checksum: sha1:f5525fc2fce0c9527511393ea5f25dd9ef017535 + last_write_checksum: sha1:eb63c5279cb78ba8d445ec077a50a898af7f3cc4 tests/mockserver/internal/sdk/models/components/searchresponsemetadata.go: last_write_checksum: sha1:5ba373bccf0e7b975614650485d334c3099aa38a tests/mockserver/internal/sdk/models/components/searchresult.go: @@ -5946,7 +6020,7 @@ trackedFiles: tests/mockserver/internal/sdk/models/components/searchresultprominenceenum.go: last_write_checksum: sha1:81270b9cc68f366ac10358642bea75aa1cd1bc62 tests/mockserver/internal/sdk/models/components/searchresultsnippet.go: - last_write_checksum: sha1:a97091130611ac2fcc8fcd06300d4f6d4f8bbaa4 + last_write_checksum: sha1:18cded48b53d0255192b20827ef35c4c4592de45 tests/mockserver/internal/sdk/models/components/searchwarning.go: last_write_checksum: sha1:66f8096972e691ecc07f13500d0dd65ec9a753ee tests/mockserver/internal/sdk/models/components/sectiontype.go: @@ -6047,6 +6121,8 @@ trackedFiles: last_write_checksum: sha1:6bd1f6c9f451492810949a589b7cf0e07ede176d tests/mockserver/internal/sdk/models/components/updateannouncementrequest.go: last_write_checksum: sha1:8b10184d480e07a4631098d08ef3c16bfbdfcc33 + tests/mockserver/internal/sdk/models/components/updatedatasourceconfigurationrequest.go: + last_write_checksum: sha1:5710dfb763b96275a55fe0e6b16269cded3f9b9d tests/mockserver/internal/sdk/models/components/updatedlpconfigrequest.go: last_write_checksum: sha1:0612a19ee35705f71346a5d3b6ec4eaec4d9f029 tests/mockserver/internal/sdk/models/components/updatedlpconfigresponse.go: @@ -6199,6 +6275,8 @@ trackedFiles: last_write_checksum: sha1:b9331fcb429d8bb22487234f7fa3627ee91b21f9 tests/mockserver/internal/sdk/models/operations/getcollection.go: last_write_checksum: sha1:758de3276a51cb9ef5e2bc09d8e689a95ff4fc53 + tests/mockserver/internal/sdk/models/operations/getdatasourceinstanceconfiguration.go: + last_write_checksum: sha1:1570d25442383d4a4d95f8e55ffc0f6c426f683e tests/mockserver/internal/sdk/models/operations/getdocpermissions.go: last_write_checksum: sha1:dfd7bfff0ab9672ecfed72ca75845eeb6e1572b3 tests/mockserver/internal/sdk/models/operations/getdocuments.go: @@ -6333,6 +6411,8 @@ trackedFiles: last_write_checksum: sha1:ebc6723ce70f20e4847d322b1f63ab297b7b4d39 tests/mockserver/internal/sdk/models/operations/updateannouncement.go: last_write_checksum: sha1:219c6a8e147028e49185ebfe1488b8efe1e5f4a3 + tests/mockserver/internal/sdk/models/operations/updatedatasourceinstanceconfiguration.go: + last_write_checksum: sha1:9138b5126887e93c98c8c5d936909af27faa6236 tests/mockserver/internal/sdk/models/operations/updatepolicy.go: last_write_checksum: sha1:555e1077b891a4d7a21f275bcffe983b7fff9120 tests/mockserver/internal/sdk/models/operations/updateshortcut.go: @@ -6343,8 +6423,14 @@ trackedFiles: last_write_checksum: sha1:f20f8fd1bbf3169e0e4516595d7971e5cae03951 tests/mockserver/internal/sdk/models/sdkerrors/collectionerror.go: last_write_checksum: sha1:a8ce08145cf00a84487714f875ba1d3a8d84be1d + tests/mockserver/internal/sdk/models/sdkerrors/errorresponse.go: + last_write_checksum: sha1:eecdd5dcfa17d3c57965b06f8d75065b5ccf243b tests/mockserver/internal/sdk/models/sdkerrors/gleandataerror.go: - last_write_checksum: sha1:5f4302649777ef141443c9a78f4f2fe8e9a5fbc0 + last_write_checksum: sha1:ee697c8e2807f2b86c3de73bcbc013bbaf4ee2e9 + tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go: + last_write_checksum: sha1:aa5ff815f31a3657487ad5e0c3f023f573b1fcab + tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go: + last_write_checksum: sha1:c0ca755fb35acd8f838567e22c2b5722592fe1c3 tests/mockserver/internal/sdk/types/bigint.go: last_write_checksum: sha1:49b004005d0461fb04b846eca062b070b0360b31 tests/mockserver/internal/sdk/types/date.go: @@ -6358,9 +6444,9 @@ trackedFiles: tests/mockserver/internal/sdk/types/pointers.go: last_write_checksum: sha1:fc2275ea006257ba9ba4ff6f2a2cdb6205371eef tests/mockserver/internal/sdk/utils/json.go: - last_write_checksum: sha1:6c771a2a3442f04ef7f925fc37b3e16655cd6ab4 + last_write_checksum: sha1:666cce74bfada4e972d46fd841551d1494aed43a tests/mockserver/internal/sdk/utils/reflect.go: - last_write_checksum: sha1:2e555f970ae33dd41130199d1b87c9864b485fdf + last_write_checksum: sha1:1e3a0ca0387685b6b21c0a6a75650b8611c76ee3 tests/mockserver/internal/sdk/utils/sort.go: last_write_checksum: sha1:a9d390de086ad13841c7d154e97d314e6ae2d285 tests/mockserver/internal/server/doc.go: @@ -6445,8 +6531,8 @@ trackedFiles: pristine_git_object: 4e7e05cd255ebd497afde50b97fcfa63e4367e2a tests/test_datasources.py: id: 0a9c5268286f - last_write_checksum: sha1:a762f2d7867ba2516772bc38f230660fd4f4c847 - pristine_git_object: 8aaeb530d87bce0eeaf8c1ee7b55d04b4871bde6 + last_write_checksum: sha1:9e67336fc25773bafd6fcf48aeadc3353b2e8344 + pristine_git_object: 68d59bc6412f5a078b332b11f73ecc5db38e5a7a tests/test_displayablelists.py: id: aa656a7efeb2 last_write_checksum: sha1:ad6e518e489b98d4f21c7e0ebab2f085f49be421 @@ -6477,8 +6563,8 @@ trackedFiles: pristine_git_object: 6cc8aeec3c52329d389081db0a27f10f53f214b9 tests/test_messages.py: id: be23089b1f8b - last_write_checksum: sha1:bef200db8e7fff0aa33ef17846f5054a2d035a88 - pristine_git_object: 36643db35a2d2a3cf9d327379ee7a6cb30da51d0 + last_write_checksum: sha1:a91c985cd1d11560059dc448b10e0c7b75ed60e5 + pristine_git_object: dfdc18641f0d6c38d84b4603ad2da71f75f2e13c tests/test_people.py: id: 37c243940039 last_write_checksum: sha1:7c7268ffeebe48d81ed25e9b1cfc3a395abf5c1f @@ -6501,8 +6587,8 @@ trackedFiles: pristine_git_object: df2944ebda36db652b2770dd1c23be83df90fc99 tests/test_summarize.py: id: a255d8a6f627 - last_write_checksum: sha1:6383d6969c6f1bf1832e5ace511e5c2ffaa6d86f - pristine_git_object: cac8e9788f25fda1ff78bd2e3e36917319145e82 + last_write_checksum: sha1:e95637837558aebd7cce24df0457f7825fba3592 + pristine_git_object: 5200573817a710a1fab52e90d50f180aa1850b62 tests/test_tools.py: id: 70889bdf7321 last_write_checksum: sha1:3c0c220f8975b050c322f6475e95f7af4e65b995 @@ -6591,7 +6677,7 @@ examples: application/json: {"messages": [{"author": "USER", "fragments": [{"text": "Who was the first person to land on the moon?"}], "messageType": "CONTENT"}], "agentConfig": {"agent": "GPT"}} responses: "200": - application/json: {"messages": [{"author": "USER", "citations": [{"sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "sourceFile": {"id": "FILE_1234", "url": "www.google.com", "name": "sample.pdf"}, "sourcePerson": {"name": "George Clooney", "obfuscatedId": "abc123"}, "referenceRanges": [{"textRange": {"startIndex": 831084, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}]}], "fragments": [{"structuredResults": [{"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [{}], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}]}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VERIFIER"}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "structuredList": [{"link": "https://en.wikipedia.org/wiki/Diffuse_sky_radiation", "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "text": "Because its wavelengths are shorter, blue light is more strongly scattered than the longer-wavelength lights, red or green. Hence the result that when looking at the sky away from the direct incident sunlight, the human eye perceives the sky to be blue.", "structuredResult": {"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [{}], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}]}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light."}, "likes": {"likedBy": [], "likedByUser": false, "numLikes": 204638}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "UNVERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 175584}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 100341}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "or into as", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 547453, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 741089, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "collection": {"name": "", "description": "inside acknowledge painfully", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 902618, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "inwardly quietly clinch whether murky before ew diver that knottily", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 719075, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "COLLECTION"}]}], "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"title": "title", "url": "https://example.com/foo/bar", "nativeAppUrl": "slack://foo/bar", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}], "mustIncludeSuggestions": {"suggestions": [{"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}], "person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "inside acknowledge painfully", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 902618, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "inwardly quietly clinch whether murky before ew diver that knottily", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 719075, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "relatedDocuments": [{"querySuggestion": {"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}, "results": [{"title": "title", "url": "https://example.com/foo/bar", "nativeAppUrl": "slack://foo/bar", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}], "mustIncludeSuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}]}], "relatedQuestion": {"ranges": [{"startIndex": 629124, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}}]}, "likes": {"likedBy": [], "likedByUser": false, "numLikes": 204638}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "UNVERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 175584}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 100341}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"title": "title", "url": "https://example.com/foo/bar", "nativeAppUrl": "slack://foo/bar", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}], "mustIncludeSuggestions": {"suggestions": [{"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}], "person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "inside acknowledge painfully", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 902618, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "inwardly quietly clinch whether murky before ew diver that knottily", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 719075, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "relatedQuestion": {"ranges": [{"startIndex": 629124, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}], "querySuggestion": {"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}, "file": {"id": "FILE_1234", "url": "www.google.com", "name": "sample.pdf"}, "action": {"metadata": {"type": "RETRIEVAL", "name": "", "displayName": "Cecil20", "displayDescription": "", "objectName": "[\"HR ticket\",\"Email\",\"Chat message\"]"}}}], "messageType": "CONTENT"}], "backendTimeMillis": 1100, "unauthorizedDatasourceInstances": [{"datasourceInstance": "slack_0", "displayName": "Slack"}]} + application/json: {"messages": [{"author": "USER", "citations": [{"sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "sourceFile": {"id": "FILE_1234", "url": "www.google.com", "name": "sample.pdf"}, "sourcePerson": {"name": "George Clooney", "obfuscatedId": "abc123"}, "referenceRanges": [{"textRange": {"startIndex": 831084, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}]}], "fragments": [{"structuredResults": [{"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [{}], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}]}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VERIFIER"}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "structuredList": [{"link": "https://en.wikipedia.org/wiki/Diffuse_sky_radiation", "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "text": "Because its wavelengths are shorter, blue light is more strongly scattered than the longer-wavelength lights, red or green. Hence the result that when looking at the sky away from the direct incident sunlight, the human eye perceives the sky to be blue.", "structuredResult": {"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [{}], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}]}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light."}, "likes": {"likedBy": [], "likedByUser": false, "numLikes": 204638}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "UNVERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 175584}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 100341}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "or into as", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 547453, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 741089, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "collection": {"name": "", "description": "inside acknowledge painfully", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 902618, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "inwardly quietly clinch whether murky before ew diver that knottily", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 719075, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "COLLECTION"}]}], "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"title": "title", "url": "https://example.com/foo/bar", "nativeAppUrl": "slack://foo/bar", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}], "mustIncludeSuggestions": {"suggestions": [{"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}], "person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "inside acknowledge painfully", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 902618, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "inwardly quietly clinch whether murky before ew diver that knottily", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 719075, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "relatedDocuments": [{"querySuggestion": {"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}, "results": [{"title": "title", "url": "https://example.com/foo/bar", "nativeAppUrl": "slack://foo/bar", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}], "mustIncludeSuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}]}], "relatedQuestion": {"ranges": [{"startIndex": 629124, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}}]}, "likes": {"likedBy": [], "likedByUser": false, "numLikes": 204638}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "UNVERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 175584}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 100341}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"title": "title", "url": "https://example.com/foo/bar", "nativeAppUrl": "slack://foo/bar", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}], "mustIncludeSuggestions": {"suggestions": [{"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}], "person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "inside acknowledge painfully", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 902618, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "inwardly quietly clinch whether murky before ew diver that knottily", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 719075, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "relatedQuestion": {"ranges": [{"startIndex": 629124, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}], "querySuggestion": {"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}, "file": {"id": "FILE_1234", "url": "www.google.com", "name": "sample.pdf"}, "action": {"metadata": {"type": "RETRIEVAL", "name": "", "displayName": "Cecil20", "displayDescription": "", "objectName": "[\"HR ticket\",\"Email\",\"Chat message\"]"}}}], "messageType": "CONTENT"}], "backendTimeMillis": 1100} streamingExample: requestBody: application/json: {"messages": [], "timeoutMillis": 30000} @@ -6691,6 +6777,8 @@ examples: responses: "200": application/json: {"agent_id": "mho4lwzylcozgoc2", "name": "HR Policy Agent", "description": "This agent answers questions about the current company HR policies.", "capabilities": {}} + "404": + application/json: {} getAgentSchemas: speakeasy-default-get-agent-schemas: parameters: @@ -6699,6 +6787,8 @@ examples: responses: "200": application/json: {"agent_id": "mho4lwzylcozgoc2", "input_schema": {}, "output_schema": {}} + "404": + application/json: {} searchAgents: speakeasy-default-search-agents: requestBody: @@ -6706,6 +6796,8 @@ examples: responses: "200": application/json: {"agents": [{"agent_id": "mho4lwzylcozgoc2", "name": "HR Policy Agent", "description": "This agent answers questions about the current company HR policies.", "capabilities": {}}]} + "404": + application/json: {} createAndStreamRun: speakeasy-default-create-and-stream-run: requestBody: @@ -6713,6 +6805,8 @@ examples: responses: "200": text/event-stream: "" + "404": + application/json: {} createAndWaitRun: speakeasy-default-create-and-wait-run: requestBody: @@ -6860,7 +6954,7 @@ examples: "200": application/json: {"trackingToken": "trackingToken", "results": [{"title": "title", "url": "https://www.example.com/", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}, {"title": "title", "url": "https://www.example.com/", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}], "errorInfo": {"errorMessages": [{"source": "gmail", "errorMessage": "invalid token"}, {"source": "slack", "errorMessage": "expired token"}]}, "requestID": "5e345ae500ff0befa2b9d1a3ba0001737e7363696f312d323535323137000171756572792d656e64706f696e743a323032303031333074313830343032000100", "facetResults": [{"sourceName": "sourceName", "operatorName": "operatorName", "buckets": [{"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}, {"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}]}, {"sourceName": "sourceName", "operatorName": "operatorName", "buckets": [{"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}, {"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}]}], "rewrittenFacetFilters": [{"fieldName": "fieldName", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Spreadsheet", "relationType": "EQUALS"}]}, {"fieldName": "fieldName", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Spreadsheet", "relationType": "EQUALS"}]}], "hasMoreResults": true} "403": - application/json: {"unauthorizedDatasourceInstances": [{"datasourceInstance": "slack_0", "displayName": "Slack"}]} + application/json: {} autocomplete: speakeasy-default-autocomplete: requestBody: @@ -6881,7 +6975,7 @@ examples: application/json: {"sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "pageSize": 100, "maxSnippetSize": 400, "requestOptions": {"facetFilterSets": [{"filters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}]}], "context": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}} responses: "200": - application/json: {"results": [{"title": "title", "url": "https://example.com/foo/bar", "nativeAppUrl": "slack://foo/bar", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}], "mustIncludeSuggestions": {"suggestions": [{"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}], "person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}], "structuredResults": [{"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}]}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "structuredList": [{"link": "https://en.wikipedia.org/wiki/Diffuse_sky_radiation", "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "text": "Because its wavelengths are shorter, blue light is more strongly scattered than the longer-wavelength lights, red or green. Hence the result that when looking at the sky away from the direct incident sunlight, the human eye perceives the sky to be blue.", "structuredResult": {"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}]}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light."}, "likes": {"likedBy": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "likedByUser": true, "numLikes": 252096}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "VERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 321130}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 284307}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "untimely underneath boo", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 106210, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 502218, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "collection": {"name": "", "description": "than ew cycle beyond twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 612012, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "furlough lest hydrant past unto ah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 234815, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "COLLECTION"}]}], "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"title": "title", "url": "https://example.com/foo/bar", "nativeAppUrl": "slack://foo/bar", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}], "mustIncludeSuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "than ew cycle beyond twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 612012, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "furlough lest hydrant past unto ah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 234815, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "relatedDocuments": [{"querySuggestion": {"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}}], "relatedQuestion": {"ranges": [{"startIndex": 710108, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}}]}, "likes": {"likedBy": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "likedByUser": true, "numLikes": 252096}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "VERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 321130}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 284307}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"title": "title", "url": "https://example.com/foo/bar", "nativeAppUrl": "slack://foo/bar", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}], "mustIncludeSuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "than ew cycle beyond twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 612012, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "furlough lest hydrant past unto ah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 234815, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "relatedQuestion": {"ranges": [{"startIndex": 710108, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}], "generatedQnaResult": {"ranges": [{"startIndex": 710108, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}, "errorInfo": {"unauthorizedDatasourceInstances": [{"datasourceInstance": "slack_0", "displayName": "Slack"}]}, "backendTimeMillis": 1100} + application/json: {"results": [{"title": "title", "url": "https://example.com/foo/bar", "nativeAppUrl": "slack://foo/bar", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}], "mustIncludeSuggestions": {"suggestions": [{"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}], "person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}], "structuredResults": [{"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}]}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "structuredList": [{"link": "https://en.wikipedia.org/wiki/Diffuse_sky_radiation", "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "text": "Because its wavelengths are shorter, blue light is more strongly scattered than the longer-wavelength lights, red or green. Hence the result that when looking at the sky away from the direct incident sunlight, the human eye perceives the sky to be blue.", "structuredResult": {"document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "customer": {"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "poc": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "mergedCustomers": [{"id": "", "company": {"name": "", "location": "New York City", "industry": "Finances", "about": "Financial, software, data, and media company headquartered in Midtown Manhattan, New York City"}, "notes": "CIO is interested in trying out the product."}], "notes": "CIO is interested in trying out the product."}, "team": {"id": "", "name": "", "members": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "relationship": "MEMBER"}], "customFields": [{"label": "", "values": [], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}]}, "answer": {"id": 3, "docId": "ANSWERS_answer_3", "question": "Why is the sky blue?", "bodyText": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light.", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "combinedAnswerText": {"text": "From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light."}, "likes": {"likedBy": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "likedByUser": true, "numLikes": 252096}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "VERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 321130}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 284307}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "untimely underneath boo", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 106210, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 502218, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "collection": {"name": "", "description": "than ew cycle beyond twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 612012, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "furlough lest hydrant past unto ah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 234815, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "COLLECTION"}]}], "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"title": "title", "url": "https://example.com/foo/bar", "nativeAppUrl": "slack://foo/bar", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}], "mustIncludeSuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "than ew cycle beyond twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 612012, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "furlough lest hydrant past unto ah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 234815, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "relatedDocuments": [{"querySuggestion": {"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}}], "relatedQuestion": {"ranges": [{"startIndex": 710108, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}}]}, "likes": {"likedBy": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "likedByUser": true, "numLikes": 252096}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "VERIFIED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123"}, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 321130}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 284307}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "sourceDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "extractedQnA": {"questionResult": {"title": "title", "url": "https://example.com/foo/bar", "nativeAppUrl": "slack://foo/bar", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}], "mustIncludeSuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}}, "meeting": {"attendees": {"people": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "groupAttendees": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}]}}, "collection": {"name": "", "description": "than ew cycle beyond twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 612012, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "furlough lest hydrant past unto ah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 234815, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "code": {"repoName": "scio", "fileName": "README.md"}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "destinationDocument": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}, "querySuggestions": {"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "relatedQuestion": {"ranges": [{"startIndex": 710108, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}}], "generatedQnaResult": {"ranges": [{"startIndex": 710108, "document": {"containerDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "parentDocument": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}, "metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "name", "obfuscatedId": ""}, "components": ["Backend", "Networking"], "status": "[\"Done\"]", "customData": {"someCustomField": {}}}}}]}, "backendTimeMillis": 1100} search: speakeasy-default-search: requestBody: @@ -6890,7 +6984,7 @@ examples: "200": application/json: {"trackingToken": "trackingToken", "results": [{"title": "title", "url": "https://www.example.com/", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}, {"title": "title", "url": "https://www.example.com/", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}], "errorInfo": {"errorMessages": [{"source": "gmail", "errorMessage": "invalid token"}, {"source": "slack", "errorMessage": "expired token"}]}, "requestID": "5e345ae500ff0befa2b9d1a3ba0001737e7363696f312d323535323137000171756572792d656e64706f696e743a323032303031333074313830343032000100", "facetResults": [{"sourceName": "sourceName", "operatorName": "operatorName", "buckets": [{"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}, {"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}]}, {"sourceName": "sourceName", "operatorName": "operatorName", "buckets": [{"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}, {"count": 1, "percentage": 5, "value": {"stringValue": "stringValue", "integerValue": 5}}]}], "rewrittenFacetFilters": [{"fieldName": "fieldName", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Spreadsheet", "relationType": "EQUALS"}]}, {"fieldName": "fieldName", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Spreadsheet", "relationType": "EQUALS"}]}], "hasMoreResults": true} "403": - application/json: {"unauthorizedDatasourceInstances": [{"datasourceInstance": "slack_0", "displayName": "Slack"}]} + application/json: {} listentities: speakeasy-default-listentities: requestBody: @@ -7248,6 +7342,30 @@ examples: responses: "200": application/json: {"unauthorizedDatasourceInstances": [{"datasourceInstance": "slack_0", "displayName": "Slack"}]} + getDatasourceInstanceConfiguration: + speakeasy-default-get-datasource-instance-configuration: + parameters: + path: + datasourceId: "o365sharepoint" + instanceId: "o365sharepoint_abc123" + responses: + "200": + application/json: {"configuration": {"values": {"key": {}}}} + "400": + application/json: {} + updateDatasourceInstanceConfiguration: + speakeasy-default-update-datasource-instance-configuration: + parameters: + path: + datasourceId: "o365sharepoint" + instanceId: "o365sharepoint_abc123" + requestBody: + application/json: {"configuration": {"values": {}}} + responses: + "200": + application/json: {"configuration": {"values": {}}} + "400": + application/json: {} examplesVersion: 1.0.2 generatedTests: activity: "2025-04-28T22:05:12+01:00" @@ -7396,9 +7514,9 @@ generatedTests: listfindingsexports: "2025-12-10T17:53:31Z" downloadfindingsexport: "2025-12-10T17:53:31Z" checkdatasourceauth: "2026-02-19T15:48:52Z" -releaseNotes: | - ## Python SDK Changes: - * `glean.authentication.checkdatasourceauth()`: `response.unauthorized_datasource_instances` **Changed** + getDatasourceInstanceConfiguration: "2026-03-09T02:14:58Z" + updateDatasourceInstanceConfiguration: "2026-03-09T02:14:58Z" +releaseNotes: "## Python SDK Changes:\n* `glean.client.chat.create()`: \n * `request.messages[]` **Changed**\n * `response` **Changed** (Breaking ⚠️)\n* `glean.client.search.query()`: \n * `request.source_document.metadata.author.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n * `response` **Changed** (Breaking ⚠️)\n * `error.unauthorized_datasource_instances` **Removed** (Breaking ⚠️)\n* `glean.client.search.recommendations()`: \n * `request.source_document.metadata.author.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n * `response` **Changed** (Breaking ⚠️)\n* `glean.client.search.autocomplete()`: `response` **Changed** (Breaking ⚠️)\n* `glean.client.search.query_as_admin()`: \n * `request.source_document.metadata.author.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n * `response` **Changed** (Breaking ⚠️)\n * `error.unauthorized_datasource_instances` **Removed** (Breaking ⚠️)\n* `glean.client.messages.retrieve()`: `response.search_response` **Changed** (Breaking ⚠️)\n* `glean.client.collections.list()`: `response.collections[].added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.insights.retrieve()`: `response.glean_assist.activity_insights[].user.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.answers.retrieve()`: `response.answer_result.answer.added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.chat.retrieve()`: `response.chat_result.chat` **Changed**\n* `glean.client.chat.list()`: `response` **Changed**\n* `glean.client.chat.create_stream()`: \n * `request.messages[]` **Changed**\n* `glean.client.agents.retrieve()`: `error.status[404]` **Added**\n* `glean.client.agents.retrieve_schemas()`: \n * `response.tools[]` **Changed**\n * `error` **Changed**\n* `glean.client.agents.list()`: `error` **Changed**\n* `glean.client.agents.run_stream()`: `error` **Changed**\n* `glean.client.collections.add_items()`: `response.collection.added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.collections.create()`: \n * `request.added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n * `response.union(class (0)).collection.added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.collections.delete_item()`: `response.collection.added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.collections.update()`: \n * `request.added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n * `response.added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.collections.update_item()`: `response.collection.added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.collections.retrieve()`: `response.collection.added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.datasources.get_datasource_instance_configuration()`: **Added**\n* `glean.client.documents.retrieve()`: `response.documents.Map.union(Document).metadata.author.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.documents.retrieve_by_facets()`: `response.documents[].metadata.author.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.answers.list()`: `response.answer_results[].answer.added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.answers.update()`: \n * `request.added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n * `response.added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.pins.update()`: `response.attribution.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.pins.retrieve()`: `response.pin.attribution.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.pins.list()`: `response.pins[].attribution.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.pins.create()`: `response.attribution.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.answers.create()`: \n * `request.data.added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n * `response.added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.announcements.update()`: \n * `request.body.structured_list[].document.metadata.author.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n * `response.body.structured_list[].document.metadata.author.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.search.retrieve_feed()`: `response.results[].primary_entry.created_by.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.announcements.create()`: \n * `request.body.structured_list[].document.metadata.author.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n * `response.body.structured_list[].document.metadata.author.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.datasources.update_datasource_instance_configuration()`: **Added**\n* `glean.client.entities.list()`: `response.results[].related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.entities.read_people()`: `response.results[].related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.shortcuts.create()`: \n * `request.data.added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n * `response.shortcut.added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.shortcuts.retrieve()`: `response.shortcut.added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.shortcuts.list()`: `response.shortcuts[].added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.shortcuts.update()`: \n * `request.added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n * `response.shortcut.added_roles[].person.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.verification.add_reminder()`: `response.metadata.last_verifier.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.verification.list()`: `response.documents[].metadata.last_verifier.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.client.verification.verify()`: `response.metadata.last_verifier.related_documents[].results[].structured_results[].snippets[].snippet` **Changed**\n* `glean.indexing.people.bulk_index()`: **Deprecated**\n" generatedFiles: - .devcontainer/README.md - .devcontainer/devcontainer.json diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index c00ea6f2..7f8ba298 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -17,6 +17,7 @@ generation: securityFeb2025: true sharedErrorComponentsApr2025: true sharedNestedComponentsJan2026: false + nameOverrideFeb2026: false auth: oAuth2ClientCredentialsEnabled: false oAuth2PasswordEnabled: false @@ -33,7 +34,7 @@ generation: generateNewTests: true skipResponseBodyAssertions: true python: - version: 0.12.8 + version: 0.12.9 additionalDependencies: dev: {} main: {} diff --git a/.speakeasy/glean-merged-spec.yaml b/.speakeasy/glean-merged-spec.yaml index a069bf8a..d16286cc 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: 56c08697ca3b6869022a262114e61f1385914425 + x-source-commit-sha: 5b4b9f6cee03ab6398971afa45c179bfd9ead343 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: daa8736a6f0763faffd2c1079da8a42345536ed7 + x-open-api-commit-sha: 7b95ca831c1ccc0b663e046cdd8b4354105c44eb x-speakeasy-name: 'Glean API' servers: - url: https://{instance}-be.glean.com @@ -30,8 +30,6 @@ servers: instance: default: instance-name description: The instance name (typically the email domain without the TLD) that determines the deployment backend. -security: - - APIToken: [] paths: /rest/api/v1/activity: post: @@ -58,6 +56,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: report x-speakeasy-group: client.activity /rest/api/v1/feedback: @@ -91,6 +91,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-group: client.activity /rest/api/v1/createannouncement: post: @@ -124,6 +126,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: create x-speakeasy-group: client.announcements /rest/api/v1/deleteannouncement: @@ -154,6 +158,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: delete x-speakeasy-group: client.announcements /rest/api/v1/updateannouncement: @@ -188,6 +194,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: update x-speakeasy-group: client.announcements /rest/api/v1/createanswer: @@ -222,6 +230,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: create x-speakeasy-group: client.answers /rest/api/v1/deleteanswer: @@ -252,6 +262,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: delete x-speakeasy-group: client.answers /rest/api/v1/editanswer: @@ -286,6 +298,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: update x-speakeasy-group: client.answers /rest/api/v1/getanswer: @@ -320,6 +334,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: retrieve x-speakeasy-group: client.answers /rest/api/v1/listanswers: @@ -361,6 +377,8 @@ paths: message: Answer boards have been removed and this endpoint no longer serves a purpose removal: "2026-10-15" x-speakeasy-deprecation-message: "Deprecated on 2026-01-21, removal scheduled for 2026-10-15: Answer boards have been removed and this endpoint no longer serves a purpose" + security: + - APIToken: [] x-speakeasy-name-override: list x-speakeasy-group: client.answers /rest/api/v1/checkdatasourceauth: @@ -390,6 +408,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] /rest/api/v1/createauthtoken: post: tags: @@ -417,6 +437,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: createToken x-speakeasy-group: client.authentication /rest/api/v1/chat: @@ -555,6 +577,8 @@ paths: description: Request Timeout "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-group: client.chat x-speakeasy-name-override: create x-speakeasy-usage-example: true @@ -579,6 +603,8 @@ paths: description: Not Authorized "403": description: Forbidden + security: + - APIToken: [] x-speakeasy-name-override: deleteAll x-speakeasy-group: client.chat /rest/api/v1/deletechats: @@ -611,6 +637,8 @@ paths: description: Forbidden "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: delete x-speakeasy-group: client.chat /rest/api/v1/getchat: @@ -647,6 +675,8 @@ paths: description: Forbidden "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: retrieve x-speakeasy-group: client.chat /rest/api/v1/listchats: @@ -674,6 +704,8 @@ paths: description: Forbidden "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: list x-speakeasy-group: client.chat /rest/api/v1/getchatapplication: @@ -708,6 +740,8 @@ paths: description: Not Authorized "403": description: Forbidden + security: + - APIToken: [] x-speakeasy-name-override: retrieveApplication x-speakeasy-group: client.chat /rest/api/v1/uploadchatfiles: @@ -743,6 +777,8 @@ paths: description: Forbidden "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: uploadFiles x-speakeasy-group: client.chat /rest/api/v1/getchatfiles: @@ -778,6 +814,8 @@ paths: description: Forbidden "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: retrieveFiles x-speakeasy-group: client.chat /rest/api/v1/deletechatfiles: @@ -808,6 +846,8 @@ paths: description: Forbidden "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: deleteFiles x-speakeasy-group: client.chat /rest/api/v1/agents/{agent_id}: @@ -848,6 +888,8 @@ paths: $ref: "#/components/schemas/ErrorResponse" "500": description: Internal server error + security: + - APIToken: [] x-speakeasy-group: client.agents x-speakeasy-name-override: retrieve /rest/api/v1/agents/{agent_id}/schemas: @@ -894,6 +936,8 @@ paths: $ref: "#/components/schemas/ErrorResponse" "500": description: Internal server error + security: + - APIToken: [] x-speakeasy-group: client.agents x-speakeasy-name-override: retrieveSchemas /rest/api/v1/agents/search: @@ -935,6 +979,8 @@ paths: $ref: "#/components/schemas/ErrorResponse" "500": description: Internal server error + security: + - APIToken: [] x-speakeasy-group: client.agents x-speakeasy-name-override: list /rest/api/v1/agents/runs/stream: @@ -999,6 +1045,8 @@ paths: $ref: "#/components/schemas/ErrorResponse" "500": description: Internal server error + security: + - APIToken: [] x-speakeasy-group: client.agents x-speakeasy-name-override: runStream /rest/api/v1/agents/runs/wait: @@ -1034,6 +1082,8 @@ paths: description: Validation Error "500": description: Internal server error + security: + - APIToken: [] x-speakeasy-group: client.agents x-speakeasy-name-override: run /rest/api/v1/addcollectionitems: @@ -1068,6 +1118,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: addItems x-speakeasy-group: client.collections /rest/api/v1/createcollection: @@ -1108,6 +1160,8 @@ paths: $ref: "#/components/schemas/CollectionError" "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-group: client.collections x-speakeasy-name-override: create /rest/api/v1/deletecollection: @@ -1144,6 +1198,8 @@ paths: $ref: "#/components/schemas/CollectionError" "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: delete x-speakeasy-group: client.collections /rest/api/v1/deletecollectionitem: @@ -1180,6 +1236,8 @@ paths: description: Failed to save deletion "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: deleteItem x-speakeasy-group: client.collections /rest/api/v1/editcollection: @@ -1220,6 +1278,8 @@ paths: $ref: "#/components/schemas/CollectionError" "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: update x-speakeasy-group: client.collections /rest/api/v1/editcollectionitem: @@ -1254,6 +1314,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: updateItem x-speakeasy-group: client.collections /rest/api/v1/getcollection: @@ -1288,6 +1350,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: retrieve x-speakeasy-group: client.collections /rest/api/v1/listcollections: @@ -1322,6 +1386,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: list x-speakeasy-group: client.collections /rest/api/v1/getdocpermissions: @@ -1358,6 +1424,8 @@ paths: description: Forbidden "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: retrievePermissions x-speakeasy-group: client.documents /rest/api/v1/getdocuments: @@ -1392,6 +1460,8 @@ paths: description: Documents does not exist, or user cannot access documents. "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: retrieve x-speakeasy-group: client.documents /rest/api/v1/getdocumentsbyfacets: @@ -1426,6 +1496,8 @@ paths: description: Not Found "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: retrieveByFacets x-speakeasy-group: client.documents /rest/api/v1/insights: @@ -1460,6 +1532,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: retrieve x-speakeasy-group: client.insights /rest/api/v1/messages: @@ -1494,6 +1568,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: retrieve x-speakeasy-group: client.messages /rest/api/v1/editpin: @@ -1528,6 +1604,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: update x-speakeasy-group: client.pins /rest/api/v1/getpin: @@ -1562,6 +1640,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: retrieve x-speakeasy-group: client.pins /rest/api/v1/listpins: @@ -1596,6 +1676,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: list x-speakeasy-group: client.pins /rest/api/v1/pin: @@ -1630,6 +1712,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: create x-speakeasy-group: client.pins /rest/api/v1/unpin: @@ -1662,6 +1746,8 @@ paths: description: Forbidden from unpinning someone else's pin "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: remove x-speakeasy-group: client.pins /rest/api/v1/adminsearch: @@ -1708,6 +1794,8 @@ paths: $ref: "#/components/schemas/ErrorInfo" "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-group: client.search x-speakeasy-name-override: queryAsAdmin /rest/api/v1/autocomplete: @@ -1742,6 +1830,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-group: client.search x-speakeasy-name-override: autocomplete /rest/api/v1/feed: @@ -1778,6 +1868,8 @@ paths: description: Request Timeout "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: retrieveFeed x-speakeasy-group: client.search /rest/api/v1/recommendations: @@ -1818,6 +1910,8 @@ paths: description: Document does not exist or user cannot access document "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-group: client.search x-speakeasy-name-override: recommendations /rest/api/v1/search: @@ -1866,6 +1960,8 @@ paths: $ref: "#/components/schemas/ErrorInfo" "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-group: client.search x-speakeasy-name-override: query /rest/api/v1/listentities: @@ -1900,6 +1996,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-group: client.entities x-speakeasy-name-override: list /rest/api/v1/people: @@ -1934,6 +2032,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: readPeople x-speakeasy-group: client.entities /rest/api/v1/createshortcut: @@ -1968,6 +2068,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: create x-speakeasy-group: client.shortcuts /rest/api/v1/deleteshortcut: @@ -1998,6 +2100,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: delete x-speakeasy-group: client.shortcuts /rest/api/v1/getshortcut: @@ -2032,6 +2136,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-group: client.shortcuts x-speakeasy-name-override: retrieve /rest/api/v1/listshortcuts: @@ -2066,6 +2172,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-group: client.shortcuts x-speakeasy-name-override: list /rest/api/v1/updateshortcut: @@ -2100,6 +2208,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-group: client.shortcuts x-speakeasy-name-override: update /rest/api/v1/summarize: @@ -2134,6 +2244,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: summarize x-speakeasy-group: client.documents /rest/api/v1/addverificationreminder: @@ -2170,6 +2282,8 @@ paths: description: Document does not exist, does not support verification or user cannot access document "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: addReminder x-speakeasy-group: client.verification /rest/api/v1/listverifications: @@ -2202,6 +2316,8 @@ paths: description: Not Authorized "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: list x-speakeasy-group: client.verification /rest/api/v1/verify: @@ -2238,6 +2354,8 @@ paths: description: Document does not exist, does not support verification or user cannot access document "429": description: Too Many Requests + security: + - APIToken: [] x-speakeasy-name-override: verify x-speakeasy-group: client.verification /rest/api/v1/tools/list: @@ -2271,6 +2389,8 @@ paths: description: Not Found "429": description: Too Many Requests + security: + - APIToken: [] tags: - Tools x-speakeasy-name-override: list @@ -2301,6 +2421,8 @@ paths: description: Not Found "429": description: Too Many Requests + security: + - APIToken: [] tags: - Tools x-speakeasy-name-override: run @@ -2311,6 +2433,8 @@ paths: description: Adds a document to the index or updates an existing document. tags: - Documents + security: + - APIToken: [] requestBody: content: application/json: @@ -2337,6 +2461,8 @@ paths: description: Adds or updates multiple documents in the index. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-indexing/choosing-indexdocuments-vs-bulkindexdocuments) documentation for an explanation of when to use this endpoint. tags: - Documents + security: + - APIToken: [] requestBody: content: application/json: @@ -2363,6 +2489,8 @@ paths: description: Replaces the documents in a datasource using paginated batch API calls. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-upload-model) documentation for an explanation of how to use bulk endpoints. tags: - Documents + security: + - APIToken: [] requestBody: content: application/json: @@ -2387,6 +2515,8 @@ paths: description: Updates the permissions for a given document without modifying document content. tags: - Documents + security: + - APIToken: [] requestBody: content: application/json: @@ -2424,6 +2554,8 @@ paths: For more frequent document processing, contact Glean support. tags: - Documents + security: + - APIToken: [] requestBody: content: application/json: @@ -2447,6 +2579,8 @@ paths: description: Deletes the specified document from the index. Succeeds if document is not present. tags: - Documents + security: + - APIToken: [] requestBody: content: application/json: @@ -2471,6 +2605,8 @@ paths: description: Adds a datasource user or updates an existing user. tags: - Permissions + security: + - APIToken: [] requestBody: content: application/json: @@ -2497,6 +2633,8 @@ paths: Note: Any users deleted from the existing set will have their associated memberships deleted as well. tags: - Permissions + security: + - APIToken: [] requestBody: content: application/json: @@ -2521,6 +2659,8 @@ paths: description: Add or update a group in the datasource. tags: - Permissions + security: + - APIToken: [] requestBody: content: application/json: @@ -2547,6 +2687,8 @@ paths: Note: Any groups deleted from the existing set will have their associated memberships deleted as well. tags: - Permissions + security: + - APIToken: [] requestBody: content: application/json: @@ -2571,6 +2713,8 @@ paths: description: Add the memberships of a group in the datasource. tags: - Permissions + security: + - APIToken: [] requestBody: content: application/json: @@ -2595,6 +2739,8 @@ paths: description: Replaces the memberships for a group in a datasource using paginated batch API calls. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-upload-model) documentation for an explanation of how to use bulk endpoints. tags: - Permissions + security: + - APIToken: [] requestBody: content: application/json: @@ -2620,6 +2766,8 @@ paths: Schedules the immediate processing of all group memberships uploaded through the indexing API. By default the uploaded group memberships will be processed asynchronously but this API can be used to schedule processing of all memberships on demand. tags: - Permissions + security: + - APIToken: [] requestBody: content: application/json: @@ -2643,6 +2791,8 @@ paths: Note: All memberships associated with the deleted user will also be deleted. tags: - Permissions + security: + - APIToken: [] requestBody: content: application/json: @@ -2669,6 +2819,8 @@ paths: Note: All memberships associated with the deleted group will also be deleted. tags: - Permissions + security: + - APIToken: [] requestBody: content: application/json: @@ -2693,6 +2845,8 @@ paths: description: Delete membership to a group in the specified datasource. Silently succeeds if membership is not present. tags: - Permissions + security: + - APIToken: [] requestBody: content: application/json: @@ -2721,6 +2875,8 @@ paths: Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. tags: - Troubleshooting + security: + - APIToken: [] parameters: - name: datasource in: path @@ -2752,6 +2908,8 @@ paths: Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. tags: - Troubleshooting + security: + - APIToken: [] parameters: - name: datasource in: path @@ -2790,6 +2948,8 @@ paths: Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. tags: - Troubleshooting + security: + - APIToken: [] parameters: - name: datasource in: path @@ -2828,6 +2988,8 @@ paths: Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. tags: - Troubleshooting + security: + - APIToken: [] parameters: - name: datasource in: path @@ -2865,6 +3027,8 @@ paths: Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. tags: - Troubleshooting + security: + - APIToken: [] requestBody: content: application/json: @@ -2896,6 +3060,8 @@ paths: Tip: Use [/debug/{datasource}/document](https://developers.glean.com/indexing/debugging/datasource-document) for richer information. tags: - Troubleshooting + security: + - APIToken: [] requestBody: content: application/json: @@ -2917,6 +3083,12 @@ paths: "429": description: Too Many Requests deprecated: true + x-speakeasy-deprecation-message: "Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated" + x-glean-deprecated: + id: 7eec0433-78fd-49f9-a34f-cca83640ec24 + introduced: "2026-02-03" + message: Endpoint is deprecated + removal: "2026-10-15" x-speakeasy-group: indexing.documents x-speakeasy-name-override: status /api/index/v1/getdocumentcount: @@ -2928,6 +3100,8 @@ paths: Tip: Use [/debug/{datasource}/status](https://developers.glean.com/indexing/debugging/datasource-status) for richer information. tags: - Troubleshooting + security: + - APIToken: [] requestBody: content: application/json: @@ -2949,6 +3123,12 @@ paths: "409": description: Conflict deprecated: true + x-speakeasy-deprecation-message: "Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated" + x-glean-deprecated: + id: c164089c-9412-4724-acf6-caf3b0d2a527 + introduced: "2026-02-03" + message: Endpoint is deprecated + removal: "2026-10-15" x-speakeasy-group: indexing.documents x-speakeasy-name-override: count /api/index/v1/getusercount: @@ -2960,6 +3140,8 @@ paths: Tip: Use [/debug/{datasource}/status](https://developers.glean.com/indexing/debugging/datasource-status) for richer information. tags: - Troubleshooting + security: + - APIToken: [] requestBody: content: application/json: @@ -2981,6 +3163,12 @@ paths: "409": description: Conflict deprecated: true + x-speakeasy-deprecation-message: "Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated" + x-glean-deprecated: + id: 4f5df873-385e-4539-8183-cb764b0f06b9 + introduced: "2026-02-03" + message: Endpoint is deprecated + removal: "2026-10-15" x-speakeasy-name-override: count x-speakeasy-group: indexing.people /api/index/v1/betausers: @@ -2989,6 +3177,8 @@ paths: description: Allow the datasource be visible to the specified beta users. The default behaviour is datasource being visible to all users if it is enabled and not visible to any user if it is not enabled. tags: - Permissions + security: + - APIToken: [] requestBody: content: application/json: @@ -3013,6 +3203,8 @@ paths: description: Add or update a custom datasource and its schema. tags: - Datasources + security: + - APIToken: [] requestBody: content: application/json: @@ -3035,6 +3227,8 @@ paths: description: Fetches the datasource config for the specified custom datasource. tags: - Datasources + security: + - APIToken: [] requestBody: content: application/json: @@ -3063,6 +3257,8 @@ paths: description: Rotates the secret value inside the Indexing API token and returns the new raw secret. All other properties of the token are unchanged. In order to rotate the secret value, include the token as the bearer token in the `/rotatetoken` request. Please refer to [Token rotation](https://developers.glean.com/indexing/authentication/token-rotation) documentation for more information. tags: - Authentication + security: + - APIToken: [] responses: "200": description: OK @@ -3082,6 +3278,8 @@ paths: description: Adds an employee or updates information about an employee tags: - People + security: + - APIToken: [] requestBody: content: application/json; charset=UTF-8: @@ -3106,6 +3304,8 @@ paths: description: Replaces all the currently indexed employees using paginated batch API calls. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-upload-model) documentation for an explanation of how to use bulk endpoints. tags: - People + security: + - APIToken: [] requestBody: content: application/json; charset=UTF-8: @@ -3122,6 +3322,13 @@ paths: description: Not Authorized "409": description: Conflict + deprecated: true + x-speakeasy-deprecation-message: "Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated" + x-glean-deprecated: + id: ce596f49-55c4-465e-bf3c-5a3a33906e1f + introduced: "2026-02-03" + message: Endpoint is deprecated + removal: "2026-10-15" x-speakeasy-name-override: bulkIndex x-speakeasy-group: indexing.people /api/index/v1/indexemployeelist: {} @@ -3132,6 +3339,8 @@ paths: Schedules the immediate processing of employees and teams uploaded through the indexing API. By default all uploaded people data will be processed asynchronously but this API can be used to schedule its processing on demand. tags: - People + security: + - APIToken: [] responses: "200": description: OK @@ -3149,6 +3358,8 @@ paths: description: Delete an employee. Silently succeeds if employee is not present. tags: - People + security: + - APIToken: [] requestBody: content: application/json; charset=UTF-8: @@ -3173,6 +3384,8 @@ paths: description: Adds a team or updates information about a team tags: - People + security: + - APIToken: [] requestBody: content: application/json; charset=UTF-8: @@ -3197,6 +3410,8 @@ paths: description: Delete a team based on provided id. tags: - People + security: + - APIToken: [] requestBody: content: application/json; charset=UTF-8: @@ -3221,6 +3436,8 @@ paths: description: Replaces all the currently indexed teams using paginated batch API calls. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-upload-model) documentation for an explanation of how to use bulk endpoints. tags: - People + security: + - APIToken: [] requestBody: content: application/json; charset=UTF-8: @@ -3245,6 +3462,8 @@ paths: description: Replaces all the currently indexed shortcuts using paginated batch API calls. Note that this endpoint is used for indexing shortcuts not hosted by Glean. If you want to upload shortcuts that would be hosted by Glean, please use the `/uploadshortcuts` endpoint. For information on what you can do with Golinks, which are Glean-hosted shortcuts, please refer to [this](https://help.glean.com/en/articles/5628838-how-go-links-work) page. tags: - Shortcuts + security: + - APIToken: [] requestBody: content: application/json; charset=UTF-8: @@ -3269,6 +3488,8 @@ paths: description: Creates glean shortcuts for uploaded shortcuts info. Glean would host the shortcuts, and they can be managed in the knowledge tab once uploaded. tags: - Shortcuts + security: + - APIToken: [] requestBody: content: application/json; charset=UTF-8: @@ -3294,6 +3515,8 @@ paths: description: Fetches the specified policy version, or the latest if no version is provided. tags: - Governance + security: + - APIToken: [] parameters: - name: id in: path @@ -3328,6 +3551,8 @@ paths: description: Updates an existing policy. tags: - Governance + security: + - APIToken: [] parameters: - name: id in: path @@ -3361,6 +3586,8 @@ paths: description: Lists policies with filtering. tags: - Governance + security: + - APIToken: [] parameters: - name: autoHide in: query @@ -3394,6 +3621,8 @@ paths: description: Creates a new policy with specified specifications and returns its id. tags: - Governance + security: + - APIToken: [] requestBody: content: application/json; charset=UTF-8: @@ -3421,6 +3650,8 @@ paths: description: Downloads CSV violations report for a specific policy id. This does not support continuous policies. tags: - Governance + security: + - APIToken: [] parameters: - name: id in: path @@ -3452,6 +3683,8 @@ paths: description: Creates a new one-time report and executes its batch job. tags: - Governance + security: + - APIToken: [] requestBody: content: application/json; charset=UTF-8: @@ -3479,6 +3712,8 @@ paths: description: Downloads CSV violations report for a specific report id. tags: - Governance + security: + - APIToken: [] parameters: - name: id in: path @@ -3508,6 +3743,8 @@ paths: description: Fetches the status of the run corresponding to the report-id. tags: - Governance + security: + - APIToken: [] parameters: - name: id in: path @@ -3536,6 +3773,8 @@ paths: description: Fetches the visibility override status of the documents passed. tags: - Governance + security: + - APIToken: [] parameters: - name: docIds in: query @@ -3564,6 +3803,8 @@ paths: description: Sets the visibility-override state of the documents specified, effectively hiding or un-hiding documents. tags: - Governance + security: + - APIToken: [] requestBody: content: application/json; charset=UTF-8: @@ -3591,6 +3832,8 @@ paths: description: Creates a new DLP findings export job. tags: - Governance + security: + - APIToken: [] requestBody: content: application/json; charset=UTF-8: @@ -3615,6 +3858,8 @@ paths: description: Lists all DLP findings exports. tags: - Governance + security: + - APIToken: [] responses: "200": description: OK @@ -3634,6 +3879,8 @@ paths: description: Downloads a DLP findings export as a CSV file. tags: - Governance + security: + - APIToken: [] parameters: - name: id in: path @@ -3660,6 +3907,8 @@ paths: description: Deletes a DLP findings export. tags: - Governance + security: + - APIToken: [] parameters: - name: id in: path @@ -3676,6 +3925,93 @@ paths: "500": description: Internal error x-visibility: Public + /rest/api/v1/configure/datasources/{datasourceId}/instances/{instanceId}: + get: + operationId: getDatasourceInstanceConfiguration + summary: Get datasource instance configuration + description: | + Gets the greenlisted configuration values for a datasource instance. Returns only configuration keys that are exposed via the public API greenlist. + tags: + - Datasources + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/datasourceId' + - $ref: '#/components/parameters/instanceId' + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DatasourceConfigurationResponse' + "400": + description: Invalid request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "401": + description: Not authorized + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "404": + description: Datasource instance not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + x-visibility: Preview + patch: + operationId: updateDatasourceInstanceConfiguration + summary: Update datasource instance configuration + description: | + Updates the greenlisted configuration values for a datasource instance. Only configuration keys that are exposed via the public API greenlist may be set. Returns the full greenlisted configuration after the update is applied. + tags: + - Datasources + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/datasourceId' + - $ref: '#/components/parameters/instanceId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateDatasourceConfigurationRequest' + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DatasourceConfigurationResponse' + "400": + description: Invalid request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "401": + description: Not authorized + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + "404": + description: Datasource instance not found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + x-visibility: Preview /rest/api/v1/chat#stream: post: tags: @@ -5702,9 +6038,6 @@ components: target: $ref: "#/components/schemas/CollectionPinTarget" CollectionPinnedMetadata: - required: - - pinnedCategories - - eligibleCategoriesForPinning properties: existingPins: type: array @@ -6222,8 +6555,6 @@ components: type: $ref: "#/components/schemas/EntityType" SearchResultSnippet: - required: - - snippet properties: mimeType: type: string @@ -6246,6 +6577,12 @@ components: type: string deprecated: true description: A matching snippet from the document. Query term matches are marked by the unicode characters uE006 and uE007. Use 'text' field instead. + x-glean-deprecated: + id: e55ddf30-7c47-43a5-b775-d78f8b29411a + introduced: "2026-02-05" + message: Use 'text' field instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use 'text' field instead" example: snippet: snippet mimeType: mimeType @@ -6547,16 +6884,34 @@ components: deprecated: true description: The person that invited this person. $ref: "#/components/schemas/Person" + x-glean-deprecated: + id: 1d3cd23f-9085-4378-b466-9bdc2e344a71 + introduced: "2026-02-05" + message: Use ChannelInviteInfo instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use ChannelInviteInfo instead" inviteTime: deprecated: true type: string format: date-time description: The time this person was invited in ISO format (ISO 8601). + x-glean-deprecated: + id: 2dc3f572-cded-483d-af07-fc9fc7fd0ae4 + introduced: "2026-02-05" + message: Use ChannelInviteInfo instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use ChannelInviteInfo instead" reminderTime: deprecated: true type: string format: date-time description: The time this person was reminded in ISO format (ISO 8601) if a reminder was sent. + x-glean-deprecated: + id: d02d58cf-eb90-45d0-ab90-f7a9d707ae3c + introduced: "2026-02-05" + message: Use ChannelInviteInfo instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use ChannelInviteInfo instead" ReadPermission: description: Describes the read permission level that a user has for a specific feature properties: @@ -7610,6 +7965,10 @@ components: type: string format: url description: The OAuth provider's endpoint, where access tokens are requested. + resource: + type: string + format: url + description: The OAuth 2.0 Resource Indicator (RFC 8707) for the protected resource. Discovered from Protected Resource Metadata (RFC 9728) during DCR. Included in authorization and token exchange requests when present. lastAuthorizedAt: type: string format: date-time @@ -7944,12 +8303,6 @@ components: chatSessionTrackingToken: type: string description: A token that is used to track the session. - unauthorizedDatasourceInstances: - type: array - description: | - Datasource instances that could not be queried because the user has not completed or has expired per-user OAuth, aggregated across all tools invoked in this turn. - items: - $ref: "#/components/schemas/UnauthorizedDatasourceInstance" DeleteChatsRequest: required: - ids @@ -8007,6 +8360,9 @@ components: items: $ref: "#/components/schemas/ChatMetadataResult" x-includeEmpty: true + cursor: + type: string + description: An opaque cursor for fetching the next page of results. If empty, there are no more results. GetChatApplicationRequest: required: - id @@ -8107,9 +8463,12 @@ components: description: Whether the agent supports streaming output. If true, you you can stream agent ouput. All agents currently support streaming. additionalProperties: true ErrorResponse: - type: string - title: ErrorResponse - description: Error message returned from the server + type: object + description: Error response returned for failed requests + properties: + message: + type: string + description: Client-facing error message describing what went wrong ActionSummary: type: object description: Represents a minimal summary of an action. @@ -8123,6 +8482,31 @@ components: display_name: type: string description: The display name of the action. + type: + type: string + description: The type of tool - RETRIEVAL for read-only operations, ACTION for operations that modify data. + auth_type: + type: string + description: The authentication type required - OAUTH_USER, OAUTH_ADMIN, API_KEY, BASIC_AUTH, DWD (domain-wide delegation), or NONE. + write_action_type: + type: string + description: For write actions only - REDIRECT (client renders URL) or EXECUTION (external server call). + is_setup_finished: + type: boolean + description: Whether this action has been fully configured and validated. + x-includeEmpty: true + data_source: + type: string + description: | + Indicates the kind of knowledge a tool would access or modify. + Company knowledge: + - Glean search, and any native tools that derive from it (e.g., expert search, code search) + - Native federated tools to company data sources (e.g., outlook search) + World knowledge: + - Platform action like bravewebsearch, geminiwebsearch, etc + Neutral knowledge: + - Native tools that don't access or modify content via APIs (e.g., file analyst, think) + - Platform read or write tools (creator has to determine their knowledge implications) AgentSchemas: properties: agent_id: @@ -9026,12 +9410,6 @@ components: federatedSearchRateLimitError: type: boolean description: Indicates the federated search results could not be fetched due to rate limiting. - unauthorizedDatasourceInstances: - type: array - description: | - Datasource instances that could not be queried because the user has not completed or has expired per-user OAuth. - items: - $ref: "#/components/schemas/UnauthorizedDatasourceInstance" x-speakeasy-name-override: GleanDataError ResultsResponse: properties: @@ -13217,6 +13595,49 @@ components: items: type: string description: List of field names to exclude from the export + ConfigurationValue: + type: object + properties: + value: + type: string + description: The configuration value as a string. Only one of value or valueList should be populated. + valueList: + type: array + items: + type: string + description: The configuration value as a list of strings. Only one of value or valueList should be populated. + description: A single configuration value, either a scalar or a list + ConfigurationValues: + type: object + additionalProperties: + $ref: '#/components/schemas/ConfigurationValue' + description: A map from configuration key names to their values + DatasourceInstanceConfiguration: + type: object + properties: + values: + $ref: '#/components/schemas/ConfigurationValues' + required: + - values + description: Configuration for a datasource instance + DatasourceConfigurationResponse: + type: object + properties: + configuration: + $ref: '#/components/schemas/DatasourceInstanceConfiguration' + required: + - configuration + description: | + The greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist are included. + UpdateDatasourceConfigurationRequest: + type: object + properties: + configuration: + $ref: '#/components/schemas/DatasourceInstanceConfiguration' + required: + - configuration + description: | + Request to update greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist may be set. ChatRequestStream: required: - messages @@ -13274,6 +13695,22 @@ components: description: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. schema: type: integer + datasourceId: + name: datasourceId + in: path + description: The datasource type identifier (e.g. o365sharepoint) + required: true + schema: + type: string + example: o365sharepoint + instanceId: + name: instanceId + in: path + description: The datasource instance identifier + required: true + schema: + type: string + example: o365sharepoint_abc123 responses: SuccessResponse: description: OK diff --git a/.speakeasy/tests.arazzo.yaml b/.speakeasy/tests.arazzo.yaml index 4494b3be..e0928b37 100644 --- a/.speakeasy/tests.arazzo.yaml +++ b/.speakeasy/tests.arazzo.yaml @@ -158449,3 +158449,48 @@ workflows: type: simple x-speakeasy-test-group: Authentication x-speakeasy-test-rebuild: true + - workflowId: getDatasourceInstanceConfiguration + steps: + - stepId: test + operationId: getDatasourceInstanceConfiguration + parameters: + - name: datasourceId + in: path + value: o365sharepoint + - name: instanceId + in: path + value: o365sharepoint_abc123 + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"configuration":{"values":{"key":{}}}} + type: simple + x-speakeasy-test-group: Datasources + x-speakeasy-test-rebuild: true + - workflowId: updateDatasourceInstanceConfiguration + steps: + - stepId: test + operationId: updateDatasourceInstanceConfiguration + parameters: + - name: datasourceId + in: path + value: o365sharepoint + - name: instanceId + in: path + value: o365sharepoint_abc123 + requestBody: + contentType: application/json + payload: + configuration: + values: {} + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"configuration":{"values":{}}} + type: simple + x-speakeasy-test-group: Datasources + x-speakeasy-test-rebuild: true diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index a38a230a..75da1015 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,12 +1,11 @@ -speakeasyVersion: 1.722.7 +speakeasyVersion: 1.749.0 sources: Glean API: sourceNamespace: glean-api-specs - sourceRevisionDigest: sha256:8b912e61e9727548c1e231c33a1cab5988630896d3c81639fe9b2961c8656d94 - sourceBlobDigest: sha256:079082f8fabe8221e1d14af242c72c22efa7be6626969593ccebcd74d19c3c80 + sourceRevisionDigest: sha256:6a2335cc231d76ee434d5bdd0a3b8290aeafb06f4cc067a26d040a6888a50147 + sourceBlobDigest: sha256:3352d0de667c15ec8c66f32c1e8899c4a4b2dc2fcc098c665bf4886c513d0423 tags: - latest - - speakeasy-sdk-regen-1771525162 Glean Client API: sourceNamespace: glean-client-api sourceRevisionDigest: sha256:4edc63ad559e4f2c9fb9ebf5edaaaaa9269f1874d271cfd84b441d6dacac43d2 @@ -17,10 +16,10 @@ targets: glean: source: Glean API sourceNamespace: glean-api-specs - sourceRevisionDigest: sha256:8b912e61e9727548c1e231c33a1cab5988630896d3c81639fe9b2961c8656d94 - sourceBlobDigest: sha256:079082f8fabe8221e1d14af242c72c22efa7be6626969593ccebcd74d19c3c80 + sourceRevisionDigest: sha256:6a2335cc231d76ee434d5bdd0a3b8290aeafb06f4cc067a26d040a6888a50147 + sourceBlobDigest: sha256:3352d0de667c15ec8c66f32c1e8899c4a4b2dc2fcc098c665bf4886c513d0423 codeSamplesNamespace: glean-api-specs-python-code-samples - codeSamplesRevisionDigest: sha256:07c1eebc0272335ffeb2b98c0b094c73bfefcf74858173515c00c683b16702f6 + codeSamplesRevisionDigest: sha256:df543b293a8284ffd151396bc73e4a80ac8afeac2ea651d41c07926d7c98c908 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index e1f3d1fa..f89350a5 100644 --- a/README.md +++ b/README.md @@ -470,6 +470,11 @@ For more information on obtaining the appropriate token type, please contact you * [list](docs/sdks/clientverification/README.md#list) - List verifications * [verify](docs/sdks/clientverification/README.md#verify) - Update verification +### [Datasources](docs/sdks/datasources/README.md) + +* [get_datasource_instance_configuration](docs/sdks/datasources/README.md#get_datasource_instance_configuration) - Get datasource instance configuration +* [update_datasource_instance_configuration](docs/sdks/datasources/README.md#update_datasource_instance_configuration) - Update datasource instance configuration + ### [Governance](docs/sdks/governance/README.md) * [createfindingsexport](docs/sdks/governance/README.md#createfindingsexport) - Creates findings export @@ -486,10 +491,10 @@ For more information on obtaining the appropriate token type, please contact you * [status](docs/sdks/indexingdatasource/README.md#status) - Beta: Get datasource status -### [Indexing.Datasources](docs/sdks/datasources/README.md) +### [Indexing.Datasources](docs/sdks/indexingdatasources/README.md) -* [add](docs/sdks/datasources/README.md#add) - Add or update datasource -* [retrieve_config](docs/sdks/datasources/README.md#retrieve_config) - Get datasource config +* [add](docs/sdks/indexingdatasources/README.md#add) - Add or update datasource +* [retrieve_config](docs/sdks/indexingdatasources/README.md#retrieve_config) - Get datasource config ### [Indexing.Documents](docs/sdks/indexingdocuments/README.md) @@ -512,7 +517,7 @@ For more information on obtaining the appropriate token type, please contact you * [~~count~~](docs/sdks/people/README.md#count) - Get user count :warning: **Deprecated** * [index](docs/sdks/people/README.md#index) - Index employee -* [bulk_index](docs/sdks/people/README.md#bulk_index) - Bulk index employees +* [~~bulk_index~~](docs/sdks/people/README.md#bulk_index) - Bulk index employees :warning: **Deprecated** * [process_all_employees_and_teams](docs/sdks/people/README.md#process_all_employees_and_teams) - Schedules the processing of uploaded employees and teams * [delete](docs/sdks/people/README.md#delete) - Delete employee * [index_team](docs/sdks/people/README.md#index_team) - Index team @@ -744,34 +749,14 @@ By default, an API error will raise a errors.GleanError exception, which has the ## Server Selection -### Server URL - -The recommended way to configure the Glean API server is to pass `server_url` when initializing the SDK client: +### Server Variables -```python -from glean.api_client import Glean - -glean = Glean( - api_token="your-api-token", - server_url="https://mycompany-be.glean.com", -) -``` - -Schemeless URLs (e.g., `"mycompany-be.glean.com"`) are also accepted — the SDK will automatically prepend `https://`. - -You can also configure the server URL via the `GLEAN_SERVER_URL` environment variable. - -### Server Variables (backwards compatible) - -For backwards compatibility, the SDK also supports the `instance` parameter, which constructs the server URL using the pattern `https://{instance}-be.glean.com`: +The default server `https://{instance}-be.glean.com` contains variables and is set to `https://instance-name-be.glean.com` by default. To override default values, the following parameters are available when initializing the SDK client instance: | Variable | Parameter | Default | Description | | ---------- | --------------- | ----------------- | ------------------------------------------------------------------------------------------------------ | | `instance` | `instance: str` | `"instance-name"` | The instance name (typically the email domain without the TLD) that determines the deployment backend. | -> [!NOTE] -> The `server_url` parameter is preferred over `instance`. If both are provided, `server_url` takes precedence. - #### Example ```python @@ -781,7 +766,8 @@ import os with Glean( - server_url="https://mycompany-be.glean.com", + server_idx=0, + instance="instance-name", api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: diff --git a/RELEASES.md b/RELEASES.md index 4bd4269a..676168f0 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -588,4 +588,14 @@ Based on: ### Generated - [python v0.12.8] . ### Releases -- [PyPI v0.12.8] https://pypi.org/project/glean-api-client/0.12.8 - . \ No newline at end of file +- [PyPI v0.12.8] https://pypi.org/project/glean-api-client/0.12.8 - . + +## 2026-03-09 02:13:57 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.749.0 (2.855.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.9] . +### Releases +- [PyPI v0.12.9] https://pypi.org/project/glean-api-client/0.12.9 - . \ No newline at end of file diff --git a/docs/errors/errorresponse.md b/docs/errors/errorresponse.md new file mode 100644 index 00000000..7ac30077 --- /dev/null +++ b/docs/errors/errorresponse.md @@ -0,0 +1,10 @@ +# ErrorResponse + +Error response returned for failed requests + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `message` | *Optional[str]* | :heavy_minus_sign: | Client-facing error message describing what went wrong | \ No newline at end of file diff --git a/docs/errors/gleandataerror.md b/docs/errors/gleandataerror.md index 4ea69fbe..7c4c0d90 100644 --- a/docs/errors/gleandataerror.md +++ b/docs/errors/gleandataerror.md @@ -3,11 +3,10 @@ ## Fields -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | -| `bad_gmail_token` | *Optional[bool]* | :heavy_minus_sign: | Indicates the gmail results could not be fetched due to bad token. | -| `bad_outlook_token` | *Optional[bool]* | :heavy_minus_sign: | Indicates the outlook results could not be fetched due to bad token. | -| `invalid_operators` | List[[models.InvalidOperatorValueError](../models/invalidoperatorvalueerror.md)] | :heavy_minus_sign: | Indicates results could not be fetched due to invalid operators in the query. | -| `error_messages` | List[[models.ErrorMessage](../models/errormessage.md)] | :heavy_minus_sign: | N/A | -| `federated_search_rate_limit_error` | *Optional[bool]* | :heavy_minus_sign: | Indicates the federated search results could not be fetched due to rate limiting. | -| `unauthorized_datasource_instances` | List[[models.UnauthorizedDatasourceInstance](../models/unauthorizeddatasourceinstance.md)] | :heavy_minus_sign: | Datasource instances that could not be queried because the user has not completed or has expired per-user OAuth.
| \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `bad_gmail_token` | *Optional[bool]* | :heavy_minus_sign: | Indicates the gmail results could not be fetched due to bad token. | +| `bad_outlook_token` | *Optional[bool]* | :heavy_minus_sign: | Indicates the outlook results could not be fetched due to bad token. | +| `invalid_operators` | List[[models.InvalidOperatorValueError](../models/invalidoperatorvalueerror.md)] | :heavy_minus_sign: | Indicates results could not be fetched due to invalid operators in the query. | +| `error_messages` | List[[models.ErrorMessage](../models/errormessage.md)] | :heavy_minus_sign: | N/A | +| `federated_search_rate_limit_error` | *Optional[bool]* | :heavy_minus_sign: | Indicates the federated search results could not be fetched due to rate limiting. | \ No newline at end of file diff --git a/docs/models/actionsummary.md b/docs/models/actionsummary.md index 3bf02ee0..fc60149c 100644 --- a/docs/models/actionsummary.md +++ b/docs/models/actionsummary.md @@ -5,7 +5,12 @@ Represents a minimal summary of an action. ## Fields -| Field | Type | Required | Description | -| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | -| `tool_id` | *str* | :heavy_check_mark: | The unique identifier of the action. | -| `display_name` | *str* | :heavy_check_mark: | The display name of the action. | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `tool_id` | *str* | :heavy_check_mark: | The unique identifier of the action. | +| `display_name` | *str* | :heavy_check_mark: | The display name of the action. | +| `type` | *Optional[str]* | :heavy_minus_sign: | The type of tool - RETRIEVAL for read-only operations, ACTION for operations that modify data. | +| `auth_type` | *Optional[str]* | :heavy_minus_sign: | The authentication type required - OAUTH_USER, OAUTH_ADMIN, API_KEY, BASIC_AUTH, DWD (domain-wide delegation), or NONE. | +| `write_action_type` | *Optional[str]* | :heavy_minus_sign: | For write actions only - REDIRECT (client renders URL) or EXECUTION (external server call). | +| `is_setup_finished` | *Optional[bool]* | :heavy_minus_sign: | Whether this action has been fully configured and validated. | +| `data_source` | *Optional[str]* | :heavy_minus_sign: | Indicates the kind of knowledge a tool would access or modify.
Company knowledge:
- Glean search, and any native tools that derive from it (e.g., expert search, code search)
- Native federated tools to company data sources (e.g., outlook search)
World knowledge:
- Platform action like bravewebsearch, geminiwebsearch, etc
Neutral knowledge:
- Native tools that don't access or modify content via APIs (e.g., file analyst, think)
- Platform read or write tools (creator has to determine their knowledge implications)
| \ No newline at end of file diff --git a/docs/models/activityenum.md b/docs/models/activityenum.md index 249769c9..7e266e55 100644 --- a/docs/models/activityenum.md +++ b/docs/models/activityenum.md @@ -2,6 +2,16 @@ Activity e.g. search, home page visit or all. +## Example Usage + +```python +from glean.api_client.models import ActivityEnum + +value = ActivityEnum.ALL + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/activityeventaction.md b/docs/models/activityeventaction.md index d364b2f6..f2a30c1b 100644 --- a/docs/models/activityeventaction.md +++ b/docs/models/activityeventaction.md @@ -2,6 +2,14 @@ The type of activity this represents. +## Example Usage + +```python +from glean.api_client.models import ActivityEventAction + +value = ActivityEventAction.VIEW +``` + ## Values diff --git a/docs/models/addcollectionitemserrorerrortype.md b/docs/models/addcollectionitemserrorerrortype.md index da1476fc..8a36415e 100644 --- a/docs/models/addcollectionitemserrorerrortype.md +++ b/docs/models/addcollectionitemserrorerrortype.md @@ -1,5 +1,13 @@ # AddCollectionItemsErrorErrorType +## Example Usage + +```python +from glean.api_client.models import AddCollectionItemsErrorErrorType + +value = AddCollectionItemsErrorErrorType.EXISTING_ITEM +``` + ## Values diff --git a/docs/models/agentenum.md b/docs/models/agentenum.md index 2d52ff02..561a7e77 100644 --- a/docs/models/agentenum.md +++ b/docs/models/agentenum.md @@ -2,6 +2,16 @@ Name of the agent. +## Example Usage + +```python +from glean.api_client.models import AgentEnum + +value = AgentEnum.DEFAULT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/agentexecutionstatus.md b/docs/models/agentexecutionstatus.md index c1bd49e6..d15717b2 100644 --- a/docs/models/agentexecutionstatus.md +++ b/docs/models/agentexecutionstatus.md @@ -2,6 +2,16 @@ The status of the run. One of 'error', 'success'. +## Example Usage + +```python +from glean.api_client.models import AgentExecutionStatus + +value = AgentExecutionStatus.ERROR + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/announcementchannel.md b/docs/models/announcementchannel.md index 17d0d36c..cf846a33 100644 --- a/docs/models/announcementchannel.md +++ b/docs/models/announcementchannel.md @@ -2,6 +2,16 @@ This determines whether this is a Social Feed post or a regular announcement. +## Example Usage + +```python +from glean.api_client.models import AnnouncementChannel + +value = AnnouncementChannel.MAIN + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/announcementposttype.md b/docs/models/announcementposttype.md index 4fdf8058..cd25f0b9 100644 --- a/docs/models/announcementposttype.md +++ b/docs/models/announcementposttype.md @@ -2,6 +2,16 @@ This determines whether this is an external-link post or a regular announcement post. TEXT - Regular announcement that can contain rich text. LINK - Announcement that is linked to an external site. +## Example Usage + +```python +from glean.api_client.models import AnnouncementPostType + +value = AnnouncementPostType.TEXT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/anonymouseventeventtype.md b/docs/models/anonymouseventeventtype.md index c49c89c1..484b59b0 100644 --- a/docs/models/anonymouseventeventtype.md +++ b/docs/models/anonymouseventeventtype.md @@ -2,6 +2,16 @@ The nature of the event, for example "out of office". +## Example Usage + +```python +from glean.api_client.models import AnonymousEventEventType + +value = AnonymousEventEventType.DEFAULT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/answercreationdatasourcetype.md b/docs/models/answercreationdatasourcetype.md index a3a2a0c0..22902121 100644 --- a/docs/models/answercreationdatasourcetype.md +++ b/docs/models/answercreationdatasourcetype.md @@ -1,5 +1,13 @@ # AnswerCreationDataSourceType +## Example Usage + +```python +from glean.api_client.models import AnswerCreationDataSourceType + +value = AnswerCreationDataSourceType.DOCUMENT +``` + ## Values diff --git a/docs/models/answersourcetype.md b/docs/models/answersourcetype.md index 052e5e4e..6de61089 100644 --- a/docs/models/answersourcetype.md +++ b/docs/models/answersourcetype.md @@ -1,5 +1,15 @@ # AnswerSourceType +## Example Usage + +```python +from glean.api_client.models import AnswerSourceType + +value = AnswerSourceType.DOCUMENT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/authconfig.md b/docs/models/authconfig.md index 4f7c0191..27e35de0 100644 --- a/docs/models/authconfig.md +++ b/docs/models/authconfig.md @@ -16,4 +16,5 @@ Config for tool's authentication method. | `scopes` | List[*str*] | :heavy_minus_sign: | A list of strings denoting the different scopes or access levels required by the tool. | | `audiences` | List[*str*] | :heavy_minus_sign: | A list of strings denoting the different audience which can access the tool. | | `authorization_url` | *Optional[str]* | :heavy_minus_sign: | The OAuth provider's endpoint, where access tokens are requested. | +| `resource` | *Optional[str]* | :heavy_minus_sign: | The OAuth 2.0 Resource Indicator (RFC 8707) for the protected resource. Discovered from Protected Resource Metadata (RFC 9728) during DCR. Included in authorization and token exchange requests when present. | | `last_authorized_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The time the tool was last authorized in ISO format (ISO 8601). | \ No newline at end of file diff --git a/docs/models/authconfigstatus.md b/docs/models/authconfigstatus.md index 60f45500..62132edb 100644 --- a/docs/models/authconfigstatus.md +++ b/docs/models/authconfigstatus.md @@ -2,6 +2,16 @@ Auth status of the tool. +## Example Usage + +```python +from glean.api_client.models import AuthConfigStatus + +value = AuthConfigStatus.AWAITING_AUTH + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/authconfigtype.md b/docs/models/authconfigtype.md index 03e3f113..0427eb93 100644 --- a/docs/models/authconfigtype.md +++ b/docs/models/authconfigtype.md @@ -7,6 +7,16 @@ Use 'OAUTH_*' when Glean calls an external API (e.g., Jira) on behalf of a user 'DWD' refers to domain wide delegation. +## Example Usage + +```python +from glean.api_client.models import AuthConfigType + +value = AuthConfigType.NONE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/author.md b/docs/models/author.md index d936487d..9145b866 100644 --- a/docs/models/author.md +++ b/docs/models/author.md @@ -1,5 +1,15 @@ # Author +## Example Usage + +```python +from glean.api_client.models import Author + +value = Author.USER + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/authstatus.md b/docs/models/authstatus.md index 5ce97097..f686ee27 100644 --- a/docs/models/authstatus.md +++ b/docs/models/authstatus.md @@ -2,6 +2,16 @@ The per-user authorization status for a datasource. +## Example Usage + +```python +from glean.api_client.models import AuthStatus + +value = AuthStatus.DISABLED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/authtype.md b/docs/models/authtype.md index 7be58bb9..120f9898 100644 --- a/docs/models/authtype.md +++ b/docs/models/authtype.md @@ -7,6 +7,16 @@ Use 'OAUTH_*' when Glean calls an external API (e.g., Jira) on behalf of a user 'DWD' refers to domain wide delegation. +## Example Usage + +```python +from glean.api_client.models import AuthType + +value = AuthType.NONE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/autocompleterequestresulttype.md b/docs/models/autocompleterequestresulttype.md index ead3f82a..1133a59c 100644 --- a/docs/models/autocompleterequestresulttype.md +++ b/docs/models/autocompleterequestresulttype.md @@ -1,5 +1,13 @@ # AutocompleteRequestResultType +## Example Usage + +```python +from glean.api_client.models import AutocompleteRequestResultType + +value = AutocompleteRequestResultType.ADDITIONAL_DOCUMENT +``` + ## Values diff --git a/docs/models/autocompleteresultresulttype.md b/docs/models/autocompleteresultresulttype.md index bb8a1893..9e2a7661 100644 --- a/docs/models/autocompleteresultresulttype.md +++ b/docs/models/autocompleteresultresulttype.md @@ -1,5 +1,15 @@ # AutocompleteResultResultType +## Example Usage + +```python +from glean.api_client.models import AutocompleteResultResultType + +value = AutocompleteResultResultType.ADDITIONAL_DOCUMENT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/bulkuploadhistoryeventstatus.md b/docs/models/bulkuploadhistoryeventstatus.md index d146ed1e..dcc80367 100644 --- a/docs/models/bulkuploadhistoryeventstatus.md +++ b/docs/models/bulkuploadhistoryeventstatus.md @@ -2,6 +2,16 @@ The status of the upload, an enum of ACTIVE, SUCCESSFUL +## Example Usage + +```python +from glean.api_client.models import BulkUploadHistoryEventStatus + +value = BulkUploadHistoryEventStatus.ACTIVE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/calendareventeventtype.md b/docs/models/calendareventeventtype.md index 8d5d6eb9..d477e13e 100644 --- a/docs/models/calendareventeventtype.md +++ b/docs/models/calendareventeventtype.md @@ -2,6 +2,16 @@ The nature of the event, for example "out of office". +## Example Usage + +```python +from glean.api_client.models import CalendarEventEventType + +value = CalendarEventEventType.DEFAULT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/chatfilefailurereason.md b/docs/models/chatfilefailurereason.md index 64426814..cef1b10b 100644 --- a/docs/models/chatfilefailurereason.md +++ b/docs/models/chatfilefailurereason.md @@ -2,6 +2,16 @@ Reason for failed status. +## Example Usage + +```python +from glean.api_client.models import ChatFileFailureReason + +value = ChatFileFailureReason.PARSE_FAILED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/chatfilestatus.md b/docs/models/chatfilestatus.md index ebbb1951..55e4883a 100644 --- a/docs/models/chatfilestatus.md +++ b/docs/models/chatfilestatus.md @@ -2,6 +2,16 @@ Current status of the file. +## Example Usage + +```python +from glean.api_client.models import ChatFileStatus + +value = ChatFileStatus.PROCESSING + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/chatresponse.md b/docs/models/chatresponse.md index 0ea540ed..c1e42aeb 100644 --- a/docs/models/chatresponse.md +++ b/docs/models/chatresponse.md @@ -5,11 +5,10 @@ A single response from the /chat backend. ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `messages` | List[[models.ChatMessage](../models/chatmessage.md)] | :heavy_minus_sign: | N/A | | -| `chat_id` | *Optional[str]* | :heavy_minus_sign: | The id of the associated Chat the messages belong to, if one exists. | | -| `follow_up_prompts` | List[*str*] | :heavy_minus_sign: | Follow-up prompts for the user to potentially use | | -| `backend_time_millis` | *Optional[int]* | :heavy_minus_sign: | Time in milliseconds the backend took to respond to the request. | 1100 | -| `chat_session_tracking_token` | *Optional[str]* | :heavy_minus_sign: | A token that is used to track the session. | | -| `unauthorized_datasource_instances` | List[[models.UnauthorizedDatasourceInstance](../models/unauthorizeddatasourceinstance.md)] | :heavy_minus_sign: | Datasource instances that could not be queried because the user has not completed or has expired per-user OAuth, aggregated across all tools invoked in this turn.
| | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `messages` | List[[models.ChatMessage](../models/chatmessage.md)] | :heavy_minus_sign: | N/A | | +| `chat_id` | *Optional[str]* | :heavy_minus_sign: | The id of the associated Chat the messages belong to, if one exists. | | +| `follow_up_prompts` | List[*str*] | :heavy_minus_sign: | Follow-up prompts for the user to potentially use | | +| `backend_time_millis` | *Optional[int]* | :heavy_minus_sign: | Time in milliseconds the backend took to respond to the request. | 1100 | +| `chat_session_tracking_token` | *Optional[str]* | :heavy_minus_sign: | A token that is used to track the session. | | \ No newline at end of file diff --git a/docs/models/clustertypeenum.md b/docs/models/clustertypeenum.md index 53fe04d6..11effcca 100644 --- a/docs/models/clustertypeenum.md +++ b/docs/models/clustertypeenum.md @@ -2,6 +2,16 @@ The reason for inclusion of clusteredResults. +## Example Usage + +```python +from glean.api_client.models import ClusterTypeEnum + +value = ClusterTypeEnum.SIMILAR + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/collectionerrorerrorcode.md b/docs/models/collectionerrorerrorcode.md index 7903ee61..dd389508 100644 --- a/docs/models/collectionerrorerrorcode.md +++ b/docs/models/collectionerrorerrorcode.md @@ -1,5 +1,15 @@ # CollectionErrorErrorCode +## Example Usage + +```python +from glean.api_client.models import CollectionErrorErrorCode + +value = CollectionErrorErrorCode.NAME_EXISTS + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/collectionitemdescriptoritemtype.md b/docs/models/collectionitemdescriptoritemtype.md index 25e2a57f..46d88741 100644 --- a/docs/models/collectionitemdescriptoritemtype.md +++ b/docs/models/collectionitemdescriptoritemtype.md @@ -1,5 +1,13 @@ # CollectionItemDescriptorItemType +## Example Usage + +```python +from glean.api_client.models import CollectionItemDescriptorItemType + +value = CollectionItemDescriptorItemType.DOCUMENT +``` + ## Values diff --git a/docs/models/collectionitemitemtype.md b/docs/models/collectionitemitemtype.md index 937308f8..69999ace 100644 --- a/docs/models/collectionitemitemtype.md +++ b/docs/models/collectionitemitemtype.md @@ -1,5 +1,15 @@ # CollectionItemItemType +## Example Usage + +```python +from glean.api_client.models import CollectionItemItemType + +value = CollectionItemItemType.DOCUMENT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/collectionpinnablecategories.md b/docs/models/collectionpinnablecategories.md index d9ab23f1..f9ed8d05 100644 --- a/docs/models/collectionpinnablecategories.md +++ b/docs/models/collectionpinnablecategories.md @@ -2,6 +2,16 @@ Categories a Collection can be pinned to. +## Example Usage + +```python +from glean.api_client.models import CollectionPinnableCategories + +value = CollectionPinnableCategories.COMPANY_RESOURCE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/collectionpinnabletargets.md b/docs/models/collectionpinnabletargets.md index 74222966..e58d9dfb 100644 --- a/docs/models/collectionpinnabletargets.md +++ b/docs/models/collectionpinnabletargets.md @@ -2,6 +2,16 @@ What targets can a Collection be pinned to. +## Example Usage + +```python +from glean.api_client.models import CollectionPinnableTargets + +value = CollectionPinnableTargets.RESOURCE_CARD + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/communicationchannel.md b/docs/models/communicationchannel.md index eee4a859..4acce537 100644 --- a/docs/models/communicationchannel.md +++ b/docs/models/communicationchannel.md @@ -1,5 +1,15 @@ # CommunicationChannel +## Example Usage + +```python +from glean.api_client.models import CommunicationChannel + +value = CommunicationChannel.COMMUNICATION_CHANNEL_EMAIL + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/conferencedatasource.md b/docs/models/conferencedatasource.md index b9e1060a..a01e5df9 100644 --- a/docs/models/conferencedatasource.md +++ b/docs/models/conferencedatasource.md @@ -1,5 +1,15 @@ # ConferenceDataSource +## Example Usage + +```python +from glean.api_client.models import ConferenceDataSource + +value = ConferenceDataSource.NATIVE_CONFERENCE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/configurationvalue.md b/docs/models/configurationvalue.md new file mode 100644 index 00000000..aea215fe --- /dev/null +++ b/docs/models/configurationvalue.md @@ -0,0 +1,11 @@ +# ConfigurationValue + +A single configuration value, either a scalar or a list + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| `value` | *Optional[str]* | :heavy_minus_sign: | The configuration value as a string. Only one of value or valueList should be populated. | +| `value_list` | List[*str*] | :heavy_minus_sign: | The configuration value as a list of strings. Only one of value or valueList should be populated. | \ No newline at end of file diff --git a/docs/models/connectortype.md b/docs/models/connectortype.md index 94042984..39fa8c6e 100644 --- a/docs/models/connectortype.md +++ b/docs/models/connectortype.md @@ -2,6 +2,16 @@ The source from which document content was pulled, e.g. an API crawl or browser history +## Example Usage + +```python +from glean.api_client.models import ConnectorType + +value = ConnectorType.API_CRAWL + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/contenttype.md b/docs/models/contenttype.md index a68e84da..f20d9c65 100644 --- a/docs/models/contenttype.md +++ b/docs/models/contenttype.md @@ -1,5 +1,13 @@ # ContentType +## Example Usage + +```python +from glean.api_client.models import ContentType + +value = ContentType.TEXT +``` + ## Values diff --git a/docs/models/createannouncementrequestchannel.md b/docs/models/createannouncementrequestchannel.md index 2cefcb7e..e9068e68 100644 --- a/docs/models/createannouncementrequestchannel.md +++ b/docs/models/createannouncementrequestchannel.md @@ -2,6 +2,14 @@ This determines whether this is a Social Feed post or a regular announcement. +## Example Usage + +```python +from glean.api_client.models import CreateAnnouncementRequestChannel + +value = CreateAnnouncementRequestChannel.MAIN +``` + ## Values diff --git a/docs/models/createannouncementrequestposttype.md b/docs/models/createannouncementrequestposttype.md index f5442c47..0c04105d 100644 --- a/docs/models/createannouncementrequestposttype.md +++ b/docs/models/createannouncementrequestposttype.md @@ -2,6 +2,14 @@ This determines whether this is an external-link post or a regular announcement post. TEXT - Regular announcement that can contain rich text. LINK - Announcement that is linked to an external site. +## Example Usage + +```python +from glean.api_client.models import CreateAnnouncementRequestPostType + +value = CreateAnnouncementRequestPostType.TEXT +``` + ## Values diff --git a/docs/models/customdatasourceconfigconnectortype.md b/docs/models/customdatasourceconfigconnectortype.md index 81126c24..0478f668 100644 --- a/docs/models/customdatasourceconfigconnectortype.md +++ b/docs/models/customdatasourceconfigconnectortype.md @@ -2,6 +2,16 @@ The source from which document content was pulled, e.g. an API crawl or browser history +## Example Usage + +```python +from glean.api_client.models import CustomDatasourceConfigConnectorType + +value = CustomDatasourceConfigConnectorType.API_CRAWL + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/customsensitiverulelikelihoodthreshold.md b/docs/models/customsensitiverulelikelihoodthreshold.md index b7676f4d..fae76418 100644 --- a/docs/models/customsensitiverulelikelihoodthreshold.md +++ b/docs/models/customsensitiverulelikelihoodthreshold.md @@ -2,6 +2,16 @@ Likelihood threshold for BUILT_IN infotypes (e.g., LIKELY, VERY_LIKELY). Only applicable for BUILT_IN type. +## Example Usage + +```python +from glean.api_client.models import CustomSensitiveRuleLikelihoodThreshold + +value = CustomSensitiveRuleLikelihoodThreshold.LIKELY + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/customsensitiveruletype.md b/docs/models/customsensitiveruletype.md index fe80b6f8..6961690d 100644 --- a/docs/models/customsensitiveruletype.md +++ b/docs/models/customsensitiveruletype.md @@ -2,6 +2,16 @@ Type of the custom sensitive rule. +## Example Usage + +```python +from glean.api_client.models import CustomSensitiveRuleType + +value = CustomSensitiveRuleType.REGEX + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/datasource.md b/docs/models/datasource.md index 154a81d3..c9eaa5a7 100644 --- a/docs/models/datasource.md +++ b/docs/models/datasource.md @@ -2,6 +2,14 @@ The type of the data source. +## Example Usage + +```python +from glean.api_client.models import Datasource + +value = Datasource.SLACK +``` + ## Values diff --git a/docs/models/datasourcecategory.md b/docs/models/datasourcecategory.md index 44d81a93..eccdbdeb 100644 --- a/docs/models/datasourcecategory.md +++ b/docs/models/datasourcecategory.md @@ -2,6 +2,16 @@ The type of this datasource. It is an important signal for relevance and must be specified and cannot be UNCATEGORIZED. Please refer to [this](https://developers.glean.com/docs/indexing_api_datasource_category/) for more details. +## Example Usage + +```python +from glean.api_client.models import DatasourceCategory + +value = DatasourceCategory.UNCATEGORIZED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/datasourceconfigurationresponse.md b/docs/models/datasourceconfigurationresponse.md new file mode 100644 index 00000000..ba3be132 --- /dev/null +++ b/docs/models/datasourceconfigurationresponse.md @@ -0,0 +1,11 @@ +# DatasourceConfigurationResponse + +The greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist are included. + + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `configuration` | [models.DatasourceInstanceConfiguration](../models/datasourceinstanceconfiguration.md) | :heavy_check_mark: | Configuration for a datasource instance | \ No newline at end of file diff --git a/docs/models/datasourceinstanceconfiguration.md b/docs/models/datasourceinstanceconfiguration.md new file mode 100644 index 00000000..4aa3cb98 --- /dev/null +++ b/docs/models/datasourceinstanceconfiguration.md @@ -0,0 +1,10 @@ +# DatasourceInstanceConfiguration + +Configuration for a datasource instance + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | +| `values` | Dict[str, [models.ConfigurationValue](../models/configurationvalue.md)] | :heavy_check_mark: | A map from configuration key names to their values | \ No newline at end of file diff --git a/docs/models/datasourcestype.md b/docs/models/datasourcestype.md index 41b7c170..d20e1336 100644 --- a/docs/models/datasourcestype.md +++ b/docs/models/datasourcestype.md @@ -2,6 +2,16 @@ The types of datasource for which to run the report/policy. +## Example Usage + +```python +from glean.api_client.models import DatasourcesType + +value = DatasourcesType.ALL + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/datasourcevisibility.md b/docs/models/datasourcevisibility.md index f9ff5b88..3ae0d199 100644 --- a/docs/models/datasourcevisibility.md +++ b/docs/models/datasourcevisibility.md @@ -2,6 +2,16 @@ The visibility of the datasource, an enum of VISIBLE_TO_ALL, VISIBLE_TO_TEST_GROUP, NOT_VISIBLE +## Example Usage + +```python +from glean.api_client.models import DatasourceVisibility + +value = DatasourceVisibility.ENABLED_FOR_ALL + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/direction.md b/docs/models/direction.md index 14a61a1d..efe05ba9 100644 --- a/docs/models/direction.md +++ b/docs/models/direction.md @@ -2,6 +2,14 @@ The direction of the results asked with respect to the reference timestamp. Missing field defaults to OLDER. Only applicable when using a message_id. +## Example Usage + +```python +from glean.api_client.models import Direction + +value = Direction.OLDER +``` + ## Values diff --git a/docs/models/dlpfrequency.md b/docs/models/dlpfrequency.md index 9ae76ef7..17476f3f 100644 --- a/docs/models/dlpfrequency.md +++ b/docs/models/dlpfrequency.md @@ -2,6 +2,16 @@ Interval between scans. DAILY is deprecated. +## Example Usage + +```python +from glean.api_client.models import DlpFrequency + +value = DlpFrequency.ONCE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/dlpreportstatus.md b/docs/models/dlpreportstatus.md index ba04744a..ed2a14b5 100644 --- a/docs/models/dlpreportstatus.md +++ b/docs/models/dlpreportstatus.md @@ -2,6 +2,16 @@ The status of the policy/report. Only ACTIVE status will be picked for scans. +## Example Usage + +```python +from glean.api_client.models import DlpReportStatus + +value = DlpReportStatus.ACTIVE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/dlpseverity.md b/docs/models/dlpseverity.md index f53e3d5b..4083ea25 100644 --- a/docs/models/dlpseverity.md +++ b/docs/models/dlpseverity.md @@ -2,6 +2,16 @@ Severity levels for DLP findings and analyses. +## Example Usage + +```python +from glean.api_client.models import DlpSeverity + +value = DlpSeverity.UNSPECIFIED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/dlpsimpleresult.md b/docs/models/dlpsimpleresult.md index f6e42384..52a18a11 100644 --- a/docs/models/dlpsimpleresult.md +++ b/docs/models/dlpsimpleresult.md @@ -1,5 +1,15 @@ # DlpSimpleResult +## Example Usage + +```python +from glean.api_client.models import DlpSimpleResult + +value = DlpSimpleResult.SUCCESS + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/doccategory.md b/docs/models/doccategory.md index 3f3a7ec6..3560e894 100644 --- a/docs/models/doccategory.md +++ b/docs/models/doccategory.md @@ -2,6 +2,16 @@ The document category of this object type. +## Example Usage + +```python +from glean.api_client.models import DocCategory + +value = DocCategory.UNCATEGORIZED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/documentspecugctype1.md b/docs/models/documentspecugctype1.md index 8dababc6..6b1e6c24 100644 --- a/docs/models/documentspecugctype1.md +++ b/docs/models/documentspecugctype1.md @@ -2,6 +2,16 @@ The type of the user generated content (UGC datasource). +## Example Usage + +```python +from glean.api_client.models import DocumentSpecUgcType1 + +value = DocumentSpecUgcType1.ANNOUNCEMENTS + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/documentspecugctype2.md b/docs/models/documentspecugctype2.md index 313e7a43..a105173d 100644 --- a/docs/models/documentspecugctype2.md +++ b/docs/models/documentspecugctype2.md @@ -2,6 +2,16 @@ The type of the user generated content (UGC datasource). +## Example Usage + +```python +from glean.api_client.models import DocumentSpecUgcType2 + +value = DocumentSpecUgcType2.ANNOUNCEMENTS + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/documentvisibility.md b/docs/models/documentvisibility.md index e8538a99..794df8a8 100644 --- a/docs/models/documentvisibility.md +++ b/docs/models/documentvisibility.md @@ -2,6 +2,16 @@ The level of visibility of the document as understood by our system. +## Example Usage + +```python +from glean.api_client.models import DocumentVisibility + +value = DocumentVisibility.PRIVATE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/documentvisibilityoverrideoverride.md b/docs/models/documentvisibilityoverrideoverride.md index 0f15995d..fc4aad73 100644 --- a/docs/models/documentvisibilityoverrideoverride.md +++ b/docs/models/documentvisibilityoverrideoverride.md @@ -2,6 +2,16 @@ The visibility-override state of the document. +## Example Usage + +```python +from glean.api_client.models import DocumentVisibilityOverrideOverride + +value = DocumentVisibilityOverrideOverride.NONE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/documentvisibilityupdateresultoverride.md b/docs/models/documentvisibilityupdateresultoverride.md index c60dc325..519b41ba 100644 --- a/docs/models/documentvisibilityupdateresultoverride.md +++ b/docs/models/documentvisibilityupdateresultoverride.md @@ -2,6 +2,16 @@ The visibility-override state of the document. +## Example Usage + +```python +from glean.api_client.models import DocumentVisibilityUpdateResultOverride + +value = DocumentVisibilityUpdateResultOverride.NONE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/editanswerrequestsourcetype.md b/docs/models/editanswerrequestsourcetype.md index 19a8a427..2b4fcbd7 100644 --- a/docs/models/editanswerrequestsourcetype.md +++ b/docs/models/editanswerrequestsourcetype.md @@ -1,5 +1,13 @@ # EditAnswerRequestSourceType +## Example Usage + +```python +from glean.api_client.models import EditAnswerRequestSourceType + +value = EditAnswerRequestSourceType.DOCUMENT +``` + ## Values diff --git a/docs/models/editcollectionresponseerrorcode.md b/docs/models/editcollectionresponseerrorcode.md index e6f6a8fa..722a81f2 100644 --- a/docs/models/editcollectionresponseerrorcode.md +++ b/docs/models/editcollectionresponseerrorcode.md @@ -1,5 +1,15 @@ # EditCollectionResponseErrorCode +## Example Usage + +```python +from glean.api_client.models import EditCollectionResponseErrorCode + +value = EditCollectionResponseErrorCode.NAME_EXISTS + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/entitiessortorder.md b/docs/models/entitiessortorder.md index 3a360150..35de67c5 100644 --- a/docs/models/entitiessortorder.md +++ b/docs/models/entitiessortorder.md @@ -2,6 +2,16 @@ Different ways of sorting entities +## Example Usage + +```python +from glean.api_client.models import EntitiesSortOrder + +value = EntitiesSortOrder.ENTITY_NAME + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/entitytype.md b/docs/models/entitytype.md index e9114485..cc245095 100644 --- a/docs/models/entitytype.md +++ b/docs/models/entitytype.md @@ -2,6 +2,16 @@ The type of entity. +## Example Usage + +```python +from glean.api_client.models import EntityType + +value = EntityType.PERSON + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/event.md b/docs/models/event.md index cddb621e..f67e3806 100644 --- a/docs/models/event.md +++ b/docs/models/event.md @@ -2,6 +2,14 @@ The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`. +## Example Usage + +```python +from glean.api_client.models import Event + +value = Event.CLICK +``` + ## Values diff --git a/docs/models/eventclassificationname.md b/docs/models/eventclassificationname.md index f66268a0..809a1e83 100644 --- a/docs/models/eventclassificationname.md +++ b/docs/models/eventclassificationname.md @@ -2,6 +2,14 @@ The name for a generated classification of an event. +## Example Usage + +```python +from glean.api_client.models import EventClassificationName + +value = EventClassificationName.EXTERNAL_EVENT +``` + ## Values diff --git a/docs/models/eventstrategyname.md b/docs/models/eventstrategyname.md index 51c02370..9fa8de74 100644 --- a/docs/models/eventstrategyname.md +++ b/docs/models/eventstrategyname.md @@ -2,6 +2,16 @@ The name of method used to surface relevant data for a given calendar event. +## Example Usage + +```python +from glean.api_client.models import EventStrategyName + +value = EventStrategyName.CUSTOMER_CARD + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/exportinfostatus.md b/docs/models/exportinfostatus.md index 1639f2fa..f257dc52 100644 --- a/docs/models/exportinfostatus.md +++ b/docs/models/exportinfostatus.md @@ -2,6 +2,16 @@ The status of the export +## Example Usage + +```python +from glean.api_client.models import ExportInfoStatus + +value = ExportInfoStatus.PENDING + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/exporttype.md b/docs/models/exporttype.md index fda2a24f..a58a0943 100644 --- a/docs/models/exporttype.md +++ b/docs/models/exporttype.md @@ -2,6 +2,14 @@ The type of export to perform +## Example Usage + +```python +from glean.api_client.models import ExportType + +value = ExportType.FINDINGS +``` + ## Values diff --git a/docs/models/feedbackcategory.md b/docs/models/feedbackcategory.md index 0cd81ec7..9251d2ec 100644 --- a/docs/models/feedbackcategory.md +++ b/docs/models/feedbackcategory.md @@ -2,6 +2,14 @@ The feature category to which the feedback applies. These should be broad product areas such as Announcements, Answers, Search, etc. rather than specific components or UI treatments within those areas. +## Example Usage + +```python +from glean.api_client.models import FeedbackCategory + +value = FeedbackCategory.ANNOUNCEMENT +``` + ## Values diff --git a/docs/models/feedbackchannel.md b/docs/models/feedbackchannel.md index e1126a1f..10a59bd3 100644 --- a/docs/models/feedbackchannel.md +++ b/docs/models/feedbackchannel.md @@ -1,5 +1,13 @@ # FeedbackChannel +## Example Usage + +```python +from glean.api_client.models import FeedbackChannel + +value = FeedbackChannel.COMPANY +``` + ## Values diff --git a/docs/models/feedrequestcategory.md b/docs/models/feedrequestcategory.md index b6590356..d2fdd8e2 100644 --- a/docs/models/feedrequestcategory.md +++ b/docs/models/feedrequestcategory.md @@ -1,5 +1,13 @@ # FeedRequestCategory +## Example Usage + +```python +from glean.api_client.models import FeedRequestCategory + +value = FeedRequestCategory.DOCUMENT_SUGGESTION +``` + ## Values diff --git a/docs/models/feedresultcategory.md b/docs/models/feedresultcategory.md index 5de26d31..d21a87b1 100644 --- a/docs/models/feedresultcategory.md +++ b/docs/models/feedresultcategory.md @@ -2,6 +2,16 @@ Category of the result, one of the requested categories in incoming request. +## Example Usage + +```python +from glean.api_client.models import FeedResultCategory + +value = FeedResultCategory.DOCUMENT_SUGGESTION + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/fieldscope.md b/docs/models/fieldscope.md index e57e7233..3c3c097a 100644 --- a/docs/models/fieldscope.md +++ b/docs/models/fieldscope.md @@ -2,6 +2,14 @@ Controls which fields to include in the export +## Example Usage + +```python +from glean.api_client.models import FieldScope + +value = FieldScope.ALL +``` + ## Values diff --git a/docs/models/format_.md b/docs/models/format_.md index 8e5b70d9..d5119bf1 100644 --- a/docs/models/format_.md +++ b/docs/models/format_.md @@ -2,6 +2,14 @@ defines how to render this particular displayable list card +## Example Usage + +```python +from glean.api_client.models import Format + +value = Format.LIST +``` + ## Values diff --git a/docs/models/generatedqnastatus.md b/docs/models/generatedqnastatus.md index 5a8c5499..a7b0cc91 100644 --- a/docs/models/generatedqnastatus.md +++ b/docs/models/generatedqnastatus.md @@ -2,6 +2,16 @@ Status of backend generating the answer +## Example Usage + +```python +from glean.api_client.models import GeneratedQnaStatus + +value = GeneratedQnaStatus.COMPUTING + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/getanswererrorerrortype.md b/docs/models/getanswererrorerrortype.md index d2af7588..3f9be2ec 100644 --- a/docs/models/getanswererrorerrortype.md +++ b/docs/models/getanswererrorerrortype.md @@ -1,5 +1,15 @@ # GetAnswerErrorErrorType +## Example Usage + +```python +from glean.api_client.models import GetAnswerErrorErrorType + +value = GetAnswerErrorErrorType.NO_PERMISSION + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/getdatasourceinstanceconfigurationrequest.md b/docs/models/getdatasourceinstanceconfigurationrequest.md new file mode 100644 index 00000000..949f49d1 --- /dev/null +++ b/docs/models/getdatasourceinstanceconfigurationrequest.md @@ -0,0 +1,9 @@ +# GetDatasourceInstanceConfigurationRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | +| `datasource_id` | *str* | :heavy_check_mark: | The datasource type identifier (e.g. o365sharepoint) | o365sharepoint | +| `instance_id` | *str* | :heavy_check_mark: | The datasource instance identifier | o365sharepoint_abc123 | \ No newline at end of file diff --git a/docs/models/getdocumentsrequestincludefield.md b/docs/models/getdocumentsrequestincludefield.md index 1db38b74..6d537deb 100644 --- a/docs/models/getdocumentsrequestincludefield.md +++ b/docs/models/getdocumentsrequestincludefield.md @@ -1,5 +1,13 @@ # GetDocumentsRequestIncludeField +## Example Usage + +```python +from glean.api_client.models import GetDocumentsRequestIncludeField + +value = GetDocumentsRequestIncludeField.LAST_VIEWED_AT +``` + ## Values diff --git a/docs/models/gleandataerror.md b/docs/models/gleandataerror.md index 4ea69fbe..7c4c0d90 100644 --- a/docs/models/gleandataerror.md +++ b/docs/models/gleandataerror.md @@ -3,11 +3,10 @@ ## Fields -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | -| `bad_gmail_token` | *Optional[bool]* | :heavy_minus_sign: | Indicates the gmail results could not be fetched due to bad token. | -| `bad_outlook_token` | *Optional[bool]* | :heavy_minus_sign: | Indicates the outlook results could not be fetched due to bad token. | -| `invalid_operators` | List[[models.InvalidOperatorValueError](../models/invalidoperatorvalueerror.md)] | :heavy_minus_sign: | Indicates results could not be fetched due to invalid operators in the query. | -| `error_messages` | List[[models.ErrorMessage](../models/errormessage.md)] | :heavy_minus_sign: | N/A | -| `federated_search_rate_limit_error` | *Optional[bool]* | :heavy_minus_sign: | Indicates the federated search results could not be fetched due to rate limiting. | -| `unauthorized_datasource_instances` | List[[models.UnauthorizedDatasourceInstance](../models/unauthorizeddatasourceinstance.md)] | :heavy_minus_sign: | Datasource instances that could not be queried because the user has not completed or has expired per-user OAuth.
| \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `bad_gmail_token` | *Optional[bool]* | :heavy_minus_sign: | Indicates the gmail results could not be fetched due to bad token. | +| `bad_outlook_token` | *Optional[bool]* | :heavy_minus_sign: | Indicates the outlook results could not be fetched due to bad token. | +| `invalid_operators` | List[[models.InvalidOperatorValueError](../models/invalidoperatorvalueerror.md)] | :heavy_minus_sign: | Indicates results could not be fetched due to invalid operators in the query. | +| `error_messages` | List[[models.ErrorMessage](../models/errormessage.md)] | :heavy_minus_sign: | N/A | +| `federated_search_rate_limit_error` | *Optional[bool]* | :heavy_minus_sign: | Indicates the federated search results could not be fetched due to rate limiting. | \ No newline at end of file diff --git a/docs/models/granttype.md b/docs/models/granttype.md index 503fb8a6..6e2e1b8f 100644 --- a/docs/models/granttype.md +++ b/docs/models/granttype.md @@ -2,6 +2,16 @@ The type of grant type being used. +## Example Usage + +```python +from glean.api_client.models import GrantType + +value = GrantType.AUTH_CODE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/grouptype.md b/docs/models/grouptype.md index b1d6ca4f..4e38962c 100644 --- a/docs/models/grouptype.md +++ b/docs/models/grouptype.md @@ -2,6 +2,16 @@ The type of user group +## Example Usage + +```python +from glean.api_client.models import GroupType + +value = GroupType.DEPARTMENT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/hidebuiltinfacet.md b/docs/models/hidebuiltinfacet.md index 35925329..50276f1d 100644 --- a/docs/models/hidebuiltinfacet.md +++ b/docs/models/hidebuiltinfacet.md @@ -1,5 +1,15 @@ # HideBuiltInFacet +## Example Usage + +```python +from glean.api_client.models import HideBuiltInFacet + +value = HideBuiltInFacet.TYPE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/icontype.md b/docs/models/icontype.md index 611f3f3f..f0abae40 100644 --- a/docs/models/icontype.md +++ b/docs/models/icontype.md @@ -1,5 +1,15 @@ # IconType +## Example Usage + +```python +from glean.api_client.models import IconType + +value = IconType.COLLECTION + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/idtype.md b/docs/models/idtype.md index d1f0b1f8..4f71310b 100644 --- a/docs/models/idtype.md +++ b/docs/models/idtype.md @@ -2,6 +2,14 @@ Type of the id in the incoming request. +## Example Usage + +```python +from glean.api_client.models import IDType + +value = IDType.CHANNEL_NAME +``` + ## Values diff --git a/docs/models/includetype.md b/docs/models/includetype.md index a01749ba..bd1e080c 100644 --- a/docs/models/includetype.md +++ b/docs/models/includetype.md @@ -1,5 +1,13 @@ # IncludeType +## Example Usage + +```python +from glean.api_client.models import IncludeType + +value = IncludeType.PEOPLE_WITHOUT_MANAGER +``` + ## Values diff --git a/docs/models/inputoptionstimeperiodtype.md b/docs/models/inputoptionstimeperiodtype.md index c3ec83a8..26843791 100644 --- a/docs/models/inputoptionstimeperiodtype.md +++ b/docs/models/inputoptionstimeperiodtype.md @@ -2,6 +2,16 @@ Type of time period for which to run the report/policy. PAST_DAY is deprecated. +## Example Usage + +```python +from glean.api_client.models import InputOptionsTimePeriodType + +value = InputOptionsTimePeriodType.ALL_TIME + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/inviteinfo.md b/docs/models/inviteinfo.md index e929b033..62732992 100644 --- a/docs/models/inviteinfo.md +++ b/docs/models/inviteinfo.md @@ -10,5 +10,5 @@ Information regarding the invite status of a person. | `sign_up_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The time this person signed up in ISO format (ISO 8601). | | | `invites` | List[[models.ChannelInviteInfo](../models/channelinviteinfo.md)] | :heavy_minus_sign: | Latest invites received by the user for each channel | | | `inviter` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | -| ~~`invite_time`~~ | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

The time this person was invited in ISO format (ISO 8601). | | -| ~~`reminder_time`~~ | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

The time this person was reminded in ISO format (ISO 8601) if a reminder was sent. | | \ No newline at end of file +| ~~`invite_time`~~ | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use ChannelInviteInfo instead.

The time this person was invited in ISO format (ISO 8601). | | +| ~~`reminder_time`~~ | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use ChannelInviteInfo instead.

The time this person was reminded in ISO format (ISO 8601) if a reminder was sent. | | \ No newline at end of file diff --git a/docs/models/issue.md b/docs/models/issue.md index c6db8485..7024b2f4 100644 --- a/docs/models/issue.md +++ b/docs/models/issue.md @@ -1,5 +1,13 @@ # Issue +## Example Usage + +```python +from glean.api_client.models import Issue + +value = Issue.INACCURATE_RESPONSE +``` + ## Values diff --git a/docs/models/justificationtype.md b/docs/models/justificationtype.md index 4bcceecf..61127e97 100644 --- a/docs/models/justificationtype.md +++ b/docs/models/justificationtype.md @@ -2,6 +2,16 @@ Type of the justification. +## Example Usage + +```python +from glean.api_client.models import JustificationType + +value = JustificationType.FREQUENTLY_ACCESSED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/knowledgetype.md b/docs/models/knowledgetype.md index 83754f3c..f08f4a63 100644 --- a/docs/models/knowledgetype.md +++ b/docs/models/knowledgetype.md @@ -2,6 +2,16 @@ Indicates the kind of knowledge a tool would access or modify. +## Example Usage + +```python +from glean.api_client.models import KnowledgeType + +value = KnowledgeType.NEUTRAL_KNOWLEDGE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/lastscanstatus.md b/docs/models/lastscanstatus.md index 32a47a4b..b870d4d4 100644 --- a/docs/models/lastscanstatus.md +++ b/docs/models/lastscanstatus.md @@ -1,5 +1,15 @@ # LastScanStatus +## Example Usage + +```python +from glean.api_client.models import LastScanStatus + +value = LastScanStatus.PENDING + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/listchatsresponse.md b/docs/models/listchatsresponse.md index 95dfd859..76be2b6b 100644 --- a/docs/models/listchatsresponse.md +++ b/docs/models/listchatsresponse.md @@ -3,6 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `chat_results` | List[[models.ChatMetadataResult](../models/chatmetadataresult.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `chat_results` | List[[models.ChatMetadataResult](../models/chatmetadataresult.md)] | :heavy_minus_sign: | N/A | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | An opaque cursor for fetching the next page of results. If empty, there are no more results. | \ No newline at end of file diff --git a/docs/models/listentitiesrequestentitytype.md b/docs/models/listentitiesrequestentitytype.md index 84664785..4977acf6 100644 --- a/docs/models/listentitiesrequestentitytype.md +++ b/docs/models/listentitiesrequestentitytype.md @@ -1,5 +1,13 @@ # ListEntitiesRequestEntityType +## Example Usage + +```python +from glean.api_client.models import ListEntitiesRequestEntityType + +value = ListEntitiesRequestEntityType.PEOPLE +``` + ## Values diff --git a/docs/models/listentitiesrequestincludefield.md b/docs/models/listentitiesrequestincludefield.md index dde5f54d..443d5026 100644 --- a/docs/models/listentitiesrequestincludefield.md +++ b/docs/models/listentitiesrequestincludefield.md @@ -1,5 +1,13 @@ # ListEntitiesRequestIncludeField +## Example Usage + +```python +from glean.api_client.models import ListEntitiesRequestIncludeField + +value = ListEntitiesRequestIncludeField.PEOPLE +``` + ## Values diff --git a/docs/models/listshortcutspaginatedrequestincludefield.md b/docs/models/listshortcutspaginatedrequestincludefield.md index a0668712..b68782a7 100644 --- a/docs/models/listshortcutspaginatedrequestincludefield.md +++ b/docs/models/listshortcutspaginatedrequestincludefield.md @@ -1,5 +1,13 @@ # ListShortcutsPaginatedRequestIncludeField +## Example Usage + +```python +from glean.api_client.models import ListShortcutsPaginatedRequestIncludeField + +value = ListShortcutsPaginatedRequestIncludeField.FACETS +``` + ## Values diff --git a/docs/models/manualfeedbackinfosource.md b/docs/models/manualfeedbackinfosource.md index 27c53bc4..e5e604b2 100644 --- a/docs/models/manualfeedbackinfosource.md +++ b/docs/models/manualfeedbackinfosource.md @@ -2,6 +2,14 @@ The source associated with the Feedback.event.MANUAL_FEEDBACK event. +## Example Usage + +```python +from glean.api_client.models import ManualFeedbackInfoSource + +value = ManualFeedbackInfoSource.AUTOCOMPLETE +``` + ## Values diff --git a/docs/models/manualfeedbackinfovote.md b/docs/models/manualfeedbackinfovote.md index 401fb94b..f74b7a47 100644 --- a/docs/models/manualfeedbackinfovote.md +++ b/docs/models/manualfeedbackinfovote.md @@ -2,6 +2,14 @@ The vote associated with the Feedback.event.MANUAL_FEEDBACK event. +## Example Usage + +```python +from glean.api_client.models import ManualFeedbackInfoVote + +value = ManualFeedbackInfoVote.UPVOTE +``` + ## Values diff --git a/docs/models/manualfeedbacksidebysideinfosource.md b/docs/models/manualfeedbacksidebysideinfosource.md index ac916e0d..f95896ae 100644 --- a/docs/models/manualfeedbacksidebysideinfosource.md +++ b/docs/models/manualfeedbacksidebysideinfosource.md @@ -2,6 +2,14 @@ The source associated with the side-by-side feedback event. +## Example Usage + +```python +from glean.api_client.models import ManualFeedbackSideBySideInfoSource + +value = ManualFeedbackSideBySideInfoSource.LIVE_EVAL +``` + ## Values diff --git a/docs/models/manualfeedbacksidebysideinfovote.md b/docs/models/manualfeedbacksidebysideinfovote.md index 3ba4a1be..ba4cf618 100644 --- a/docs/models/manualfeedbacksidebysideinfovote.md +++ b/docs/models/manualfeedbacksidebysideinfovote.md @@ -2,6 +2,14 @@ The vote for this specific implementation. +## Example Usage + +```python +from glean.api_client.models import ManualFeedbackSideBySideInfoVote + +value = ManualFeedbackSideBySideInfoVote.UPVOTE +``` + ## Values diff --git a/docs/models/messagetype.md b/docs/models/messagetype.md index ba999504..8f91442a 100644 --- a/docs/models/messagetype.md +++ b/docs/models/messagetype.md @@ -2,6 +2,16 @@ Semantically groups content of a certain type. It can be used for purposes such as differential UI treatment. USER authored messages should be of type CONTENT and do not need `messageType` specified. +## Example Usage + +```python +from glean.api_client.models import MessageType + +value = MessageType.UPDATE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/mode.md b/docs/models/mode.md index bde5127c..b1cd1e56 100644 --- a/docs/models/mode.md +++ b/docs/models/mode.md @@ -2,6 +2,16 @@ Top level modes to run GleanChat in. +## Example Usage + +```python +from glean.api_client.models import Mode + +value = Mode.DEFAULT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/operatortype.md b/docs/models/operatortype.md index f7d9e857..7525e283 100644 --- a/docs/models/operatortype.md +++ b/docs/models/operatortype.md @@ -1,5 +1,15 @@ # OperatorType +## Example Usage + +```python +from glean.api_client.models import OperatorType + +value = OperatorType.TEXT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/orderby.md b/docs/models/orderby.md index 96a7f95d..cb24df14 100644 --- a/docs/models/orderby.md +++ b/docs/models/orderby.md @@ -1,5 +1,13 @@ # OrderBy +## Example Usage + +```python +from glean.api_client.models import OrderBy + +value = OrderBy.ASC +``` + ## Values diff --git a/docs/models/peoplerequestincludefield.md b/docs/models/peoplerequestincludefield.md index f2216729..8b933ae8 100644 --- a/docs/models/peoplerequestincludefield.md +++ b/docs/models/peoplerequestincludefield.md @@ -1,5 +1,13 @@ # PeopleRequestIncludeField +## Example Usage + +```python +from glean.api_client.models import PeopleRequestIncludeField + +value = PeopleRequestIncludeField.BADGES +``` + ## Values diff --git a/docs/models/personmetadatatype.md b/docs/models/personmetadatatype.md index 1f41993c..42958478 100644 --- a/docs/models/personmetadatatype.md +++ b/docs/models/personmetadatatype.md @@ -1,5 +1,15 @@ # PersonMetadataType +## Example Usage + +```python +from glean.api_client.models import PersonMetadataType + +value = PersonMetadataType.FULL_TIME + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/personteamrelationship.md b/docs/models/personteamrelationship.md index 9d958daa..a00dde59 100644 --- a/docs/models/personteamrelationship.md +++ b/docs/models/personteamrelationship.md @@ -2,6 +2,16 @@ The team member's relationship to the team. This defaults to MEMBER if not set. +## Example Usage + +```python +from glean.api_client.models import PersonTeamRelationship + +value = PersonTeamRelationship.MEMBER + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/persontoteamrelationshiprelationship.md b/docs/models/persontoteamrelationshiprelationship.md index 2727c8ee..bfb66e7a 100644 --- a/docs/models/persontoteamrelationshiprelationship.md +++ b/docs/models/persontoteamrelationshiprelationship.md @@ -2,6 +2,16 @@ The team member's relationship to the team. This defaults to MEMBER if not set. +## Example Usage + +```python +from glean.api_client.models import PersonToTeamRelationshipRelationship + +value = PersonToTeamRelationshipRelationship.MEMBER + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/processingstate.md b/docs/models/processingstate.md index 1054736b..63439d03 100644 --- a/docs/models/processingstate.md +++ b/docs/models/processingstate.md @@ -2,6 +2,16 @@ The current state of the upload, an enum of UNAVAILABLE, UPLOAD STARTED, UPLOAD IN PROGRESS, UPLOAD COMPLETED, DELETION PAUSED, INDEXING COMPLETED +## Example Usage + +```python +from glean.api_client.models import ProcessingState + +value = ProcessingState.UNAVAILABLE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/prominence.md b/docs/models/prominence.md index f268bbdc..e2084849 100644 --- a/docs/models/prominence.md +++ b/docs/models/prominence.md @@ -2,6 +2,16 @@ The level of visual distinction that should be given to a result. +## Example Usage + +```python +from glean.api_client.models import Prominence + +value = Prominence.HERO + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/propertytype.md b/docs/models/propertytype.md index 6ec9b3d3..f3ec28a8 100644 --- a/docs/models/propertytype.md +++ b/docs/models/propertytype.md @@ -2,6 +2,16 @@ The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported. +## Example Usage + +```python +from glean.api_client.models import PropertyType + +value = PropertyType.TEXT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/provider.md b/docs/models/provider.md index d83acab1..4e51686e 100644 --- a/docs/models/provider.md +++ b/docs/models/provider.md @@ -1,5 +1,15 @@ # Provider +## Example Usage + +```python +from glean.api_client.models import Provider + +value = Provider.ZOOM + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/relation.md b/docs/models/relation.md index 1912e0f8..dd90ac50 100644 --- a/docs/models/relation.md +++ b/docs/models/relation.md @@ -2,6 +2,16 @@ How this document relates to the including entity. +## Example Usage + +```python +from glean.api_client.models import Relation + +value = Relation.ATTACHMENT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/relationtype.md b/docs/models/relationtype.md index 647876db..2ca42951 100644 --- a/docs/models/relationtype.md +++ b/docs/models/relationtype.md @@ -1,5 +1,15 @@ # RelationType +## Example Usage + +```python +from glean.api_client.models import RelationType + +value = RelationType.EQUALS + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/reportstatusresponsestatus.md b/docs/models/reportstatusresponsestatus.md index c74ecd90..fbbf6879 100644 --- a/docs/models/reportstatusresponsestatus.md +++ b/docs/models/reportstatusresponsestatus.md @@ -1,5 +1,15 @@ # ReportStatusResponseStatus +## Example Usage + +```python +from glean.api_client.models import ReportStatusResponseStatus + +value = ReportStatusResponseStatus.PENDING + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/requesttype.md b/docs/models/requesttype.md index 1859501a..2d050701 100644 --- a/docs/models/requesttype.md +++ b/docs/models/requesttype.md @@ -2,6 +2,14 @@ The type of request being made. +## Example Usage + +```python +from glean.api_client.models import RequestType + +value = RequestType.STANDARD +``` + ## Values diff --git a/docs/models/responsehint.md b/docs/models/responsehint.md index 82f866d3..fd0bd06d 100644 --- a/docs/models/responsehint.md +++ b/docs/models/responsehint.md @@ -2,6 +2,16 @@ Hints for the response content. +## Example Usage + +```python +from glean.api_client.models import ResponseHint + +value = ResponseHint.ALL_RESULT_COUNTS + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/responsestatus.md b/docs/models/responsestatus.md index 255ed6f1..bcd5413e 100644 --- a/docs/models/responsestatus.md +++ b/docs/models/responsestatus.md @@ -1,5 +1,15 @@ # ResponseStatus +## Example Usage + +```python +from glean.api_client.models import ResponseStatus + +value = ResponseStatus.ACCEPTED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/role.md b/docs/models/role.md index 8176a687..f039c916 100644 --- a/docs/models/role.md +++ b/docs/models/role.md @@ -4,6 +4,16 @@ DEPRECATED - use permissions instead. Viewer's role on the specific document. > :warning: **DEPRECATED**: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use permissions instead. +## Example Usage + +```python +from glean.api_client.models import Role + +value = Role.ANSWER_MODERATOR + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/scope.md b/docs/models/scope.md index f1e50628..189ff0f7 100644 --- a/docs/models/scope.md +++ b/docs/models/scope.md @@ -1,5 +1,15 @@ # Scope +## Example Usage + +```python +from glean.api_client.models import Scope + +value = Scope.APP_CARD + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/scopetype.md b/docs/models/scopetype.md index e6c2e396..7c67e71c 100644 --- a/docs/models/scopetype.md +++ b/docs/models/scopetype.md @@ -2,6 +2,16 @@ Describes the scope for a ReadPermission, WritePermission, or GrantPermission object +## Example Usage + +```python +from glean.api_client.models import ScopeType + +value = ScopeType.GLOBAL + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/searchresultprominenceenum.md b/docs/models/searchresultprominenceenum.md index 12605e2b..65f9fa4b 100644 --- a/docs/models/searchresultprominenceenum.md +++ b/docs/models/searchresultprominenceenum.md @@ -3,6 +3,16 @@ The level of visual distinction that should be given to a result. +## Example Usage + +```python +from glean.api_client.models import SearchResultProminenceEnum + +value = SearchResultProminenceEnum.HERO + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/searchresultsnippet.md b/docs/models/searchresultsnippet.md index 48c9b2b4..55f6c754 100644 --- a/docs/models/searchresultsnippet.md +++ b/docs/models/searchresultsnippet.md @@ -3,11 +3,11 @@ ## Fields -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `mime_type` | *Optional[str]* | :heavy_minus_sign: | The mime type of the snippets, currently either text/plain or text/html. | -| `text` | *Optional[str]* | :heavy_minus_sign: | A matching snippet from the document with no highlights. | -| `snippet_text_ordering` | *Optional[int]* | :heavy_minus_sign: | Used for sorting based off the snippet's location within all_snippetable_text | -| `ranges` | List[[models.TextRange](../models/textrange.md)] | :heavy_minus_sign: | The bolded ranges within text. | -| `url` | *Optional[str]* | :heavy_minus_sign: | A URL, generated based on availability, that links to the position of the snippet text or to the nearest header above the snippet text. | -| ~~`snippet`~~ | *str* | :heavy_check_mark: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

A matching snippet from the document. Query term matches are marked by the unicode characters uE006 and uE007. Use 'text' field instead. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `mime_type` | *Optional[str]* | :heavy_minus_sign: | The mime type of the snippets, currently either text/plain or text/html. | +| `text` | *Optional[str]* | :heavy_minus_sign: | A matching snippet from the document with no highlights. | +| `snippet_text_ordering` | *Optional[int]* | :heavy_minus_sign: | Used for sorting based off the snippet's location within all_snippetable_text | +| `ranges` | List[[models.TextRange](../models/textrange.md)] | :heavy_minus_sign: | The bolded ranges within text. | +| `url` | *Optional[str]* | :heavy_minus_sign: | A URL, generated based on availability, that links to the position of the snippet text or to the nearest header above the snippet text. | +| ~~`snippet`~~ | *Optional[str]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use 'text' field instead.

A matching snippet from the document. Query term matches are marked by the unicode characters uE006 and uE007. Use 'text' field instead. | \ No newline at end of file diff --git a/docs/models/sectiontype.md b/docs/models/sectiontype.md index efde2430..a9aa8331 100644 --- a/docs/models/sectiontype.md +++ b/docs/models/sectiontype.md @@ -2,6 +2,16 @@ Type of the section. This defines how the section should be interpreted and rendered in the digest. +## Example Usage + +```python +from glean.api_client.models import SectionType + +value = SectionType.CHANNEL + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/sensitiveinfotypelikelihoodthreshold.md b/docs/models/sensitiveinfotypelikelihoodthreshold.md index e6435582..7f825e04 100644 --- a/docs/models/sensitiveinfotypelikelihoodthreshold.md +++ b/docs/models/sensitiveinfotypelikelihoodthreshold.md @@ -2,6 +2,16 @@ > :warning: **DEPRECATED**: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. +## Example Usage + +```python +from glean.api_client.models import SensitiveInfoTypeLikelihoodThreshold + +value = SensitiveInfoTypeLikelihoodThreshold.LIKELY + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/shortcuterrorerrortype.md b/docs/models/shortcuterrorerrortype.md index a253b536..737b2781 100644 --- a/docs/models/shortcuterrorerrortype.md +++ b/docs/models/shortcuterrorerrortype.md @@ -1,5 +1,15 @@ # ShortcutErrorErrorType +## Example Usage + +```python +from glean.api_client.models import ShortcutErrorErrorType + +value = ShortcutErrorErrorType.NO_PERMISSION + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/state.md b/docs/models/state.md index 3e6199e2..0b0039c5 100644 --- a/docs/models/state.md +++ b/docs/models/state.md @@ -2,6 +2,16 @@ The verification state for the document. +## Example Usage + +```python +from glean.api_client.models import State + +value = State.UNVERIFIED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/structuredresultsource.md b/docs/models/structuredresultsource.md index fb03b801..75ce2720 100644 --- a/docs/models/structuredresultsource.md +++ b/docs/models/structuredresultsource.md @@ -2,6 +2,16 @@ Source context for this result. Possible values depend on the result type. +## Example Usage + +```python +from glean.api_client.models import StructuredResultSource + +value = StructuredResultSource.EXPERT_DETECTION + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/teamstatus.md b/docs/models/teamstatus.md index 18176a76..4e615f21 100644 --- a/docs/models/teamstatus.md +++ b/docs/models/teamstatus.md @@ -2,6 +2,16 @@ whether this team is fully processed or there are still unprocessed operations that'll affect it +## Example Usage + +```python +from glean.api_client.models import TeamStatus + +value = TeamStatus.PROCESSED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/textrangetype.md b/docs/models/textrangetype.md index 8d8927a7..1da1c5ec 100644 --- a/docs/models/textrangetype.md +++ b/docs/models/textrangetype.md @@ -1,5 +1,15 @@ # TextRangeType +## Example Usage + +```python +from glean.api_client.models import TextRangeType + +value = TextRangeType.BOLD + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/timerangefiltertimeperiodtype.md b/docs/models/timerangefiltertimeperiodtype.md index 30a69147..64f1bba3 100644 --- a/docs/models/timerangefiltertimeperiodtype.md +++ b/docs/models/timerangefiltertimeperiodtype.md @@ -2,6 +2,16 @@ The type of time period for which to filter findings. +## Example Usage + +```python +from glean.api_client.models import TimeRangeFilterTimePeriodType + +value = TimeRangeFilterTimePeriodType.PAST_DAY + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/toolmetadatatype.md b/docs/models/toolmetadatatype.md index 8c8c0caa..5e5d327f 100644 --- a/docs/models/toolmetadatatype.md +++ b/docs/models/toolmetadatatype.md @@ -2,6 +2,16 @@ The type of tool. +## Example Usage + +```python +from glean.api_client.models import ToolMetadataType + +value = ToolMetadataType.RETRIEVAL + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/toolparametertype.md b/docs/models/toolparametertype.md index c9304b8a..c6fda07a 100644 --- a/docs/models/toolparametertype.md +++ b/docs/models/toolparametertype.md @@ -2,6 +2,16 @@ Parameter type (string, number, boolean, object, array) +## Example Usage + +```python +from glean.api_client.models import ToolParameterType + +value = ToolParameterType.STRING + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/tooltype.md b/docs/models/tooltype.md index ea9cde8d..c7f7adec 100644 --- a/docs/models/tooltype.md +++ b/docs/models/tooltype.md @@ -2,6 +2,16 @@ Type of tool (READ, WRITE) +## Example Usage + +```python +from glean.api_client.models import ToolType + +value = ToolType.READ + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/ugctype.md b/docs/models/ugctype.md index ffb3d59b..d1ee0c13 100644 --- a/docs/models/ugctype.md +++ b/docs/models/ugctype.md @@ -1,5 +1,15 @@ # UgcType +## Example Usage + +```python +from glean.api_client.models import UgcType + +value = UgcType.ANNOUNCEMENTS_TYPE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/uioptions.md b/docs/models/uioptions.md index ee50fe80..658ce2f5 100644 --- a/docs/models/uioptions.md +++ b/docs/models/uioptions.md @@ -1,5 +1,15 @@ # UIOptions +## Example Usage + +```python +from glean.api_client.models import UIOptions + +value = UIOptions.NONE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/updateannouncementrequestchannel.md b/docs/models/updateannouncementrequestchannel.md index aea73b61..efb4113f 100644 --- a/docs/models/updateannouncementrequestchannel.md +++ b/docs/models/updateannouncementrequestchannel.md @@ -2,6 +2,14 @@ This determines whether this is a Social Feed post or a regular announcement. +## Example Usage + +```python +from glean.api_client.models import UpdateAnnouncementRequestChannel + +value = UpdateAnnouncementRequestChannel.MAIN +``` + ## Values diff --git a/docs/models/updateannouncementrequestposttype.md b/docs/models/updateannouncementrequestposttype.md index b5229e36..78d1989d 100644 --- a/docs/models/updateannouncementrequestposttype.md +++ b/docs/models/updateannouncementrequestposttype.md @@ -2,6 +2,14 @@ This determines whether this is an external-link post or a regular announcement post. TEXT - Regular announcement that can contain rich text. LINK - Announcement that is linked to an external site. +## Example Usage + +```python +from glean.api_client.models import UpdateAnnouncementRequestPostType + +value = UpdateAnnouncementRequestPostType.TEXT +``` + ## Values diff --git a/docs/models/updatedatasourceconfigurationrequest.md b/docs/models/updatedatasourceconfigurationrequest.md new file mode 100644 index 00000000..938e8f1b --- /dev/null +++ b/docs/models/updatedatasourceconfigurationrequest.md @@ -0,0 +1,11 @@ +# UpdateDatasourceConfigurationRequest + +Request to update greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist may be set. + + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `configuration` | [models.DatasourceInstanceConfiguration](../models/datasourceinstanceconfiguration.md) | :heavy_check_mark: | Configuration for a datasource instance | \ No newline at end of file diff --git a/docs/models/updatedatasourceinstanceconfigurationrequest.md b/docs/models/updatedatasourceinstanceconfigurationrequest.md new file mode 100644 index 00000000..50e0f667 --- /dev/null +++ b/docs/models/updatedatasourceinstanceconfigurationrequest.md @@ -0,0 +1,10 @@ +# UpdateDatasourceInstanceConfigurationRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `datasource_id` | *str* | :heavy_check_mark: | The datasource type identifier (e.g. o365sharepoint) | o365sharepoint | +| `instance_id` | *str* | :heavy_check_mark: | The datasource instance identifier | o365sharepoint_abc123 | +| `update_datasource_configuration_request` | [models.UpdateDatasourceConfigurationRequest](../models/updatedatasourceconfigurationrequest.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/updatetype.md b/docs/models/updatetype.md index 36f63fe0..9208da7a 100644 --- a/docs/models/updatetype.md +++ b/docs/models/updatetype.md @@ -2,6 +2,16 @@ Optional type classification for the update. +## Example Usage + +```python +from glean.api_client.models import UpdateType + +value = UpdateType.ACTIONABLE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/uploadstatusenum.md b/docs/models/uploadstatusenum.md index 56e0e460..a46e1e00 100644 --- a/docs/models/uploadstatusenum.md +++ b/docs/models/uploadstatusenum.md @@ -2,6 +2,16 @@ Upload status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN +## Example Usage + +```python +from glean.api_client.models import UploadStatusEnum + +value = UploadStatusEnum.UPLOADED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/useractivityaction.md b/docs/models/useractivityaction.md index 495baa78..24d98acf 100644 --- a/docs/models/useractivityaction.md +++ b/docs/models/useractivityaction.md @@ -2,6 +2,16 @@ The action for the activity +## Example Usage + +```python +from glean.api_client.models import UserActivityAction + +value = UserActivityAction.ADD + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/userrole.md b/docs/models/userrole.md index 211f4f26..f74d5aba 100644 --- a/docs/models/userrole.md +++ b/docs/models/userrole.md @@ -2,6 +2,16 @@ A user's role with respect to a specific document. +## Example Usage + +```python +from glean.api_client.models import UserRole + +value = UserRole.OWNER + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/verifyrequestaction.md b/docs/models/verifyrequestaction.md index 32df67b2..e711cbe9 100644 --- a/docs/models/verifyrequestaction.md +++ b/docs/models/verifyrequestaction.md @@ -2,6 +2,14 @@ The verification action requested. +## Example Usage + +```python +from glean.api_client.models import VerifyRequestAction + +value = VerifyRequestAction.VERIFY +``` + ## Values diff --git a/docs/models/warningtype.md b/docs/models/warningtype.md index e40d81ce..2935dbc7 100644 --- a/docs/models/warningtype.md +++ b/docs/models/warningtype.md @@ -2,6 +2,16 @@ The type of the warning. +## Example Usage + +```python +from glean.api_client.models import WarningType + +value = WarningType.LONG_QUERY + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/workflowfeedbackinfosource.md b/docs/models/workflowfeedbackinfosource.md index de4dcede..57ce7f1c 100644 --- a/docs/models/workflowfeedbackinfosource.md +++ b/docs/models/workflowfeedbackinfosource.md @@ -2,6 +2,14 @@ Where the feedback of the workflow originated from +## Example Usage + +```python +from glean.api_client.models import WorkflowFeedbackInfoSource + +value = WorkflowFeedbackInfoSource.ZERO_STATE +``` + ## Values diff --git a/docs/models/writeactionparametertype.md b/docs/models/writeactionparametertype.md index dbc9543a..50cd2a89 100644 --- a/docs/models/writeactionparametertype.md +++ b/docs/models/writeactionparametertype.md @@ -2,6 +2,16 @@ The type of the value (e.g., integer, string, boolean, etc.) +## Example Usage + +```python +from glean.api_client.models import WriteActionParameterType + +value = WriteActionParameterType.UNKNOWN + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/models/writeactiontype.md b/docs/models/writeactiontype.md index b90f9f6b..35c9db68 100644 --- a/docs/models/writeactiontype.md +++ b/docs/models/writeactiontype.md @@ -2,6 +2,16 @@ Valid only for write actions. Represents the type of write action. REDIRECT - The client renders the URL which contains information for carrying out the action. EXECUTION - Send a request to an external server and execute the action. MCP - Send a tools/call request to an MCP server to execute the action. +## Example Usage + +```python +from glean.api_client.models import WriteActionType + +value = WriteActionType.REDIRECT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values diff --git a/docs/sdks/agents/README.md b/docs/sdks/agents/README.md index bf4a2db8..2856eeeb 100644 --- a/docs/sdks/agents/README.md +++ b/docs/sdks/agents/README.md @@ -48,9 +48,10 @@ with Glean( ### Errors -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 404 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | ## retrieve_schemas @@ -90,9 +91,10 @@ with Glean( ### Errors -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 404, 422 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | ## list @@ -130,9 +132,10 @@ with Glean( ### Errors -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 404, 422 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | ## run_stream @@ -177,9 +180,10 @@ with Glean( ### Errors -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 404, 409, 422 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | ## run diff --git a/docs/sdks/datasources/README.md b/docs/sdks/datasources/README.md index c9f66bdb..03c2257d 100644 --- a/docs/sdks/datasources/README.md +++ b/docs/sdks/datasources/README.md @@ -1,21 +1,24 @@ -# Indexing.Datasources +# Datasources ## Overview +Manage datasources. + ### Available Operations -* [add](#add) - Add or update datasource -* [retrieve_config](#retrieve_config) - Get datasource config +* [get_datasource_instance_configuration](#get_datasource_instance_configuration) - Get datasource instance configuration +* [update_datasource_instance_configuration](#update_datasource_instance_configuration) - Update datasource instance configuration + +## get_datasource_instance_configuration -## add +Gets the greenlisted configuration values for a datasource instance. Returns only configuration keys that are exposed via the public API greenlist. -Add or update a custom datasource and its schema. ### Example Usage - + ```python -from glean.api_client import Glean, models +from glean.api_client import Glean import os @@ -23,67 +26,40 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - glean.indexing.datasources.add(name="", datasource_category=models.DatasourceCategory.UNCATEGORIZED, url_regex="https://example-company.datasource.com/.*", quicklinks=[ - { - "icon_config": { - "color": "#343CED", - "key": "person_icon", - "icon_type": models.IconType.GLYPH, - "name": "user", - }, - }, - ], trust_url_regex_for_view_activity=True, strip_fragment_in_canonical_url=True, is_entity_datasource=False, is_test_datasource=False) + res = glean.datasources.get_datasource_instance_configuration(datasource_id="o365sharepoint", instance_id="o365sharepoint_abc123") - # Use the SDK ... + # Handle response + print(res) ``` ### Parameters -| Parameter | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `name` | *str* | :heavy_check_mark: | Unique identifier of datasource instance to which this config applies. | | -| `display_name` | *Optional[str]* | :heavy_minus_sign: | The user-friendly instance label to display. If omitted, falls back to the title-cased `name`. | | -| `datasource_category` | [Optional[models.DatasourceCategory]](../../models/datasourcecategory.md) | :heavy_minus_sign: | The type of this datasource. It is an important signal for relevance and must be specified and cannot be UNCATEGORIZED. Please refer to [this](https://developers.glean.com/docs/indexing_api_datasource_category/) for more details. | | -| `url_regex` | *Optional[str]* | :heavy_minus_sign: | Regular expression that matches URLs of documents of the datasource instance. The behavior for multiple matches is non-deterministic. **Note: `urlRegex` is a required field for non-entity datasources, but not required if the datasource is used to push custom entities (ie. datasources where isEntityDatasource is false). Please add a regex as specific as possible to this datasource instance.** | https://example-company.datasource.com/.* | -| `icon_url` | *Optional[str]* | :heavy_minus_sign: | The URL to an image to be displayed as an icon for this datasource instance. Must have a transparency mask. SVG are recommended over PNG. Public, scio-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). | | -| `object_definitions` | List[[models.ObjectDefinition](../../models/objectdefinition.md)] | :heavy_minus_sign: | The list of top-level `objectType`s for the datasource. | | -| `suggestion_text` | *Optional[str]* | :heavy_minus_sign: | Example text for what to search for in this datasource | | -| `home_url` | *Optional[str]* | :heavy_minus_sign: | The URL of the landing page for this datasource instance. Should point to the most useful page for users, not the company marketing page. | | -| `crawler_seed_urls` | List[*str*] | :heavy_minus_sign: | This only applies to WEB_CRAWL and BROWSER_CRAWL datasources. Defines the seed URLs for crawling. | | -| `icon_dark_url` | *Optional[str]* | :heavy_minus_sign: | The URL to an image to be displayed as an icon for this datasource instance in dark mode. Must have a transparency mask. SVG are recommended over PNG. Public, scio-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). | | -| `hide_built_in_facets` | List[[models.HideBuiltInFacet](../../models/hidebuiltinfacet.md)] | :heavy_minus_sign: | List of built-in facet types that should be hidden for the datasource. | | -| `canonicalizing_url_regex` | List[[models.CanonicalizingRegexType](../../models/canonicalizingregextype.md)] | :heavy_minus_sign: | A list of regular expressions to apply to an arbitrary URL to transform it into a canonical URL for this datasource instance. Regexes are to be applied in the order specified in this list. | | -| `canonicalizing_title_regex` | List[[models.CanonicalizingRegexType](../../models/canonicalizingregextype.md)] | :heavy_minus_sign: | A list of regular expressions to apply to an arbitrary title to transform it into a title that will be displayed in the search results | | -| `redlist_title_regex` | *Optional[str]* | :heavy_minus_sign: | A regex that identifies titles that should not be indexed | | -| `connector_type` | [Optional[models.CustomDatasourceConfigConnectorType]](../../models/customdatasourceconfigconnectortype.md) | :heavy_minus_sign: | N/A | | -| `quicklinks` | List[[models.Quicklink](../../models/quicklink.md)] | :heavy_minus_sign: | List of actions for this datasource instance that will show up in autocomplete and app card, e.g. "Create new issue" for jira | | -| `render_config_preset` | *Optional[str]* | :heavy_minus_sign: | The name of a render config to use for displaying results from this datasource. Any well known datasource name may be used to render the same as that source, e.g. `web` or `gdrive`. Please refer to [this](https://developers.glean.com/docs/rendering_search_results/) for more details | | -| `aliases` | List[*str*] | :heavy_minus_sign: | Aliases that can be used as `app` operator-values. | | -| `is_on_prem` | *Optional[bool]* | :heavy_minus_sign: | Whether or not this datasource is hosted on-premise. | | -| `trust_url_regex_for_view_activity` | *Optional[bool]* | :heavy_minus_sign: | True if browser activity is able to report the correct URL for VIEW events. Set this to true if the URLs reported by Chrome are constant throughout each page load. Set this to false if the page has Javascript that modifies the URL during or after the load. | | -| `include_utm_source` | *Optional[bool]* | :heavy_minus_sign: | If true, a utm_source query param will be added to outbound links to this datasource within Glean. | | -| `strip_fragment_in_canonical_url` | *Optional[bool]* | :heavy_minus_sign: | If true, the fragment part of the URL will be stripped when converting to a canonical url. | | -| `identity_datasource_name` | *Optional[str]* | :heavy_minus_sign: | If the datasource uses another datasource for identity info, then the name of the datasource. The identity datasource must exist already and the datasource with identity info should have its visibility enabled for search results. | | -| `product_access_group` | *Optional[str]* | :heavy_minus_sign: | If the datasource uses a specific product access group, then the name of that group. | | -| `is_user_referenced_by_email` | *Optional[bool]* | :heavy_minus_sign: | whether email is used to reference users in document ACLs and in group memberships. | | -| `is_entity_datasource` | *Optional[bool]* | :heavy_minus_sign: | True if this datasource is used to push custom entities. | | -| `is_test_datasource` | *Optional[bool]* | :heavy_minus_sign: | True if this datasource will be used for testing purpose only. Documents from such a datasource wouldn't have any effect on search rankings. | | -| `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 | Example | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `datasource_id` | *str* | :heavy_check_mark: | The datasource type identifier (e.g. o365sharepoint) | o365sharepoint | +| `instance_id` | *str* | :heavy_check_mark: | The datasource instance identifier | o365sharepoint_abc123 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.DatasourceConfigurationResponse](../../models/datasourceconfigurationresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 400, 403, 404 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | -## retrieve_config +## update_datasource_instance_configuration + +Updates the greenlisted configuration values for a datasource instance. Only configuration keys that are exposed via the public API greenlist may be set. Returns the full greenlisted configuration after the update is applied. -Fetches the datasource config for the specified custom datasource. ### Example Usage - + ```python from glean.api_client import Glean import os @@ -93,7 +69,11 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.indexing.datasources.retrieve_config(datasource="") + res = glean.datasources.update_datasource_instance_configuration(datasource_id="o365sharepoint", instance_id="o365sharepoint_abc123", configuration={ + "values": { + + }, + }) # Handle response print(res) @@ -102,17 +82,20 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `datasource` | *str* | :heavy_check_mark: | Datasource name for which config is needed. | -| `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 | Example | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `datasource_id` | *str* | :heavy_check_mark: | The datasource type identifier (e.g. o365sharepoint) | o365sharepoint | +| `instance_id` | *str* | :heavy_check_mark: | The datasource instance identifier | o365sharepoint_abc123 | +| `configuration` | [models.DatasourceInstanceConfiguration](../../models/datasourceinstanceconfiguration.md) | :heavy_check_mark: | Configuration for a datasource instance | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response -**[models.CustomDatasourceConfig](../../models/customdatasourceconfig.md)** +**[models.DatasourceConfigurationResponse](../../models/datasourceconfigurationresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 400, 403, 404 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/indexingdatasources/README.md b/docs/sdks/indexingdatasources/README.md new file mode 100644 index 00000000..c9f66bdb --- /dev/null +++ b/docs/sdks/indexingdatasources/README.md @@ -0,0 +1,118 @@ +# Indexing.Datasources + +## Overview + +### Available Operations + +* [add](#add) - Add or update datasource +* [retrieve_config](#retrieve_config) - Get datasource config + +## add + +Add or update a custom datasource and its schema. + +### Example Usage + + +```python +from glean.api_client import Glean, models +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + glean.indexing.datasources.add(name="", datasource_category=models.DatasourceCategory.UNCATEGORIZED, url_regex="https://example-company.datasource.com/.*", quicklinks=[ + { + "icon_config": { + "color": "#343CED", + "key": "person_icon", + "icon_type": models.IconType.GLYPH, + "name": "user", + }, + }, + ], trust_url_regex_for_view_activity=True, strip_fragment_in_canonical_url=True, is_entity_datasource=False, is_test_datasource=False) + + # Use the SDK ... + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | *str* | :heavy_check_mark: | Unique identifier of datasource instance to which this config applies. | | +| `display_name` | *Optional[str]* | :heavy_minus_sign: | The user-friendly instance label to display. If omitted, falls back to the title-cased `name`. | | +| `datasource_category` | [Optional[models.DatasourceCategory]](../../models/datasourcecategory.md) | :heavy_minus_sign: | The type of this datasource. It is an important signal for relevance and must be specified and cannot be UNCATEGORIZED. Please refer to [this](https://developers.glean.com/docs/indexing_api_datasource_category/) for more details. | | +| `url_regex` | *Optional[str]* | :heavy_minus_sign: | Regular expression that matches URLs of documents of the datasource instance. The behavior for multiple matches is non-deterministic. **Note: `urlRegex` is a required field for non-entity datasources, but not required if the datasource is used to push custom entities (ie. datasources where isEntityDatasource is false). Please add a regex as specific as possible to this datasource instance.** | https://example-company.datasource.com/.* | +| `icon_url` | *Optional[str]* | :heavy_minus_sign: | The URL to an image to be displayed as an icon for this datasource instance. Must have a transparency mask. SVG are recommended over PNG. Public, scio-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). | | +| `object_definitions` | List[[models.ObjectDefinition](../../models/objectdefinition.md)] | :heavy_minus_sign: | The list of top-level `objectType`s for the datasource. | | +| `suggestion_text` | *Optional[str]* | :heavy_minus_sign: | Example text for what to search for in this datasource | | +| `home_url` | *Optional[str]* | :heavy_minus_sign: | The URL of the landing page for this datasource instance. Should point to the most useful page for users, not the company marketing page. | | +| `crawler_seed_urls` | List[*str*] | :heavy_minus_sign: | This only applies to WEB_CRAWL and BROWSER_CRAWL datasources. Defines the seed URLs for crawling. | | +| `icon_dark_url` | *Optional[str]* | :heavy_minus_sign: | The URL to an image to be displayed as an icon for this datasource instance in dark mode. Must have a transparency mask. SVG are recommended over PNG. Public, scio-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). | | +| `hide_built_in_facets` | List[[models.HideBuiltInFacet](../../models/hidebuiltinfacet.md)] | :heavy_minus_sign: | List of built-in facet types that should be hidden for the datasource. | | +| `canonicalizing_url_regex` | List[[models.CanonicalizingRegexType](../../models/canonicalizingregextype.md)] | :heavy_minus_sign: | A list of regular expressions to apply to an arbitrary URL to transform it into a canonical URL for this datasource instance. Regexes are to be applied in the order specified in this list. | | +| `canonicalizing_title_regex` | List[[models.CanonicalizingRegexType](../../models/canonicalizingregextype.md)] | :heavy_minus_sign: | A list of regular expressions to apply to an arbitrary title to transform it into a title that will be displayed in the search results | | +| `redlist_title_regex` | *Optional[str]* | :heavy_minus_sign: | A regex that identifies titles that should not be indexed | | +| `connector_type` | [Optional[models.CustomDatasourceConfigConnectorType]](../../models/customdatasourceconfigconnectortype.md) | :heavy_minus_sign: | N/A | | +| `quicklinks` | List[[models.Quicklink](../../models/quicklink.md)] | :heavy_minus_sign: | List of actions for this datasource instance that will show up in autocomplete and app card, e.g. "Create new issue" for jira | | +| `render_config_preset` | *Optional[str]* | :heavy_minus_sign: | The name of a render config to use for displaying results from this datasource. Any well known datasource name may be used to render the same as that source, e.g. `web` or `gdrive`. Please refer to [this](https://developers.glean.com/docs/rendering_search_results/) for more details | | +| `aliases` | List[*str*] | :heavy_minus_sign: | Aliases that can be used as `app` operator-values. | | +| `is_on_prem` | *Optional[bool]* | :heavy_minus_sign: | Whether or not this datasource is hosted on-premise. | | +| `trust_url_regex_for_view_activity` | *Optional[bool]* | :heavy_minus_sign: | True if browser activity is able to report the correct URL for VIEW events. Set this to true if the URLs reported by Chrome are constant throughout each page load. Set this to false if the page has Javascript that modifies the URL during or after the load. | | +| `include_utm_source` | *Optional[bool]* | :heavy_minus_sign: | If true, a utm_source query param will be added to outbound links to this datasource within Glean. | | +| `strip_fragment_in_canonical_url` | *Optional[bool]* | :heavy_minus_sign: | If true, the fragment part of the URL will be stripped when converting to a canonical url. | | +| `identity_datasource_name` | *Optional[str]* | :heavy_minus_sign: | If the datasource uses another datasource for identity info, then the name of the datasource. The identity datasource must exist already and the datasource with identity info should have its visibility enabled for search results. | | +| `product_access_group` | *Optional[str]* | :heavy_minus_sign: | If the datasource uses a specific product access group, then the name of that group. | | +| `is_user_referenced_by_email` | *Optional[bool]* | :heavy_minus_sign: | whether email is used to reference users in document ACLs and in group memberships. | | +| `is_entity_datasource` | *Optional[bool]* | :heavy_minus_sign: | True if this datasource is used to push custom entities. | | +| `is_test_datasource` | *Optional[bool]* | :heavy_minus_sign: | True if this datasource will be used for testing purpose only. Documents from such a datasource wouldn't have any effect on search rankings. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## retrieve_config + +Fetches the datasource config for the specified custom datasource. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.indexing.datasources.retrieve_config(datasource="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `datasource` | *str* | :heavy_check_mark: | Datasource name for which config is needed. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.CustomDatasourceConfig](../../models/customdatasourceconfig.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/indexingdocuments/README.md b/docs/sdks/indexingdocuments/README.md index 20c38b13..184a3903 100644 --- a/docs/sdks/indexingdocuments/README.md +++ b/docs/sdks/indexingdocuments/README.md @@ -359,7 +359,7 @@ Intended for debugging/validation. Fetches the current upload and indexing statu Tip: Use [/debug/{datasource}/document](https://developers.glean.com/indexing/debugging/datasource-document) for richer information. -> :warning: **DEPRECATED**: This will be removed in a future release, please migrate away from it as soon as possible. +> :warning: **DEPRECATED**: Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated. ### Example Usage @@ -406,7 +406,7 @@ Fetches document count for the specified custom datasource. Tip: Use [/debug/{datasource}/status](https://developers.glean.com/indexing/debugging/datasource-status) for richer information. -> :warning: **DEPRECATED**: This will be removed in a future release, please migrate away from it as soon as possible. +> :warning: **DEPRECATED**: Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated. ### Example Usage diff --git a/docs/sdks/people/README.md b/docs/sdks/people/README.md index 8b35d44d..4450bbe4 100644 --- a/docs/sdks/people/README.md +++ b/docs/sdks/people/README.md @@ -8,7 +8,7 @@ * [~~count~~](#count) - Get user count :warning: **Deprecated** * [index](#index) - Index employee -* [bulk_index](#bulk_index) - Bulk index employees +* [~~bulk_index~~](#bulk_index) - Bulk index employees :warning: **Deprecated** * [process_all_employees_and_teams](#process_all_employees_and_teams) - Schedules the processing of uploaded employees and teams * [delete](#delete) - Delete employee * [index_team](#index_team) - Index team @@ -66,7 +66,7 @@ Fetches user count for the specified custom datasource. Tip: Use [/debug/{datasource}/status](https://developers.glean.com/indexing/debugging/datasource-status) for richer information. -> :warning: **DEPRECATED**: This will be removed in a future release, please migrate away from it as soon as possible. +> :warning: **DEPRECATED**: Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated. ### Example Usage @@ -149,10 +149,12 @@ with Glean( | ----------------- | ----------------- | ----------------- | | errors.GleanError | 4XX, 5XX | \*/\* | -## bulk_index +## ~~bulk_index~~ Replaces all the currently indexed employees using paginated batch API calls. Please refer to the [bulk indexing](https://developers.glean.com/indexing/documents/bulk-upload-model) documentation for an explanation of how to use bulk endpoints. +> :warning: **DEPRECATED**: Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated. + ### Example Usage diff --git a/pyproject.toml b/pyproject.toml index 358810d2..3dce96bf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "glean-api-client" -version = "0.12.8" +version = "0.12.9" 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 ff2fde54..c4504a00 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.8" +__version__: str = "0.12.9" __openapi_doc_version__: str = "0.9.0" -__gen_version__: str = "2.832.9" -__user_agent__: str = "speakeasy-sdk/python 0.12.8 2.832.9 0.9.0 glean-api-client" +__gen_version__: str = "2.855.2" +__user_agent__: str = "speakeasy-sdk/python 0.12.9 2.855.2 0.9.0 glean-api-client" try: if __package__ is not None: diff --git a/src/glean/api_client/agents.py b/src/glean/api_client/agents.py index e83595d0..134cc9ba 100644 --- a/src/glean/api_client/agents.py +++ b/src/glean/api_client/agents.py @@ -89,9 +89,13 @@ def retrieve( retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.Agent, http_res) - if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["400", "403", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.GleanError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, ["500", "5XX"], "*"): @@ -179,9 +183,13 @@ async def retrieve_async( retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.Agent, http_res) - if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["400", "403", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.GleanError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, ["500", "5XX"], "*"): @@ -269,9 +277,13 @@ def retrieve_schemas( retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.AgentSchemas, http_res) - if utils.match_response(http_res, ["400", "403", "404", "422", "4XX"], "*"): + if utils.match_response(http_res, ["404", "422"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["400", "403", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.GleanError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, ["500", "5XX"], "*"): @@ -359,9 +371,13 @@ async def retrieve_schemas_async( retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.AgentSchemas, http_res) - if utils.match_response(http_res, ["400", "403", "404", "422", "4XX"], "*"): + if utils.match_response(http_res, ["404", "422"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["400", "403", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.GleanError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, ["500", "5XX"], "*"): @@ -446,9 +462,13 @@ def list( retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.SearchAgentsResponse, http_res) - if utils.match_response(http_res, ["400", "403", "404", "422", "4XX"], "*"): + if utils.match_response(http_res, ["404", "422"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["400", "403", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.GleanError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, ["500", "5XX"], "*"): @@ -533,9 +553,13 @@ async def list_async( retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.SearchAgentsResponse, http_res) - if utils.match_response(http_res, ["400", "403", "404", "422", "4XX"], "*"): + if utils.match_response(http_res, ["404", "422"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["400", "403", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.GleanError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, ["500", "5XX"], "*"): @@ -631,11 +655,13 @@ def run_stream( retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "text/event-stream"): return http_res.text - if utils.match_response( - http_res, ["400", "403", "404", "409", "422", "4XX"], "*" - ): + if utils.match_response(http_res, ["404", "409", "422"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["400", "403", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.GleanError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, ["500", "5XX"], "*"): @@ -731,11 +757,13 @@ async def run_stream_async( retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "text/event-stream"): return http_res.text - if utils.match_response( - http_res, ["400", "403", "404", "409", "422", "4XX"], "*" - ): + if utils.match_response(http_res, ["404", "409", "422"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["400", "403", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.GleanError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, ["500", "5XX"], "*"): diff --git a/src/glean/api_client/datasources.py b/src/glean/api_client/datasources.py index d7340a08..60e6da53 100644 --- a/src/glean/api_client/datasources.py +++ b/src/glean/api_client/datasources.py @@ -6,92 +6,29 @@ from glean.api_client.types import OptionalNullable, UNSET from glean.api_client.utils import get_security_from_env from glean.api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import List, Mapping, Optional, Union +from typing import Any, Mapping, Optional, Union class Datasources(BaseSDK): - def add( + r"""Manage datasources.""" + + def get_datasource_instance_configuration( self, *, - name: str, - display_name: Optional[str] = None, - datasource_category: Optional[ - models.DatasourceCategory - ] = models.DatasourceCategory.UNCATEGORIZED, - url_regex: Optional[str] = None, - icon_url: Optional[str] = None, - object_definitions: Optional[ - Union[List[models.ObjectDefinition], List[models.ObjectDefinitionTypedDict]] - ] = None, - suggestion_text: Optional[str] = None, - home_url: Optional[str] = None, - crawler_seed_urls: Optional[List[str]] = None, - icon_dark_url: Optional[str] = None, - hide_built_in_facets: Optional[List[models.HideBuiltInFacet]] = None, - canonicalizing_url_regex: Optional[ - Union[ - List[models.CanonicalizingRegexType], - List[models.CanonicalizingRegexTypeTypedDict], - ] - ] = None, - canonicalizing_title_regex: Optional[ - Union[ - List[models.CanonicalizingRegexType], - List[models.CanonicalizingRegexTypeTypedDict], - ] - ] = None, - redlist_title_regex: Optional[str] = None, - connector_type: Optional[models.CustomDatasourceConfigConnectorType] = None, - quicklinks: Optional[ - Union[List[models.Quicklink], List[models.QuicklinkTypedDict]] - ] = None, - render_config_preset: Optional[str] = None, - aliases: Optional[List[str]] = None, - is_on_prem: Optional[bool] = None, - trust_url_regex_for_view_activity: Optional[bool] = True, - include_utm_source: Optional[bool] = None, - strip_fragment_in_canonical_url: Optional[bool] = True, - identity_datasource_name: Optional[str] = None, - product_access_group: Optional[str] = None, - is_user_referenced_by_email: Optional[bool] = None, - is_entity_datasource: Optional[bool] = False, - is_test_datasource: Optional[bool] = False, + datasource_id: str, + instance_id: str, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ): - r"""Add or update datasource - - Add or update a custom datasource and its schema. - - :param name: Unique identifier of datasource instance to which this config applies. - :param display_name: The user-friendly instance label to display. If omitted, falls back to the title-cased `name`. - :param datasource_category: The type of this datasource. It is an important signal for relevance and must be specified and cannot be UNCATEGORIZED. Please refer to [this](https://developers.glean.com/docs/indexing_api_datasource_category/) for more details. - :param url_regex: Regular expression that matches URLs of documents of the datasource instance. The behavior for multiple matches is non-deterministic. **Note: `urlRegex` is a required field for non-entity datasources, but not required if the datasource is used to push custom entities (ie. datasources where isEntityDatasource is false). Please add a regex as specific as possible to this datasource instance.** - :param icon_url: The URL to an image to be displayed as an icon for this datasource instance. Must have a transparency mask. SVG are recommended over PNG. Public, scio-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). - :param object_definitions: The list of top-level `objectType`s for the datasource. - :param suggestion_text: Example text for what to search for in this datasource - :param home_url: The URL of the landing page for this datasource instance. Should point to the most useful page for users, not the company marketing page. - :param crawler_seed_urls: This only applies to WEB_CRAWL and BROWSER_CRAWL datasources. Defines the seed URLs for crawling. - :param icon_dark_url: The URL to an image to be displayed as an icon for this datasource instance in dark mode. Must have a transparency mask. SVG are recommended over PNG. Public, scio-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). - :param hide_built_in_facets: List of built-in facet types that should be hidden for the datasource. - :param canonicalizing_url_regex: A list of regular expressions to apply to an arbitrary URL to transform it into a canonical URL for this datasource instance. Regexes are to be applied in the order specified in this list. - :param canonicalizing_title_regex: A list of regular expressions to apply to an arbitrary title to transform it into a title that will be displayed in the search results - :param redlist_title_regex: A regex that identifies titles that should not be indexed - :param connector_type: - :param quicklinks: List of actions for this datasource instance that will show up in autocomplete and app card, e.g. \"Create new issue\" for jira - :param render_config_preset: The name of a render config to use for displaying results from this datasource. Any well known datasource name may be used to render the same as that source, e.g. `web` or `gdrive`. Please refer to [this](https://developers.glean.com/docs/rendering_search_results/) for more details - :param aliases: Aliases that can be used as `app` operator-values. - :param is_on_prem: Whether or not this datasource is hosted on-premise. - :param trust_url_regex_for_view_activity: True if browser activity is able to report the correct URL for VIEW events. Set this to true if the URLs reported by Chrome are constant throughout each page load. Set this to false if the page has Javascript that modifies the URL during or after the load. - :param include_utm_source: If true, a utm_source query param will be added to outbound links to this datasource within Glean. - :param strip_fragment_in_canonical_url: If true, the fragment part of the URL will be stripped when converting to a canonical url. - :param identity_datasource_name: If the datasource uses another datasource for identity info, then the name of the datasource. The identity datasource must exist already and the datasource with identity info should have its visibility enabled for search results. - :param product_access_group: If the datasource uses a specific product access group, then the name of that group. - :param is_user_referenced_by_email: whether email is used to reference users in document ACLs and in group memberships. - :param is_entity_datasource: True if this datasource is used to push custom entities. - :param is_test_datasource: True if this datasource will be used for testing purpose only. Documents from such a datasource wouldn't have any effect on search rankings. + ) -> models.DatasourceConfigurationResponse: + r"""Get datasource instance configuration + + Gets the greenlisted configuration values for a datasource instance. Returns only configuration keys that are exposed via the public API greenlist. + + + :param datasource_id: The datasource type identifier (e.g. o365sharepoint) + :param instance_id: The datasource instance identifier :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -107,61 +44,24 @@ def add( else: base_url = self._get_url(base_url, url_variables) - request = models.CustomDatasourceConfig( - name=name, - display_name=display_name, - datasource_category=datasource_category, - url_regex=url_regex, - icon_url=icon_url, - object_definitions=utils.get_pydantic_model( - object_definitions, Optional[List[models.ObjectDefinition]] - ), - suggestion_text=suggestion_text, - home_url=home_url, - crawler_seed_urls=crawler_seed_urls, - icon_dark_url=icon_dark_url, - hide_built_in_facets=hide_built_in_facets, - canonicalizing_url_regex=utils.get_pydantic_model( - canonicalizing_url_regex, Optional[List[models.CanonicalizingRegexType]] - ), - canonicalizing_title_regex=utils.get_pydantic_model( - canonicalizing_title_regex, - Optional[List[models.CanonicalizingRegexType]], - ), - redlist_title_regex=redlist_title_regex, - connector_type=connector_type, - quicklinks=utils.get_pydantic_model( - quicklinks, Optional[List[models.Quicklink]] - ), - render_config_preset=render_config_preset, - aliases=aliases, - is_on_prem=is_on_prem, - trust_url_regex_for_view_activity=trust_url_regex_for_view_activity, - include_utm_source=include_utm_source, - strip_fragment_in_canonical_url=strip_fragment_in_canonical_url, - identity_datasource_name=identity_datasource_name, - product_access_group=product_access_group, - is_user_referenced_by_email=is_user_referenced_by_email, - is_entity_datasource=is_entity_datasource, - is_test_datasource=is_test_datasource, + request = models.GetDatasourceInstanceConfigurationRequest( + datasource_id=datasource_id, + instance_id=instance_id, ) req = self._build_request( - method="POST", - path="/api/index/v1/adddatasource", + method="GET", + path="/rest/api/v1/configure/datasources/{datasourceId}/instances/{instanceId}", base_url=base_url, url_variables=url_variables, request=request, - request_body_required=True, - request_has_path_params=False, + request_body_required=False, + request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="*/*", + accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CustomDatasourceConfig - ), allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -178,20 +78,26 @@ def add( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="post_/api/index/v1/adddatasource", + operation_id="getDatasourceInstanceConfiguration", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["400", "401", "403", "404", "4XX", "5XX"], retry_config=retry_config, ) - if utils.match_response(http_res, "200", "*"): - return - if utils.match_response(http_res, ["400", "401", "4XX"], "*"): + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.DatasourceConfigurationResponse, http_res + ) + if utils.match_response(http_res, ["400", "403", "404"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["401", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.GleanError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, "5XX", "*"): @@ -200,88 +106,23 @@ def add( raise errors.GleanError("Unexpected response received", http_res) - async def add_async( + async def get_datasource_instance_configuration_async( self, *, - name: str, - display_name: Optional[str] = None, - datasource_category: Optional[ - models.DatasourceCategory - ] = models.DatasourceCategory.UNCATEGORIZED, - url_regex: Optional[str] = None, - icon_url: Optional[str] = None, - object_definitions: Optional[ - Union[List[models.ObjectDefinition], List[models.ObjectDefinitionTypedDict]] - ] = None, - suggestion_text: Optional[str] = None, - home_url: Optional[str] = None, - crawler_seed_urls: Optional[List[str]] = None, - icon_dark_url: Optional[str] = None, - hide_built_in_facets: Optional[List[models.HideBuiltInFacet]] = None, - canonicalizing_url_regex: Optional[ - Union[ - List[models.CanonicalizingRegexType], - List[models.CanonicalizingRegexTypeTypedDict], - ] - ] = None, - canonicalizing_title_regex: Optional[ - Union[ - List[models.CanonicalizingRegexType], - List[models.CanonicalizingRegexTypeTypedDict], - ] - ] = None, - redlist_title_regex: Optional[str] = None, - connector_type: Optional[models.CustomDatasourceConfigConnectorType] = None, - quicklinks: Optional[ - Union[List[models.Quicklink], List[models.QuicklinkTypedDict]] - ] = None, - render_config_preset: Optional[str] = None, - aliases: Optional[List[str]] = None, - is_on_prem: Optional[bool] = None, - trust_url_regex_for_view_activity: Optional[bool] = True, - include_utm_source: Optional[bool] = None, - strip_fragment_in_canonical_url: Optional[bool] = True, - identity_datasource_name: Optional[str] = None, - product_access_group: Optional[str] = None, - is_user_referenced_by_email: Optional[bool] = None, - is_entity_datasource: Optional[bool] = False, - is_test_datasource: Optional[bool] = False, + datasource_id: str, + instance_id: str, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ): - r"""Add or update datasource - - Add or update a custom datasource and its schema. - - :param name: Unique identifier of datasource instance to which this config applies. - :param display_name: The user-friendly instance label to display. If omitted, falls back to the title-cased `name`. - :param datasource_category: The type of this datasource. It is an important signal for relevance and must be specified and cannot be UNCATEGORIZED. Please refer to [this](https://developers.glean.com/docs/indexing_api_datasource_category/) for more details. - :param url_regex: Regular expression that matches URLs of documents of the datasource instance. The behavior for multiple matches is non-deterministic. **Note: `urlRegex` is a required field for non-entity datasources, but not required if the datasource is used to push custom entities (ie. datasources where isEntityDatasource is false). Please add a regex as specific as possible to this datasource instance.** - :param icon_url: The URL to an image to be displayed as an icon for this datasource instance. Must have a transparency mask. SVG are recommended over PNG. Public, scio-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). - :param object_definitions: The list of top-level `objectType`s for the datasource. - :param suggestion_text: Example text for what to search for in this datasource - :param home_url: The URL of the landing page for this datasource instance. Should point to the most useful page for users, not the company marketing page. - :param crawler_seed_urls: This only applies to WEB_CRAWL and BROWSER_CRAWL datasources. Defines the seed URLs for crawling. - :param icon_dark_url: The URL to an image to be displayed as an icon for this datasource instance in dark mode. Must have a transparency mask. SVG are recommended over PNG. Public, scio-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). - :param hide_built_in_facets: List of built-in facet types that should be hidden for the datasource. - :param canonicalizing_url_regex: A list of regular expressions to apply to an arbitrary URL to transform it into a canonical URL for this datasource instance. Regexes are to be applied in the order specified in this list. - :param canonicalizing_title_regex: A list of regular expressions to apply to an arbitrary title to transform it into a title that will be displayed in the search results - :param redlist_title_regex: A regex that identifies titles that should not be indexed - :param connector_type: - :param quicklinks: List of actions for this datasource instance that will show up in autocomplete and app card, e.g. \"Create new issue\" for jira - :param render_config_preset: The name of a render config to use for displaying results from this datasource. Any well known datasource name may be used to render the same as that source, e.g. `web` or `gdrive`. Please refer to [this](https://developers.glean.com/docs/rendering_search_results/) for more details - :param aliases: Aliases that can be used as `app` operator-values. - :param is_on_prem: Whether or not this datasource is hosted on-premise. - :param trust_url_regex_for_view_activity: True if browser activity is able to report the correct URL for VIEW events. Set this to true if the URLs reported by Chrome are constant throughout each page load. Set this to false if the page has Javascript that modifies the URL during or after the load. - :param include_utm_source: If true, a utm_source query param will be added to outbound links to this datasource within Glean. - :param strip_fragment_in_canonical_url: If true, the fragment part of the URL will be stripped when converting to a canonical url. - :param identity_datasource_name: If the datasource uses another datasource for identity info, then the name of the datasource. The identity datasource must exist already and the datasource with identity info should have its visibility enabled for search results. - :param product_access_group: If the datasource uses a specific product access group, then the name of that group. - :param is_user_referenced_by_email: whether email is used to reference users in document ACLs and in group memberships. - :param is_entity_datasource: True if this datasource is used to push custom entities. - :param is_test_datasource: True if this datasource will be used for testing purpose only. Documents from such a datasource wouldn't have any effect on search rankings. + ) -> models.DatasourceConfigurationResponse: + r"""Get datasource instance configuration + + Gets the greenlisted configuration values for a datasource instance. Returns only configuration keys that are exposed via the public API greenlist. + + + :param datasource_id: The datasource type identifier (e.g. o365sharepoint) + :param instance_id: The datasource instance identifier :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -297,61 +138,24 @@ async def add_async( else: base_url = self._get_url(base_url, url_variables) - request = models.CustomDatasourceConfig( - name=name, - display_name=display_name, - datasource_category=datasource_category, - url_regex=url_regex, - icon_url=icon_url, - object_definitions=utils.get_pydantic_model( - object_definitions, Optional[List[models.ObjectDefinition]] - ), - suggestion_text=suggestion_text, - home_url=home_url, - crawler_seed_urls=crawler_seed_urls, - icon_dark_url=icon_dark_url, - hide_built_in_facets=hide_built_in_facets, - canonicalizing_url_regex=utils.get_pydantic_model( - canonicalizing_url_regex, Optional[List[models.CanonicalizingRegexType]] - ), - canonicalizing_title_regex=utils.get_pydantic_model( - canonicalizing_title_regex, - Optional[List[models.CanonicalizingRegexType]], - ), - redlist_title_regex=redlist_title_regex, - connector_type=connector_type, - quicklinks=utils.get_pydantic_model( - quicklinks, Optional[List[models.Quicklink]] - ), - render_config_preset=render_config_preset, - aliases=aliases, - is_on_prem=is_on_prem, - trust_url_regex_for_view_activity=trust_url_regex_for_view_activity, - include_utm_source=include_utm_source, - strip_fragment_in_canonical_url=strip_fragment_in_canonical_url, - identity_datasource_name=identity_datasource_name, - product_access_group=product_access_group, - is_user_referenced_by_email=is_user_referenced_by_email, - is_entity_datasource=is_entity_datasource, - is_test_datasource=is_test_datasource, + request = models.GetDatasourceInstanceConfigurationRequest( + datasource_id=datasource_id, + instance_id=instance_id, ) req = self._build_request_async( - method="POST", - path="/api/index/v1/adddatasource", + method="GET", + path="/rest/api/v1/configure/datasources/{datasourceId}/instances/{instanceId}", base_url=base_url, url_variables=url_variables, request=request, - request_body_required=True, - request_has_path_params=False, + request_body_required=False, + request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="*/*", + accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CustomDatasourceConfig - ), allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -368,20 +172,26 @@ async def add_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="post_/api/index/v1/adddatasource", + operation_id="getDatasourceInstanceConfiguration", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["400", "401", "403", "404", "4XX", "5XX"], retry_config=retry_config, ) - if utils.match_response(http_res, "200", "*"): - return - if utils.match_response(http_res, ["400", "401", "4XX"], "*"): + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.DatasourceConfigurationResponse, http_res + ) + if utils.match_response(http_res, ["400", "403", "404"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["401", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.GleanError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, "5XX", "*"): @@ -390,20 +200,28 @@ async def add_async( raise errors.GleanError("Unexpected response received", http_res) - def retrieve_config( + def update_datasource_instance_configuration( self, *, - datasource: str, + datasource_id: str, + instance_id: str, + configuration: Union[ + models.DatasourceInstanceConfiguration, + models.DatasourceInstanceConfigurationTypedDict, + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.CustomDatasourceConfig: - r"""Get datasource config + ) -> models.DatasourceConfigurationResponse: + r"""Update datasource instance configuration + + Updates the greenlisted configuration values for a datasource instance. Only configuration keys that are exposed via the public API greenlist may be set. Returns the full greenlisted configuration after the update is applied. - Fetches the datasource config for the specified custom datasource. - :param datasource: Datasource name for which config is needed. + :param datasource_id: The datasource type identifier (e.g. o365sharepoint) + :param instance_id: The datasource instance identifier + :param configuration: Configuration for a datasource instance :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -419,25 +237,35 @@ def retrieve_config( else: base_url = self._get_url(base_url, url_variables) - request = models.GetDatasourceConfigRequest( - datasource=datasource, + request = models.UpdateDatasourceInstanceConfigurationRequest( + datasource_id=datasource_id, + instance_id=instance_id, + update_datasource_configuration_request=models.UpdateDatasourceConfigurationRequest( + configuration=utils.get_pydantic_model( + configuration, models.DatasourceInstanceConfiguration + ), + ), ) req = self._build_request( - method="POST", - path="/api/index/v1/getdatasourceconfig", + method="PATCH", + path="/rest/api/v1/configure/datasources/{datasourceId}/instances/{instanceId}", base_url=base_url, url_variables=url_variables, request=request, request_body_required=True, - request_has_path_params=False, + request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetDatasourceConfigRequest + request.update_datasource_configuration_request, + False, + False, + "json", + models.UpdateDatasourceConfigurationRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -455,20 +283,26 @@ def retrieve_config( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="post_/api/index/v1/getdatasourceconfig", + operation_id="updateDatasourceInstanceConfiguration", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + error_status_codes=["400", "401", "403", "404", "4XX", "5XX"], retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.CustomDatasourceConfig, http_res) - if utils.match_response(http_res, ["400", "401", "409", "4XX"], "*"): + return unmarshal_json_response( + models.DatasourceConfigurationResponse, http_res + ) + if utils.match_response(http_res, ["400", "403", "404"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["401", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.GleanError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, "5XX", "*"): @@ -477,20 +311,28 @@ def retrieve_config( raise errors.GleanError("Unexpected response received", http_res) - async def retrieve_config_async( + async def update_datasource_instance_configuration_async( self, *, - datasource: str, + datasource_id: str, + instance_id: str, + configuration: Union[ + models.DatasourceInstanceConfiguration, + models.DatasourceInstanceConfigurationTypedDict, + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.CustomDatasourceConfig: - r"""Get datasource config + ) -> models.DatasourceConfigurationResponse: + r"""Update datasource instance configuration - Fetches the datasource config for the specified custom datasource. + Updates the greenlisted configuration values for a datasource instance. Only configuration keys that are exposed via the public API greenlist may be set. Returns the full greenlisted configuration after the update is applied. - :param datasource: Datasource name for which config is needed. + + :param datasource_id: The datasource type identifier (e.g. o365sharepoint) + :param instance_id: The datasource instance identifier + :param configuration: Configuration for a datasource instance :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -506,25 +348,35 @@ async def retrieve_config_async( else: base_url = self._get_url(base_url, url_variables) - request = models.GetDatasourceConfigRequest( - datasource=datasource, + request = models.UpdateDatasourceInstanceConfigurationRequest( + datasource_id=datasource_id, + instance_id=instance_id, + update_datasource_configuration_request=models.UpdateDatasourceConfigurationRequest( + configuration=utils.get_pydantic_model( + configuration, models.DatasourceInstanceConfiguration + ), + ), ) req = self._build_request_async( - method="POST", - path="/api/index/v1/getdatasourceconfig", + method="PATCH", + path="/rest/api/v1/configure/datasources/{datasourceId}/instances/{instanceId}", base_url=base_url, url_variables=url_variables, request=request, request_body_required=True, - request_has_path_params=False, + request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetDatasourceConfigRequest + request.update_datasource_configuration_request, + False, + False, + "json", + models.UpdateDatasourceConfigurationRequest, ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -542,20 +394,26 @@ async def retrieve_config_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="post_/api/index/v1/getdatasourceconfig", + operation_id="updateDatasourceInstanceConfiguration", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + error_status_codes=["400", "401", "403", "404", "4XX", "5XX"], retry_config=retry_config, ) + response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.CustomDatasourceConfig, http_res) - if utils.match_response(http_res, ["400", "401", "409", "4XX"], "*"): + return unmarshal_json_response( + models.DatasourceConfigurationResponse, http_res + ) + if utils.match_response(http_res, ["400", "403", "404"], "application/json"): + response_data = unmarshal_json_response(errors.ErrorResponseData, http_res) + raise errors.ErrorResponse(response_data, http_res) + if utils.match_response(http_res, ["401", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.GleanError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, "5XX", "*"): diff --git a/src/glean/api_client/errors/__init__.py b/src/glean/api_client/errors/__init__.py index 185efb34..b8998ad3 100644 --- a/src/glean/api_client/errors/__init__.py +++ b/src/glean/api_client/errors/__init__.py @@ -7,6 +7,7 @@ if TYPE_CHECKING: from .collectionerror import CollectionError, CollectionErrorData + from .errorresponse import ErrorResponse, ErrorResponseData from .gleandataerror import GleanDataError, GleanDataErrorData from .gleanerror import GleanError from .no_response_error import NoResponseError @@ -15,6 +16,8 @@ __all__ = [ "CollectionError", "CollectionErrorData", + "ErrorResponse", + "ErrorResponseData", "GleanBaseError", "GleanDataError", "GleanDataErrorData", @@ -26,6 +29,8 @@ _dynamic_imports: dict[str, str] = { "CollectionError": ".collectionerror", "CollectionErrorData": ".collectionerror", + "ErrorResponse": ".errorresponse", + "ErrorResponseData": ".errorresponse", "GleanDataError": ".gleandataerror", "GleanDataErrorData": ".gleandataerror", "GleanError": ".gleanerror", diff --git a/src/glean/api_client/errors/errorresponse.py b/src/glean/api_client/errors/errorresponse.py new file mode 100644 index 00000000..70cab4aa --- /dev/null +++ b/src/glean/api_client/errors/errorresponse.py @@ -0,0 +1,31 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from dataclasses import dataclass, field +from glean.api_client.errors import GleanBaseError +from glean.api_client.types import BaseModel +import httpx +from typing import Optional + + +class ErrorResponseData(BaseModel): + message: Optional[str] = None + r"""Client-facing error message describing what went wrong""" + + +@dataclass(unsafe_hash=True) +class ErrorResponse(GleanBaseError): + r"""Error response returned for failed requests""" + + data: ErrorResponseData = field(hash=False) + + def __init__( + self, + data: ErrorResponseData, + raw_response: httpx.Response, + body: Optional[str] = None, + ): + fallback = body or raw_response.text + message = str(data.message) or fallback + super().__init__(message, raw_response, body) + object.__setattr__(self, "data", data) diff --git a/src/glean/api_client/errors/gleandataerror.py b/src/glean/api_client/errors/gleandataerror.py index 7b0dfa05..754c85de 100644 --- a/src/glean/api_client/errors/gleandataerror.py +++ b/src/glean/api_client/errors/gleandataerror.py @@ -6,7 +6,6 @@ from glean.api_client.models import ( errormessage as models_errormessage, invalidoperatorvalueerror as models_invalidoperatorvalueerror, - unauthorizeddatasourceinstance as models_unauthorizeddatasourceinstance, ) from glean.api_client.types import BaseModel import httpx @@ -37,15 +36,6 @@ class GleanDataErrorData(BaseModel): Optional[bool], pydantic.Field(alias="federatedSearchRateLimitError") ] = None r"""Indicates the federated search results could not be fetched due to rate limiting.""" - unauthorized_datasource_instances: Annotated[ - Optional[ - List[models_unauthorizeddatasourceinstance.UnauthorizedDatasourceInstance] - ], - pydantic.Field(alias="unauthorizedDatasourceInstances"), - ] = None - r"""Datasource instances that could not be queried because the user has not completed or has expired per-user OAuth. - - """ @dataclass(unsafe_hash=True) diff --git a/src/glean/api_client/indexing.py b/src/glean/api_client/indexing.py index 27b07e8e..3a668c8c 100644 --- a/src/glean/api_client/indexing.py +++ b/src/glean/api_client/indexing.py @@ -2,9 +2,9 @@ from .basesdk import BaseSDK from .sdkconfiguration import SDKConfiguration -from glean.api_client.datasources import Datasources from glean.api_client.indexing_authentication import IndexingAuthentication from glean.api_client.indexing_datasource import IndexingDatasource +from glean.api_client.indexing_datasources import IndexingDatasources from glean.api_client.indexing_documents import IndexingDocuments from glean.api_client.indexing_permissions import IndexingPermissions from glean.api_client.indexing_shortcuts import IndexingShortcuts @@ -17,7 +17,7 @@ class Indexing(BaseSDK): permissions: IndexingPermissions datasource: IndexingDatasource people: People - datasources: Datasources + datasources: IndexingDatasources authentication: IndexingAuthentication shortcuts: IndexingShortcuts @@ -39,7 +39,7 @@ def _init_sdks(self): self.sdk_configuration, parent_ref=self.parent_ref ) self.people = People(self.sdk_configuration, parent_ref=self.parent_ref) - self.datasources = Datasources( + self.datasources = IndexingDatasources( self.sdk_configuration, parent_ref=self.parent_ref ) self.authentication = IndexingAuthentication( diff --git a/src/glean/api_client/indexing_datasources.py b/src/glean/api_client/indexing_datasources.py new file mode 100644 index 00000000..f5f55067 --- /dev/null +++ b/src/glean/api_client/indexing_datasources.py @@ -0,0 +1,565 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from glean.api_client import errors, models, utils +from glean.api_client._hooks import HookContext +from glean.api_client.types import OptionalNullable, UNSET +from glean.api_client.utils import get_security_from_env +from glean.api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import List, Mapping, Optional, Union + + +class IndexingDatasources(BaseSDK): + def add( + self, + *, + name: str, + display_name: Optional[str] = None, + datasource_category: Optional[ + models.DatasourceCategory + ] = models.DatasourceCategory.UNCATEGORIZED, + url_regex: Optional[str] = None, + icon_url: Optional[str] = None, + object_definitions: Optional[ + Union[List[models.ObjectDefinition], List[models.ObjectDefinitionTypedDict]] + ] = None, + suggestion_text: Optional[str] = None, + home_url: Optional[str] = None, + crawler_seed_urls: Optional[List[str]] = None, + icon_dark_url: Optional[str] = None, + hide_built_in_facets: Optional[List[models.HideBuiltInFacet]] = None, + canonicalizing_url_regex: Optional[ + Union[ + List[models.CanonicalizingRegexType], + List[models.CanonicalizingRegexTypeTypedDict], + ] + ] = None, + canonicalizing_title_regex: Optional[ + Union[ + List[models.CanonicalizingRegexType], + List[models.CanonicalizingRegexTypeTypedDict], + ] + ] = None, + redlist_title_regex: Optional[str] = None, + connector_type: Optional[models.CustomDatasourceConfigConnectorType] = None, + quicklinks: Optional[ + Union[List[models.Quicklink], List[models.QuicklinkTypedDict]] + ] = None, + render_config_preset: Optional[str] = None, + aliases: Optional[List[str]] = None, + is_on_prem: Optional[bool] = None, + trust_url_regex_for_view_activity: Optional[bool] = True, + include_utm_source: Optional[bool] = None, + strip_fragment_in_canonical_url: Optional[bool] = True, + identity_datasource_name: Optional[str] = None, + product_access_group: Optional[str] = None, + is_user_referenced_by_email: Optional[bool] = None, + is_entity_datasource: Optional[bool] = False, + is_test_datasource: Optional[bool] = False, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ): + r"""Add or update datasource + + Add or update a custom datasource and its schema. + + :param name: Unique identifier of datasource instance to which this config applies. + :param display_name: The user-friendly instance label to display. If omitted, falls back to the title-cased `name`. + :param datasource_category: The type of this datasource. It is an important signal for relevance and must be specified and cannot be UNCATEGORIZED. Please refer to [this](https://developers.glean.com/docs/indexing_api_datasource_category/) for more details. + :param url_regex: Regular expression that matches URLs of documents of the datasource instance. The behavior for multiple matches is non-deterministic. **Note: `urlRegex` is a required field for non-entity datasources, but not required if the datasource is used to push custom entities (ie. datasources where isEntityDatasource is false). Please add a regex as specific as possible to this datasource instance.** + :param icon_url: The URL to an image to be displayed as an icon for this datasource instance. Must have a transparency mask. SVG are recommended over PNG. Public, scio-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). + :param object_definitions: The list of top-level `objectType`s for the datasource. + :param suggestion_text: Example text for what to search for in this datasource + :param home_url: The URL of the landing page for this datasource instance. Should point to the most useful page for users, not the company marketing page. + :param crawler_seed_urls: This only applies to WEB_CRAWL and BROWSER_CRAWL datasources. Defines the seed URLs for crawling. + :param icon_dark_url: The URL to an image to be displayed as an icon for this datasource instance in dark mode. Must have a transparency mask. SVG are recommended over PNG. Public, scio-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). + :param hide_built_in_facets: List of built-in facet types that should be hidden for the datasource. + :param canonicalizing_url_regex: A list of regular expressions to apply to an arbitrary URL to transform it into a canonical URL for this datasource instance. Regexes are to be applied in the order specified in this list. + :param canonicalizing_title_regex: A list of regular expressions to apply to an arbitrary title to transform it into a title that will be displayed in the search results + :param redlist_title_regex: A regex that identifies titles that should not be indexed + :param connector_type: + :param quicklinks: List of actions for this datasource instance that will show up in autocomplete and app card, e.g. \"Create new issue\" for jira + :param render_config_preset: The name of a render config to use for displaying results from this datasource. Any well known datasource name may be used to render the same as that source, e.g. `web` or `gdrive`. Please refer to [this](https://developers.glean.com/docs/rendering_search_results/) for more details + :param aliases: Aliases that can be used as `app` operator-values. + :param is_on_prem: Whether or not this datasource is hosted on-premise. + :param trust_url_regex_for_view_activity: True if browser activity is able to report the correct URL for VIEW events. Set this to true if the URLs reported by Chrome are constant throughout each page load. Set this to false if the page has Javascript that modifies the URL during or after the load. + :param include_utm_source: If true, a utm_source query param will be added to outbound links to this datasource within Glean. + :param strip_fragment_in_canonical_url: If true, the fragment part of the URL will be stripped when converting to a canonical url. + :param identity_datasource_name: If the datasource uses another datasource for identity info, then the name of the datasource. The identity datasource must exist already and the datasource with identity info should have its visibility enabled for search results. + :param product_access_group: If the datasource uses a specific product access group, then the name of that group. + :param is_user_referenced_by_email: whether email is used to reference users in document ACLs and in group memberships. + :param is_entity_datasource: True if this datasource is used to push custom entities. + :param is_test_datasource: True if this datasource will be used for testing purpose only. Documents from such a datasource wouldn't have any effect on search rankings. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.CustomDatasourceConfig( + name=name, + display_name=display_name, + datasource_category=datasource_category, + url_regex=url_regex, + icon_url=icon_url, + object_definitions=utils.get_pydantic_model( + object_definitions, Optional[List[models.ObjectDefinition]] + ), + suggestion_text=suggestion_text, + home_url=home_url, + crawler_seed_urls=crawler_seed_urls, + icon_dark_url=icon_dark_url, + hide_built_in_facets=hide_built_in_facets, + canonicalizing_url_regex=utils.get_pydantic_model( + canonicalizing_url_regex, Optional[List[models.CanonicalizingRegexType]] + ), + canonicalizing_title_regex=utils.get_pydantic_model( + canonicalizing_title_regex, + Optional[List[models.CanonicalizingRegexType]], + ), + redlist_title_regex=redlist_title_regex, + connector_type=connector_type, + quicklinks=utils.get_pydantic_model( + quicklinks, Optional[List[models.Quicklink]] + ), + render_config_preset=render_config_preset, + aliases=aliases, + is_on_prem=is_on_prem, + trust_url_regex_for_view_activity=trust_url_regex_for_view_activity, + include_utm_source=include_utm_source, + strip_fragment_in_canonical_url=strip_fragment_in_canonical_url, + identity_datasource_name=identity_datasource_name, + product_access_group=product_access_group, + is_user_referenced_by_email=is_user_referenced_by_email, + is_entity_datasource=is_entity_datasource, + is_test_datasource=is_test_datasource, + ) + + req = self._build_request( + method="POST", + path="/api/index/v1/adddatasource", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.CustomDatasourceConfig + ), + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="post_/api/index/v1/adddatasource", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return + if utils.match_response(http_res, ["400", "401", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + async def add_async( + self, + *, + name: str, + display_name: Optional[str] = None, + datasource_category: Optional[ + models.DatasourceCategory + ] = models.DatasourceCategory.UNCATEGORIZED, + url_regex: Optional[str] = None, + icon_url: Optional[str] = None, + object_definitions: Optional[ + Union[List[models.ObjectDefinition], List[models.ObjectDefinitionTypedDict]] + ] = None, + suggestion_text: Optional[str] = None, + home_url: Optional[str] = None, + crawler_seed_urls: Optional[List[str]] = None, + icon_dark_url: Optional[str] = None, + hide_built_in_facets: Optional[List[models.HideBuiltInFacet]] = None, + canonicalizing_url_regex: Optional[ + Union[ + List[models.CanonicalizingRegexType], + List[models.CanonicalizingRegexTypeTypedDict], + ] + ] = None, + canonicalizing_title_regex: Optional[ + Union[ + List[models.CanonicalizingRegexType], + List[models.CanonicalizingRegexTypeTypedDict], + ] + ] = None, + redlist_title_regex: Optional[str] = None, + connector_type: Optional[models.CustomDatasourceConfigConnectorType] = None, + quicklinks: Optional[ + Union[List[models.Quicklink], List[models.QuicklinkTypedDict]] + ] = None, + render_config_preset: Optional[str] = None, + aliases: Optional[List[str]] = None, + is_on_prem: Optional[bool] = None, + trust_url_regex_for_view_activity: Optional[bool] = True, + include_utm_source: Optional[bool] = None, + strip_fragment_in_canonical_url: Optional[bool] = True, + identity_datasource_name: Optional[str] = None, + product_access_group: Optional[str] = None, + is_user_referenced_by_email: Optional[bool] = None, + is_entity_datasource: Optional[bool] = False, + is_test_datasource: Optional[bool] = False, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ): + r"""Add or update datasource + + Add or update a custom datasource and its schema. + + :param name: Unique identifier of datasource instance to which this config applies. + :param display_name: The user-friendly instance label to display. If omitted, falls back to the title-cased `name`. + :param datasource_category: The type of this datasource. It is an important signal for relevance and must be specified and cannot be UNCATEGORIZED. Please refer to [this](https://developers.glean.com/docs/indexing_api_datasource_category/) for more details. + :param url_regex: Regular expression that matches URLs of documents of the datasource instance. The behavior for multiple matches is non-deterministic. **Note: `urlRegex` is a required field for non-entity datasources, but not required if the datasource is used to push custom entities (ie. datasources where isEntityDatasource is false). Please add a regex as specific as possible to this datasource instance.** + :param icon_url: The URL to an image to be displayed as an icon for this datasource instance. Must have a transparency mask. SVG are recommended over PNG. Public, scio-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). + :param object_definitions: The list of top-level `objectType`s for the datasource. + :param suggestion_text: Example text for what to search for in this datasource + :param home_url: The URL of the landing page for this datasource instance. Should point to the most useful page for users, not the company marketing page. + :param crawler_seed_urls: This only applies to WEB_CRAWL and BROWSER_CRAWL datasources. Defines the seed URLs for crawling. + :param icon_dark_url: The URL to an image to be displayed as an icon for this datasource instance in dark mode. Must have a transparency mask. SVG are recommended over PNG. Public, scio-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). + :param hide_built_in_facets: List of built-in facet types that should be hidden for the datasource. + :param canonicalizing_url_regex: A list of regular expressions to apply to an arbitrary URL to transform it into a canonical URL for this datasource instance. Regexes are to be applied in the order specified in this list. + :param canonicalizing_title_regex: A list of regular expressions to apply to an arbitrary title to transform it into a title that will be displayed in the search results + :param redlist_title_regex: A regex that identifies titles that should not be indexed + :param connector_type: + :param quicklinks: List of actions for this datasource instance that will show up in autocomplete and app card, e.g. \"Create new issue\" for jira + :param render_config_preset: The name of a render config to use for displaying results from this datasource. Any well known datasource name may be used to render the same as that source, e.g. `web` or `gdrive`. Please refer to [this](https://developers.glean.com/docs/rendering_search_results/) for more details + :param aliases: Aliases that can be used as `app` operator-values. + :param is_on_prem: Whether or not this datasource is hosted on-premise. + :param trust_url_regex_for_view_activity: True if browser activity is able to report the correct URL for VIEW events. Set this to true if the URLs reported by Chrome are constant throughout each page load. Set this to false if the page has Javascript that modifies the URL during or after the load. + :param include_utm_source: If true, a utm_source query param will be added to outbound links to this datasource within Glean. + :param strip_fragment_in_canonical_url: If true, the fragment part of the URL will be stripped when converting to a canonical url. + :param identity_datasource_name: If the datasource uses another datasource for identity info, then the name of the datasource. The identity datasource must exist already and the datasource with identity info should have its visibility enabled for search results. + :param product_access_group: If the datasource uses a specific product access group, then the name of that group. + :param is_user_referenced_by_email: whether email is used to reference users in document ACLs and in group memberships. + :param is_entity_datasource: True if this datasource is used to push custom entities. + :param is_test_datasource: True if this datasource will be used for testing purpose only. Documents from such a datasource wouldn't have any effect on search rankings. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.CustomDatasourceConfig( + name=name, + display_name=display_name, + datasource_category=datasource_category, + url_regex=url_regex, + icon_url=icon_url, + object_definitions=utils.get_pydantic_model( + object_definitions, Optional[List[models.ObjectDefinition]] + ), + suggestion_text=suggestion_text, + home_url=home_url, + crawler_seed_urls=crawler_seed_urls, + icon_dark_url=icon_dark_url, + hide_built_in_facets=hide_built_in_facets, + canonicalizing_url_regex=utils.get_pydantic_model( + canonicalizing_url_regex, Optional[List[models.CanonicalizingRegexType]] + ), + canonicalizing_title_regex=utils.get_pydantic_model( + canonicalizing_title_regex, + Optional[List[models.CanonicalizingRegexType]], + ), + redlist_title_regex=redlist_title_regex, + connector_type=connector_type, + quicklinks=utils.get_pydantic_model( + quicklinks, Optional[List[models.Quicklink]] + ), + render_config_preset=render_config_preset, + aliases=aliases, + is_on_prem=is_on_prem, + trust_url_regex_for_view_activity=trust_url_regex_for_view_activity, + include_utm_source=include_utm_source, + strip_fragment_in_canonical_url=strip_fragment_in_canonical_url, + identity_datasource_name=identity_datasource_name, + product_access_group=product_access_group, + is_user_referenced_by_email=is_user_referenced_by_email, + is_entity_datasource=is_entity_datasource, + is_test_datasource=is_test_datasource, + ) + + req = self._build_request_async( + method="POST", + path="/api/index/v1/adddatasource", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.CustomDatasourceConfig + ), + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="post_/api/index/v1/adddatasource", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return + if utils.match_response(http_res, ["400", "401", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + def retrieve_config( + self, + *, + datasource: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.CustomDatasourceConfig: + r"""Get datasource config + + Fetches the datasource config for the specified custom datasource. + + :param datasource: Datasource name for which config is needed. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.GetDatasourceConfigRequest( + datasource=datasource, + ) + + req = self._build_request( + method="POST", + path="/api/index/v1/getdatasourceconfig", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.GetDatasourceConfigRequest + ), + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="post_/api/index/v1/getdatasourceconfig", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "409", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.CustomDatasourceConfig, http_res) + if utils.match_response(http_res, ["400", "401", "409", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) + + async def retrieve_config_async( + self, + *, + datasource: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.CustomDatasourceConfig: + r"""Get datasource config + + Fetches the datasource config for the specified custom datasource. + + :param datasource: Datasource name for which config is needed. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.GetDatasourceConfigRequest( + datasource=datasource, + ) + + req = self._build_request_async( + method="POST", + path="/api/index/v1/getdatasourceconfig", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.GetDatasourceConfigRequest + ), + allow_empty_value=None, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="post_/api/index/v1/getdatasourceconfig", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "409", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.CustomDatasourceConfig, http_res) + if utils.match_response(http_res, ["400", "401", "409", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + raise errors.GleanError("Unexpected response received", http_res) diff --git a/src/glean/api_client/indexing_documents.py b/src/glean/api_client/indexing_documents.py index 4cfffdbc..b529ffee 100644 --- a/src/glean/api_client/indexing_documents.py +++ b/src/glean/api_client/indexing_documents.py @@ -1624,7 +1624,7 @@ async def check_access_async( raise errors.GleanError("Unexpected response received", http_res) @deprecated( - "warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + "warning: ** DEPRECATED ** - Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated." ) def status( self, @@ -1723,7 +1723,7 @@ def status( raise errors.GleanError("Unexpected response received", http_res) @deprecated( - "warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + "warning: ** DEPRECATED ** - Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated." ) async def status_async( self, @@ -1822,7 +1822,7 @@ async def status_async( raise errors.GleanError("Unexpected response received", http_res) @deprecated( - "warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + "warning: ** DEPRECATED ** - Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated." ) def count( self, @@ -1915,7 +1915,7 @@ def count( raise errors.GleanError("Unexpected response received", http_res) @deprecated( - "warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + "warning: ** DEPRECATED ** - Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated." ) async def count_async( self, diff --git a/src/glean/api_client/models/__init__.py b/src/glean/api_client/models/__init__.py index 87205efe..980bdd63 100644 --- a/src/glean/api_client/models/__init__.py +++ b/src/glean/api_client/models/__init__.py @@ -310,6 +310,7 @@ ConferenceDataTypedDict, Provider, ) + from .configurationvalue import ConfigurationValue, ConfigurationValueTypedDict from .connectortype import ConnectorType from .contentdefinition import ContentDefinition, ContentDefinitionTypedDict from .contenttype import ContentType @@ -401,10 +402,18 @@ DatasourceBulkMembershipDefinition, DatasourceBulkMembershipDefinitionTypedDict, ) + from .datasourceconfigurationresponse import ( + DatasourceConfigurationResponse, + DatasourceConfigurationResponseTypedDict, + ) from .datasourcegroupdefinition import ( DatasourceGroupDefinition, DatasourceGroupDefinitionTypedDict, ) + from .datasourceinstanceconfiguration import ( + DatasourceInstanceConfiguration, + DatasourceInstanceConfigurationTypedDict, + ) from .datasourcemembershipdefinition import ( DatasourceMembershipDefinition, DatasourceMembershipDefinitionTypedDict, @@ -773,6 +782,10 @@ GetDatasourceConfigRequest, GetDatasourceConfigRequestTypedDict, ) + from .getdatasourceinstanceconfigurationop import ( + GetDatasourceInstanceConfigurationRequest, + GetDatasourceInstanceConfigurationRequestTypedDict, + ) from .getdlpreportresponse import ( GetDlpReportResponse, GetDlpReportResponseTypedDict, @@ -1258,6 +1271,14 @@ UpdateAnnouncementRequestPostType, UpdateAnnouncementRequestTypedDict, ) + from .updatedatasourceconfigurationrequest import ( + UpdateDatasourceConfigurationRequest, + UpdateDatasourceConfigurationRequestTypedDict, + ) + from .updatedatasourceinstanceconfigurationop import ( + UpdateDatasourceInstanceConfigurationRequest, + UpdateDatasourceInstanceConfigurationRequestTypedDict, + ) from .updatedlpconfigrequest import ( UpdateDlpConfigRequest, UpdateDlpConfigRequestTypedDict, @@ -1614,6 +1635,8 @@ "ConferenceData", "ConferenceDataSource", "ConferenceDataTypedDict", + "ConfigurationValue", + "ConfigurationValueTypedDict", "ConnectorType", "ContentDefinition", "ContentDefinitionTypedDict", @@ -1685,8 +1708,12 @@ "DatasourceBulkMembershipDefinition", "DatasourceBulkMembershipDefinitionTypedDict", "DatasourceCategory", + "DatasourceConfigurationResponse", + "DatasourceConfigurationResponseTypedDict", "DatasourceGroupDefinition", "DatasourceGroupDefinitionTypedDict", + "DatasourceInstanceConfiguration", + "DatasourceInstanceConfigurationTypedDict", "DatasourceMembershipDefinition", "DatasourceMembershipDefinitionTypedDict", "DatasourceObjectTypeDocumentCountEntry", @@ -1971,6 +1998,8 @@ "GetCollectionResponseTypedDict", "GetDatasourceConfigRequest", "GetDatasourceConfigRequestTypedDict", + "GetDatasourceInstanceConfigurationRequest", + "GetDatasourceInstanceConfigurationRequestTypedDict", "GetDlpReportResponse", "GetDlpReportResponseTypedDict", "GetDocPermissionsRequest", @@ -2459,6 +2488,10 @@ "UpdateAnnouncementRequestChannel", "UpdateAnnouncementRequestPostType", "UpdateAnnouncementRequestTypedDict", + "UpdateDatasourceConfigurationRequest", + "UpdateDatasourceConfigurationRequestTypedDict", + "UpdateDatasourceInstanceConfigurationRequest", + "UpdateDatasourceInstanceConfigurationRequestTypedDict", "UpdateDlpConfigRequest", "UpdateDlpConfigRequestTypedDict", "UpdateDlpConfigResponse", @@ -2729,6 +2762,8 @@ "ConferenceDataSource": ".conferencedata", "ConferenceDataTypedDict": ".conferencedata", "Provider": ".conferencedata", + "ConfigurationValue": ".configurationvalue", + "ConfigurationValueTypedDict": ".configurationvalue", "ConnectorType": ".connectortype", "ContentDefinition": ".contentdefinition", "ContentDefinitionTypedDict": ".contentdefinition", @@ -2794,8 +2829,12 @@ "CustomSensitiveRuleType": ".customsensitiveruletype", "DatasourceBulkMembershipDefinition": ".datasourcebulkmembershipdefinition", "DatasourceBulkMembershipDefinitionTypedDict": ".datasourcebulkmembershipdefinition", + "DatasourceConfigurationResponse": ".datasourceconfigurationresponse", + "DatasourceConfigurationResponseTypedDict": ".datasourceconfigurationresponse", "DatasourceGroupDefinition": ".datasourcegroupdefinition", "DatasourceGroupDefinitionTypedDict": ".datasourcegroupdefinition", + "DatasourceInstanceConfiguration": ".datasourceinstanceconfiguration", + "DatasourceInstanceConfigurationTypedDict": ".datasourceinstanceconfiguration", "DatasourceMembershipDefinition": ".datasourcemembershipdefinition", "DatasourceMembershipDefinitionTypedDict": ".datasourcemembershipdefinition", "DatasourceObjectTypeDocumentCountEntry": ".datasourceobjecttypedocumentcountentry", @@ -3085,6 +3124,8 @@ "GetCollectionResponseTypedDict": ".getcollectionresponse", "GetDatasourceConfigRequest": ".getdatasourceconfigrequest", "GetDatasourceConfigRequestTypedDict": ".getdatasourceconfigrequest", + "GetDatasourceInstanceConfigurationRequest": ".getdatasourceinstanceconfigurationop", + "GetDatasourceInstanceConfigurationRequestTypedDict": ".getdatasourceinstanceconfigurationop", "GetDlpReportResponse": ".getdlpreportresponse", "GetDlpReportResponseTypedDict": ".getdlpreportresponse", "GetdocpermissionsRequestRequest": ".getdocpermissionsop", @@ -3497,6 +3538,10 @@ "UpdateAnnouncementRequestChannel": ".updateannouncementrequest", "UpdateAnnouncementRequestPostType": ".updateannouncementrequest", "UpdateAnnouncementRequestTypedDict": ".updateannouncementrequest", + "UpdateDatasourceConfigurationRequest": ".updatedatasourceconfigurationrequest", + "UpdateDatasourceConfigurationRequestTypedDict": ".updatedatasourceconfigurationrequest", + "UpdateDatasourceInstanceConfigurationRequest": ".updatedatasourceinstanceconfigurationop", + "UpdateDatasourceInstanceConfigurationRequestTypedDict": ".updatedatasourceinstanceconfigurationop", "UpdateDlpConfigRequest": ".updatedlpconfigrequest", "UpdateDlpConfigRequestTypedDict": ".updatedlpconfigrequest", "UpdateDlpConfigResponse": ".updatedlpconfigresponse", diff --git a/src/glean/api_client/models/actionsummary.py b/src/glean/api_client/models/actionsummary.py index ed3d1250..399db3e4 100644 --- a/src/glean/api_client/models/actionsummary.py +++ b/src/glean/api_client/models/actionsummary.py @@ -1,8 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from glean.api_client.types import BaseModel -from typing_extensions import TypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict class ActionSummaryTypedDict(TypedDict): @@ -12,6 +14,26 @@ class ActionSummaryTypedDict(TypedDict): r"""The unique identifier of the action.""" display_name: str r"""The display name of the action.""" + type: NotRequired[str] + r"""The type of tool - RETRIEVAL for read-only operations, ACTION for operations that modify data.""" + auth_type: NotRequired[str] + r"""The authentication type required - OAUTH_USER, OAUTH_ADMIN, API_KEY, BASIC_AUTH, DWD (domain-wide delegation), or NONE.""" + write_action_type: NotRequired[str] + r"""For write actions only - REDIRECT (client renders URL) or EXECUTION (external server call).""" + is_setup_finished: NotRequired[bool] + r"""Whether this action has been fully configured and validated.""" + data_source: NotRequired[str] + r"""Indicates the kind of knowledge a tool would access or modify. + Company knowledge: + - Glean search, and any native tools that derive from it (e.g., expert search, code search) + - Native federated tools to company data sources (e.g., outlook search) + World knowledge: + - Platform action like bravewebsearch, geminiwebsearch, etc + Neutral knowledge: + - Native tools that don't access or modify content via APIs (e.g., file analyst, think) + - Platform read or write tools (creator has to determine their knowledge implications) + + """ class ActionSummary(BaseModel): @@ -22,3 +44,52 @@ class ActionSummary(BaseModel): display_name: str r"""The display name of the action.""" + + type: Optional[str] = None + r"""The type of tool - RETRIEVAL for read-only operations, ACTION for operations that modify data.""" + + auth_type: Optional[str] = None + r"""The authentication type required - OAUTH_USER, OAUTH_ADMIN, API_KEY, BASIC_AUTH, DWD (domain-wide delegation), or NONE.""" + + write_action_type: Optional[str] = None + r"""For write actions only - REDIRECT (client renders URL) or EXECUTION (external server call).""" + + is_setup_finished: Optional[bool] = None + r"""Whether this action has been fully configured and validated.""" + + data_source: Optional[str] = None + r"""Indicates the kind of knowledge a tool would access or modify. + Company knowledge: + - Glean search, and any native tools that derive from it (e.g., expert search, code search) + - Native federated tools to company data sources (e.g., outlook search) + World knowledge: + - Platform action like bravewebsearch, geminiwebsearch, etc + Neutral knowledge: + - Native tools that don't access or modify content via APIs (e.g., file analyst, think) + - Platform read or write tools (creator has to determine their knowledge implications) + + """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "type", + "auth_type", + "write_action_type", + "is_setup_finished", + "data_source", + ] + ) + 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 diff --git a/src/glean/api_client/models/activityevent.py b/src/glean/api_client/models/activityevent.py index 8fe3b064..4f6bc8f3 100644 --- a/src/glean/api_client/models/activityevent.py +++ b/src/glean/api_client/models/activityevent.py @@ -64,7 +64,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/activityeventparams.py b/src/glean/api_client/models/activityeventparams.py index 338ee864..b084d4af 100644 --- a/src/glean/api_client/models/activityeventparams.py +++ b/src/glean/api_client/models/activityeventparams.py @@ -81,7 +81,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/addcollectionitemserror.py b/src/glean/api_client/models/addcollectionitemserror.py index 8c288131..aa8987c8 100644 --- a/src/glean/api_client/models/addcollectionitemserror.py +++ b/src/glean/api_client/models/addcollectionitemserror.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/addcollectionitemsop.py b/src/glean/api_client/models/addcollectionitemsop.py index 63d983e7..2cd893c6 100644 --- a/src/glean/api_client/models/addcollectionitemsop.py +++ b/src/glean/api_client/models/addcollectionitemsop.py @@ -40,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/addcollectionitemsrequest.py b/src/glean/api_client/models/addcollectionitemsrequest.py index 72713ec9..b440c09b 100644 --- a/src/glean/api_client/models/addcollectionitemsrequest.py +++ b/src/glean/api_client/models/addcollectionitemsrequest.py @@ -39,7 +39,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/addcollectionitemsresponse.py b/src/glean/api_client/models/addcollectionitemsresponse.py index 776d7a2a..80294bce 100644 --- a/src/glean/api_client/models/addcollectionitemsresponse.py +++ b/src/glean/api_client/models/addcollectionitemsresponse.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/additionalfielddefinition.py b/src/glean/api_client/models/additionalfielddefinition.py index 0b381cf2..75e99935 100644 --- a/src/glean/api_client/models/additionalfielddefinition.py +++ b/src/glean/api_client/models/additionalfielddefinition.py @@ -73,7 +73,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/addverificationreminderop.py b/src/glean/api_client/models/addverificationreminderop.py index f50d3fae..b6b9c1a2 100644 --- a/src/glean/api_client/models/addverificationreminderop.py +++ b/src/glean/api_client/models/addverificationreminderop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/adminsearchop.py b/src/glean/api_client/models/adminsearchop.py index 2f774337..6578e5e3 100644 --- a/src/glean/api_client/models/adminsearchop.py +++ b/src/glean/api_client/models/adminsearchop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/agent.py b/src/glean/api_client/models/agent.py index 51443a2d..ce46c088 100644 --- a/src/glean/api_client/models/agent.py +++ b/src/glean/api_client/models/agent.py @@ -67,8 +67,8 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) + val = serialized.get(k, serialized.get(n)) + serialized.pop(k, serialized.pop(n, None)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -124,7 +124,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/agentconfig.py b/src/glean/api_client/models/agentconfig.py index a4b95362..2a7bb3d1 100644 --- a/src/glean/api_client/models/agentconfig.py +++ b/src/glean/api_client/models/agentconfig.py @@ -3,14 +3,15 @@ from __future__ import annotations from .toolsets import ToolSets, ToolSetsTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class AgentEnum(str, Enum): +class AgentEnum(str, Enum, metaclass=utils.OpenEnumMeta): r"""Name of the agent.""" # Integrates with your company's knowledge. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values @@ -27,7 +28,7 @@ class AgentEnum(str, Enum): AUTO = "AUTO" -class Mode(str, Enum): +class Mode(str, Enum, metaclass=utils.OpenEnumMeta): r"""Top level modes to run GleanChat in.""" # Used if no mode supplied. @@ -66,6 +67,24 @@ class AgentConfig(BaseModel): ] = None r"""Whether the agent should create an image.""" + @field_serializer("agent") + def serialize_agent(self, value): + if isinstance(value, str): + try: + return models.AgentEnum(value) + except ValueError: + return value + return value + + @field_serializer("mode") + def serialize_mode(self, value): + if isinstance(value, str): + try: + return models.Mode(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["agent", "toolSets", "mode", "useImageGeneration"]) @@ -74,7 +93,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/agentexecutionstatus.py b/src/glean/api_client/models/agentexecutionstatus.py index fa71fb35..b93cae26 100644 --- a/src/glean/api_client/models/agentexecutionstatus.py +++ b/src/glean/api_client/models/agentexecutionstatus.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class AgentExecutionStatus(str, Enum): +class AgentExecutionStatus(str, Enum, metaclass=utils.OpenEnumMeta): r"""The status of the run. One of 'error', 'success'.""" ERROR = "error" diff --git a/src/glean/api_client/models/agentrun.py b/src/glean/api_client/models/agentrun.py index 4c519b56..0439dfdf 100644 --- a/src/glean/api_client/models/agentrun.py +++ b/src/glean/api_client/models/agentrun.py @@ -3,8 +3,9 @@ from __future__ import annotations from .agentexecutionstatus import AgentExecutionStatus from .message import Message, MessageTypedDict +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Any, Dict, List, Optional from typing_extensions import NotRequired, TypedDict @@ -42,6 +43,15 @@ class AgentRun(BaseModel): status: Optional[AgentExecutionStatus] = None r"""The status of the run. One of 'error', 'success'.""" + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.AgentExecutionStatus(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["input", "messages", "metadata", "status"]) @@ -50,7 +60,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/agentruncreate.py b/src/glean/api_client/models/agentruncreate.py index 496807b0..407bbcb8 100644 --- a/src/glean/api_client/models/agentruncreate.py +++ b/src/glean/api_client/models/agentruncreate.py @@ -44,7 +44,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/agentrunwaitresponse.py b/src/glean/api_client/models/agentrunwaitresponse.py index d43eb2a6..e09e51eb 100644 --- a/src/glean/api_client/models/agentrunwaitresponse.py +++ b/src/glean/api_client/models/agentrunwaitresponse.py @@ -29,7 +29,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/agentschemas.py b/src/glean/api_client/models/agentschemas.py index 5f36cf42..9feaabfe 100644 --- a/src/glean/api_client/models/agentschemas.py +++ b/src/glean/api_client/models/agentschemas.py @@ -60,7 +60,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/agentsinsightsv2request.py b/src/glean/api_client/models/agentsinsightsv2request.py index 80aea6aa..027fbade 100644 --- a/src/glean/api_client/models/agentsinsightsv2request.py +++ b/src/glean/api_client/models/agentsinsightsv2request.py @@ -34,7 +34,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/agentsinsightsv2response.py b/src/glean/api_client/models/agentsinsightsv2response.py index b009d88f..64eb67f7 100644 --- a/src/glean/api_client/models/agentsinsightsv2response.py +++ b/src/glean/api_client/models/agentsinsightsv2response.py @@ -111,7 +111,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/agentsusagebydepartmentinsight.py b/src/glean/api_client/models/agentsusagebydepartmentinsight.py index a5b69b91..bcfd9c30 100644 --- a/src/glean/api_client/models/agentsusagebydepartmentinsight.py +++ b/src/glean/api_client/models/agentsusagebydepartmentinsight.py @@ -74,7 +74,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/agentusersinsight.py b/src/glean/api_client/models/agentusersinsight.py index dfdf8b67..13ed679e 100644 --- a/src/glean/api_client/models/agentusersinsight.py +++ b/src/glean/api_client/models/agentusersinsight.py @@ -66,7 +66,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/allowlistoptions.py b/src/glean/api_client/models/allowlistoptions.py index f49943d2..123b345c 100644 --- a/src/glean/api_client/models/allowlistoptions.py +++ b/src/glean/api_client/models/allowlistoptions.py @@ -28,7 +28,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/announcement.py b/src/glean/api_client/models/announcement.py index 10be615e..d6948fb7 100644 --- a/src/glean/api_client/models/announcement.py +++ b/src/glean/api_client/models/announcement.py @@ -9,21 +9,22 @@ from .thumbnail import Thumbnail, ThumbnailTypedDict from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class AnnouncementChannel(str, Enum): +class AnnouncementChannel(str, Enum, metaclass=utils.OpenEnumMeta): r"""This determines whether this is a Social Feed post or a regular announcement.""" MAIN = "MAIN" SOCIAL_FEED = "SOCIAL_FEED" -class AnnouncementPostType(str, Enum): +class AnnouncementPostType(str, Enum, metaclass=utils.OpenEnumMeta): r"""This determines whether this is an external-link post or a regular announcement post. TEXT - Regular announcement that can contain rich text. LINK - Announcement that is linked to an external site.""" TEXT = "TEXT" @@ -52,7 +53,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -187,6 +188,24 @@ class Announcement(BaseModel): is_published: Annotated[Optional[bool], pydantic.Field(alias="isPublished")] = None r"""Whether or not the announcement is published.""" + @field_serializer("channel") + def serialize_channel(self, value): + if isinstance(value, str): + try: + return models.AnnouncementChannel(value) + except ValueError: + return value + return value + + @field_serializer("post_type") + def serialize_post_type(self, value): + if isinstance(value, str): + try: + return models.AnnouncementPostType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -222,7 +241,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/anonymousevent.py b/src/glean/api_client/models/anonymousevent.py index 03b8cf1d..96c2e34b 100644 --- a/src/glean/api_client/models/anonymousevent.py +++ b/src/glean/api_client/models/anonymousevent.py @@ -3,14 +3,15 @@ from __future__ import annotations from .timeinterval import TimeInterval, TimeIntervalTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class AnonymousEventEventType(str, Enum): +class AnonymousEventEventType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The nature of the event, for example \"out of office\".""" DEFAULT = "DEFAULT" @@ -35,6 +36,15 @@ class AnonymousEvent(BaseModel): ] = None r"""The nature of the event, for example \"out of office\".""" + @field_serializer("event_type") + def serialize_event_type(self, value): + if isinstance(value, str): + try: + return models.AnonymousEventEventType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["time", "eventType"]) @@ -43,7 +53,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/answer.py b/src/glean/api_client/models/answer.py index b6791d1e..8d68b1f9 100644 --- a/src/glean/api_client/models/answer.py +++ b/src/glean/api_client/models/answer.py @@ -6,9 +6,10 @@ from .objectpermissions import ObjectPermissions, ObjectPermissionsTypedDict from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -25,7 +26,7 @@ from .verification import Verification, VerificationTypedDict -class AnswerSourceType(str, Enum): +class AnswerSourceType(str, Enum, metaclass=utils.OpenEnumMeta): DOCUMENT = "DOCUMENT" ASSISTANT = "ASSISTANT" @@ -157,6 +158,15 @@ class Answer(BaseModel): Optional["Document"], pydantic.Field(alias="sourceDocument") ] = None + @field_serializer("source_type") + def serialize_source_type(self, value): + if isinstance(value, str): + try: + return models.AnswerSourceType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -190,7 +200,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/answercreationdata.py b/src/glean/api_client/models/answercreationdata.py index 70d863df..2e5aee70 100644 --- a/src/glean/api_client/models/answercreationdata.py +++ b/src/glean/api_client/models/answercreationdata.py @@ -123,7 +123,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/answerlike.py b/src/glean/api_client/models/answerlike.py index 0752df84..abee3d1a 100644 --- a/src/glean/api_client/models/answerlike.py +++ b/src/glean/api_client/models/answerlike.py @@ -34,7 +34,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/answerresult.py b/src/glean/api_client/models/answerresult.py index c4d0873c..ae01d20a 100644 --- a/src/glean/api_client/models/answerresult.py +++ b/src/glean/api_client/models/answerresult.py @@ -31,7 +31,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/appresult.py b/src/glean/api_client/models/appresult.py index 6c7a23cb..2105b7fe 100644 --- a/src/glean/api_client/models/appresult.py +++ b/src/glean/api_client/models/appresult.py @@ -40,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/assistantinsightsresponse.py b/src/glean/api_client/models/assistantinsightsresponse.py index 700d8807..d6fa5492 100644 --- a/src/glean/api_client/models/assistantinsightsresponse.py +++ b/src/glean/api_client/models/assistantinsightsresponse.py @@ -119,7 +119,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/authconfig.py b/src/glean/api_client/models/authconfig.py index 4179e9d2..65c26d2e 100644 --- a/src/glean/api_client/models/authconfig.py +++ b/src/glean/api_client/models/authconfig.py @@ -3,14 +3,15 @@ from __future__ import annotations from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class AuthConfigType(str, Enum): +class AuthConfigType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of authentication being used. Use 'OAUTH_*' when Glean calls an external API (e.g., Jira) on behalf of a user to obtain an OAuth token. 'OAUTH_ADMIN' utilizes an admin token for external API calls on behalf all users. @@ -27,14 +28,14 @@ class AuthConfigType(str, Enum): DWD = "DWD" -class GrantType(str, Enum): +class GrantType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of grant type being used.""" AUTH_CODE = "AUTH_CODE" CLIENT_CREDENTIALS = "CLIENT_CREDENTIALS" -class AuthConfigStatus(str, Enum): +class AuthConfigStatus(str, Enum, metaclass=utils.OpenEnumMeta): r"""Auth status of the tool.""" AWAITING_AUTH = "AWAITING_AUTH" @@ -69,6 +70,8 @@ class AuthConfigTypedDict(TypedDict): r"""A list of strings denoting the different audience which can access the tool.""" authorization_url: NotRequired[str] r"""The OAuth provider's endpoint, where access tokens are requested.""" + resource: NotRequired[str] + r"""The OAuth 2.0 Resource Indicator (RFC 8707) for the protected resource. Discovered from Protected Resource Metadata (RFC 9728) during DCR. Included in authorization and token exchange requests when present.""" last_authorized_at: NotRequired[datetime] r"""The time the tool was last authorized in ISO format (ISO 8601).""" @@ -111,11 +114,41 @@ class AuthConfig(BaseModel): authorization_url: Optional[str] = None r"""The OAuth provider's endpoint, where access tokens are requested.""" + resource: Optional[str] = None + r"""The OAuth 2.0 Resource Indicator (RFC 8707) for the protected resource. Discovered from Protected Resource Metadata (RFC 9728) during DCR. Included in authorization and token exchange requests when present.""" + last_authorized_at: Annotated[ Optional[datetime], pydantic.Field(alias="lastAuthorizedAt") ] = None r"""The time the tool was last authorized in ISO format (ISO 8601).""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.AuthConfigType(value) + except ValueError: + return value + return value + + @field_serializer("grant_type") + def serialize_grant_type(self, value): + if isinstance(value, str): + try: + return models.GrantType(value) + except ValueError: + return value + return value + + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.AuthConfigStatus(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -129,6 +162,7 @@ def serialize_model(self, handler): "scopes", "audiences", "authorization_url", + "resource", "lastAuthorizedAt", ] ) @@ -137,7 +171,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/authstatus.py b/src/glean/api_client/models/authstatus.py index 0916a831..ea66e454 100644 --- a/src/glean/api_client/models/authstatus.py +++ b/src/glean/api_client/models/authstatus.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class AuthStatus(str, Enum): +class AuthStatus(str, Enum, metaclass=utils.OpenEnumMeta): r"""The per-user authorization status for a datasource.""" DISABLED = "DISABLED" diff --git a/src/glean/api_client/models/authtoken.py b/src/glean/api_client/models/authtoken.py index 5734e3c6..7551c7f6 100644 --- a/src/glean/api_client/models/authtoken.py +++ b/src/glean/api_client/models/authtoken.py @@ -42,7 +42,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/autocompleteop.py b/src/glean/api_client/models/autocompleteop.py index 1becb54c..97d2bf4e 100644 --- a/src/glean/api_client/models/autocompleteop.py +++ b/src/glean/api_client/models/autocompleteop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/autocompleterequest.py b/src/glean/api_client/models/autocompleterequest.py index 8aa1ff02..c57ae464 100644 --- a/src/glean/api_client/models/autocompleterequest.py +++ b/src/glean/api_client/models/autocompleterequest.py @@ -102,7 +102,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/autocompleteresponse.py b/src/glean/api_client/models/autocompleteresponse.py index 3dbd7497..cca14924 100644 --- a/src/glean/api_client/models/autocompleteresponse.py +++ b/src/glean/api_client/models/autocompleteresponse.py @@ -76,7 +76,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/autocompleteresult.py b/src/glean/api_client/models/autocompleteresult.py index 2a7b1789..7b4d8010 100644 --- a/src/glean/api_client/models/autocompleteresult.py +++ b/src/glean/api_client/models/autocompleteresult.py @@ -7,14 +7,15 @@ from .structuredresult import StructuredResult, StructuredResultTypedDict from .textrange import TextRange, TextRangeTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class AutocompleteResultResultType(str, Enum): +class AutocompleteResultResultType(str, Enum, metaclass=utils.OpenEnumMeta): ADDITIONAL_DOCUMENT = "ADDITIONAL_DOCUMENT" APP = "APP" BROWSER_HISTORY = "BROWSER_HISTORY" @@ -88,6 +89,15 @@ class AutocompleteResult(BaseModel): ranges: Optional[List[TextRange]] = None r"""Subsections of the result string to which some special formatting should be applied (eg. bold)""" + @field_serializer("result_type") + def serialize_result_type(self, value): + if isinstance(value, str): + try: + return models.AutocompleteResultResultType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -109,7 +119,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/autocompleteresultgroup.py b/src/glean/api_client/models/autocompleteresultgroup.py index 561c86e0..09788d2b 100644 --- a/src/glean/api_client/models/autocompleteresultgroup.py +++ b/src/glean/api_client/models/autocompleteresultgroup.py @@ -39,7 +39,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/badge.py b/src/glean/api_client/models/badge.py index 8829ca82..d5675152 100644 --- a/src/glean/api_client/models/badge.py +++ b/src/glean/api_client/models/badge.py @@ -47,7 +47,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/bulkindexdocumentsrequest.py b/src/glean/api_client/models/bulkindexdocumentsrequest.py index ecfba8c7..db14fe54 100644 --- a/src/glean/api_client/models/bulkindexdocumentsrequest.py +++ b/src/glean/api_client/models/bulkindexdocumentsrequest.py @@ -71,7 +71,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/bulkindexemployeesrequest.py b/src/glean/api_client/models/bulkindexemployeesrequest.py index 82373576..43014e31 100644 --- a/src/glean/api_client/models/bulkindexemployeesrequest.py +++ b/src/glean/api_client/models/bulkindexemployeesrequest.py @@ -69,7 +69,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/bulkindexgroupsrequest.py b/src/glean/api_client/models/bulkindexgroupsrequest.py index b30a8fc3..99f12d8b 100644 --- a/src/glean/api_client/models/bulkindexgroupsrequest.py +++ b/src/glean/api_client/models/bulkindexgroupsrequest.py @@ -74,7 +74,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/bulkindexmembershipsrequest.py b/src/glean/api_client/models/bulkindexmembershipsrequest.py index e2829871..81740610 100644 --- a/src/glean/api_client/models/bulkindexmembershipsrequest.py +++ b/src/glean/api_client/models/bulkindexmembershipsrequest.py @@ -67,7 +67,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/bulkindexshortcutsrequest.py b/src/glean/api_client/models/bulkindexshortcutsrequest.py index cfbc36b6..3aae4c03 100644 --- a/src/glean/api_client/models/bulkindexshortcutsrequest.py +++ b/src/glean/api_client/models/bulkindexshortcutsrequest.py @@ -52,7 +52,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/bulkindexteamsrequest.py b/src/glean/api_client/models/bulkindexteamsrequest.py index 21eac916..0fd38bfa 100644 --- a/src/glean/api_client/models/bulkindexteamsrequest.py +++ b/src/glean/api_client/models/bulkindexteamsrequest.py @@ -52,7 +52,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/bulkindexusersrequest.py b/src/glean/api_client/models/bulkindexusersrequest.py index fc487a53..bfbff92f 100644 --- a/src/glean/api_client/models/bulkindexusersrequest.py +++ b/src/glean/api_client/models/bulkindexusersrequest.py @@ -74,7 +74,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/bulkuploadhistoryevent.py b/src/glean/api_client/models/bulkuploadhistoryevent.py index a5e3d43d..b1daac94 100644 --- a/src/glean/api_client/models/bulkuploadhistoryevent.py +++ b/src/glean/api_client/models/bulkuploadhistoryevent.py @@ -2,21 +2,22 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class BulkUploadHistoryEventStatus(str, Enum): +class BulkUploadHistoryEventStatus(str, Enum, metaclass=utils.OpenEnumMeta): r"""The status of the upload, an enum of ACTIVE, SUCCESSFUL""" ACTIVE = "ACTIVE" SUCCESSFUL = "SUCCESSFUL" -class ProcessingState(str, Enum): +class ProcessingState(str, Enum, metaclass=utils.OpenEnumMeta): r"""The current state of the upload, an enum of UNAVAILABLE, UPLOAD STARTED, UPLOAD IN PROGRESS, UPLOAD COMPLETED, DELETION PAUSED, INDEXING COMPLETED""" UNAVAILABLE = "UNAVAILABLE" @@ -62,6 +63,24 @@ class BulkUploadHistoryEvent(BaseModel): ] = None r"""The current state of the upload, an enum of UNAVAILABLE, UPLOAD STARTED, UPLOAD IN PROGRESS, UPLOAD COMPLETED, DELETION PAUSED, INDEXING COMPLETED""" + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.BulkUploadHistoryEventStatus(value) + except ValueError: + return value + return value + + @field_serializer("processing_state") + def serialize_processing_state(self, value): + if isinstance(value, str): + try: + return models.ProcessingState(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -72,7 +91,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/calendarattendee.py b/src/glean/api_client/models/calendarattendee.py index 3f79c72a..bc67f962 100644 --- a/src/glean/api_client/models/calendarattendee.py +++ b/src/glean/api_client/models/calendarattendee.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -12,7 +13,7 @@ from .person import Person, PersonTypedDict -class ResponseStatus(str, Enum): +class ResponseStatus(str, Enum, metaclass=utils.OpenEnumMeta): ACCEPTED = "ACCEPTED" DECLINED = "DECLINED" NO_RESPONSE = "NO_RESPONSE" @@ -48,6 +49,15 @@ class CalendarAttendee(BaseModel): Optional[ResponseStatus], pydantic.Field(alias="responseStatus") ] = None + @field_serializer("response_status") + def serialize_response_status(self, value): + if isinstance(value, str): + try: + return models.ResponseStatus(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -58,7 +68,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/calendarattendees.py b/src/glean/api_client/models/calendarattendees.py index 71bc2418..40d5ce80 100644 --- a/src/glean/api_client/models/calendarattendees.py +++ b/src/glean/api_client/models/calendarattendees.py @@ -70,7 +70,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/calendarevent.py b/src/glean/api_client/models/calendarevent.py index bf08702d..c954de14 100644 --- a/src/glean/api_client/models/calendarevent.py +++ b/src/glean/api_client/models/calendarevent.py @@ -7,14 +7,15 @@ from .generatedattachment import GeneratedAttachment, GeneratedAttachmentTypedDict from .timeinterval import TimeInterval, TimeIntervalTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class CalendarEventEventType(str, Enum): +class CalendarEventEventType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The nature of the event, for example \"out of office\".""" DEFAULT = "DEFAULT" @@ -95,6 +96,15 @@ class CalendarEvent(BaseModel): pydantic.Field(alias="generatedAttachments"), ] = None + @field_serializer("event_type") + def serialize_event_type(self, value): + if isinstance(value, str): + try: + return models.CalendarEventEventType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -117,7 +127,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/canonicalizingregextype.py b/src/glean/api_client/models/canonicalizingregextype.py index db7e8b6c..33218a64 100644 --- a/src/glean/api_client/models/canonicalizingregextype.py +++ b/src/glean/api_client/models/canonicalizingregextype.py @@ -34,7 +34,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/channelinviteinfo.py b/src/glean/api_client/models/channelinviteinfo.py index d7d38ee4..a97c2ccd 100644 --- a/src/glean/api_client/models/channelinviteinfo.py +++ b/src/glean/api_client/models/channelinviteinfo.py @@ -3,9 +3,10 @@ from __future__ import annotations from .communicationchannel import CommunicationChannel from datetime import datetime +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -48,6 +49,15 @@ class ChannelInviteInfo(BaseModel): ] = None r"""The time this person was reminded in ISO format (ISO 8601) if a reminder was sent.""" + @field_serializer("channel") + def serialize_channel(self, value): + if isinstance(value, str): + try: + return models.CommunicationChannel(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -58,7 +68,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/chat.py b/src/glean/api_client/models/chat.py index 389e2268..2c89193d 100644 --- a/src/glean/api_client/models/chat.py +++ b/src/glean/api_client/models/chat.py @@ -98,7 +98,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/chatfile.py b/src/glean/api_client/models/chatfile.py index c8522186..cf7a5a7a 100644 --- a/src/glean/api_client/models/chatfile.py +++ b/src/glean/api_client/models/chatfile.py @@ -44,7 +44,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/chatfilefailurereason.py b/src/glean/api_client/models/chatfilefailurereason.py index fdae3190..cb81e15e 100644 --- a/src/glean/api_client/models/chatfilefailurereason.py +++ b/src/glean/api_client/models/chatfilefailurereason.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class ChatFileFailureReason(str, Enum): +class ChatFileFailureReason(str, Enum, metaclass=utils.OpenEnumMeta): r"""Reason for failed status.""" PARSE_FAILED = "PARSE_FAILED" diff --git a/src/glean/api_client/models/chatfilemetadata.py b/src/glean/api_client/models/chatfilemetadata.py index 2c657df7..b4cb6dc4 100644 --- a/src/glean/api_client/models/chatfilemetadata.py +++ b/src/glean/api_client/models/chatfilemetadata.py @@ -3,9 +3,10 @@ from __future__ import annotations from .chatfilefailurereason import ChatFileFailureReason from .chatfilestatus import ChatFileStatus +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -47,6 +48,24 @@ class ChatFileMetadata(BaseModel): mime_type: Annotated[Optional[str], pydantic.Field(alias="mimeType")] = None r"""MIME type of the file.""" + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.ChatFileStatus(value) + except ValueError: + return value + return value + + @field_serializer("failure_reason") + def serialize_failure_reason(self, value): + if isinstance(value, str): + try: + return models.ChatFileFailureReason(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -57,7 +76,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/chatfilestatus.py b/src/glean/api_client/models/chatfilestatus.py index c9a17724..0628b167 100644 --- a/src/glean/api_client/models/chatfilestatus.py +++ b/src/glean/api_client/models/chatfilestatus.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class ChatFileStatus(str, Enum): +class ChatFileStatus(str, Enum, metaclass=utils.OpenEnumMeta): r"""Current status of the file.""" PROCESSING = "PROCESSING" diff --git a/src/glean/api_client/models/chatmessage.py b/src/glean/api_client/models/chatmessage.py index 1755a240..5c636cbb 100644 --- a/src/glean/api_client/models/chatmessage.py +++ b/src/glean/api_client/models/chatmessage.py @@ -5,19 +5,20 @@ from .chatmessagecitation import ChatMessageCitation, ChatMessageCitationTypedDict from .chatmessagefragment import ChatMessageFragment, ChatMessageFragmentTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class Author(str, Enum): +class Author(str, Enum, metaclass=utils.OpenEnumMeta): USER = "USER" GLEAN_AI = "GLEAN_AI" -class MessageType(str, Enum): +class MessageType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Semantically groups content of a certain type. It can be used for purposes such as differential UI treatment. USER authored messages should be of type CONTENT and do not need `messageType` specified.""" # An intermediate state message for progress updates. @@ -127,6 +128,24 @@ class ChatMessage(BaseModel): ] = None r"""Signals there are additional response fragments incoming.""" + @field_serializer("author") + def serialize_author(self, value): + if isinstance(value, str): + try: + return models.Author(value) + except ValueError: + return value + return value + + @field_serializer("message_type") + def serialize_message_type(self, value): + if isinstance(value, str): + try: + return models.MessageType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -148,7 +167,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/chatmessagecitation.py b/src/glean/api_client/models/chatmessagecitation.py index 2e21f672..5ed24dff 100644 --- a/src/glean/api_client/models/chatmessagecitation.py +++ b/src/glean/api_client/models/chatmessagecitation.py @@ -67,7 +67,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/chatmessagefragment.py b/src/glean/api_client/models/chatmessagefragment.py index 959ad3ed..a7d3bf33 100644 --- a/src/glean/api_client/models/chatmessagefragment.py +++ b/src/glean/api_client/models/chatmessagefragment.py @@ -74,7 +74,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/chatmetadata.py b/src/glean/api_client/models/chatmetadata.py index 8c8f6851..81530650 100644 --- a/src/glean/api_client/models/chatmetadata.py +++ b/src/glean/api_client/models/chatmetadata.py @@ -81,7 +81,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/chatmetadataresult.py b/src/glean/api_client/models/chatmetadataresult.py index 04026598..53e0ef97 100644 --- a/src/glean/api_client/models/chatmetadataresult.py +++ b/src/glean/api_client/models/chatmetadataresult.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/chatop.py b/src/glean/api_client/models/chatop.py index 5f74227b..d14b8817 100644 --- a/src/glean/api_client/models/chatop.py +++ b/src/glean/api_client/models/chatop.py @@ -47,7 +47,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/chatrequest.py b/src/glean/api_client/models/chatrequest.py index 3e72aea4..ca0d3695 100644 --- a/src/glean/api_client/models/chatrequest.py +++ b/src/glean/api_client/models/chatrequest.py @@ -101,7 +101,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/chatresponse.py b/src/glean/api_client/models/chatresponse.py index 1ca61712..aec6f19f 100644 --- a/src/glean/api_client/models/chatresponse.py +++ b/src/glean/api_client/models/chatresponse.py @@ -2,10 +2,6 @@ from __future__ import annotations from .chatmessage import ChatMessage, ChatMessageTypedDict -from .unauthorizeddatasourceinstance import ( - UnauthorizedDatasourceInstance, - UnauthorizedDatasourceInstanceTypedDict, -) from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic from pydantic import model_serializer @@ -25,12 +21,6 @@ class ChatResponseTypedDict(TypedDict): r"""Time in milliseconds the backend took to respond to the request.""" chat_session_tracking_token: NotRequired[str] r"""A token that is used to track the session.""" - unauthorized_datasource_instances: NotRequired[ - List[UnauthorizedDatasourceInstanceTypedDict] - ] - r"""Datasource instances that could not be queried because the user has not completed or has expired per-user OAuth, aggregated across all tools invoked in this turn. - - """ class ChatResponse(BaseModel): @@ -56,14 +46,6 @@ class ChatResponse(BaseModel): ] = None r"""A token that is used to track the session.""" - unauthorized_datasource_instances: Annotated[ - Optional[List[UnauthorizedDatasourceInstance]], - pydantic.Field(alias="unauthorizedDatasourceInstances"), - ] = None - r"""Datasource instances that could not be queried because the user has not completed or has expired per-user OAuth, aggregated across all tools invoked in this turn. - - """ - @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -73,7 +55,6 @@ def serialize_model(self, handler): "followUpPrompts", "backendTimeMillis", "chatSessionTrackingToken", - "unauthorizedDatasourceInstances", ] ) serialized = handler(self) @@ -81,7 +62,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/chatrestrictionfilters.py b/src/glean/api_client/models/chatrestrictionfilters.py index 5774e85b..51db943b 100644 --- a/src/glean/api_client/models/chatrestrictionfilters.py +++ b/src/glean/api_client/models/chatrestrictionfilters.py @@ -40,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/chatresult.py b/src/glean/api_client/models/chatresult.py index fb221902..8058b2bb 100644 --- a/src/glean/api_client/models/chatresult.py +++ b/src/glean/api_client/models/chatresult.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/chatstreamop.py b/src/glean/api_client/models/chatstreamop.py index 71a17b37..6ce3ce9b 100644 --- a/src/glean/api_client/models/chatstreamop.py +++ b/src/glean/api_client/models/chatstreamop.py @@ -39,7 +39,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/chatsuggestion.py b/src/glean/api_client/models/chatsuggestion.py index 11bec4d5..68870bca 100644 --- a/src/glean/api_client/models/chatsuggestion.py +++ b/src/glean/api_client/models/chatsuggestion.py @@ -29,7 +29,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/chatzerostatesuggestionoptions.py b/src/glean/api_client/models/chatzerostatesuggestionoptions.py index f4a630c0..75527af1 100644 --- a/src/glean/api_client/models/chatzerostatesuggestionoptions.py +++ b/src/glean/api_client/models/chatzerostatesuggestionoptions.py @@ -27,7 +27,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/checkdocumentaccessresponse.py b/src/glean/api_client/models/checkdocumentaccessresponse.py index fb2cdec6..373b9388 100644 --- a/src/glean/api_client/models/checkdocumentaccessresponse.py +++ b/src/glean/api_client/models/checkdocumentaccessresponse.py @@ -29,7 +29,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/clustergroup.py b/src/glean/api_client/models/clustergroup.py index e8a93332..9805a2fa 100644 --- a/src/glean/api_client/models/clustergroup.py +++ b/src/glean/api_client/models/clustergroup.py @@ -2,9 +2,10 @@ from __future__ import annotations from .clustertypeenum import ClusterTypeEnum +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -35,6 +36,15 @@ class ClusterGroup(BaseModel): ] = None r"""The reason for inclusion of clusteredResults.""" + @field_serializer("cluster_type") + def serialize_cluster_type(self, value): + if isinstance(value, str): + try: + return models.ClusterTypeEnum(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["clusteredResults", "clusterType"]) @@ -43,7 +53,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/clustertypeenum.py b/src/glean/api_client/models/clustertypeenum.py index 3e83e2ef..d599d8ac 100644 --- a/src/glean/api_client/models/clustertypeenum.py +++ b/src/glean/api_client/models/clustertypeenum.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class ClusterTypeEnum(str, Enum): +class ClusterTypeEnum(str, Enum, metaclass=utils.OpenEnumMeta): r"""The reason for inclusion of clusteredResults.""" SIMILAR = "SIMILAR" diff --git a/src/glean/api_client/models/code.py b/src/glean/api_client/models/code.py index f5fa571e..140e792f 100644 --- a/src/glean/api_client/models/code.py +++ b/src/glean/api_client/models/code.py @@ -42,7 +42,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/codeline.py b/src/glean/api_client/models/codeline.py index 0a678f65..70e471cc 100644 --- a/src/glean/api_client/models/codeline.py +++ b/src/glean/api_client/models/codeline.py @@ -34,7 +34,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/collection.py b/src/glean/api_client/models/collection.py index cdf2108f..9bd7d4bb 100644 --- a/src/glean/api_client/models/collection.py +++ b/src/glean/api_client/models/collection.py @@ -174,7 +174,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/collectionerror.py b/src/glean/api_client/models/collectionerror.py index ed055eda..ef1aa0da 100644 --- a/src/glean/api_client/models/collectionerror.py +++ b/src/glean/api_client/models/collectionerror.py @@ -2,12 +2,14 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel import pydantic +from pydantic import field_serializer from typing_extensions import Annotated, TypedDict -class CollectionErrorErrorCode(str, Enum): +class CollectionErrorErrorCode(str, Enum, metaclass=utils.OpenEnumMeta): NAME_EXISTS = "NAME_EXISTS" NOT_FOUND = "NOT_FOUND" COLLECTION_PINNED = "COLLECTION_PINNED" @@ -24,6 +26,15 @@ class CollectionErrorTypedDict(TypedDict): class CollectionError(BaseModel): error_code: Annotated[CollectionErrorErrorCode, pydantic.Field(alias="errorCode")] + @field_serializer("error_code") + def serialize_error_code(self, value): + if isinstance(value, str): + try: + return models.CollectionErrorErrorCode(value) + except ValueError: + return value + return value + try: CollectionError.model_rebuild() diff --git a/src/glean/api_client/models/collectionitem.py b/src/glean/api_client/models/collectionitem.py index 5a4f41f2..0cbe6492 100644 --- a/src/glean/api_client/models/collectionitem.py +++ b/src/glean/api_client/models/collectionitem.py @@ -3,9 +3,10 @@ from __future__ import annotations from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -16,7 +17,7 @@ from .shortcut import Shortcut, ShortcutTypedDict -class CollectionItemItemType(str, Enum): +class CollectionItemItemType(str, Enum, metaclass=utils.OpenEnumMeta): DOCUMENT = "DOCUMENT" TEXT = "TEXT" URL = "URL" @@ -82,6 +83,15 @@ class CollectionItem(BaseModel): collection: Optional["Collection"] = None + @field_serializer("item_type") + def serialize_item_type(self, value): + if isinstance(value, str): + try: + return models.CollectionItemItemType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -104,7 +114,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/collectionitemdescriptor.py b/src/glean/api_client/models/collectionitemdescriptor.py index 09ebf335..6642f487 100644 --- a/src/glean/api_client/models/collectionitemdescriptor.py +++ b/src/glean/api_client/models/collectionitemdescriptor.py @@ -74,7 +74,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/collectionpinnablecategories.py b/src/glean/api_client/models/collectionpinnablecategories.py index d28cd94a..55c467b9 100644 --- a/src/glean/api_client/models/collectionpinnablecategories.py +++ b/src/glean/api_client/models/collectionpinnablecategories.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class CollectionPinnableCategories(str, Enum): +class CollectionPinnableCategories(str, Enum, metaclass=utils.OpenEnumMeta): r"""Categories a Collection can be pinned to.""" COMPANY_RESOURCE = "COMPANY_RESOURCE" diff --git a/src/glean/api_client/models/collectionpinnabletargets.py b/src/glean/api_client/models/collectionpinnabletargets.py index eac2d5e7..c440d473 100644 --- a/src/glean/api_client/models/collectionpinnabletargets.py +++ b/src/glean/api_client/models/collectionpinnabletargets.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class CollectionPinnableTargets(str, Enum): +class CollectionPinnableTargets(str, Enum, metaclass=utils.OpenEnumMeta): r"""What targets can a Collection be pinned to.""" RESOURCE_CARD = "RESOURCE_CARD" diff --git a/src/glean/api_client/models/collectionpinnedmetadata.py b/src/glean/api_client/models/collectionpinnedmetadata.py index 44100bf4..2e54e6a4 100644 --- a/src/glean/api_client/models/collectionpinnedmetadata.py +++ b/src/glean/api_client/models/collectionpinnedmetadata.py @@ -36,7 +36,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/collectionpintarget.py b/src/glean/api_client/models/collectionpintarget.py index 173bcf4f..cd3f16f2 100644 --- a/src/glean/api_client/models/collectionpintarget.py +++ b/src/glean/api_client/models/collectionpintarget.py @@ -3,8 +3,9 @@ from __future__ import annotations from .collectionpinnablecategories import CollectionPinnableCategories from .collectionpinnabletargets import CollectionPinnableTargets +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -28,6 +29,24 @@ class CollectionPinTarget(BaseModel): target: Optional[CollectionPinnableTargets] = None r"""What targets can a Collection be pinned to.""" + @field_serializer("category") + def serialize_category(self, value): + if isinstance(value, str): + try: + return models.CollectionPinnableCategories(value) + except ValueError: + return value + return value + + @field_serializer("target") + def serialize_target(self, value): + if isinstance(value, str): + try: + return models.CollectionPinnableTargets(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["value", "target"]) @@ -36,7 +55,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/commentdefinition.py b/src/glean/api_client/models/commentdefinition.py index 46409ef9..121b9722 100644 --- a/src/glean/api_client/models/commentdefinition.py +++ b/src/glean/api_client/models/commentdefinition.py @@ -63,7 +63,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/communicationchannel.py b/src/glean/api_client/models/communicationchannel.py index e315cc1d..36d9d830 100644 --- a/src/glean/api_client/models/communicationchannel.py +++ b/src/glean/api_client/models/communicationchannel.py @@ -2,8 +2,9 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class CommunicationChannel(str, Enum): +class CommunicationChannel(str, Enum, metaclass=utils.OpenEnumMeta): COMMUNICATION_CHANNEL_EMAIL = "COMMUNICATION_CHANNEL_EMAIL" COMMUNICATION_CHANNEL_SLACK = "COMMUNICATION_CHANNEL_SLACK" diff --git a/src/glean/api_client/models/company.py b/src/glean/api_client/models/company.py index 6f272141..acd9da9d 100644 --- a/src/glean/api_client/models/company.py +++ b/src/glean/api_client/models/company.py @@ -107,7 +107,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/conferencedata.py b/src/glean/api_client/models/conferencedata.py index a890a8d1..a9f6b4b4 100644 --- a/src/glean/api_client/models/conferencedata.py +++ b/src/glean/api_client/models/conferencedata.py @@ -2,18 +2,19 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict -class Provider(str, Enum): +class Provider(str, Enum, metaclass=utils.OpenEnumMeta): ZOOM = "ZOOM" HANGOUTS = "HANGOUTS" -class ConferenceDataSource(str, Enum): +class ConferenceDataSource(str, Enum, metaclass=utils.OpenEnumMeta): NATIVE_CONFERENCE = "NATIVE_CONFERENCE" LOCATION = "LOCATION" DESCRIPTION = "DESCRIPTION" @@ -34,6 +35,24 @@ class ConferenceData(BaseModel): source: Optional[ConferenceDataSource] = None + @field_serializer("provider") + def serialize_provider(self, value): + if isinstance(value, str): + try: + return models.Provider(value) + except ValueError: + return value + return value + + @field_serializer("source") + def serialize_source(self, value): + if isinstance(value, str): + try: + return models.ConferenceDataSource(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["source"]) @@ -42,7 +61,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/configurationvalue.py b/src/glean/api_client/models/configurationvalue.py new file mode 100644 index 00000000..c7458c5d --- /dev/null +++ b/src/glean/api_client/models/configurationvalue.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +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 ConfigurationValueTypedDict(TypedDict): + r"""A single configuration value, either a scalar or a list""" + + value: NotRequired[str] + r"""The configuration value as a string. Only one of value or valueList should be populated.""" + value_list: NotRequired[List[str]] + r"""The configuration value as a list of strings. Only one of value or valueList should be populated.""" + + +class ConfigurationValue(BaseModel): + r"""A single configuration value, either a scalar or a list""" + + value: Optional[str] = None + r"""The configuration value as a string. Only one of value or valueList should be populated.""" + + value_list: Annotated[Optional[List[str]], pydantic.Field(alias="valueList")] = None + r"""The configuration value as a list of strings. Only one of value or valueList should be populated.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["value", "valueList"]) + 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: + ConfigurationValue.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/connectortype.py b/src/glean/api_client/models/connectortype.py index 8d612d97..8e99dab8 100644 --- a/src/glean/api_client/models/connectortype.py +++ b/src/glean/api_client/models/connectortype.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class ConnectorType(str, Enum): +class ConnectorType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The source from which document content was pulled, e.g. an API crawl or browser history""" API_CRAWL = "API_CRAWL" diff --git a/src/glean/api_client/models/contentdefinition.py b/src/glean/api_client/models/contentdefinition.py index 64f617a9..03e7f7a2 100644 --- a/src/glean/api_client/models/contentdefinition.py +++ b/src/glean/api_client/models/contentdefinition.py @@ -39,7 +39,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/countinfo.py b/src/glean/api_client/models/countinfo.py index 2d24b6f2..83d1aa3b 100644 --- a/src/glean/api_client/models/countinfo.py +++ b/src/glean/api_client/models/countinfo.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/createannouncementop.py b/src/glean/api_client/models/createannouncementop.py index 684220b8..f07a4fec 100644 --- a/src/glean/api_client/models/createannouncementop.py +++ b/src/glean/api_client/models/createannouncementop.py @@ -40,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/createannouncementrequest.py b/src/glean/api_client/models/createannouncementrequest.py index a6bb4e29..b7cbb6c5 100644 --- a/src/glean/api_client/models/createannouncementrequest.py +++ b/src/glean/api_client/models/createannouncementrequest.py @@ -127,7 +127,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/createanswerop.py b/src/glean/api_client/models/createanswerop.py index fce45ee2..6e7cc763 100644 --- a/src/glean/api_client/models/createanswerop.py +++ b/src/glean/api_client/models/createanswerop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/createcollectionop.py b/src/glean/api_client/models/createcollectionop.py index 639bfdb5..3b504b1b 100644 --- a/src/glean/api_client/models/createcollectionop.py +++ b/src/glean/api_client/models/createcollectionop.py @@ -42,7 +42,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -69,7 +69,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -96,7 +96,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/createcollectionrequest.py b/src/glean/api_client/models/createcollectionrequest.py index 46d5874e..8ed97b03 100644 --- a/src/glean/api_client/models/createcollectionrequest.py +++ b/src/glean/api_client/models/createcollectionrequest.py @@ -99,7 +99,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/createdlpreportrequest.py b/src/glean/api_client/models/createdlpreportrequest.py index aa1c7eff..9de15343 100644 --- a/src/glean/api_client/models/createdlpreportrequest.py +++ b/src/glean/api_client/models/createdlpreportrequest.py @@ -3,9 +3,10 @@ from __future__ import annotations from .dlpconfig import DlpConfig, DlpConfigTypedDict from .dlpfrequency import DlpFrequency +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -36,6 +37,15 @@ class CreateDlpReportRequest(BaseModel): ) r"""Controls whether the policy should hide documents with violations.""" + @field_serializer("frequency") + def serialize_frequency(self, value): + if isinstance(value, str): + try: + return models.DlpFrequency(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["name", "config", "frequency", "autoHideDocs"]) @@ -44,7 +54,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/createdlpreportresponse.py b/src/glean/api_client/models/createdlpreportresponse.py index 7c8ceccb..2fecf5af 100644 --- a/src/glean/api_client/models/createdlpreportresponse.py +++ b/src/glean/api_client/models/createdlpreportresponse.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/createshortcutop.py b/src/glean/api_client/models/createshortcutop.py index 2bc9e3a8..cd9cab87 100644 --- a/src/glean/api_client/models/createshortcutop.py +++ b/src/glean/api_client/models/createshortcutop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/createshortcutresponse.py b/src/glean/api_client/models/createshortcutresponse.py index 5e0188c1..7fd2e6eb 100644 --- a/src/glean/api_client/models/createshortcutresponse.py +++ b/src/glean/api_client/models/createshortcutresponse.py @@ -27,7 +27,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/currentactiveusers.py b/src/glean/api_client/models/currentactiveusers.py index e225e273..10c5f779 100644 --- a/src/glean/api_client/models/currentactiveusers.py +++ b/src/glean/api_client/models/currentactiveusers.py @@ -34,7 +34,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/customdatasourceconfig.py b/src/glean/api_client/models/customdatasourceconfig.py index 1e4a488d..635c888a 100644 --- a/src/glean/api_client/models/customdatasourceconfig.py +++ b/src/glean/api_client/models/customdatasourceconfig.py @@ -8,14 +8,15 @@ from .objectdefinition import ObjectDefinition, ObjectDefinitionTypedDict from .quicklink import Quicklink, QuicklinkTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class DatasourceCategory(str, Enum): +class DatasourceCategory(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of this datasource. It is an important signal for relevance and must be specified and cannot be UNCATEGORIZED. Please refer to [this](https://developers.glean.com/docs/indexing_api_datasource_category/) for more details.""" UNCATEGORIZED = "UNCATEGORIZED" @@ -38,14 +39,14 @@ class DatasourceCategory(str, Enum): AGENTS = "AGENTS" -class HideBuiltInFacet(str, Enum): +class HideBuiltInFacet(str, Enum, metaclass=utils.OpenEnumMeta): TYPE = "TYPE" TAG = "TAG" AUTHOR = "AUTHOR" OWNER = "OWNER" -class CustomDatasourceConfigConnectorType(str, Enum): +class CustomDatasourceConfigConnectorType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The source from which document content was pulled, e.g. an API crawl or browser history""" API_CRAWL = "API_CRAWL" @@ -238,6 +239,24 @@ class CustomDatasourceConfig(BaseModel): ] = False r"""True if this datasource will be used for testing purpose only. Documents from such a datasource wouldn't have any effect on search rankings.""" + @field_serializer("datasource_category") + def serialize_datasource_category(self, value): + if isinstance(value, str): + try: + return models.DatasourceCategory(value) + except ValueError: + return value + return value + + @field_serializer("connector_type") + def serialize_connector_type(self, value): + if isinstance(value, str): + try: + return models.CustomDatasourceConfigConnectorType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -275,7 +294,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/customdatavalue.py b/src/glean/api_client/models/customdatavalue.py index 27cb6070..a07d2e81 100644 --- a/src/glean/api_client/models/customdatavalue.py +++ b/src/glean/api_client/models/customdatavalue.py @@ -49,7 +49,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/customentity.py b/src/glean/api_client/models/customentity.py index 91112399..6cb844cc 100644 --- a/src/glean/api_client/models/customentity.py +++ b/src/glean/api_client/models/customentity.py @@ -69,7 +69,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/customentitymetadata.py b/src/glean/api_client/models/customentitymetadata.py index 61ff7ce5..45958c27 100644 --- a/src/glean/api_client/models/customentitymetadata.py +++ b/src/glean/api_client/models/customentitymetadata.py @@ -28,7 +28,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/customer.py b/src/glean/api_client/models/customer.py index 1035ba76..7154cf22 100644 --- a/src/glean/api_client/models/customer.py +++ b/src/glean/api_client/models/customer.py @@ -89,7 +89,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/customermetadata.py b/src/glean/api_client/models/customermetadata.py index a90dc834..35adf587 100644 --- a/src/glean/api_client/models/customermetadata.py +++ b/src/glean/api_client/models/customermetadata.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/customfielddata.py b/src/glean/api_client/models/customfielddata.py index 4fa86992..5e85ebbf 100644 --- a/src/glean/api_client/models/customfielddata.py +++ b/src/glean/api_client/models/customfielddata.py @@ -35,7 +35,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/customfieldvaluehyperlink.py b/src/glean/api_client/models/customfieldvaluehyperlink.py index 9f0b0350..44931d12 100644 --- a/src/glean/api_client/models/customfieldvaluehyperlink.py +++ b/src/glean/api_client/models/customfieldvaluehyperlink.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/customfieldvalueperson.py b/src/glean/api_client/models/customfieldvalueperson.py index 09dc8c55..cb264f2b 100644 --- a/src/glean/api_client/models/customfieldvalueperson.py +++ b/src/glean/api_client/models/customfieldvalueperson.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/customfieldvaluestr.py b/src/glean/api_client/models/customfieldvaluestr.py index 339df32c..68f0fa1e 100644 --- a/src/glean/api_client/models/customfieldvaluestr.py +++ b/src/glean/api_client/models/customfieldvaluestr.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/customproperty.py b/src/glean/api_client/models/customproperty.py index 27b23f79..584ffc76 100644 --- a/src/glean/api_client/models/customproperty.py +++ b/src/glean/api_client/models/customproperty.py @@ -31,7 +31,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/customsensitiveexpression.py b/src/glean/api_client/models/customsensitiveexpression.py index 1842e19b..4d525872 100644 --- a/src/glean/api_client/models/customsensitiveexpression.py +++ b/src/glean/api_client/models/customsensitiveexpression.py @@ -36,7 +36,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/customsensitiverule.py b/src/glean/api_client/models/customsensitiverule.py index b1c06a84..c767e33d 100644 --- a/src/glean/api_client/models/customsensitiverule.py +++ b/src/glean/api_client/models/customsensitiverule.py @@ -3,14 +3,15 @@ from __future__ import annotations from .customsensitiveruletype import CustomSensitiveRuleType from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class CustomSensitiveRuleLikelihoodThreshold(str, Enum): +class CustomSensitiveRuleLikelihoodThreshold(str, Enum, metaclass=utils.OpenEnumMeta): r"""Likelihood threshold for BUILT_IN infotypes (e.g., LIKELY, VERY_LIKELY). Only applicable for BUILT_IN type.""" LIKELY = "LIKELY" @@ -47,6 +48,24 @@ class CustomSensitiveRule(BaseModel): ] = None r"""Likelihood threshold for BUILT_IN infotypes (e.g., LIKELY, VERY_LIKELY). Only applicable for BUILT_IN type.""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.CustomSensitiveRuleType(value) + except ValueError: + return value + return value + + @field_serializer("likelihood_threshold") + def serialize_likelihood_threshold(self, value): + if isinstance(value, str): + try: + return models.CustomSensitiveRuleLikelihoodThreshold(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["id", "value", "type", "likelihoodThreshold"]) @@ -55,7 +74,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/customsensitiveruletype.py b/src/glean/api_client/models/customsensitiveruletype.py index be887e84..b273ac98 100644 --- a/src/glean/api_client/models/customsensitiveruletype.py +++ b/src/glean/api_client/models/customsensitiveruletype.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class CustomSensitiveRuleType(str, Enum): +class CustomSensitiveRuleType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Type of the custom sensitive rule.""" REGEX = "REGEX" diff --git a/src/glean/api_client/models/datasourcebulkmembershipdefinition.py b/src/glean/api_client/models/datasourcebulkmembershipdefinition.py index 3113d502..31e0065c 100644 --- a/src/glean/api_client/models/datasourcebulkmembershipdefinition.py +++ b/src/glean/api_client/models/datasourcebulkmembershipdefinition.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/datasourceconfigurationresponse.py b/src/glean/api_client/models/datasourceconfigurationresponse.py new file mode 100644 index 00000000..15b227d9 --- /dev/null +++ b/src/glean/api_client/models/datasourceconfigurationresponse.py @@ -0,0 +1,23 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .datasourceinstanceconfiguration import ( + DatasourceInstanceConfiguration, + DatasourceInstanceConfigurationTypedDict, +) +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class DatasourceConfigurationResponseTypedDict(TypedDict): + r"""The greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist are included.""" + + configuration: DatasourceInstanceConfigurationTypedDict + r"""Configuration for a datasource instance""" + + +class DatasourceConfigurationResponse(BaseModel): + r"""The greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist are included.""" + + configuration: DatasourceInstanceConfiguration + r"""Configuration for a datasource instance""" diff --git a/src/glean/api_client/models/datasourceinstanceconfiguration.py b/src/glean/api_client/models/datasourceinstanceconfiguration.py new file mode 100644 index 00000000..de6cd8aa --- /dev/null +++ b/src/glean/api_client/models/datasourceinstanceconfiguration.py @@ -0,0 +1,21 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .configurationvalue import ConfigurationValue, ConfigurationValueTypedDict +from glean.api_client.types import BaseModel +from typing import Dict +from typing_extensions import TypedDict + + +class DatasourceInstanceConfigurationTypedDict(TypedDict): + r"""Configuration for a datasource instance""" + + values: Dict[str, ConfigurationValueTypedDict] + r"""A map from configuration key names to their values""" + + +class DatasourceInstanceConfiguration(BaseModel): + r"""Configuration for a datasource instance""" + + values: Dict[str, ConfigurationValue] + r"""A map from configuration key names to their values""" diff --git a/src/glean/api_client/models/datasourcemembershipdefinition.py b/src/glean/api_client/models/datasourcemembershipdefinition.py index 92097a8b..4243bb1b 100644 --- a/src/glean/api_client/models/datasourcemembershipdefinition.py +++ b/src/glean/api_client/models/datasourcemembershipdefinition.py @@ -43,7 +43,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/datasourceobjecttypedocumentcountentry.py b/src/glean/api_client/models/datasourceobjecttypedocumentcountentry.py index 9f0ab3ee..306d5d5b 100644 --- a/src/glean/api_client/models/datasourceobjecttypedocumentcountentry.py +++ b/src/glean/api_client/models/datasourceobjecttypedocumentcountentry.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/datasourceprofile.py b/src/glean/api_client/models/datasourceprofile.py index 550e0cff..4a54a6d3 100644 --- a/src/glean/api_client/models/datasourceprofile.py +++ b/src/glean/api_client/models/datasourceprofile.py @@ -49,7 +49,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/datasourceuserdefinition.py b/src/glean/api_client/models/datasourceuserdefinition.py index 687934d6..af754d51 100644 --- a/src/glean/api_client/models/datasourceuserdefinition.py +++ b/src/glean/api_client/models/datasourceuserdefinition.py @@ -40,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/debugdatasourcestatusidentityresponsecomponent.py b/src/glean/api_client/models/debugdatasourcestatusidentityresponsecomponent.py index 29156894..a027cc7e 100644 --- a/src/glean/api_client/models/debugdatasourcestatusidentityresponsecomponent.py +++ b/src/glean/api_client/models/debugdatasourcestatusidentityresponsecomponent.py @@ -29,7 +29,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -61,7 +61,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/debugdatasourcestatusresponse.py b/src/glean/api_client/models/debugdatasourcestatusresponse.py index 46212470..b77b3855 100644 --- a/src/glean/api_client/models/debugdatasourcestatusresponse.py +++ b/src/glean/api_client/models/debugdatasourcestatusresponse.py @@ -18,9 +18,10 @@ ProcessingHistoryEventTypedDict, ) from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -51,7 +52,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -91,7 +92,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -129,7 +130,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -138,7 +139,7 @@ def serialize_model(self, handler): return m -class DatasourceVisibility(str, Enum): +class DatasourceVisibility(str, Enum, metaclass=utils.OpenEnumMeta): r"""The visibility of the datasource, an enum of VISIBLE_TO_ALL, VISIBLE_TO_TEST_GROUP, NOT_VISIBLE""" ENABLED_FOR_ALL = "ENABLED_FOR_ALL" @@ -167,6 +168,15 @@ class DebugDatasourceStatusResponse(BaseModel): ] = None r"""The visibility of the datasource, an enum of VISIBLE_TO_ALL, VISIBLE_TO_TEST_GROUP, NOT_VISIBLE""" + @field_serializer("datasource_visibility") + def serialize_datasource_visibility(self, value): + if isinstance(value, str): + try: + return models.DatasourceVisibility(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["documents", "identity", "datasourceVisibility"]) @@ -175,7 +185,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/debugdocumentresponse.py b/src/glean/api_client/models/debugdocumentresponse.py index f1432270..3efc18aa 100644 --- a/src/glean/api_client/models/debugdocumentresponse.py +++ b/src/glean/api_client/models/debugdocumentresponse.py @@ -45,7 +45,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/debugdocumentsresponse.py b/src/glean/api_client/models/debugdocumentsresponse.py index f5d7055f..54513fca 100644 --- a/src/glean/api_client/models/debugdocumentsresponse.py +++ b/src/glean/api_client/models/debugdocumentsresponse.py @@ -36,7 +36,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/debugdocumentsresponseitem.py b/src/glean/api_client/models/debugdocumentsresponseitem.py index 0e105610..63165771 100644 --- a/src/glean/api_client/models/debugdocumentsresponseitem.py +++ b/src/glean/api_client/models/debugdocumentsresponseitem.py @@ -42,7 +42,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/debuguserresponse.py b/src/glean/api_client/models/debuguserresponse.py index cf4313de..43e28fa9 100644 --- a/src/glean/api_client/models/debuguserresponse.py +++ b/src/glean/api_client/models/debuguserresponse.py @@ -42,7 +42,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deleteallchatsop.py b/src/glean/api_client/models/deleteallchatsop.py index 882f202f..cac2a62d 100644 --- a/src/glean/api_client/models/deleteallchatsop.py +++ b/src/glean/api_client/models/deleteallchatsop.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deleteannouncementop.py b/src/glean/api_client/models/deleteannouncementop.py index 91f7951a..c7b39677 100644 --- a/src/glean/api_client/models/deleteannouncementop.py +++ b/src/glean/api_client/models/deleteannouncementop.py @@ -40,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deleteanswerop.py b/src/glean/api_client/models/deleteanswerop.py index 76ffff92..af7a16d7 100644 --- a/src/glean/api_client/models/deleteanswerop.py +++ b/src/glean/api_client/models/deleteanswerop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deleteanswerrequest.py b/src/glean/api_client/models/deleteanswerrequest.py index 93e3bd23..5c83ec3e 100644 --- a/src/glean/api_client/models/deleteanswerrequest.py +++ b/src/glean/api_client/models/deleteanswerrequest.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deletechatfilesop.py b/src/glean/api_client/models/deletechatfilesop.py index cdbd0c7f..01f8e688 100644 --- a/src/glean/api_client/models/deletechatfilesop.py +++ b/src/glean/api_client/models/deletechatfilesop.py @@ -48,7 +48,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deletechatsop.py b/src/glean/api_client/models/deletechatsop.py index 540084d3..fc7d3083 100644 --- a/src/glean/api_client/models/deletechatsop.py +++ b/src/glean/api_client/models/deletechatsop.py @@ -45,7 +45,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deletecollectionitemop.py b/src/glean/api_client/models/deletecollectionitemop.py index 9d185806..10966910 100644 --- a/src/glean/api_client/models/deletecollectionitemop.py +++ b/src/glean/api_client/models/deletecollectionitemop.py @@ -40,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deletecollectionitemrequest.py b/src/glean/api_client/models/deletecollectionitemrequest.py index 64236e1b..ac801e8c 100644 --- a/src/glean/api_client/models/deletecollectionitemrequest.py +++ b/src/glean/api_client/models/deletecollectionitemrequest.py @@ -35,7 +35,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deletecollectionitemresponse.py b/src/glean/api_client/models/deletecollectionitemresponse.py index 05b69dfa..eb2315c4 100644 --- a/src/glean/api_client/models/deletecollectionitemresponse.py +++ b/src/glean/api_client/models/deletecollectionitemresponse.py @@ -23,7 +23,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deletecollectionop.py b/src/glean/api_client/models/deletecollectionop.py index 53473bb9..8721ecb5 100644 --- a/src/glean/api_client/models/deletecollectionop.py +++ b/src/glean/api_client/models/deletecollectionop.py @@ -40,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deletecollectionrequest.py b/src/glean/api_client/models/deletecollectionrequest.py index 6dc7e806..cf68ff3b 100644 --- a/src/glean/api_client/models/deletecollectionrequest.py +++ b/src/glean/api_client/models/deletecollectionrequest.py @@ -32,7 +32,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deletedocumentrequest.py b/src/glean/api_client/models/deletedocumentrequest.py index ecdf225a..3fb67bc9 100644 --- a/src/glean/api_client/models/deletedocumentrequest.py +++ b/src/glean/api_client/models/deletedocumentrequest.py @@ -44,7 +44,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deleteemployeerequest.py b/src/glean/api_client/models/deleteemployeerequest.py index e1dc59d9..b413b516 100644 --- a/src/glean/api_client/models/deleteemployeerequest.py +++ b/src/glean/api_client/models/deleteemployeerequest.py @@ -34,7 +34,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deletegrouprequest.py b/src/glean/api_client/models/deletegrouprequest.py index 69837fec..651551f3 100644 --- a/src/glean/api_client/models/deletegrouprequest.py +++ b/src/glean/api_client/models/deletegrouprequest.py @@ -39,7 +39,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deletemembershiprequest.py b/src/glean/api_client/models/deletemembershiprequest.py index 4d7397b8..60f59a29 100644 --- a/src/glean/api_client/models/deletemembershiprequest.py +++ b/src/glean/api_client/models/deletemembershiprequest.py @@ -42,7 +42,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deleteshortcutop.py b/src/glean/api_client/models/deleteshortcutop.py index 0c9baf91..5862db47 100644 --- a/src/glean/api_client/models/deleteshortcutop.py +++ b/src/glean/api_client/models/deleteshortcutop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/deleteuserrequest.py b/src/glean/api_client/models/deleteuserrequest.py index 4ed4035e..a8dd578b 100644 --- a/src/glean/api_client/models/deleteuserrequest.py +++ b/src/glean/api_client/models/deleteuserrequest.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/digest.py b/src/glean/api_client/models/digest.py index aae5e37d..432716a8 100644 --- a/src/glean/api_client/models/digest.py +++ b/src/glean/api_client/models/digest.py @@ -47,7 +47,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/digestsection.py b/src/glean/api_client/models/digestsection.py index 3916bd17..17ac661e 100644 --- a/src/glean/api_client/models/digestsection.py +++ b/src/glean/api_client/models/digestsection.py @@ -3,9 +3,10 @@ from __future__ import annotations from .digestupdate import DigestUpdate, DigestUpdateTypedDict from .sectiontype import SectionType +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -60,6 +61,15 @@ class DigestSection(BaseModel): url: Optional[str] = None r"""Optional URL for the digest section. Should be populated only if the section is a CHANNEL type section.""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.SectionType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -70,7 +80,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/digestupdate.py b/src/glean/api_client/models/digestupdate.py index caba0d3b..be822894 100644 --- a/src/glean/api_client/models/digestupdate.py +++ b/src/glean/api_client/models/digestupdate.py @@ -2,8 +2,9 @@ from __future__ import annotations from .updatetype import UpdateType +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -42,6 +43,15 @@ class DigestUpdate(BaseModel): type: Optional[UpdateType] = None r"""Optional type classification for the update.""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.UpdateType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["urls", "url", "title", "datasource", "summary", "type"]) @@ -50,7 +60,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/disambiguation.py b/src/glean/api_client/models/disambiguation.py index e4bf574e..68a5514f 100644 --- a/src/glean/api_client/models/disambiguation.py +++ b/src/glean/api_client/models/disambiguation.py @@ -2,8 +2,9 @@ from __future__ import annotations from .entitytype import EntityType +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -31,6 +32,15 @@ class Disambiguation(BaseModel): type: Optional[EntityType] = None r"""The type of entity.""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.EntityType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["name", "id", "type"]) @@ -39,7 +49,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/displayablelistitemuiconfig.py b/src/glean/api_client/models/displayablelistitemuiconfig.py index 58fe8665..3e0031b7 100644 --- a/src/glean/api_client/models/displayablelistitemuiconfig.py +++ b/src/glean/api_client/models/displayablelistitemuiconfig.py @@ -31,7 +31,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/dlpconfig.py b/src/glean/api_client/models/dlpconfig.py index 38436a19..f68bba2b 100644 --- a/src/glean/api_client/models/dlpconfig.py +++ b/src/glean/api_client/models/dlpconfig.py @@ -137,7 +137,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/dlpexportfindingsrequest.py b/src/glean/api_client/models/dlpexportfindingsrequest.py index e38155cf..c2495c2d 100644 --- a/src/glean/api_client/models/dlpexportfindingsrequest.py +++ b/src/glean/api_client/models/dlpexportfindingsrequest.py @@ -70,7 +70,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/dlpfindingfilter.py b/src/glean/api_client/models/dlpfindingfilter.py index 4b8b5377..a78e2193 100644 --- a/src/glean/api_client/models/dlpfindingfilter.py +++ b/src/glean/api_client/models/dlpfindingfilter.py @@ -3,9 +3,10 @@ from __future__ import annotations from .dlpseverity import DlpSeverity from .timerangefilter import TimeRangeFilter, TimeRangeFilterTypedDict +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -52,6 +53,15 @@ class DlpFindingFilter(BaseModel): archived: Optional[bool] = None + @field_serializer("severity") + def serialize_severity(self, value): + if isinstance(value, str): + try: + return models.DlpSeverity(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -73,7 +83,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/dlpfrequency.py b/src/glean/api_client/models/dlpfrequency.py index a7da3a83..334f894f 100644 --- a/src/glean/api_client/models/dlpfrequency.py +++ b/src/glean/api_client/models/dlpfrequency.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class DlpFrequency(str, Enum): +class DlpFrequency(str, Enum, metaclass=utils.OpenEnumMeta): r"""Interval between scans. DAILY is deprecated.""" ONCE = "ONCE" diff --git a/src/glean/api_client/models/dlpperson.py b/src/glean/api_client/models/dlpperson.py index 277be9f6..ee020352 100644 --- a/src/glean/api_client/models/dlpperson.py +++ b/src/glean/api_client/models/dlpperson.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/dlppersonmetadata.py b/src/glean/api_client/models/dlppersonmetadata.py index 9f5e147e..b3d764a6 100644 --- a/src/glean/api_client/models/dlppersonmetadata.py +++ b/src/glean/api_client/models/dlppersonmetadata.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/dlpreport.py b/src/glean/api_client/models/dlpreport.py index 706524ef..ff433f12 100644 --- a/src/glean/api_client/models/dlpreport.py +++ b/src/glean/api_client/models/dlpreport.py @@ -6,14 +6,15 @@ from .dlpperson import DlpPerson, DlpPersonTypedDict from .dlpreportstatus import DlpReportStatus from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class LastScanStatus(str, Enum): +class LastScanStatus(str, Enum, metaclass=utils.OpenEnumMeta): PENDING = "PENDING" SUCCESS = "SUCCESS" FAILURE = "FAILURE" @@ -92,6 +93,33 @@ class DlpReport(BaseModel): updated_by: Annotated[Optional[DlpPerson], pydantic.Field(alias="updatedBy")] = None r"""Details about the person who created this report/policy.""" + @field_serializer("frequency") + def serialize_frequency(self, value): + if isinstance(value, str): + try: + return models.DlpFrequency(value) + except ValueError: + return value + return value + + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.DlpReportStatus(value) + except ValueError: + return value + return value + + @field_serializer("last_scan_status") + def serialize_last_scan_status(self, value): + if isinstance(value, str): + try: + return models.LastScanStatus(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -115,7 +143,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/dlpreportstatus.py b/src/glean/api_client/models/dlpreportstatus.py index 89f5b52f..c7768ce7 100644 --- a/src/glean/api_client/models/dlpreportstatus.py +++ b/src/glean/api_client/models/dlpreportstatus.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class DlpReportStatus(str, Enum): +class DlpReportStatus(str, Enum, metaclass=utils.OpenEnumMeta): r"""The status of the policy/report. Only ACTIVE status will be picked for scans.""" ACTIVE = "ACTIVE" diff --git a/src/glean/api_client/models/dlpseverity.py b/src/glean/api_client/models/dlpseverity.py index 625f32b8..bd785981 100644 --- a/src/glean/api_client/models/dlpseverity.py +++ b/src/glean/api_client/models/dlpseverity.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class DlpSeverity(str, Enum): +class DlpSeverity(str, Enum, metaclass=utils.OpenEnumMeta): r"""Severity levels for DLP findings and analyses.""" UNSPECIFIED = "UNSPECIFIED" diff --git a/src/glean/api_client/models/dlpsimpleresult.py b/src/glean/api_client/models/dlpsimpleresult.py index 83e95325..212efae1 100644 --- a/src/glean/api_client/models/dlpsimpleresult.py +++ b/src/glean/api_client/models/dlpsimpleresult.py @@ -2,8 +2,9 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class DlpSimpleResult(str, Enum): +class DlpSimpleResult(str, Enum, metaclass=utils.OpenEnumMeta): SUCCESS = "SUCCESS" FAILURE = "FAILURE" diff --git a/src/glean/api_client/models/document.py b/src/glean/api_client/models/document.py index 43f4b20e..cb56b4f3 100644 --- a/src/glean/api_client/models/document.py +++ b/src/glean/api_client/models/document.py @@ -4,9 +4,10 @@ from .connectortype import ConnectorType from .documentcontent import DocumentContent, DocumentContentTypedDict from .documentsection import DocumentSection, DocumentSectionTypedDict +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -71,6 +72,15 @@ class Document(BaseModel): sections: Optional[List[DocumentSection]] = None r"""A list of content sub-sections in the document, e.g. text blocks with different headings in a Drive doc or Confluence page.""" + @field_serializer("connector_type") + def serialize_connector_type(self, value): + if isinstance(value, str): + try: + return models.ConnectorType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -93,7 +103,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/documentcontent.py b/src/glean/api_client/models/documentcontent.py index 1de9c4df..7a6ea0bf 100644 --- a/src/glean/api_client/models/documentcontent.py +++ b/src/glean/api_client/models/documentcontent.py @@ -27,7 +27,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/documentdefinition.py b/src/glean/api_client/models/documentdefinition.py index 0f4e1860..99b4520f 100644 --- a/src/glean/api_client/models/documentdefinition.py +++ b/src/glean/api_client/models/documentdefinition.py @@ -193,7 +193,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/documentinteractions.py b/src/glean/api_client/models/documentinteractions.py index 31f53e95..84214adb 100644 --- a/src/glean/api_client/models/documentinteractions.py +++ b/src/glean/api_client/models/documentinteractions.py @@ -67,7 +67,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/documentinteractionsdefinition.py b/src/glean/api_client/models/documentinteractionsdefinition.py index a0f8c83d..2dd25c44 100644 --- a/src/glean/api_client/models/documentinteractionsdefinition.py +++ b/src/glean/api_client/models/documentinteractionsdefinition.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/documentmetadata.py b/src/glean/api_client/models/documentmetadata.py index 19cb2dc2..4f50069b 100644 --- a/src/glean/api_client/models/documentmetadata.py +++ b/src/glean/api_client/models/documentmetadata.py @@ -9,9 +9,10 @@ from .thumbnail import Thumbnail, ThumbnailTypedDict from .viewerinfo import ViewerInfo, ViewerInfoTypedDict from datetime import datetime +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Dict, List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -228,6 +229,15 @@ class DocumentMetadata(BaseModel): ancestors: Optional[List["Document"]] = None r"""A list of documents that are ancestors of this document in the hierarchy of the document's datasource, for example parent folders or containers. Ancestors can be of different types and some may not be indexed. Higher level ancestors appear earlier in the list.""" + @field_serializer("visibility") + def serialize_visibility(self, value): + if isinstance(value, str): + try: + return models.DocumentVisibility(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -279,7 +289,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/documentpermissionsdefinition.py b/src/glean/api_client/models/documentpermissionsdefinition.py index 0fb6a710..fd87de54 100644 --- a/src/glean/api_client/models/documentpermissionsdefinition.py +++ b/src/glean/api_client/models/documentpermissionsdefinition.py @@ -78,7 +78,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/documentsection.py b/src/glean/api_client/models/documentsection.py index 2a001296..6825bbb0 100644 --- a/src/glean/api_client/models/documentsection.py +++ b/src/glean/api_client/models/documentsection.py @@ -29,7 +29,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/documentspec_union.py b/src/glean/api_client/models/documentspec_union.py index f0509023..bad1222f 100644 --- a/src/glean/api_client/models/documentspec_union.py +++ b/src/glean/api_client/models/documentspec_union.py @@ -2,14 +2,15 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional, Union from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict -class DocumentSpecUgcType2(str, Enum): +class DocumentSpecUgcType2(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of the user generated content (UGC datasource).""" ANNOUNCEMENTS = "ANNOUNCEMENTS" @@ -38,6 +39,15 @@ class DocumentSpec4(BaseModel): doc_type: Annotated[Optional[str], pydantic.Field(alias="docType")] = None r"""The specific type of the user generated content type.""" + @field_serializer("ugc_type") + def serialize_ugc_type(self, value): + if isinstance(value, str): + try: + return models.DocumentSpecUgcType2(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["docType"]) @@ -46,7 +56,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -55,7 +65,7 @@ def serialize_model(self, handler): return m -class DocumentSpecUgcType1(str, Enum): +class DocumentSpecUgcType1(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of the user generated content (UGC datasource).""" ANNOUNCEMENTS = "ANNOUNCEMENTS" @@ -84,6 +94,15 @@ class DocumentSpec3(BaseModel): doc_type: Annotated[Optional[str], pydantic.Field(alias="docType")] = None r"""The specific type of the user generated content type.""" + @field_serializer("ugc_type") + def serialize_ugc_type(self, value): + if isinstance(value, str): + try: + return models.DocumentSpecUgcType1(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["docType"]) @@ -92,7 +111,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/documentstatusresponse.py b/src/glean/api_client/models/documentstatusresponse.py index 9ab97c42..41cc9ad2 100644 --- a/src/glean/api_client/models/documentstatusresponse.py +++ b/src/glean/api_client/models/documentstatusresponse.py @@ -65,7 +65,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/documentvisibility.py b/src/glean/api_client/models/documentvisibility.py index fb5813a9..59bfc052 100644 --- a/src/glean/api_client/models/documentvisibility.py +++ b/src/glean/api_client/models/documentvisibility.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class DocumentVisibility(str, Enum): +class DocumentVisibility(str, Enum, metaclass=utils.OpenEnumMeta): r"""The level of visibility of the document as understood by our system.""" # Only one person is able to see the document. diff --git a/src/glean/api_client/models/documentvisibilityoverride.py b/src/glean/api_client/models/documentvisibilityoverride.py index 27fb5add..e5d6ad03 100644 --- a/src/glean/api_client/models/documentvisibilityoverride.py +++ b/src/glean/api_client/models/documentvisibilityoverride.py @@ -2,14 +2,15 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class DocumentVisibilityOverrideOverride(str, Enum): +class DocumentVisibilityOverrideOverride(str, Enum, metaclass=utils.OpenEnumMeta): r"""The visibility-override state of the document.""" NONE = "NONE" @@ -30,6 +31,15 @@ class DocumentVisibilityOverride(BaseModel): override: Optional[DocumentVisibilityOverrideOverride] = None r"""The visibility-override state of the document.""" + @field_serializer("override") + def serialize_override(self, value): + if isinstance(value, str): + try: + return models.DocumentVisibilityOverrideOverride(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["docId", "override"]) @@ -38,7 +48,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/documentvisibilityupdateresult.py b/src/glean/api_client/models/documentvisibilityupdateresult.py index 2781be2a..c48a36b1 100644 --- a/src/glean/api_client/models/documentvisibilityupdateresult.py +++ b/src/glean/api_client/models/documentvisibilityupdateresult.py @@ -2,14 +2,15 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class DocumentVisibilityUpdateResultOverride(str, Enum): +class DocumentVisibilityUpdateResultOverride(str, Enum, metaclass=utils.OpenEnumMeta): r"""The visibility-override state of the document.""" NONE = "NONE" @@ -35,6 +36,15 @@ class DocumentVisibilityUpdateResult(BaseModel): success: Optional[bool] = None r"""Whether this document was successfully set to its desired visibility state.""" + @field_serializer("override") + def serialize_override(self, value): + if isinstance(value, str): + try: + return models.DocumentVisibilityUpdateResultOverride(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["docId", "override", "success"]) @@ -43,7 +53,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/editanswerop.py b/src/glean/api_client/models/editanswerop.py index f253d316..8aef450a 100644 --- a/src/glean/api_client/models/editanswerop.py +++ b/src/glean/api_client/models/editanswerop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/editanswerrequest.py b/src/glean/api_client/models/editanswerrequest.py index e33151be..42fbf75e 100644 --- a/src/glean/api_client/models/editanswerrequest.py +++ b/src/glean/api_client/models/editanswerrequest.py @@ -142,7 +142,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/editcollectionitemop.py b/src/glean/api_client/models/editcollectionitemop.py index 64b91d3a..ec47c585 100644 --- a/src/glean/api_client/models/editcollectionitemop.py +++ b/src/glean/api_client/models/editcollectionitemop.py @@ -40,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/editcollectionitemrequest.py b/src/glean/api_client/models/editcollectionitemrequest.py index f5a550a9..d263fa2e 100644 --- a/src/glean/api_client/models/editcollectionitemrequest.py +++ b/src/glean/api_client/models/editcollectionitemrequest.py @@ -45,7 +45,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/editcollectionitemresponse.py b/src/glean/api_client/models/editcollectionitemresponse.py index 447740a0..0803aa97 100644 --- a/src/glean/api_client/models/editcollectionitemresponse.py +++ b/src/glean/api_client/models/editcollectionitemresponse.py @@ -23,7 +23,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/editcollectionop.py b/src/glean/api_client/models/editcollectionop.py index ebc50afc..89876fc8 100644 --- a/src/glean/api_client/models/editcollectionop.py +++ b/src/glean/api_client/models/editcollectionop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/editcollectionrequest.py b/src/glean/api_client/models/editcollectionrequest.py index 09a38ab2..7a4edd70 100644 --- a/src/glean/api_client/models/editcollectionrequest.py +++ b/src/glean/api_client/models/editcollectionrequest.py @@ -96,7 +96,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/editcollectionresponse.py b/src/glean/api_client/models/editcollectionresponse.py index 43e051a9..dcd4373f 100644 --- a/src/glean/api_client/models/editcollectionresponse.py +++ b/src/glean/api_client/models/editcollectionresponse.py @@ -15,14 +15,15 @@ from .userrolespecification import UserRoleSpecification, UserRoleSpecificationTypedDict from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class EditCollectionResponseErrorCode(str, Enum): +class EditCollectionResponseErrorCode(str, Enum, metaclass=utils.OpenEnumMeta): NAME_EXISTS = "NAME_EXISTS" NOT_FOUND = "NOT_FOUND" COLLECTION_PINNED = "COLLECTION_PINNED" @@ -162,6 +163,15 @@ class EditCollectionResponse(BaseModel): error: Optional[CollectionError] = None + @field_serializer("error_code") + def serialize_error_code(self, value): + if isinstance(value, str): + try: + return models.EditCollectionResponseErrorCode(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -195,7 +205,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/editpinop.py b/src/glean/api_client/models/editpinop.py index 6591f97b..608f79b9 100644 --- a/src/glean/api_client/models/editpinop.py +++ b/src/glean/api_client/models/editpinop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/editpinrequest.py b/src/glean/api_client/models/editpinrequest.py index a11e31de..d19c91a1 100644 --- a/src/glean/api_client/models/editpinrequest.py +++ b/src/glean/api_client/models/editpinrequest.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/employeeinfodefinition.py b/src/glean/api_client/models/employeeinfodefinition.py index 63897a83..0dff10f0 100644 --- a/src/glean/api_client/models/employeeinfodefinition.py +++ b/src/glean/api_client/models/employeeinfodefinition.py @@ -234,7 +234,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/employeeteaminfo.py b/src/glean/api_client/models/employeeteaminfo.py index 1505b40d..91d78b8d 100644 --- a/src/glean/api_client/models/employeeteaminfo.py +++ b/src/glean/api_client/models/employeeteaminfo.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/entitiessortorder.py b/src/glean/api_client/models/entitiessortorder.py index 76d80c68..f3e5ae63 100644 --- a/src/glean/api_client/models/entitiessortorder.py +++ b/src/glean/api_client/models/entitiessortorder.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class EntitiesSortOrder(str, Enum): +class EntitiesSortOrder(str, Enum, metaclass=utils.OpenEnumMeta): r"""Different ways of sorting entities""" ENTITY_NAME = "ENTITY_NAME" diff --git a/src/glean/api_client/models/entitytype.py b/src/glean/api_client/models/entitytype.py index 43e53859..af479617 100644 --- a/src/glean/api_client/models/entitytype.py +++ b/src/glean/api_client/models/entitytype.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class EntityType(str, Enum): +class EntityType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of entity.""" PERSON = "PERSON" diff --git a/src/glean/api_client/models/errormessage.py b/src/glean/api_client/models/errormessage.py index ae043866..5979617b 100644 --- a/src/glean/api_client/models/errormessage.py +++ b/src/glean/api_client/models/errormessage.py @@ -28,7 +28,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/eventclassification.py b/src/glean/api_client/models/eventclassification.py index 2a2dc56b..7ed6e3fc 100644 --- a/src/glean/api_client/models/eventclassification.py +++ b/src/glean/api_client/models/eventclassification.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/eventstrategyname.py b/src/glean/api_client/models/eventstrategyname.py index 5ede7c8c..2fc0a34f 100644 --- a/src/glean/api_client/models/eventstrategyname.py +++ b/src/glean/api_client/models/eventstrategyname.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class EventStrategyName(str, Enum): +class EventStrategyName(str, Enum, metaclass=utils.OpenEnumMeta): r"""The name of method used to surface relevant data for a given calendar event.""" CUSTOMER_CARD = "customerCard" diff --git a/src/glean/api_client/models/exportinfo.py b/src/glean/api_client/models/exportinfo.py index 9a2325f9..039b187e 100644 --- a/src/glean/api_client/models/exportinfo.py +++ b/src/glean/api_client/models/exportinfo.py @@ -4,14 +4,15 @@ from .dlpfindingfilter import DlpFindingFilter, DlpFindingFilterTypedDict from .dlpperson import DlpPerson, DlpPersonTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class ExportInfoStatus(str, Enum): +class ExportInfoStatus(str, Enum, metaclass=utils.OpenEnumMeta): r"""The status of the export""" PENDING = "PENDING" @@ -63,6 +64,15 @@ class ExportInfo(BaseModel): export_size: Annotated[Optional[int], pydantic.Field(alias="exportSize")] = None r"""The size of the exported file in bytes""" + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.ExportInfoStatus(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -82,7 +92,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/externalsharingoptions.py b/src/glean/api_client/models/externalsharingoptions.py index 56e3fbdc..0a42520d 100644 --- a/src/glean/api_client/models/externalsharingoptions.py +++ b/src/glean/api_client/models/externalsharingoptions.py @@ -102,7 +102,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/externalshortcut.py b/src/glean/api_client/models/externalshortcut.py index 65bbb62a..33344b41 100644 --- a/src/glean/api_client/models/externalshortcut.py +++ b/src/glean/api_client/models/externalshortcut.py @@ -87,7 +87,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/extractedqna.py b/src/glean/api_client/models/extractedqna.py index 917b3930..6a255674 100644 --- a/src/glean/api_client/models/extractedqna.py +++ b/src/glean/api_client/models/extractedqna.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/facetbucket.py b/src/glean/api_client/models/facetbucket.py index 262dc80f..f8d356f7 100644 --- a/src/glean/api_client/models/facetbucket.py +++ b/src/glean/api_client/models/facetbucket.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/facetbucketfilter.py b/src/glean/api_client/models/facetbucketfilter.py index 771de454..19df5a17 100644 --- a/src/glean/api_client/models/facetbucketfilter.py +++ b/src/glean/api_client/models/facetbucketfilter.py @@ -29,7 +29,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/facetfilter.py b/src/glean/api_client/models/facetfilter.py index 8f69363f..d882c35b 100644 --- a/src/glean/api_client/models/facetfilter.py +++ b/src/glean/api_client/models/facetfilter.py @@ -34,7 +34,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/facetfilterset.py b/src/glean/api_client/models/facetfilterset.py index 660a4cfd..b1f689e7 100644 --- a/src/glean/api_client/models/facetfilterset.py +++ b/src/glean/api_client/models/facetfilterset.py @@ -27,7 +27,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/facetfiltervalue.py b/src/glean/api_client/models/facetfiltervalue.py index ee889ffb..3df02196 100644 --- a/src/glean/api_client/models/facetfiltervalue.py +++ b/src/glean/api_client/models/facetfiltervalue.py @@ -2,14 +2,15 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class RelationType(str, Enum): +class RelationType(str, Enum, metaclass=utils.OpenEnumMeta): # The value is equal to the specified value. EQUALS = "EQUALS" # The value is equal to the specified ID. @@ -45,6 +46,15 @@ class FacetFilterValue(BaseModel): ] = None r"""DEPRECATED - please use relationType instead""" + @field_serializer("relation_type") + def serialize_relation_type(self, value): + if isinstance(value, str): + try: + return models.RelationType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["value", "relationType", "isNegated"]) @@ -53,7 +63,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/facetresult.py b/src/glean/api_client/models/facetresult.py index 8b424a41..6cea2b89 100644 --- a/src/glean/api_client/models/facetresult.py +++ b/src/glean/api_client/models/facetresult.py @@ -50,7 +50,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/facetvalue.py b/src/glean/api_client/models/facetvalue.py index 6a461b85..fdf378c8 100644 --- a/src/glean/api_client/models/facetvalue.py +++ b/src/glean/api_client/models/facetvalue.py @@ -43,7 +43,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/favoriteinfo.py b/src/glean/api_client/models/favoriteinfo.py index 3c88b964..17359e01 100644 --- a/src/glean/api_client/models/favoriteinfo.py +++ b/src/glean/api_client/models/favoriteinfo.py @@ -2,9 +2,10 @@ from __future__ import annotations from .ugctype import UgcType +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -33,6 +34,15 @@ class FavoriteInfo(BaseModel): ] = None r"""If the requesting user has favorited this object.""" + @field_serializer("ugc_type") + def serialize_ugc_type(self, value): + if isinstance(value, str): + try: + return models.UgcType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["ugcType", "id", "count", "favoritedByUser"]) @@ -41,7 +51,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/feedback.py b/src/glean/api_client/models/feedback.py index 43acf378..ba97137e 100644 --- a/src/glean/api_client/models/feedback.py +++ b/src/glean/api_client/models/feedback.py @@ -252,7 +252,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/feedbackchatexchange.py b/src/glean/api_client/models/feedbackchatexchange.py index f3b37dc6..291794c5 100644 --- a/src/glean/api_client/models/feedbackchatexchange.py +++ b/src/glean/api_client/models/feedbackchatexchange.py @@ -26,7 +26,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -86,7 +86,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/feedbackop.py b/src/glean/api_client/models/feedbackop.py index 43338d24..44041cb3 100644 --- a/src/glean/api_client/models/feedbackop.py +++ b/src/glean/api_client/models/feedbackop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/feedentry.py b/src/glean/api_client/models/feedentry.py index ae5a612b..4dcd26a0 100644 --- a/src/glean/api_client/models/feedentry.py +++ b/src/glean/api_client/models/feedentry.py @@ -20,9 +20,10 @@ from .useractivity import UserActivity, UserActivityTypedDict from .workflowresult import WorkflowResult, WorkflowResultTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -57,7 +58,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -66,7 +67,7 @@ def serialize_model(self, handler): return m -class JustificationType(str, Enum): +class JustificationType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Type of the justification.""" FREQUENTLY_ACCESSED = "FREQUENTLY_ACCESSED" @@ -201,6 +202,15 @@ class FeedEntry(BaseModel): Optional[CountInfo], pydantic.Field(alias="documentVisitorCount") ] = None + @field_serializer("justification_type") + def serialize_justification_type(self, value): + if isinstance(value, str): + try: + return models.JustificationType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -233,7 +243,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/feedop.py b/src/glean/api_client/models/feedop.py index da94a1eb..f3962628 100644 --- a/src/glean/api_client/models/feedop.py +++ b/src/glean/api_client/models/feedop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/feedrequest.py b/src/glean/api_client/models/feedrequest.py index 4638b5e7..ffe6a518 100644 --- a/src/glean/api_client/models/feedrequest.py +++ b/src/glean/api_client/models/feedrequest.py @@ -75,7 +75,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/feedrequestoptions.py b/src/glean/api_client/models/feedrequestoptions.py index c1f2faa6..b0d65380 100644 --- a/src/glean/api_client/models/feedrequestoptions.py +++ b/src/glean/api_client/models/feedrequestoptions.py @@ -27,7 +27,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -90,7 +90,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/feedresponse.py b/src/glean/api_client/models/feedresponse.py index bf833fd2..683438c8 100644 --- a/src/glean/api_client/models/feedresponse.py +++ b/src/glean/api_client/models/feedresponse.py @@ -66,7 +66,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/feedresult.py b/src/glean/api_client/models/feedresult.py index f6bec358..d486724b 100644 --- a/src/glean/api_client/models/feedresult.py +++ b/src/glean/api_client/models/feedresult.py @@ -3,14 +3,15 @@ from __future__ import annotations from .feedentry import FeedEntry, FeedEntryTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class FeedResultCategory(str, Enum): +class FeedResultCategory(str, Enum, metaclass=utils.OpenEnumMeta): r"""Category of the result, one of the requested categories in incoming request.""" DOCUMENT_SUGGESTION = "DOCUMENT_SUGGESTION" @@ -64,6 +65,15 @@ class FeedResult(BaseModel): rank: Optional[int] = None r"""Rank of the result. Rank is suggested by server. Client side rank may differ.""" + @field_serializer("category") + def serialize_category(self, value): + if isinstance(value, str): + try: + return models.FeedResultCategory(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["secondaryEntries", "rank"]) @@ -72,7 +82,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/followupaction.py b/src/glean/api_client/models/followupaction.py index 45106ff3..5a446215 100644 --- a/src/glean/api_client/models/followupaction.py +++ b/src/glean/api_client/models/followupaction.py @@ -75,7 +75,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/generatedattachment.py b/src/glean/api_client/models/generatedattachment.py index a5a3a950..f431eede 100644 --- a/src/glean/api_client/models/generatedattachment.py +++ b/src/glean/api_client/models/generatedattachment.py @@ -10,9 +10,10 @@ ) from .person import Person, PersonTypedDict from .structuredlink import StructuredLink, StructuredLinkTypedDict +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -51,6 +52,15 @@ class GeneratedAttachment(BaseModel): content: Optional[List[GeneratedAttachmentContent]] = None + @field_serializer("strategy_name") + def serialize_strategy_name(self, value): + if isinstance(value, str): + try: + return models.EventStrategyName(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -68,7 +78,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/generatedattachmentcontent.py b/src/glean/api_client/models/generatedattachmentcontent.py index 01bc041b..cc022b56 100644 --- a/src/glean/api_client/models/generatedattachmentcontent.py +++ b/src/glean/api_client/models/generatedattachmentcontent.py @@ -36,7 +36,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/generatedqna.py b/src/glean/api_client/models/generatedqna.py index 04c0536e..f1fbf635 100644 --- a/src/glean/api_client/models/generatedqna.py +++ b/src/glean/api_client/models/generatedqna.py @@ -3,9 +3,10 @@ from __future__ import annotations from .followupaction import FollowupAction, FollowupActionTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -13,7 +14,7 @@ from .textrange import TextRange, TextRangeTypedDict -class GeneratedQnaStatus(str, Enum): +class GeneratedQnaStatus(str, Enum, metaclass=utils.OpenEnumMeta): r"""Status of backend generating the answer""" COMPUTING = "COMPUTING" @@ -76,6 +77,15 @@ class GeneratedQna(BaseModel): ) r"""An opaque token that represents this particular result in this particular query. To be used for /feedback reporting.""" + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.GeneratedQnaStatus(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -95,7 +105,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/get_rest_api_v1_tools_listop.py b/src/glean/api_client/models/get_rest_api_v1_tools_listop.py index abdaafee..b5265a60 100644 --- a/src/glean/api_client/models/get_rest_api_v1_tools_listop.py +++ b/src/glean/api_client/models/get_rest_api_v1_tools_listop.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getagentop.py b/src/glean/api_client/models/getagentop.py index d0057193..9cb38383 100644 --- a/src/glean/api_client/models/getagentop.py +++ b/src/glean/api_client/models/getagentop.py @@ -45,7 +45,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getagentschemasop.py b/src/glean/api_client/models/getagentschemasop.py index 49e8e1d4..c381cdae 100644 --- a/src/glean/api_client/models/getagentschemasop.py +++ b/src/glean/api_client/models/getagentschemasop.py @@ -45,7 +45,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getanswererror.py b/src/glean/api_client/models/getanswererror.py index dc1a13d8..102fadd9 100644 --- a/src/glean/api_client/models/getanswererror.py +++ b/src/glean/api_client/models/getanswererror.py @@ -3,14 +3,15 @@ from __future__ import annotations from .person import Person, PersonTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class GetAnswerErrorErrorType(str, Enum): +class GetAnswerErrorErrorType(str, Enum, metaclass=utils.OpenEnumMeta): NO_PERMISSION = "NO_PERMISSION" INVALID_ID = "INVALID_ID" @@ -29,6 +30,15 @@ class GetAnswerError(BaseModel): None ) + @field_serializer("error_type") + def serialize_error_type(self, value): + if isinstance(value, str): + try: + return models.GetAnswerErrorErrorType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["errorType", "answerAuthor"]) @@ -37,7 +47,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getanswerop.py b/src/glean/api_client/models/getanswerop.py index 49aa5a14..3a649778 100644 --- a/src/glean/api_client/models/getanswerop.py +++ b/src/glean/api_client/models/getanswerop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getanswerrequest.py b/src/glean/api_client/models/getanswerrequest.py index e566159c..5a1648a1 100644 --- a/src/glean/api_client/models/getanswerrequest.py +++ b/src/glean/api_client/models/getanswerrequest.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getanswerresponse.py b/src/glean/api_client/models/getanswerresponse.py index 2223d553..6bb54cef 100644 --- a/src/glean/api_client/models/getanswerresponse.py +++ b/src/glean/api_client/models/getanswerresponse.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getchatapplicationop.py b/src/glean/api_client/models/getchatapplicationop.py index 7757b5b3..8431fc2e 100644 --- a/src/glean/api_client/models/getchatapplicationop.py +++ b/src/glean/api_client/models/getchatapplicationop.py @@ -48,7 +48,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getchatapplicationresponse.py b/src/glean/api_client/models/getchatapplicationresponse.py index c2b617f8..c4b38871 100644 --- a/src/glean/api_client/models/getchatapplicationresponse.py +++ b/src/glean/api_client/models/getchatapplicationresponse.py @@ -22,7 +22,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getchatfilesop.py b/src/glean/api_client/models/getchatfilesop.py index de9515ca..d0ba2bef 100644 --- a/src/glean/api_client/models/getchatfilesop.py +++ b/src/glean/api_client/models/getchatfilesop.py @@ -45,7 +45,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getchatfilesresponse.py b/src/glean/api_client/models/getchatfilesresponse.py index 626f22cd..c3d8e2e9 100644 --- a/src/glean/api_client/models/getchatfilesresponse.py +++ b/src/glean/api_client/models/getchatfilesresponse.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getchatop.py b/src/glean/api_client/models/getchatop.py index 1a5badde..c4155fe3 100644 --- a/src/glean/api_client/models/getchatop.py +++ b/src/glean/api_client/models/getchatop.py @@ -45,7 +45,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getchatresponse.py b/src/glean/api_client/models/getchatresponse.py index 97efa484..7dfadab7 100644 --- a/src/glean/api_client/models/getchatresponse.py +++ b/src/glean/api_client/models/getchatresponse.py @@ -26,7 +26,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getcollectionop.py b/src/glean/api_client/models/getcollectionop.py index 01f41bad..92fdcda5 100644 --- a/src/glean/api_client/models/getcollectionop.py +++ b/src/glean/api_client/models/getcollectionop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getcollectionrequest.py b/src/glean/api_client/models/getcollectionrequest.py index f5279103..36d10443 100644 --- a/src/glean/api_client/models/getcollectionrequest.py +++ b/src/glean/api_client/models/getcollectionrequest.py @@ -44,7 +44,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getcollectionresponse.py b/src/glean/api_client/models/getcollectionresponse.py index 14a98336..60e567f2 100644 --- a/src/glean/api_client/models/getcollectionresponse.py +++ b/src/glean/api_client/models/getcollectionresponse.py @@ -42,7 +42,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getdatasourceinstanceconfigurationop.py b/src/glean/api_client/models/getdatasourceinstanceconfigurationop.py new file mode 100644 index 00000000..25a21bd1 --- /dev/null +++ b/src/glean/api_client/models/getdatasourceinstanceconfigurationop.py @@ -0,0 +1,30 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata +import pydantic +from typing_extensions import Annotated, TypedDict + + +class GetDatasourceInstanceConfigurationRequestTypedDict(TypedDict): + datasource_id: str + r"""The datasource type identifier (e.g. o365sharepoint)""" + instance_id: str + r"""The datasource instance identifier""" + + +class GetDatasourceInstanceConfigurationRequest(BaseModel): + datasource_id: Annotated[ + str, + pydantic.Field(alias="datasourceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The datasource type identifier (e.g. o365sharepoint)""" + + instance_id: Annotated[ + str, + pydantic.Field(alias="instanceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The datasource instance identifier""" diff --git a/src/glean/api_client/models/getdlpreportresponse.py b/src/glean/api_client/models/getdlpreportresponse.py index 6b2c3478..7af2ec3d 100644 --- a/src/glean/api_client/models/getdlpreportresponse.py +++ b/src/glean/api_client/models/getdlpreportresponse.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getdocpermissionsop.py b/src/glean/api_client/models/getdocpermissionsop.py index 50cd4245..bc562e41 100644 --- a/src/glean/api_client/models/getdocpermissionsop.py +++ b/src/glean/api_client/models/getdocpermissionsop.py @@ -40,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getdocpermissionsrequest.py b/src/glean/api_client/models/getdocpermissionsrequest.py index 2d5c3a27..4c4a4e5b 100644 --- a/src/glean/api_client/models/getdocpermissionsrequest.py +++ b/src/glean/api_client/models/getdocpermissionsrequest.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getdocpermissionsresponse.py b/src/glean/api_client/models/getdocpermissionsresponse.py index ea2c1d18..061e8975 100644 --- a/src/glean/api_client/models/getdocpermissionsresponse.py +++ b/src/glean/api_client/models/getdocpermissionsresponse.py @@ -27,7 +27,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getdocumentcountresponse.py b/src/glean/api_client/models/getdocumentcountresponse.py index 87ea3695..c3400b20 100644 --- a/src/glean/api_client/models/getdocumentcountresponse.py +++ b/src/glean/api_client/models/getdocumentcountresponse.py @@ -31,7 +31,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getdocumentsbyfacetsop.py b/src/glean/api_client/models/getdocumentsbyfacetsop.py index ccad698f..a6bd1531 100644 --- a/src/glean/api_client/models/getdocumentsbyfacetsop.py +++ b/src/glean/api_client/models/getdocumentsbyfacetsop.py @@ -40,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getdocumentsbyfacetsrequest.py b/src/glean/api_client/models/getdocumentsbyfacetsrequest.py index 8e45e602..fe741831 100644 --- a/src/glean/api_client/models/getdocumentsbyfacetsrequest.py +++ b/src/glean/api_client/models/getdocumentsbyfacetsrequest.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getdocumentsbyfacetsresponse.py b/src/glean/api_client/models/getdocumentsbyfacetsresponse.py index 2b7fabb2..e7e0337a 100644 --- a/src/glean/api_client/models/getdocumentsbyfacetsresponse.py +++ b/src/glean/api_client/models/getdocumentsbyfacetsresponse.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getdocumentsop.py b/src/glean/api_client/models/getdocumentsop.py index 41ab78e2..fd29b3ef 100644 --- a/src/glean/api_client/models/getdocumentsop.py +++ b/src/glean/api_client/models/getdocumentsop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getdocumentsrequest.py b/src/glean/api_client/models/getdocumentsrequest.py index e83eb311..8e64be35 100644 --- a/src/glean/api_client/models/getdocumentsrequest.py +++ b/src/glean/api_client/models/getdocumentsrequest.py @@ -45,7 +45,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getdocumentsresponse.py b/src/glean/api_client/models/getdocumentsresponse.py index 5c9db4d4..6448b888 100644 --- a/src/glean/api_client/models/getdocumentsresponse.py +++ b/src/glean/api_client/models/getdocumentsresponse.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getdocumentstatusresponse.py b/src/glean/api_client/models/getdocumentstatusresponse.py index c75a7d88..5bd4fd92 100644 --- a/src/glean/api_client/models/getdocumentstatusresponse.py +++ b/src/glean/api_client/models/getdocumentstatusresponse.py @@ -52,7 +52,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getdocumentvisibilityoverridesresponse.py b/src/glean/api_client/models/getdocumentvisibilityoverridesresponse.py index 3eb66702..cd81ecd7 100644 --- a/src/glean/api_client/models/getdocumentvisibilityoverridesresponse.py +++ b/src/glean/api_client/models/getdocumentvisibilityoverridesresponse.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getdocvisibilityop.py b/src/glean/api_client/models/getdocvisibilityop.py index 682cb48f..198ee640 100644 --- a/src/glean/api_client/models/getdocvisibilityop.py +++ b/src/glean/api_client/models/getdocvisibilityop.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getpinop.py b/src/glean/api_client/models/getpinop.py index c854e8f0..7c1467b4 100644 --- a/src/glean/api_client/models/getpinop.py +++ b/src/glean/api_client/models/getpinop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getpinrequest.py b/src/glean/api_client/models/getpinrequest.py index 758669c9..c11fbc5c 100644 --- a/src/glean/api_client/models/getpinrequest.py +++ b/src/glean/api_client/models/getpinrequest.py @@ -24,7 +24,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getpinresponse.py b/src/glean/api_client/models/getpinresponse.py index bc1e6e9d..a4562931 100644 --- a/src/glean/api_client/models/getpinresponse.py +++ b/src/glean/api_client/models/getpinresponse.py @@ -23,7 +23,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getpolicyop.py b/src/glean/api_client/models/getpolicyop.py index 22ff00bb..95b3502e 100644 --- a/src/glean/api_client/models/getpolicyop.py +++ b/src/glean/api_client/models/getpolicyop.py @@ -35,7 +35,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getshortcutop.py b/src/glean/api_client/models/getshortcutop.py index dd5c270c..3ca7f668 100644 --- a/src/glean/api_client/models/getshortcutop.py +++ b/src/glean/api_client/models/getshortcutop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getshortcutresponse.py b/src/glean/api_client/models/getshortcutresponse.py index 865ad042..b20fa741 100644 --- a/src/glean/api_client/models/getshortcutresponse.py +++ b/src/glean/api_client/models/getshortcutresponse.py @@ -27,7 +27,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/getusercountresponse.py b/src/glean/api_client/models/getusercountresponse.py index 887e08ab..9a042fa5 100644 --- a/src/glean/api_client/models/getusercountresponse.py +++ b/src/glean/api_client/models/getusercountresponse.py @@ -29,7 +29,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/gleanassistinsightsresponse.py b/src/glean/api_client/models/gleanassistinsightsresponse.py index 5a8b8c4c..e6c29553 100644 --- a/src/glean/api_client/models/gleanassistinsightsresponse.py +++ b/src/glean/api_client/models/gleanassistinsightsresponse.py @@ -62,7 +62,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/gleandataerror.py b/src/glean/api_client/models/gleandataerror.py index 707fe60f..7672589b 100644 --- a/src/glean/api_client/models/gleandataerror.py +++ b/src/glean/api_client/models/gleandataerror.py @@ -6,10 +6,6 @@ InvalidOperatorValueError, InvalidOperatorValueErrorTypedDict, ) -from .unauthorizeddatasourceinstance import ( - UnauthorizedDatasourceInstance, - UnauthorizedDatasourceInstanceTypedDict, -) from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic from pydantic import model_serializer @@ -27,12 +23,6 @@ class GleanDataErrorTypedDict(TypedDict): error_messages: NotRequired[List[ErrorMessageTypedDict]] federated_search_rate_limit_error: NotRequired[bool] r"""Indicates the federated search results could not be fetched due to rate limiting.""" - unauthorized_datasource_instances: NotRequired[ - List[UnauthorizedDatasourceInstanceTypedDict] - ] - r"""Datasource instances that could not be queried because the user has not completed or has expired per-user OAuth. - - """ class GleanDataError(BaseModel): @@ -61,14 +51,6 @@ class GleanDataError(BaseModel): ] = None r"""Indicates the federated search results could not be fetched due to rate limiting.""" - unauthorized_datasource_instances: Annotated[ - Optional[List[UnauthorizedDatasourceInstance]], - pydantic.Field(alias="unauthorizedDatasourceInstances"), - ] = None - r"""Datasource instances that could not be queried because the user has not completed or has expired per-user OAuth. - - """ - @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -78,7 +60,6 @@ def serialize_model(self, handler): "invalidOperators", "errorMessages", "federatedSearchRateLimitError", - "unauthorizedDatasourceInstances", ] ) serialized = handler(self) @@ -86,7 +67,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/grantpermission.py b/src/glean/api_client/models/grantpermission.py index 92df0762..a1bb6806 100644 --- a/src/glean/api_client/models/grantpermission.py +++ b/src/glean/api_client/models/grantpermission.py @@ -2,9 +2,10 @@ from __future__ import annotations from .scopetype import ScopeType +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -22,6 +23,15 @@ class GrantPermission(BaseModel): scope_type: Annotated[Optional[ScopeType], pydantic.Field(alias="scopeType")] = None r"""Describes the scope for a ReadPermission, WritePermission, or GrantPermission object""" + @field_serializer("scope_type") + def serialize_scope_type(self, value): + if isinstance(value, str): + try: + return models.ScopeType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["scopeType"]) @@ -30,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/group.py b/src/glean/api_client/models/group.py index 8b846642..f1b4a7e9 100644 --- a/src/glean/api_client/models/group.py +++ b/src/glean/api_client/models/group.py @@ -2,9 +2,10 @@ from __future__ import annotations from .grouptype import GroupType +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -42,6 +43,15 @@ class Group(BaseModel): ] = None r"""identifier for greenlist provisioning, aka sciokey""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.GroupType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["name", "datasourceInstance", "provisioningId"]) @@ -50,7 +60,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/grouptype.py b/src/glean/api_client/models/grouptype.py index 30e949fe..c94336ed 100644 --- a/src/glean/api_client/models/grouptype.py +++ b/src/glean/api_client/models/grouptype.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class GroupType(str, Enum): +class GroupType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of user group""" DEPARTMENT = "DEPARTMENT" diff --git a/src/glean/api_client/models/hotword.py b/src/glean/api_client/models/hotword.py index 2f606c02..51dcb030 100644 --- a/src/glean/api_client/models/hotword.py +++ b/src/glean/api_client/models/hotword.py @@ -26,7 +26,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/hotwordproximity.py b/src/glean/api_client/models/hotwordproximity.py index 358c8656..ebc0ed38 100644 --- a/src/glean/api_client/models/hotwordproximity.py +++ b/src/glean/api_client/models/hotwordproximity.py @@ -26,7 +26,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/iconconfig.py b/src/glean/api_client/models/iconconfig.py index 97ca9a25..b7109f6b 100644 --- a/src/glean/api_client/models/iconconfig.py +++ b/src/glean/api_client/models/iconconfig.py @@ -2,14 +2,15 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class IconType(str, Enum): +class IconType(str, Enum, metaclass=utils.OpenEnumMeta): COLLECTION = "COLLECTION" CUSTOM = "CUSTOM" DATASOURCE = "DATASOURCE" @@ -67,6 +68,15 @@ class IconConfig(BaseModel): url: Optional[str] = None r"""The URL to an image to be displayed if applicable, e.g. the URL for `iconType.URL` icons.""" + @field_serializer("icon_type") + def serialize_icon_type(self, value): + if isinstance(value, str): + try: + return models.IconType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -86,7 +96,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/indexdocumentrequest.py b/src/glean/api_client/models/indexdocumentrequest.py index 6e9ba14c..e49af0a9 100644 --- a/src/glean/api_client/models/indexdocumentrequest.py +++ b/src/glean/api_client/models/indexdocumentrequest.py @@ -34,7 +34,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/indexdocumentsrequest.py b/src/glean/api_client/models/indexdocumentsrequest.py index 2da2986a..df0dc41e 100644 --- a/src/glean/api_client/models/indexdocumentsrequest.py +++ b/src/glean/api_client/models/indexdocumentsrequest.py @@ -40,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/indexemployeerequest.py b/src/glean/api_client/models/indexemployeerequest.py index b058f473..c37c66ac 100644 --- a/src/glean/api_client/models/indexemployeerequest.py +++ b/src/glean/api_client/models/indexemployeerequest.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/indexgrouprequest.py b/src/glean/api_client/models/indexgrouprequest.py index 06043c30..f0b242fd 100644 --- a/src/glean/api_client/models/indexgrouprequest.py +++ b/src/glean/api_client/models/indexgrouprequest.py @@ -42,7 +42,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/indexingshortcut.py b/src/glean/api_client/models/indexingshortcut.py index b5bd4014..82edda46 100644 --- a/src/glean/api_client/models/indexingshortcut.py +++ b/src/glean/api_client/models/indexingshortcut.py @@ -74,7 +74,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/indexmembershiprequest.py b/src/glean/api_client/models/indexmembershiprequest.py index e6acb4c6..471ea84b 100644 --- a/src/glean/api_client/models/indexmembershiprequest.py +++ b/src/glean/api_client/models/indexmembershiprequest.py @@ -42,7 +42,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/indexstatus.py b/src/glean/api_client/models/indexstatus.py index dee0af8f..51863783 100644 --- a/src/glean/api_client/models/indexstatus.py +++ b/src/glean/api_client/models/indexstatus.py @@ -35,7 +35,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/indexteamrequest.py b/src/glean/api_client/models/indexteamrequest.py index 2f0be026..e524f951 100644 --- a/src/glean/api_client/models/indexteamrequest.py +++ b/src/glean/api_client/models/indexteamrequest.py @@ -34,7 +34,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/indexuserrequest.py b/src/glean/api_client/models/indexuserrequest.py index 21e0654e..7acd43d1 100644 --- a/src/glean/api_client/models/indexuserrequest.py +++ b/src/glean/api_client/models/indexuserrequest.py @@ -42,7 +42,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/inputoptions.py b/src/glean/api_client/models/inputoptions.py index 07eba7dd..63d2569b 100644 --- a/src/glean/api_client/models/inputoptions.py +++ b/src/glean/api_client/models/inputoptions.py @@ -3,21 +3,22 @@ from __future__ import annotations from .timerange import TimeRange, TimeRangeTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class DatasourcesType(str, Enum): +class DatasourcesType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The types of datasource for which to run the report/policy.""" ALL = "ALL" CUSTOM = "CUSTOM" -class InputOptionsTimePeriodType(str, Enum): +class InputOptionsTimePeriodType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Type of time period for which to run the report/policy. PAST_DAY is deprecated.""" ALL_TIME = "ALL_TIME" @@ -89,6 +90,24 @@ class InputOptions(BaseModel): ] = None r"""Subset of document IDs to scan. If empty, all documents matching other scope criteria will be scanned.""" + @field_serializer("datasources_type") + def serialize_datasources_type(self, value): + if isinstance(value, str): + try: + return models.DatasourcesType(value) + except ValueError: + return value + return value + + @field_serializer("time_period_type") + def serialize_time_period_type(self, value): + if isinstance(value, str): + try: + return models.InputOptionsTimePeriodType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -107,7 +126,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/insightsassistantrequest.py b/src/glean/api_client/models/insightsassistantrequest.py index c485a36e..88e40106 100644 --- a/src/glean/api_client/models/insightsassistantrequest.py +++ b/src/glean/api_client/models/insightsassistantrequest.py @@ -29,7 +29,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/insightschatsummary.py b/src/glean/api_client/models/insightschatsummary.py index 59ad00a9..fcc83ccd 100644 --- a/src/glean/api_client/models/insightschatsummary.py +++ b/src/glean/api_client/models/insightschatsummary.py @@ -48,7 +48,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/insightsop.py b/src/glean/api_client/models/insightsop.py index ef886121..c0de2bef 100644 --- a/src/glean/api_client/models/insightsop.py +++ b/src/glean/api_client/models/insightsop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/insightsoverviewrequest.py b/src/glean/api_client/models/insightsoverviewrequest.py index 7a55cdac..5be6e4bb 100644 --- a/src/glean/api_client/models/insightsoverviewrequest.py +++ b/src/glean/api_client/models/insightsoverviewrequest.py @@ -29,7 +29,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/insightsoverviewresponse.py b/src/glean/api_client/models/insightsoverviewresponse.py index cbda27d6..874941a4 100644 --- a/src/glean/api_client/models/insightsoverviewresponse.py +++ b/src/glean/api_client/models/insightsoverviewresponse.py @@ -228,7 +228,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/insightsrequest.py b/src/glean/api_client/models/insightsrequest.py index f3a427a0..9138fc70 100644 --- a/src/glean/api_client/models/insightsrequest.py +++ b/src/glean/api_client/models/insightsrequest.py @@ -61,7 +61,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/insightsresponse.py b/src/glean/api_client/models/insightsresponse.py index d85e2e55..f93836b9 100644 --- a/src/glean/api_client/models/insightsresponse.py +++ b/src/glean/api_client/models/insightsresponse.py @@ -58,7 +58,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/insightssearchsummary.py b/src/glean/api_client/models/insightssearchsummary.py index d4152b60..4e4c5b9d 100644 --- a/src/glean/api_client/models/insightssearchsummary.py +++ b/src/glean/api_client/models/insightssearchsummary.py @@ -48,7 +48,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/invalidoperatorvalueerror.py b/src/glean/api_client/models/invalidoperatorvalueerror.py index 4ed84420..e9e0ee2b 100644 --- a/src/glean/api_client/models/invalidoperatorvalueerror.py +++ b/src/glean/api_client/models/invalidoperatorvalueerror.py @@ -29,7 +29,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/inviteinfo.py b/src/glean/api_client/models/inviteinfo.py index 3b68e8a5..34094c53 100644 --- a/src/glean/api_client/models/inviteinfo.py +++ b/src/glean/api_client/models/inviteinfo.py @@ -43,7 +43,7 @@ class InviteInfo(BaseModel): invite_time: Annotated[ Optional[datetime], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use ChannelInviteInfo instead.", alias="inviteTime", ), ] = None @@ -52,7 +52,7 @@ class InviteInfo(BaseModel): reminder_time: Annotated[ Optional[datetime], pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use ChannelInviteInfo instead.", alias="reminderTime", ), ] = None @@ -68,7 +68,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/labeledcountinfo.py b/src/glean/api_client/models/labeledcountinfo.py index 4e448701..c123fd88 100644 --- a/src/glean/api_client/models/labeledcountinfo.py +++ b/src/glean/api_client/models/labeledcountinfo.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listanswersop.py b/src/glean/api_client/models/listanswersop.py index f94bc53b..eb99f446 100644 --- a/src/glean/api_client/models/listanswersop.py +++ b/src/glean/api_client/models/listanswersop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listanswersrequest.py b/src/glean/api_client/models/listanswersrequest.py index 3f6a4892..6868a538 100644 --- a/src/glean/api_client/models/listanswersrequest.py +++ b/src/glean/api_client/models/listanswersrequest.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listchatsop.py b/src/glean/api_client/models/listchatsop.py index 883801d6..cdd71758 100644 --- a/src/glean/api_client/models/listchatsop.py +++ b/src/glean/api_client/models/listchatsop.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listchatsresponse.py b/src/glean/api_client/models/listchatsresponse.py index 0276cc29..4c33ac6b 100644 --- a/src/glean/api_client/models/listchatsresponse.py +++ b/src/glean/api_client/models/listchatsresponse.py @@ -11,6 +11,8 @@ class ListChatsResponseTypedDict(TypedDict): chat_results: NotRequired[List[ChatMetadataResultTypedDict]] + cursor: NotRequired[str] + r"""An opaque cursor for fetching the next page of results. If empty, there are no more results.""" class ListChatsResponse(BaseModel): @@ -18,15 +20,18 @@ class ListChatsResponse(BaseModel): Optional[List[ChatMetadataResult]], pydantic.Field(alias="chatResults") ] = None + cursor: Optional[str] = None + r"""An opaque cursor for fetching the next page of results. If empty, there are no more results.""" + @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["chatResults"]) + optional_fields = set(["chatResults", "cursor"]) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listcollectionsop.py b/src/glean/api_client/models/listcollectionsop.py index ff908cda..ad00f15c 100644 --- a/src/glean/api_client/models/listcollectionsop.py +++ b/src/glean/api_client/models/listcollectionsop.py @@ -40,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listcollectionsrequest.py b/src/glean/api_client/models/listcollectionsrequest.py index 3135d632..88e267e2 100644 --- a/src/glean/api_client/models/listcollectionsrequest.py +++ b/src/glean/api_client/models/listcollectionsrequest.py @@ -45,7 +45,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listdlpfindingsexportsresponse.py b/src/glean/api_client/models/listdlpfindingsexportsresponse.py index c1d089b0..4920345f 100644 --- a/src/glean/api_client/models/listdlpfindingsexportsresponse.py +++ b/src/glean/api_client/models/listdlpfindingsexportsresponse.py @@ -23,7 +23,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listdlpreportsresponse.py b/src/glean/api_client/models/listdlpreportsresponse.py index 67cf8242..df22a92d 100644 --- a/src/glean/api_client/models/listdlpreportsresponse.py +++ b/src/glean/api_client/models/listdlpreportsresponse.py @@ -23,7 +23,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listentitiesop.py b/src/glean/api_client/models/listentitiesop.py index 7f583865..c64939c3 100644 --- a/src/glean/api_client/models/listentitiesop.py +++ b/src/glean/api_client/models/listentitiesop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listentitiesrequest.py b/src/glean/api_client/models/listentitiesrequest.py index 4e490d23..699e39c2 100644 --- a/src/glean/api_client/models/listentitiesrequest.py +++ b/src/glean/api_client/models/listentitiesrequest.py @@ -118,7 +118,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listentitiesresponse.py b/src/glean/api_client/models/listentitiesresponse.py index 348cfb97..6f8be48a 100644 --- a/src/glean/api_client/models/listentitiesresponse.py +++ b/src/glean/api_client/models/listentitiesresponse.py @@ -86,7 +86,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listpinsop.py b/src/glean/api_client/models/listpinsop.py index 3b96ea93..147e4bd9 100644 --- a/src/glean/api_client/models/listpinsop.py +++ b/src/glean/api_client/models/listpinsop.py @@ -44,7 +44,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listpoliciesop.py b/src/glean/api_client/models/listpoliciesop.py index 02965a79..d0b1cc73 100644 --- a/src/glean/api_client/models/listpoliciesop.py +++ b/src/glean/api_client/models/listpoliciesop.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listshortcutsop.py b/src/glean/api_client/models/listshortcutsop.py index 9e75a239..8b99ab97 100644 --- a/src/glean/api_client/models/listshortcutsop.py +++ b/src/glean/api_client/models/listshortcutsop.py @@ -40,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listshortcutspaginatedrequest.py b/src/glean/api_client/models/listshortcutspaginatedrequest.py index 536bcd6f..30b1e2d7 100644 --- a/src/glean/api_client/models/listshortcutspaginatedrequest.py +++ b/src/glean/api_client/models/listshortcutspaginatedrequest.py @@ -57,7 +57,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listshortcutspaginatedresponse.py b/src/glean/api_client/models/listshortcutspaginatedresponse.py index 96630662..d8359a2f 100644 --- a/src/glean/api_client/models/listshortcutspaginatedresponse.py +++ b/src/glean/api_client/models/listshortcutspaginatedresponse.py @@ -39,7 +39,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/listverificationsop.py b/src/glean/api_client/models/listverificationsop.py index c0d3fbcc..16e9645a 100644 --- a/src/glean/api_client/models/listverificationsop.py +++ b/src/glean/api_client/models/listverificationsop.py @@ -36,7 +36,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/manualfeedbackinfo.py b/src/glean/api_client/models/manualfeedbackinfo.py index fdd40da7..624adbd2 100644 --- a/src/glean/api_client/models/manualfeedbackinfo.py +++ b/src/glean/api_client/models/manualfeedbackinfo.py @@ -195,7 +195,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/manualfeedbacksidebysideinfo.py b/src/glean/api_client/models/manualfeedbacksidebysideinfo.py index 24122bd5..f0f51104 100644 --- a/src/glean/api_client/models/manualfeedbacksidebysideinfo.py +++ b/src/glean/api_client/models/manualfeedbacksidebysideinfo.py @@ -96,7 +96,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/meeting.py b/src/glean/api_client/models/meeting.py index 14be3483..c3c75325 100644 --- a/src/glean/api_client/models/meeting.py +++ b/src/glean/api_client/models/meeting.py @@ -91,7 +91,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/message.py b/src/glean/api_client/models/message.py index e23c15b2..9af1fc14 100644 --- a/src/glean/api_client/models/message.py +++ b/src/glean/api_client/models/message.py @@ -41,7 +41,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/messagesop.py b/src/glean/api_client/models/messagesop.py index 0c30b2da..8e1735a0 100644 --- a/src/glean/api_client/models/messagesop.py +++ b/src/glean/api_client/models/messagesop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/messagesrequest.py b/src/glean/api_client/models/messagesrequest.py index f415de12..2076bc4f 100644 --- a/src/glean/api_client/models/messagesrequest.py +++ b/src/glean/api_client/models/messagesrequest.py @@ -100,7 +100,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/messagesresponse.py b/src/glean/api_client/models/messagesresponse.py index 28584294..d68228bc 100644 --- a/src/glean/api_client/models/messagesresponse.py +++ b/src/glean/api_client/models/messagesresponse.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/objectdefinition.py b/src/glean/api_client/models/objectdefinition.py index 148c3eee..f9c359d3 100644 --- a/src/glean/api_client/models/objectdefinition.py +++ b/src/glean/api_client/models/objectdefinition.py @@ -4,14 +4,15 @@ from .propertydefinition import PropertyDefinition, PropertyDefinitionTypedDict from .propertygroup import PropertyGroup, PropertyGroupTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class DocCategory(str, Enum): +class DocCategory(str, Enum, metaclass=utils.OpenEnumMeta): r"""The document category of this object type.""" UNCATEGORIZED = "UNCATEGORIZED" @@ -76,6 +77,15 @@ class ObjectDefinition(BaseModel): summarizable: Optional[bool] = None r"""Whether or not the object is summarizable""" + @field_serializer("doc_category") + def serialize_doc_category(self, value): + if isinstance(value, str): + try: + return models.DocCategory(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -93,7 +103,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/objectpermissions.py b/src/glean/api_client/models/objectpermissions.py index 5515fd87..efe9cecc 100644 --- a/src/glean/api_client/models/objectpermissions.py +++ b/src/glean/api_client/models/objectpermissions.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/operatormetadata.py b/src/glean/api_client/models/operatormetadata.py index d03e9506..09ba687a 100644 --- a/src/glean/api_client/models/operatormetadata.py +++ b/src/glean/api_client/models/operatormetadata.py @@ -3,14 +3,15 @@ from __future__ import annotations from .operatorscope import OperatorScope, OperatorScopeTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class OperatorType(str, Enum): +class OperatorType(str, Enum, metaclass=utils.OpenEnumMeta): TEXT = "TEXT" DOUBLE = "DOUBLE" DATE = "DATE" @@ -50,6 +51,15 @@ class OperatorMetadata(BaseModel): display_value: Annotated[Optional[str], pydantic.Field(alias="displayValue")] = None r"""Human readable value of the operator that can be shown to the user. Only applies when result is an operator value.""" + @field_serializer("operator_type") + def serialize_operator_type(self, value): + if isinstance(value, str): + try: + return models.OperatorType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -60,7 +70,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/operatorscope.py b/src/glean/api_client/models/operatorscope.py index 9e41ae93..ebb5f578 100644 --- a/src/glean/api_client/models/operatorscope.py +++ b/src/glean/api_client/models/operatorscope.py @@ -26,7 +26,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/peopleop.py b/src/glean/api_client/models/peopleop.py index 7bae9399..ab286401 100644 --- a/src/glean/api_client/models/peopleop.py +++ b/src/glean/api_client/models/peopleop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/peoplerequest.py b/src/glean/api_client/models/peoplerequest.py index 33101b55..520c04d8 100644 --- a/src/glean/api_client/models/peoplerequest.py +++ b/src/glean/api_client/models/peoplerequest.py @@ -86,7 +86,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/peopleresponse.py b/src/glean/api_client/models/peopleresponse.py index 6665c089..d882d545 100644 --- a/src/glean/api_client/models/peopleresponse.py +++ b/src/glean/api_client/models/peopleresponse.py @@ -39,7 +39,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/peragentinsight.py b/src/glean/api_client/models/peragentinsight.py index 1e5e6c0a..37bc51ac 100644 --- a/src/glean/api_client/models/peragentinsight.py +++ b/src/glean/api_client/models/peragentinsight.py @@ -74,7 +74,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/period.py b/src/glean/api_client/models/period.py index 9cc1735d..5e03da4d 100644 --- a/src/glean/api_client/models/period.py +++ b/src/glean/api_client/models/period.py @@ -49,7 +49,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/permissions.py b/src/glean/api_client/models/permissions.py index 22994126..51f12fd4 100644 --- a/src/glean/api_client/models/permissions.py +++ b/src/glean/api_client/models/permissions.py @@ -86,7 +86,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/permissionsgroupintersectiondefinition.py b/src/glean/api_client/models/permissionsgroupintersectiondefinition.py index ec3adbc7..52b20386 100644 --- a/src/glean/api_client/models/permissionsgroupintersectiondefinition.py +++ b/src/glean/api_client/models/permissionsgroupintersectiondefinition.py @@ -29,7 +29,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/person.py b/src/glean/api_client/models/person.py index 45a6fb49..24355a99 100644 --- a/src/glean/api_client/models/person.py +++ b/src/glean/api_client/models/person.py @@ -44,7 +44,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/personmetadata.py b/src/glean/api_client/models/personmetadata.py index 113c013c..4cddfb2e 100644 --- a/src/glean/api_client/models/personmetadata.py +++ b/src/glean/api_client/models/personmetadata.py @@ -11,9 +11,10 @@ from .structuredlocation import StructuredLocation, StructuredLocationTypedDict from datetime import date, datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Dict, List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -24,7 +25,7 @@ from .querysuggestionlist import QuerySuggestionList, QuerySuggestionListTypedDict -class PersonMetadataType(str, Enum): +class PersonMetadataType(str, Enum, metaclass=utils.OpenEnumMeta): # The person is a current full-time employee of the company. FULL_TIME = "FULL_TIME" # The person is a current contractor of the company. @@ -300,6 +301,15 @@ class PersonMetadata(BaseModel): is_org_root: Annotated[Optional[bool], pydantic.Field(alias="isOrgRoot")] = None r"""Whether this person is a \"root\" node in their organization's hierarchy.""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.PersonMetadataType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -356,7 +366,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/personteam.py b/src/glean/api_client/models/personteam.py index 9901d3e3..f0b080d9 100644 --- a/src/glean/api_client/models/personteam.py +++ b/src/glean/api_client/models/personteam.py @@ -3,14 +3,15 @@ from __future__ import annotations from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class PersonTeamRelationship(str, Enum): +class PersonTeamRelationship(str, Enum, metaclass=utils.OpenEnumMeta): r"""The team member's relationship to the team. This defaults to MEMBER if not set.""" MEMBER = "MEMBER" @@ -53,6 +54,15 @@ class PersonTeam(BaseModel): join_date: Annotated[Optional[datetime], pydantic.Field(alias="joinDate")] = None r"""The team member's start date""" + @field_serializer("relationship") + def serialize_relationship(self, value): + if isinstance(value, str): + try: + return models.PersonTeamRelationship(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -63,7 +73,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/persontoteamrelationship.py b/src/glean/api_client/models/persontoteamrelationship.py index 6cb4d329..e2f30552 100644 --- a/src/glean/api_client/models/persontoteamrelationship.py +++ b/src/glean/api_client/models/persontoteamrelationship.py @@ -3,9 +3,10 @@ from __future__ import annotations from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -13,7 +14,7 @@ from .person import Person, PersonTypedDict -class PersonToTeamRelationshipRelationship(str, Enum): +class PersonToTeamRelationshipRelationship(str, Enum, metaclass=utils.OpenEnumMeta): r"""The team member's relationship to the team. This defaults to MEMBER if not set.""" MEMBER = "MEMBER" @@ -53,6 +54,15 @@ class PersonToTeamRelationship(BaseModel): join_date: Annotated[Optional[datetime], pydantic.Field(alias="joinDate")] = None r"""The team member's start date""" + @field_serializer("relationship") + def serialize_relationship(self, value): + if isinstance(value, str): + try: + return models.PersonToTeamRelationshipRelationship(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["relationship", "customRelationshipStr", "joinDate"]) @@ -61,7 +71,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/peruserassistantinsight.py b/src/glean/api_client/models/peruserassistantinsight.py index 1bbfd0b7..a24e6f5d 100644 --- a/src/glean/api_client/models/peruserassistantinsight.py +++ b/src/glean/api_client/models/peruserassistantinsight.py @@ -68,7 +68,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/peruserinsight.py b/src/glean/api_client/models/peruserinsight.py index ffc353be..8c459101 100644 --- a/src/glean/api_client/models/peruserinsight.py +++ b/src/glean/api_client/models/peruserinsight.py @@ -88,7 +88,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/pindocument.py b/src/glean/api_client/models/pindocument.py index 2d54ee03..7d438a35 100644 --- a/src/glean/api_client/models/pindocument.py +++ b/src/glean/api_client/models/pindocument.py @@ -73,7 +73,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/pinop.py b/src/glean/api_client/models/pinop.py index 55e04636..fb63cdf7 100644 --- a/src/glean/api_client/models/pinop.py +++ b/src/glean/api_client/models/pinop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/pinrequest.py b/src/glean/api_client/models/pinrequest.py index 59b1c69f..1e291af2 100644 --- a/src/glean/api_client/models/pinrequest.py +++ b/src/glean/api_client/models/pinrequest.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/possiblevalue.py b/src/glean/api_client/models/possiblevalue.py index 8ce8997e..1881d203 100644 --- a/src/glean/api_client/models/possiblevalue.py +++ b/src/glean/api_client/models/possiblevalue.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/processalldocumentsrequest.py b/src/glean/api_client/models/processalldocumentsrequest.py index b06f9338..aa29557c 100644 --- a/src/glean/api_client/models/processalldocumentsrequest.py +++ b/src/glean/api_client/models/processalldocumentsrequest.py @@ -28,7 +28,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/processallmembershipsrequest.py b/src/glean/api_client/models/processallmembershipsrequest.py index 30d55883..f1bba49d 100644 --- a/src/glean/api_client/models/processallmembershipsrequest.py +++ b/src/glean/api_client/models/processallmembershipsrequest.py @@ -28,7 +28,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/processinghistoryevent.py b/src/glean/api_client/models/processinghistoryevent.py index 1f396af0..61b4c047 100644 --- a/src/glean/api_client/models/processinghistoryevent.py +++ b/src/glean/api_client/models/processinghistoryevent.py @@ -34,7 +34,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/prompttemplate.py b/src/glean/api_client/models/prompttemplate.py index 79f23aa5..90327467 100644 --- a/src/glean/api_client/models/prompttemplate.py +++ b/src/glean/api_client/models/prompttemplate.py @@ -111,7 +111,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/prompttemplateresult.py b/src/glean/api_client/models/prompttemplateresult.py index 83dadeda..efd9ff47 100644 --- a/src/glean/api_client/models/prompttemplateresult.py +++ b/src/glean/api_client/models/prompttemplateresult.py @@ -45,7 +45,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/propertydefinition.py b/src/glean/api_client/models/propertydefinition.py index 8116de2d..64ffc11a 100644 --- a/src/glean/api_client/models/propertydefinition.py +++ b/src/glean/api_client/models/propertydefinition.py @@ -2,14 +2,15 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class PropertyType(str, Enum): +class PropertyType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported.""" TEXT = "TEXT" @@ -21,7 +22,7 @@ class PropertyType(str, Enum): MULTIPICKLIST = "MULTIPICKLIST" -class UIOptions(str, Enum): +class UIOptions(str, Enum, metaclass=utils.OpenEnumMeta): NONE = "NONE" SEARCH_RESULT = "SEARCH_RESULT" DOC_HOVERCARD = "DOC_HOVERCARD" @@ -82,6 +83,24 @@ class PropertyDefinition(BaseModel): group: Optional[str] = None r"""The unique identifier of the `PropertyGroup` to which this property belongs.""" + @field_serializer("property_type") + def serialize_property_type(self, value): + if isinstance(value, str): + try: + return models.PropertyType(value) + except ValueError: + return value + return value + + @field_serializer("ui_options") + def serialize_ui_options(self, value): + if isinstance(value, str): + try: + return models.UIOptions(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -102,7 +121,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/propertygroup.py b/src/glean/api_client/models/propertygroup.py index c9e1565a..f3ed0cfd 100644 --- a/src/glean/api_client/models/propertygroup.py +++ b/src/glean/api_client/models/propertygroup.py @@ -34,7 +34,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/querysuggestion.py b/src/glean/api_client/models/querysuggestion.py index b0cf9ebc..39b6d5e5 100644 --- a/src/glean/api_client/models/querysuggestion.py +++ b/src/glean/api_client/models/querysuggestion.py @@ -84,7 +84,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/querysuggestionlist.py b/src/glean/api_client/models/querysuggestionlist.py index 8d5b0fed..8723c878 100644 --- a/src/glean/api_client/models/querysuggestionlist.py +++ b/src/glean/api_client/models/querysuggestionlist.py @@ -29,7 +29,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/quicklink.py b/src/glean/api_client/models/quicklink.py index 0312b05d..75045a1f 100644 --- a/src/glean/api_client/models/quicklink.py +++ b/src/glean/api_client/models/quicklink.py @@ -3,6 +3,7 @@ from __future__ import annotations from .iconconfig import IconConfig, IconConfigTypedDict from enum import Enum +from glean.api_client import utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic from pydantic import model_serializer @@ -10,7 +11,7 @@ from typing_extensions import Annotated, NotRequired, TypedDict -class Scope(str, Enum): +class Scope(str, Enum, metaclass=utils.OpenEnumMeta): APP_CARD = "APP_CARD" AUTOCOMPLETE_EXACT_MATCH = "AUTOCOMPLETE_EXACT_MATCH" AUTOCOMPLETE_FUZZY_MATCH = "AUTOCOMPLETE_FUZZY_MATCH" @@ -68,7 +69,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/reaction.py b/src/glean/api_client/models/reaction.py index d6af14e2..40dd0af4 100644 --- a/src/glean/api_client/models/reaction.py +++ b/src/glean/api_client/models/reaction.py @@ -41,7 +41,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/readpermission.py b/src/glean/api_client/models/readpermission.py index 9ac9f9e2..b82781fd 100644 --- a/src/glean/api_client/models/readpermission.py +++ b/src/glean/api_client/models/readpermission.py @@ -2,9 +2,10 @@ from __future__ import annotations from .scopetype import ScopeType +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -22,6 +23,15 @@ class ReadPermission(BaseModel): scope_type: Annotated[Optional[ScopeType], pydantic.Field(alias="scopeType")] = None r"""Describes the scope for a ReadPermission, WritePermission, or GrantPermission object""" + @field_serializer("scope_type") + def serialize_scope_type(self, value): + if isinstance(value, str): + try: + return models.ScopeType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["scopeType"]) @@ -30,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/recommendationsop.py b/src/glean/api_client/models/recommendationsop.py index 5407cad0..02f83b74 100644 --- a/src/glean/api_client/models/recommendationsop.py +++ b/src/glean/api_client/models/recommendationsop.py @@ -40,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/recommendationsrequest.py b/src/glean/api_client/models/recommendationsrequest.py index aad3b572..507d92fa 100644 --- a/src/glean/api_client/models/recommendationsrequest.py +++ b/src/glean/api_client/models/recommendationsrequest.py @@ -83,7 +83,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/recommendationsrequestoptions.py b/src/glean/api_client/models/recommendationsrequestoptions.py index 9cf1ef64..162c9f76 100644 --- a/src/glean/api_client/models/recommendationsrequestoptions.py +++ b/src/glean/api_client/models/recommendationsrequestoptions.py @@ -63,7 +63,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/referencerange.py b/src/glean/api_client/models/referencerange.py index 45726489..851c90fa 100644 --- a/src/glean/api_client/models/referencerange.py +++ b/src/glean/api_client/models/referencerange.py @@ -34,7 +34,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/relateddocuments.py b/src/glean/api_client/models/relateddocuments.py index 034a4c3a..dd591579 100644 --- a/src/glean/api_client/models/relateddocuments.py +++ b/src/glean/api_client/models/relateddocuments.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -14,7 +15,7 @@ from .searchresult import SearchResult, SearchResultTypedDict -class Relation(str, Enum): +class Relation(str, Enum, metaclass=utils.OpenEnumMeta): r"""How this document relates to the including entity.""" ATTACHMENT = "ATTACHMENT" @@ -72,6 +73,15 @@ class RelatedDocuments(BaseModel): results: Optional[List["SearchResult"]] = None r"""A truncated list of documents associated with this relation. To be used in favor of `documents` because it contains a trackingToken.""" + @field_serializer("relation") + def serialize_relation(self, value): + if isinstance(value, str): + try: + return models.Relation(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -88,7 +98,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/relatedobject.py b/src/glean/api_client/models/relatedobject.py index 621be80f..94a1515c 100644 --- a/src/glean/api_client/models/relatedobject.py +++ b/src/glean/api_client/models/relatedobject.py @@ -28,7 +28,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -59,7 +59,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/relatedobjectedge.py b/src/glean/api_client/models/relatedobjectedge.py index 06d322ec..6a5b0972 100644 --- a/src/glean/api_client/models/relatedobjectedge.py +++ b/src/glean/api_client/models/relatedobjectedge.py @@ -23,7 +23,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/relatedquestion.py b/src/glean/api_client/models/relatedquestion.py index 2985a98d..0bd513ec 100644 --- a/src/glean/api_client/models/relatedquestion.py +++ b/src/glean/api_client/models/relatedquestion.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/reminder.py b/src/glean/api_client/models/reminder.py index 7d4c8677..8a084dd7 100644 --- a/src/glean/api_client/models/reminder.py +++ b/src/glean/api_client/models/reminder.py @@ -44,7 +44,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/reminderrequest.py b/src/glean/api_client/models/reminderrequest.py index 774077db..5f4e8c64 100644 --- a/src/glean/api_client/models/reminderrequest.py +++ b/src/glean/api_client/models/reminderrequest.py @@ -42,7 +42,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/reportstatusresponse.py b/src/glean/api_client/models/reportstatusresponse.py index 2522a82e..ea27cecb 100644 --- a/src/glean/api_client/models/reportstatusresponse.py +++ b/src/glean/api_client/models/reportstatusresponse.py @@ -2,14 +2,15 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class ReportStatusResponseStatus(str, Enum): +class ReportStatusResponseStatus(str, Enum, metaclass=utils.OpenEnumMeta): PENDING = "PENDING" SUCCESS = "SUCCESS" FAILURE = "FAILURE" @@ -30,6 +31,15 @@ class ReportStatusResponse(BaseModel): start_time: Annotated[Optional[str], pydantic.Field(alias="startTime")] = None r"""The timestamp at which the report's run/scan began.""" + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.ReportStatusResponseStatus(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["status", "startTime"]) @@ -38,7 +48,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/restrictionfilters.py b/src/glean/api_client/models/restrictionfilters.py index e81d750b..2e649d73 100644 --- a/src/glean/api_client/models/restrictionfilters.py +++ b/src/glean/api_client/models/restrictionfilters.py @@ -28,7 +28,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/resultsdescription.py b/src/glean/api_client/models/resultsdescription.py index 4bc3fb84..7c8140e5 100644 --- a/src/glean/api_client/models/resultsdescription.py +++ b/src/glean/api_client/models/resultsdescription.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/resultsresponse.py b/src/glean/api_client/models/resultsresponse.py index 2a0a44ec..b6ea8902 100644 --- a/src/glean/api_client/models/resultsresponse.py +++ b/src/glean/api_client/models/resultsresponse.py @@ -78,7 +78,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/resulttab.py b/src/glean/api_client/models/resulttab.py index dc9f8694..3683f422 100644 --- a/src/glean/api_client/models/resulttab.py +++ b/src/glean/api_client/models/resulttab.py @@ -42,7 +42,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/rotatetokenresponse.py b/src/glean/api_client/models/rotatetokenresponse.py index f9b9e44f..723b5b9c 100644 --- a/src/glean/api_client/models/rotatetokenresponse.py +++ b/src/glean/api_client/models/rotatetokenresponse.py @@ -41,7 +41,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/scopetype.py b/src/glean/api_client/models/scopetype.py index 3f3b0004..e45814ba 100644 --- a/src/glean/api_client/models/scopetype.py +++ b/src/glean/api_client/models/scopetype.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class ScopeType(str, Enum): +class ScopeType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Describes the scope for a ReadPermission, WritePermission, or GrantPermission object""" GLOBAL = "GLOBAL" diff --git a/src/glean/api_client/models/searchagentsrequest.py b/src/glean/api_client/models/searchagentsrequest.py index 4d307075..a66f7d03 100644 --- a/src/glean/api_client/models/searchagentsrequest.py +++ b/src/glean/api_client/models/searchagentsrequest.py @@ -24,7 +24,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/searchagentsresponse.py b/src/glean/api_client/models/searchagentsresponse.py index bd830265..9e6b9852 100644 --- a/src/glean/api_client/models/searchagentsresponse.py +++ b/src/glean/api_client/models/searchagentsresponse.py @@ -23,7 +23,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/searchop.py b/src/glean/api_client/models/searchop.py index 08c2a35b..d1dd1a5c 100644 --- a/src/glean/api_client/models/searchop.py +++ b/src/glean/api_client/models/searchop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/searchproviderinfo.py b/src/glean/api_client/models/searchproviderinfo.py index f929badb..84921983 100644 --- a/src/glean/api_client/models/searchproviderinfo.py +++ b/src/glean/api_client/models/searchproviderinfo.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/searchrequest.py b/src/glean/api_client/models/searchrequest.py index 6464d285..535df875 100644 --- a/src/glean/api_client/models/searchrequest.py +++ b/src/glean/api_client/models/searchrequest.py @@ -118,7 +118,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/searchrequestinputdetails.py b/src/glean/api_client/models/searchrequestinputdetails.py index f5ea3508..900e4ff2 100644 --- a/src/glean/api_client/models/searchrequestinputdetails.py +++ b/src/glean/api_client/models/searchrequestinputdetails.py @@ -27,7 +27,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/searchrequestoptions.py b/src/glean/api_client/models/searchrequestoptions.py index 9ee1139f..f5006c08 100644 --- a/src/glean/api_client/models/searchrequestoptions.py +++ b/src/glean/api_client/models/searchrequestoptions.py @@ -7,6 +7,7 @@ from .facetfilterset import FacetFilterSet, FacetFilterSetTypedDict from .restrictionfilters import RestrictionFilters, RestrictionFiltersTypedDict from enum import Enum +from glean.api_client import utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic from pydantic import model_serializer @@ -14,7 +15,7 @@ from typing_extensions import Annotated, NotRequired, TypedDict -class ResponseHint(str, Enum): +class ResponseHint(str, Enum, metaclass=utils.OpenEnumMeta): r"""Hints for the response content.""" # Return result counts for each result set which has non-zero results, even when the request itself is limited to a subset. @@ -167,7 +168,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/searchresponse.py b/src/glean/api_client/models/searchresponse.py index e1749ab7..0135246b 100644 --- a/src/glean/api_client/models/searchresponse.py +++ b/src/glean/api_client/models/searchresponse.py @@ -148,7 +148,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/searchresponsemetadata.py b/src/glean/api_client/models/searchresponsemetadata.py index c7157ae6..0d4c2a38 100644 --- a/src/glean/api_client/models/searchresponsemetadata.py +++ b/src/glean/api_client/models/searchresponsemetadata.py @@ -126,7 +126,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/searchresult.py b/src/glean/api_client/models/searchresult.py index c476686e..9bcd8639 100644 --- a/src/glean/api_client/models/searchresult.py +++ b/src/glean/api_client/models/searchresult.py @@ -3,9 +3,10 @@ from __future__ import annotations from .clustertypeenum import ClusterTypeEnum from .searchresultprominenceenum import SearchResultProminenceEnum +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -149,6 +150,24 @@ class SearchResult(BaseModel): pins: Optional[List["PinDocument"]] = None r"""A list of pins associated with this search result.""" + @field_serializer("cluster_type") + def serialize_cluster_type(self, value): + if isinstance(value, str): + try: + return models.ClusterTypeEnum(value) + except ValueError: + return value + return value + + @field_serializer("prominence") + def serialize_prominence(self, value): + if isinstance(value, str): + try: + return models.SearchResultProminenceEnum(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -180,7 +199,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/searchresultprominenceenum.py b/src/glean/api_client/models/searchresultprominenceenum.py index ddf2e8f1..27ef471f 100644 --- a/src/glean/api_client/models/searchresultprominenceenum.py +++ b/src/glean/api_client/models/searchresultprominenceenum.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class SearchResultProminenceEnum(str, Enum): +class SearchResultProminenceEnum(str, Enum, metaclass=utils.OpenEnumMeta): r"""The level of visual distinction that should be given to a result.""" # A high-confidence result that should feature prominently on the page. diff --git a/src/glean/api_client/models/searchresultsnippet.py b/src/glean/api_client/models/searchresultsnippet.py index c235ac1f..aff7d94f 100644 --- a/src/glean/api_client/models/searchresultsnippet.py +++ b/src/glean/api_client/models/searchresultsnippet.py @@ -12,8 +12,6 @@ class SearchResultSnippetTypedDict(TypedDict): - snippet: str - r"""A matching snippet from the document. Query term matches are marked by the unicode characters uE006 and uE007. Use 'text' field instead.""" mime_type: NotRequired[str] r"""The mime type of the snippets, currently either text/plain or text/html.""" text: NotRequired[str] @@ -24,17 +22,11 @@ class SearchResultSnippetTypedDict(TypedDict): r"""The bolded ranges within text.""" url: NotRequired[str] r"""A URL, generated based on availability, that links to the position of the snippet text or to the nearest header above the snippet text.""" + snippet: NotRequired[str] + r"""A matching snippet from the document. Query term matches are marked by the unicode characters uE006 and uE007. Use 'text' field instead.""" class SearchResultSnippet(BaseModel): - snippet: Annotated[ - str, - pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." - ), - ] - r"""A matching snippet from the document. Query term matches are marked by the unicode characters uE006 and uE007. Use 'text' field instead.""" - mime_type: Annotated[Optional[str], pydantic.Field(alias="mimeType")] = None r"""The mime type of the snippets, currently either text/plain or text/html.""" @@ -52,17 +44,25 @@ class SearchResultSnippet(BaseModel): url: Optional[str] = None r"""A URL, generated based on availability, that links to the position of the snippet text or to the nearest header above the snippet text.""" + snippet: Annotated[ + Optional[str], + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use 'text' field instead." + ), + ] = None + r"""A matching snippet from the document. Query term matches are marked by the unicode characters uE006 and uE007. Use 'text' field instead.""" + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( - ["mimeType", "text", "snippetTextOrdering", "ranges", "url"] + ["mimeType", "text", "snippetTextOrdering", "ranges", "url", "snippet"] ) serialized = handler(self) m = {} for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/searchwarning.py b/src/glean/api_client/models/searchwarning.py index 72c2fb91..79a0826d 100644 --- a/src/glean/api_client/models/searchwarning.py +++ b/src/glean/api_client/models/searchwarning.py @@ -2,14 +2,15 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class WarningType(str, Enum): +class WarningType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of the warning.""" LONG_QUERY = "LONG_QUERY" @@ -51,6 +52,15 @@ class SearchWarning(BaseModel): ] = None r"""A list of query terms that were ignored when generating search results, if any. For example, terms containing invalid filters such as \"updated:invalid_date\" will be ignored.""" + @field_serializer("warning_type") + def serialize_warning_type(self, value): + if isinstance(value, str): + try: + return models.WarningType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["lastUsedTerm", "quotesIgnoredQuery", "ignoredTerms"]) @@ -59,7 +69,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/sectiontype.py b/src/glean/api_client/models/sectiontype.py index 2dbb489e..59fe1bb6 100644 --- a/src/glean/api_client/models/sectiontype.py +++ b/src/glean/api_client/models/sectiontype.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class SectionType(str, Enum): +class SectionType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Type of the section. This defines how the section should be interpreted and rendered in the digest.""" # A standard section for channel-based digests (e.g. from Slack, Teams). diff --git a/src/glean/api_client/models/security.py b/src/glean/api_client/models/security.py index 1a757df2..c248ffd0 100644 --- a/src/glean/api_client/models/security.py +++ b/src/glean/api_client/models/security.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/seenfeedbackinfo.py b/src/glean/api_client/models/seenfeedbackinfo.py index ff374c22..a5ebcfaa 100644 --- a/src/glean/api_client/models/seenfeedbackinfo.py +++ b/src/glean/api_client/models/seenfeedbackinfo.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/sensitivecontentoptions.py b/src/glean/api_client/models/sensitivecontentoptions.py index b8c1e5cf..9c337af1 100644 --- a/src/glean/api_client/models/sensitivecontentoptions.py +++ b/src/glean/api_client/models/sensitivecontentoptions.py @@ -78,7 +78,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/sensitiveexpression.py b/src/glean/api_client/models/sensitiveexpression.py index ddc4bf2e..4f4970c3 100644 --- a/src/glean/api_client/models/sensitiveexpression.py +++ b/src/glean/api_client/models/sensitiveexpression.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/sensitiveinfotype.py b/src/glean/api_client/models/sensitiveinfotype.py index 69c21122..61ec4473 100644 --- a/src/glean/api_client/models/sensitiveinfotype.py +++ b/src/glean/api_client/models/sensitiveinfotype.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict, deprecated @@ -12,7 +13,7 @@ @deprecated( "warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated." ) -class SensitiveInfoTypeLikelihoodThreshold(str, Enum): +class SensitiveInfoTypeLikelihoodThreshold(str, Enum, metaclass=utils.OpenEnumMeta): LIKELY = "LIKELY" VERY_LIKELY = "VERY_LIKELY" POSSIBLE = "POSSIBLE" @@ -38,6 +39,15 @@ class SensitiveInfoType(BaseModel): info_type: Annotated[Optional[str], pydantic.Field(alias="infoType")] = None r"""Text representation of an info-type to scan for.""" + @field_serializer("likelihood_threshold") + def serialize_likelihood_threshold(self, value): + if isinstance(value, str): + try: + return models.SensitiveInfoTypeLikelihoodThreshold(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["likelihoodThreshold", "infoType"]) @@ -46,7 +56,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/sessioninfo.py b/src/glean/api_client/models/sessioninfo.py index 0a0e4aff..0a0ab521 100644 --- a/src/glean/api_client/models/sessioninfo.py +++ b/src/glean/api_client/models/sessioninfo.py @@ -45,7 +45,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/share.py b/src/glean/api_client/models/share.py index 5e5d5781..3356d1fb 100644 --- a/src/glean/api_client/models/share.py +++ b/src/glean/api_client/models/share.py @@ -41,7 +41,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/sharingoptions.py b/src/glean/api_client/models/sharingoptions.py index 9b2e311f..c6ffe694 100644 --- a/src/glean/api_client/models/sharingoptions.py +++ b/src/glean/api_client/models/sharingoptions.py @@ -90,7 +90,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/shortcut.py b/src/glean/api_client/models/shortcut.py index c36e2aa4..3b086609 100644 --- a/src/glean/api_client/models/shortcut.py +++ b/src/glean/api_client/models/shortcut.py @@ -172,7 +172,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/shortcuterror.py b/src/glean/api_client/models/shortcuterror.py index bc2d9b7f..b4922a4c 100644 --- a/src/glean/api_client/models/shortcuterror.py +++ b/src/glean/api_client/models/shortcuterror.py @@ -2,14 +2,15 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class ShortcutErrorErrorType(str, Enum): +class ShortcutErrorErrorType(str, Enum, metaclass=utils.OpenEnumMeta): NO_PERMISSION = "NO_PERMISSION" INVALID_ID = "INVALID_ID" EXISTING_SHORTCUT = "EXISTING_SHORTCUT" @@ -25,6 +26,15 @@ class ShortcutError(BaseModel): Optional[ShortcutErrorErrorType], pydantic.Field(alias="errorType") ] = None + @field_serializer("error_type") + def serialize_error_type(self, value): + if isinstance(value, str): + try: + return models.ShortcutErrorErrorType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["errorType"]) @@ -33,7 +43,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/shortcutmutableproperties.py b/src/glean/api_client/models/shortcutmutableproperties.py index 8bd56d9b..a70757ea 100644 --- a/src/glean/api_client/models/shortcutmutableproperties.py +++ b/src/glean/api_client/models/shortcutmutableproperties.py @@ -80,7 +80,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/shortcutspaginationmetadata.py b/src/glean/api_client/models/shortcutspaginationmetadata.py index 21d1f8b9..dd14f76d 100644 --- a/src/glean/api_client/models/shortcutspaginationmetadata.py +++ b/src/glean/api_client/models/shortcutspaginationmetadata.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/sidebysideimplementation.py b/src/glean/api_client/models/sidebysideimplementation.py index 563b887f..2df5ff06 100644 --- a/src/glean/api_client/models/sidebysideimplementation.py +++ b/src/glean/api_client/models/sidebysideimplementation.py @@ -39,7 +39,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -101,7 +101,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/socialnetwork.py b/src/glean/api_client/models/socialnetwork.py index 1eff28bb..6540572a 100644 --- a/src/glean/api_client/models/socialnetwork.py +++ b/src/glean/api_client/models/socialnetwork.py @@ -35,7 +35,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/socialnetworkdefinition.py b/src/glean/api_client/models/socialnetworkdefinition.py index 1706b24d..be8259cd 100644 --- a/src/glean/api_client/models/socialnetworkdefinition.py +++ b/src/glean/api_client/models/socialnetworkdefinition.py @@ -39,7 +39,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/sortoptions.py b/src/glean/api_client/models/sortoptions.py index c0dc6acd..b47e3975 100644 --- a/src/glean/api_client/models/sortoptions.py +++ b/src/glean/api_client/models/sortoptions.py @@ -32,7 +32,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/structuredlink.py b/src/glean/api_client/models/structuredlink.py index 46704423..64e4e5b9 100644 --- a/src/glean/api_client/models/structuredlink.py +++ b/src/glean/api_client/models/structuredlink.py @@ -42,7 +42,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/structuredlocation.py b/src/glean/api_client/models/structuredlocation.py index b4281e4e..8fc2a7f5 100644 --- a/src/glean/api_client/models/structuredlocation.py +++ b/src/glean/api_client/models/structuredlocation.py @@ -81,7 +81,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/structuredresult.py b/src/glean/api_client/models/structuredresult.py index ece0abe6..ead2bdf1 100644 --- a/src/glean/api_client/models/structuredresult.py +++ b/src/glean/api_client/models/structuredresult.py @@ -4,9 +4,10 @@ from .appresult import AppResult, AppResultTypedDict from .disambiguation import Disambiguation, DisambiguationTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -30,7 +31,7 @@ from .team import Team, TeamTypedDict -class Prominence(str, Enum): +class Prominence(str, Enum, metaclass=utils.OpenEnumMeta): r"""The level of visual distinction that should be given to a result.""" # A high-confidence result that should feature prominently on the page. @@ -41,7 +42,7 @@ class Prominence(str, Enum): STANDARD = "STANDARD" -class StructuredResultSource(str, Enum): +class StructuredResultSource(str, Enum, metaclass=utils.OpenEnumMeta): r"""Source context for this result. Possible values depend on the result type.""" EXPERT_DETECTION = "EXPERT_DETECTION" @@ -152,6 +153,24 @@ class StructuredResult(BaseModel): source: Optional[StructuredResultSource] = None r"""Source context for this result. Possible values depend on the result type.""" + @field_serializer("prominence") + def serialize_prominence(self, value): + if isinstance(value, str): + try: + return models.Prominence(value) + except ValueError: + return value + return value + + @field_serializer("source") + def serialize_source(self, value): + if isinstance(value, str): + try: + return models.StructuredResultSource(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -185,7 +204,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/structuredtext.py b/src/glean/api_client/models/structuredtext.py index 3df45b9a..dcf058b2 100644 --- a/src/glean/api_client/models/structuredtext.py +++ b/src/glean/api_client/models/structuredtext.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/structuredtextitem.py b/src/glean/api_client/models/structuredtextitem.py index dc9fbe04..6eeb60a0 100644 --- a/src/glean/api_client/models/structuredtextitem.py +++ b/src/glean/api_client/models/structuredtextitem.py @@ -40,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/summarizeop.py b/src/glean/api_client/models/summarizeop.py index d476d017..1211d870 100644 --- a/src/glean/api_client/models/summarizeop.py +++ b/src/glean/api_client/models/summarizeop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/summarizerequest.py b/src/glean/api_client/models/summarizerequest.py index b593cc15..2ee5dfa9 100644 --- a/src/glean/api_client/models/summarizerequest.py +++ b/src/glean/api_client/models/summarizerequest.py @@ -59,7 +59,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/summarizeresponse.py b/src/glean/api_client/models/summarizeresponse.py index ac7cd7ca..ca5dc1b6 100644 --- a/src/glean/api_client/models/summarizeresponse.py +++ b/src/glean/api_client/models/summarizeresponse.py @@ -24,7 +24,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: @@ -58,7 +58,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/summary.py b/src/glean/api_client/models/summary.py index a99d7525..35573db7 100644 --- a/src/glean/api_client/models/summary.py +++ b/src/glean/api_client/models/summary.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/team.py b/src/glean/api_client/models/team.py index c688efcd..7fa4e162 100644 --- a/src/glean/api_client/models/team.py +++ b/src/glean/api_client/models/team.py @@ -7,9 +7,10 @@ from .teamemail import TeamEmail, TeamEmailTypedDict from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Dict, List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,7 +22,7 @@ ) -class TeamStatus(str, Enum): +class TeamStatus(str, Enum, metaclass=utils.OpenEnumMeta): r"""whether this team is fully processed or there are still unprocessed operations that'll affect it""" PROCESSED = "PROCESSED" @@ -146,6 +147,15 @@ class Team(BaseModel): logging_id: Annotated[Optional[str], pydantic.Field(alias="loggingId")] = None r"""The logging id of the team used in scrubbed logs, client analytics, and metrics.""" + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.TeamStatus(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -176,7 +186,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/teamemail.py b/src/glean/api_client/models/teamemail.py index 42973717..73f5b4cd 100644 --- a/src/glean/api_client/models/teamemail.py +++ b/src/glean/api_client/models/teamemail.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/teaminfodefinition.py b/src/glean/api_client/models/teaminfodefinition.py index 161acbfe..d5e57583 100644 --- a/src/glean/api_client/models/teaminfodefinition.py +++ b/src/glean/api_client/models/teaminfodefinition.py @@ -106,7 +106,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/teammember.py b/src/glean/api_client/models/teammember.py index d6cece46..9b534f8c 100644 --- a/src/glean/api_client/models/teammember.py +++ b/src/glean/api_client/models/teammember.py @@ -39,7 +39,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/textrange.py b/src/glean/api_client/models/textrange.py index 2d665a51..9cd52eba 100644 --- a/src/glean/api_client/models/textrange.py +++ b/src/glean/api_client/models/textrange.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -12,7 +13,7 @@ from .document import Document, DocumentTypedDict -class TextRangeType(str, Enum): +class TextRangeType(str, Enum, metaclass=utils.OpenEnumMeta): BOLD = "BOLD" CITATION = "CITATION" HIGHLIGHT = "HIGHLIGHT" @@ -48,6 +49,15 @@ class TextRange(BaseModel): document: Optional["Document"] = None + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.TextRangeType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["endIndex", "type", "url", "document"]) @@ -56,7 +66,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/thumbnail.py b/src/glean/api_client/models/thumbnail.py index b1defb40..decf9c1f 100644 --- a/src/glean/api_client/models/thumbnail.py +++ b/src/glean/api_client/models/thumbnail.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/timepoint.py b/src/glean/api_client/models/timepoint.py index d595ff32..66bac1cf 100644 --- a/src/glean/api_client/models/timepoint.py +++ b/src/glean/api_client/models/timepoint.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/timerange.py b/src/glean/api_client/models/timerange.py index c8b09f0d..7ac2cf3c 100644 --- a/src/glean/api_client/models/timerange.py +++ b/src/glean/api_client/models/timerange.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/timerangefilter.py b/src/glean/api_client/models/timerangefilter.py index 92f7896e..b8ad3178 100644 --- a/src/glean/api_client/models/timerangefilter.py +++ b/src/glean/api_client/models/timerangefilter.py @@ -3,14 +3,15 @@ from __future__ import annotations from .timerange import TimeRange, TimeRangeTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class TimeRangeFilterTimePeriodType(str, Enum): +class TimeRangeFilterTimePeriodType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of time period for which to filter findings.""" PAST_DAY = "PAST_DAY" @@ -36,6 +37,15 @@ class TimeRangeFilter(BaseModel): Optional[TimeRange], pydantic.Field(alias="customTimeRange") ] = None + @field_serializer("time_period_type") + def serialize_time_period_type(self, value): + if isinstance(value, str): + try: + return models.TimeRangeFilterTimePeriodType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["timePeriodType", "customTimeRange"]) @@ -44,7 +54,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/tool.py b/src/glean/api_client/models/tool.py index 7252330c..86839d1b 100644 --- a/src/glean/api_client/models/tool.py +++ b/src/glean/api_client/models/tool.py @@ -3,14 +3,15 @@ from __future__ import annotations from .toolparameter import ToolParameter, ToolParameterTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class ToolType(str, Enum): +class ToolType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Type of tool (READ, WRITE)""" READ = "READ" @@ -46,6 +47,15 @@ class Tool(BaseModel): parameters: Optional[Dict[str, ToolParameter]] = None r"""The parameters for the tool. Each key is the name of the parameter and the value is the parameter object.""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.ToolType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -56,7 +66,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/toolinfo.py b/src/glean/api_client/models/toolinfo.py index a83308e9..9bbfdf32 100644 --- a/src/glean/api_client/models/toolinfo.py +++ b/src/glean/api_client/models/toolinfo.py @@ -31,7 +31,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/toolmetadata.py b/src/glean/api_client/models/toolmetadata.py index 10e8f64d..a87122b4 100644 --- a/src/glean/api_client/models/toolmetadata.py +++ b/src/glean/api_client/models/toolmetadata.py @@ -6,21 +6,22 @@ from .personobject import PersonObject, PersonObjectTypedDict from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class ToolMetadataType(str, Enum): +class ToolMetadataType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of tool.""" RETRIEVAL = "RETRIEVAL" ACTION = "ACTION" -class KnowledgeType(str, Enum): +class KnowledgeType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Indicates the kind of knowledge a tool would access or modify.""" NEUTRAL_KNOWLEDGE = "NEUTRAL_KNOWLEDGE" @@ -28,7 +29,7 @@ class KnowledgeType(str, Enum): WORLD_KNOWLEDGE = "WORLD_KNOWLEDGE" -class WriteActionType(str, Enum): +class WriteActionType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Valid only for write actions. Represents the type of write action. REDIRECT - The client renders the URL which contains information for carrying out the action. EXECUTION - Send a request to an external server and execute the action. MCP - Send a tools/call request to an MCP server to execute the action.""" REDIRECT = "REDIRECT" @@ -36,7 +37,7 @@ class WriteActionType(str, Enum): MCP = "MCP" -class AuthType(str, Enum): +class AuthType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of authentication being used. Use 'OAUTH_*' when Glean calls an external API (e.g., Jira) on behalf of a user to obtain an OAuth token. 'OAUTH_ADMIN' utilizes an admin token for external API calls on behalf all users. @@ -171,6 +172,42 @@ class ToolMetadata(BaseModel): ] = None r"""Whether this action has been fully configured and validated.""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.ToolMetadataType(value) + except ValueError: + return value + return value + + @field_serializer("knowledge_type") + def serialize_knowledge_type(self, value): + if isinstance(value, str): + try: + return models.KnowledgeType(value) + except ValueError: + return value + return value + + @field_serializer("write_action_type") + def serialize_write_action_type(self, value): + if isinstance(value, str): + try: + return models.WriteActionType(value) + except ValueError: + return value + return value + + @field_serializer("auth_type") + def serialize_auth_type(self, value): + if isinstance(value, str): + try: + return models.AuthType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -196,7 +233,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/toolparameter.py b/src/glean/api_client/models/toolparameter.py index 31e41566..2e00547d 100644 --- a/src/glean/api_client/models/toolparameter.py +++ b/src/glean/api_client/models/toolparameter.py @@ -2,14 +2,15 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Dict, List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class ToolParameterType(str, Enum): +class ToolParameterType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Parameter type (string, number, boolean, object, array)""" STRING = "string" @@ -58,6 +59,15 @@ class ToolParameter(BaseModel): properties: Optional[Dict[str, ToolParameter]] = None r"""When type is 'object', this describes the structure of the object.""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.ToolParameterType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -76,7 +86,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/toolscallparameter.py b/src/glean/api_client/models/toolscallparameter.py index 461023ac..43b68c3e 100644 --- a/src/glean/api_client/models/toolscallparameter.py +++ b/src/glean/api_client/models/toolscallparameter.py @@ -39,7 +39,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/toolscallresponse.py b/src/glean/api_client/models/toolscallresponse.py index 9073465b..9949402b 100644 --- a/src/glean/api_client/models/toolscallresponse.py +++ b/src/glean/api_client/models/toolscallresponse.py @@ -32,7 +32,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/toolsets.py b/src/glean/api_client/models/toolsets.py index b16347d3..c1ecb2c2 100644 --- a/src/glean/api_client/models/toolsets.py +++ b/src/glean/api_client/models/toolsets.py @@ -38,7 +38,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/toolslistresponse.py b/src/glean/api_client/models/toolslistresponse.py index d20d237b..8b5a32cc 100644 --- a/src/glean/api_client/models/toolslistresponse.py +++ b/src/glean/api_client/models/toolslistresponse.py @@ -23,7 +23,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/ugctype.py b/src/glean/api_client/models/ugctype.py index 9594a7bf..7ed8033e 100644 --- a/src/glean/api_client/models/ugctype.py +++ b/src/glean/api_client/models/ugctype.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class UgcType(str, Enum): +class UgcType(str, Enum, metaclass=utils.OpenEnumMeta): ANNOUNCEMENTS_TYPE = "ANNOUNCEMENTS_TYPE" ANSWERS_TYPE = "ANSWERS_TYPE" COLLECTIONS_TYPE = "COLLECTIONS_TYPE" diff --git a/src/glean/api_client/models/unauthorizeddatasourceinstance.py b/src/glean/api_client/models/unauthorizeddatasourceinstance.py index bec92224..526f7724 100644 --- a/src/glean/api_client/models/unauthorizeddatasourceinstance.py +++ b/src/glean/api_client/models/unauthorizeddatasourceinstance.py @@ -2,9 +2,10 @@ from __future__ import annotations from .authstatus import AuthStatus +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -51,6 +52,15 @@ class UnauthorizedDatasourceInstance(BaseModel): """ + @field_serializer("auth_status") + def serialize_auth_status(self, value): + if isinstance(value, str): + try: + return models.AuthStatus(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -61,7 +71,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/unpin.py b/src/glean/api_client/models/unpin.py index f8feebc7..406ddefe 100644 --- a/src/glean/api_client/models/unpin.py +++ b/src/glean/api_client/models/unpin.py @@ -24,7 +24,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/unpinop.py b/src/glean/api_client/models/unpinop.py index 4ba6dcab..788b1fdb 100644 --- a/src/glean/api_client/models/unpinop.py +++ b/src/glean/api_client/models/unpinop.py @@ -36,7 +36,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/updateannouncementop.py b/src/glean/api_client/models/updateannouncementop.py index 05d4fd15..8ccce4d0 100644 --- a/src/glean/api_client/models/updateannouncementop.py +++ b/src/glean/api_client/models/updateannouncementop.py @@ -40,7 +40,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/updateannouncementrequest.py b/src/glean/api_client/models/updateannouncementrequest.py index ef92fe1d..04efd103 100644 --- a/src/glean/api_client/models/updateannouncementrequest.py +++ b/src/glean/api_client/models/updateannouncementrequest.py @@ -132,7 +132,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/updatedatasourceconfigurationrequest.py b/src/glean/api_client/models/updatedatasourceconfigurationrequest.py new file mode 100644 index 00000000..e1a2c5a3 --- /dev/null +++ b/src/glean/api_client/models/updatedatasourceconfigurationrequest.py @@ -0,0 +1,23 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .datasourceinstanceconfiguration import ( + DatasourceInstanceConfiguration, + DatasourceInstanceConfigurationTypedDict, +) +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class UpdateDatasourceConfigurationRequestTypedDict(TypedDict): + r"""Request to update greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist may be set.""" + + configuration: DatasourceInstanceConfigurationTypedDict + r"""Configuration for a datasource instance""" + + +class UpdateDatasourceConfigurationRequest(BaseModel): + r"""Request to update greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist may be set.""" + + configuration: DatasourceInstanceConfiguration + r"""Configuration for a datasource instance""" diff --git a/src/glean/api_client/models/updatedatasourceinstanceconfigurationop.py b/src/glean/api_client/models/updatedatasourceinstanceconfigurationop.py new file mode 100644 index 00000000..1f77deeb --- /dev/null +++ b/src/glean/api_client/models/updatedatasourceinstanceconfigurationop.py @@ -0,0 +1,42 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .updatedatasourceconfigurationrequest import ( + UpdateDatasourceConfigurationRequest, + UpdateDatasourceConfigurationRequestTypedDict, +) +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata, RequestMetadata +import pydantic +from typing_extensions import Annotated, TypedDict + + +class UpdateDatasourceInstanceConfigurationRequestTypedDict(TypedDict): + datasource_id: str + r"""The datasource type identifier (e.g. o365sharepoint)""" + instance_id: str + r"""The datasource instance identifier""" + update_datasource_configuration_request: ( + UpdateDatasourceConfigurationRequestTypedDict + ) + + +class UpdateDatasourceInstanceConfigurationRequest(BaseModel): + datasource_id: Annotated[ + str, + pydantic.Field(alias="datasourceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The datasource type identifier (e.g. o365sharepoint)""" + + instance_id: Annotated[ + str, + pydantic.Field(alias="instanceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The datasource instance identifier""" + + update_datasource_configuration_request: Annotated[ + UpdateDatasourceConfigurationRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] diff --git a/src/glean/api_client/models/updatedlpconfigrequest.py b/src/glean/api_client/models/updatedlpconfigrequest.py index 9111f959..dfa51ced 100644 --- a/src/glean/api_client/models/updatedlpconfigrequest.py +++ b/src/glean/api_client/models/updatedlpconfigrequest.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/updatedlpconfigresponse.py b/src/glean/api_client/models/updatedlpconfigresponse.py index d415f88d..216e80d9 100644 --- a/src/glean/api_client/models/updatedlpconfigresponse.py +++ b/src/glean/api_client/models/updatedlpconfigresponse.py @@ -2,9 +2,10 @@ from __future__ import annotations from .dlpsimpleresult import DlpSimpleResult +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,6 +22,15 @@ class UpdateDlpConfigResponse(BaseModel): report_id: Annotated[Optional[str], pydantic.Field(alias="reportId")] = None r"""The id of the report that was just created and run.""" + @field_serializer("result") + def serialize_result(self, value): + if isinstance(value, str): + try: + return models.DlpSimpleResult(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["result", "reportId"]) @@ -29,7 +39,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/updatedlpreportrequest.py b/src/glean/api_client/models/updatedlpreportrequest.py index 63f10962..8fdd3dd1 100644 --- a/src/glean/api_client/models/updatedlpreportrequest.py +++ b/src/glean/api_client/models/updatedlpreportrequest.py @@ -4,9 +4,10 @@ from .dlpconfig import DlpConfig, DlpConfigTypedDict from .dlpfrequency import DlpFrequency from .dlpreportstatus import DlpReportStatus +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -42,6 +43,24 @@ class UpdateDlpReportRequest(BaseModel): report_name: Annotated[Optional[str], pydantic.Field(alias="reportName")] = None r"""The new name of the policy if provided.""" + @field_serializer("frequency") + def serialize_frequency(self, value): + if isinstance(value, str): + try: + return models.DlpFrequency(value) + except ValueError: + return value + return value + + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.DlpReportStatus(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -52,7 +71,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/updatedlpreportresponse.py b/src/glean/api_client/models/updatedlpreportresponse.py index c65474b8..ecb9e43f 100644 --- a/src/glean/api_client/models/updatedlpreportresponse.py +++ b/src/glean/api_client/models/updatedlpreportresponse.py @@ -2,8 +2,9 @@ from __future__ import annotations from .dlpsimpleresult import DlpSimpleResult +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -15,6 +16,15 @@ class UpdateDlpReportResponseTypedDict(TypedDict): class UpdateDlpReportResponse(BaseModel): result: Optional[DlpSimpleResult] = None + @field_serializer("result") + def serialize_result(self, value): + if isinstance(value, str): + try: + return models.DlpSimpleResult(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["result"]) @@ -23,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/updatedocumentvisibilityoverridesrequest.py b/src/glean/api_client/models/updatedocumentvisibilityoverridesrequest.py index fb26ba90..94e18dac 100644 --- a/src/glean/api_client/models/updatedocumentvisibilityoverridesrequest.py +++ b/src/glean/api_client/models/updatedocumentvisibilityoverridesrequest.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/updatedocumentvisibilityoverridesresponse.py b/src/glean/api_client/models/updatedocumentvisibilityoverridesresponse.py index 1dacc410..48078741 100644 --- a/src/glean/api_client/models/updatedocumentvisibilityoverridesresponse.py +++ b/src/glean/api_client/models/updatedocumentvisibilityoverridesresponse.py @@ -28,7 +28,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/updatepermissionsrequest.py b/src/glean/api_client/models/updatepermissionsrequest.py index 984179c5..0c622986 100644 --- a/src/glean/api_client/models/updatepermissionsrequest.py +++ b/src/glean/api_client/models/updatepermissionsrequest.py @@ -55,7 +55,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/updateshortcutop.py b/src/glean/api_client/models/updateshortcutop.py index 5b9d8daf..f047f8ac 100644 --- a/src/glean/api_client/models/updateshortcutop.py +++ b/src/glean/api_client/models/updateshortcutop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/updateshortcutrequest.py b/src/glean/api_client/models/updateshortcutrequest.py index 738571d2..4b89b63a 100644 --- a/src/glean/api_client/models/updateshortcutrequest.py +++ b/src/glean/api_client/models/updateshortcutrequest.py @@ -85,7 +85,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/updateshortcutresponse.py b/src/glean/api_client/models/updateshortcutresponse.py index ed28c5ae..9c51a9a4 100644 --- a/src/glean/api_client/models/updateshortcutresponse.py +++ b/src/glean/api_client/models/updateshortcutresponse.py @@ -27,7 +27,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/updatetype.py b/src/glean/api_client/models/updatetype.py index 687544d4..6a51a4bb 100644 --- a/src/glean/api_client/models/updatetype.py +++ b/src/glean/api_client/models/updatetype.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class UpdateType(str, Enum): +class UpdateType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Optional type classification for the update.""" # Updates that require user attention or action diff --git a/src/glean/api_client/models/uploadchatfilesop.py b/src/glean/api_client/models/uploadchatfilesop.py index 6d4bdd5f..4aafc910 100644 --- a/src/glean/api_client/models/uploadchatfilesop.py +++ b/src/glean/api_client/models/uploadchatfilesop.py @@ -48,7 +48,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/uploadchatfilesrequest.py b/src/glean/api_client/models/uploadchatfilesrequest.py index 898603b0..8e8d01c0 100644 --- a/src/glean/api_client/models/uploadchatfilesrequest.py +++ b/src/glean/api_client/models/uploadchatfilesrequest.py @@ -41,7 +41,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/uploadchatfilesresponse.py b/src/glean/api_client/models/uploadchatfilesresponse.py index 123f81d5..a707d722 100644 --- a/src/glean/api_client/models/uploadchatfilesresponse.py +++ b/src/glean/api_client/models/uploadchatfilesresponse.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/uploadshortcutsrequest.py b/src/glean/api_client/models/uploadshortcutsrequest.py index 292988f6..e73b9c17 100644 --- a/src/glean/api_client/models/uploadshortcutsrequest.py +++ b/src/glean/api_client/models/uploadshortcutsrequest.py @@ -52,7 +52,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/uploadstatusenum.py b/src/glean/api_client/models/uploadstatusenum.py index c7ca19e2..950f6a40 100644 --- a/src/glean/api_client/models/uploadstatusenum.py +++ b/src/glean/api_client/models/uploadstatusenum.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class UploadStatusEnum(str, Enum): +class UploadStatusEnum(str, Enum, metaclass=utils.OpenEnumMeta): r"""Upload status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN""" UPLOADED = "UPLOADED" diff --git a/src/glean/api_client/models/user.py b/src/glean/api_client/models/user.py index 01fc7ac2..3a8ab795 100644 --- a/src/glean/api_client/models/user.py +++ b/src/glean/api_client/models/user.py @@ -30,7 +30,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/useractivity.py b/src/glean/api_client/models/useractivity.py index 5108bb40..17d6333e 100644 --- a/src/glean/api_client/models/useractivity.py +++ b/src/glean/api_client/models/useractivity.py @@ -4,14 +4,15 @@ from .countinfo import CountInfo, CountInfoTypedDict from .person import Person, PersonTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class UserActivityAction(str, Enum): +class UserActivityAction(str, Enum, metaclass=utils.OpenEnumMeta): r"""The action for the activity""" ADD = "ADD" @@ -52,6 +53,15 @@ class UserActivity(BaseModel): Optional[CountInfo], pydantic.Field(alias="aggregateVisitCount") ] = None + @field_serializer("action") + def serialize_action(self, value): + if isinstance(value, str): + try: + return models.UserActivityAction(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["actor", "timestamp", "action", "aggregateVisitCount"]) @@ -60,7 +70,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/useractivityinsight.py b/src/glean/api_client/models/useractivityinsight.py index 76d15600..692a1035 100644 --- a/src/glean/api_client/models/useractivityinsight.py +++ b/src/glean/api_client/models/useractivityinsight.py @@ -4,14 +4,15 @@ from .countinfo import CountInfo, CountInfoTypedDict from .person import Person, PersonTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class ActivityEnum(str, Enum): +class ActivityEnum(str, Enum, metaclass=utils.OpenEnumMeta): r"""Activity e.g. search, home page visit or all.""" ALL = "ALL" @@ -47,6 +48,15 @@ class UserActivityInsight(BaseModel): Optional[CountInfo], pydantic.Field(alias="activeDayCount") ] = None + @field_serializer("activity") + def serialize_activity(self, value): + if isinstance(value, str): + try: + return models.ActivityEnum(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -57,7 +67,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/usergeneratedcontentid.py b/src/glean/api_client/models/usergeneratedcontentid.py index 04553f56..cd30606c 100644 --- a/src/glean/api_client/models/usergeneratedcontentid.py +++ b/src/glean/api_client/models/usergeneratedcontentid.py @@ -24,7 +24,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/userreferencedefinition.py b/src/glean/api_client/models/userreferencedefinition.py index 9c914212..ae7ab296 100644 --- a/src/glean/api_client/models/userreferencedefinition.py +++ b/src/glean/api_client/models/userreferencedefinition.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/userrole.py b/src/glean/api_client/models/userrole.py index f4aa28fa..2768603f 100644 --- a/src/glean/api_client/models/userrole.py +++ b/src/glean/api_client/models/userrole.py @@ -2,9 +2,10 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class UserRole(str, Enum): +class UserRole(str, Enum, metaclass=utils.OpenEnumMeta): r"""A user's role with respect to a specific document.""" OWNER = "OWNER" diff --git a/src/glean/api_client/models/userrolespecification.py b/src/glean/api_client/models/userrolespecification.py index b6902a8c..485de693 100644 --- a/src/glean/api_client/models/userrolespecification.py +++ b/src/glean/api_client/models/userrolespecification.py @@ -4,9 +4,10 @@ from .documentspec_union import DocumentSpecUnion, DocumentSpecUnionTypedDict from .group import Group, GroupTypedDict from .userrole import UserRole +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -34,6 +35,15 @@ class UserRoleSpecification(BaseModel): group: Optional[Group] = None + @field_serializer("role") + def serialize_role(self, value): + if isinstance(value, str): + try: + return models.UserRole(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["sourceDocumentSpec", "person", "group"]) @@ -42,7 +52,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/userstatusresponse.py b/src/glean/api_client/models/userstatusresponse.py index e8fb646f..0ee6f353 100644 --- a/src/glean/api_client/models/userstatusresponse.py +++ b/src/glean/api_client/models/userstatusresponse.py @@ -2,9 +2,10 @@ from __future__ import annotations from .uploadstatusenum import UploadStatusEnum +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -38,6 +39,15 @@ class UserStatusResponse(BaseModel): ] = None r"""Time of last successful upload for the user, in ISO 8601 format""" + @field_serializer("upload_status") + def serialize_upload_status(self, value): + if isinstance(value, str): + try: + return models.UploadStatusEnum(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["isActiveUser", "uploadStatus", "lastUploadedAt"]) @@ -46,7 +56,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/userviewinfo.py b/src/glean/api_client/models/userviewinfo.py index a81bd1ea..9dfde209 100644 --- a/src/glean/api_client/models/userviewinfo.py +++ b/src/glean/api_client/models/userviewinfo.py @@ -35,7 +35,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/verification.py b/src/glean/api_client/models/verification.py index 4aa8837d..014203d0 100644 --- a/src/glean/api_client/models/verification.py +++ b/src/glean/api_client/models/verification.py @@ -2,8 +2,9 @@ from __future__ import annotations from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import NotRequired, TypedDict @@ -14,7 +15,7 @@ ) -class State(str, Enum): +class State(str, Enum, metaclass=utils.OpenEnumMeta): r"""The verification state for the document.""" UNVERIFIED = "UNVERIFIED" @@ -34,6 +35,15 @@ class Verification(BaseModel): metadata: Optional["VerificationMetadata"] = None + @field_serializer("state") + def serialize_state(self, value): + if isinstance(value, str): + try: + return models.State(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["metadata"]) @@ -42,7 +52,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/verificationfeed.py b/src/glean/api_client/models/verificationfeed.py index 00a88599..46752ed8 100644 --- a/src/glean/api_client/models/verificationfeed.py +++ b/src/glean/api_client/models/verificationfeed.py @@ -25,7 +25,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/verificationmetadata.py b/src/glean/api_client/models/verificationmetadata.py index b53e27c2..a04d6ea3 100644 --- a/src/glean/api_client/models/verificationmetadata.py +++ b/src/glean/api_client/models/verificationmetadata.py @@ -81,7 +81,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/verifyop.py b/src/glean/api_client/models/verifyop.py index ba4ec069..c4c3e681 100644 --- a/src/glean/api_client/models/verifyop.py +++ b/src/glean/api_client/models/verifyop.py @@ -37,7 +37,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/verifyrequest.py b/src/glean/api_client/models/verifyrequest.py index acdc17d5..7c93b46f 100644 --- a/src/glean/api_client/models/verifyrequest.py +++ b/src/glean/api_client/models/verifyrequest.py @@ -39,7 +39,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/viewerinfo.py b/src/glean/api_client/models/viewerinfo.py index b27ade10..c85d80b8 100644 --- a/src/glean/api_client/models/viewerinfo.py +++ b/src/glean/api_client/models/viewerinfo.py @@ -3,9 +3,10 @@ from __future__ import annotations from datetime import datetime from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict, deprecated @@ -13,7 +14,7 @@ @deprecated( "warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use permissions instead." ) -class Role(str, Enum): +class Role(str, Enum, metaclass=utils.OpenEnumMeta): r"""DEPRECATED - use permissions instead. Viewer's role on the specific document.""" ANSWER_MODERATOR = "ANSWER_MODERATOR" @@ -40,6 +41,15 @@ class ViewerInfo(BaseModel): Optional[datetime], pydantic.Field(alias="lastViewedTime") ] = None + @field_serializer("role") + def serialize_role(self, value): + if isinstance(value, str): + try: + return models.Role(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["role", "lastViewedTime"]) @@ -48,7 +58,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/workflow.py b/src/glean/api_client/models/workflow.py index 1cde5ddb..63f93729 100644 --- a/src/glean/api_client/models/workflow.py +++ b/src/glean/api_client/models/workflow.py @@ -67,7 +67,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/workflowfeedbackinfo.py b/src/glean/api_client/models/workflowfeedbackinfo.py index 3c8abf0e..a0d06dbc 100644 --- a/src/glean/api_client/models/workflowfeedbackinfo.py +++ b/src/glean/api_client/models/workflowfeedbackinfo.py @@ -33,7 +33,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/writeactionparameter.py b/src/glean/api_client/models/writeactionparameter.py index cd9682d9..65b3d94c 100644 --- a/src/glean/api_client/models/writeactionparameter.py +++ b/src/glean/api_client/models/writeactionparameter.py @@ -3,14 +3,15 @@ from __future__ import annotations from .possiblevalue import PossibleValue, PossibleValueTypedDict from enum import Enum +from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict -class WriteActionParameterType(str, Enum): +class WriteActionParameterType(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of the value (e.g., integer, string, boolean, etc.)""" UNKNOWN = "UNKNOWN" @@ -55,6 +56,15 @@ class WriteActionParameter(BaseModel): ] = None r"""Possible values that the parameter can take.""" + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.WriteActionParameterType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -72,7 +82,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/models/writepermission.py b/src/glean/api_client/models/writepermission.py index 4a9c4635..85e816dc 100644 --- a/src/glean/api_client/models/writepermission.py +++ b/src/glean/api_client/models/writepermission.py @@ -2,9 +2,10 @@ from __future__ import annotations from .scopetype import ScopeType +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -37,6 +38,15 @@ class WritePermission(BaseModel): delete: Optional[bool] = None r"""True if user has delete permission for this feature and scope""" + @field_serializer("scope_type") + def serialize_scope_type(self, value): + if isinstance(value, str): + try: + return models.ScopeType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["scopeType", "create", "update", "delete"]) @@ -45,7 +55,7 @@ def serialize_model(self, handler): for n, f in type(self).model_fields.items(): k = f.alias or n - val = serialized.get(k) + val = serialized.get(k, serialized.get(n)) if val != UNSET_SENTINEL: if val is not None or k not in optional_fields: diff --git a/src/glean/api_client/people.py b/src/glean/api_client/people.py index 984073db..0c13dd32 100644 --- a/src/glean/api_client/people.py +++ b/src/glean/api_client/people.py @@ -210,7 +210,7 @@ async def debug_async( raise errors.GleanError("Unexpected response received", http_res) @deprecated( - "warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + "warning: ** DEPRECATED ** - Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated." ) def count( self, @@ -303,7 +303,7 @@ def count( raise errors.GleanError("Unexpected response received", http_res) @deprecated( - "warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." + "warning: ** DEPRECATED ** - Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated." ) async def count_async( self, @@ -579,6 +579,9 @@ async def index_async( raise errors.GleanError("Unexpected response received", http_res) + @deprecated( + "warning: ** DEPRECATED ** - Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated." + ) def bulk_index( self, *, @@ -686,6 +689,9 @@ def bulk_index( raise errors.GleanError("Unexpected response received", http_res) + @deprecated( + "warning: ** DEPRECATED ** - Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated." + ) async def bulk_index_async( self, *, diff --git a/src/glean/api_client/sdk.py b/src/glean/api_client/sdk.py index a0a9f4fe..45ece9f9 100644 --- a/src/glean/api_client/sdk.py +++ b/src/glean/api_client/sdk.py @@ -17,6 +17,7 @@ if TYPE_CHECKING: from glean.api_client.authentication import Authentication from glean.api_client.client import Client + from glean.api_client.datasources import Datasources from glean.api_client.governance import Governance from glean.api_client.indexing import Indexing @@ -46,11 +47,14 @@ class Glean(BaseSDK): r"""Manage indexing API tokens.""" indexing: "Indexing" governance: "Governance" + datasources: "Datasources" + r"""Manage datasources.""" _sub_sdk_map = { "client": ("glean.api_client.client", "Client"), "authentication": ("glean.api_client.authentication", "Authentication"), "indexing": ("glean.api_client.indexing", "Indexing"), "governance": ("glean.api_client.governance", "Governance"), + "datasources": ("glean.api_client.datasources", "Datasources"), } def __init__( @@ -58,8 +62,8 @@ def __init__( api_token: Optional[Union[Optional[str], Callable[[], Optional[str]]]] = None, instance: Optional[str] = None, server_idx: Optional[int] = None, - server_url: Optional[str] = None, url_params: Optional[Dict[str, str]] = None, + server_url: Optional[str] = None, client: Optional[HttpClient] = None, async_client: Optional[AsyncHttpClient] = None, retry_config: OptionalNullable[RetryConfig] = UNSET, diff --git a/tests/mockserver/go.mod b/tests/mockserver/go.mod index 38b2d5e8..c37e594c 100644 --- a/tests/mockserver/go.mod +++ b/tests/mockserver/go.mod @@ -6,10 +6,11 @@ require ( github.com/ericlagergren/decimal v0.0.0-20221120152707-495c53812d05 github.com/go-pkgz/expirable-cache/v3 v3.0.0 github.com/gorilla/mux v1.8.1 + github.com/stretchr/testify v1.9.0 ) require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/stretchr/testify v1.9.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/tests/mockserver/go.sum b/tests/mockserver/go.sum index fa86a5fc..37327eda 100644 --- a/tests/mockserver/go.sum +++ b/tests/mockserver/go.sum @@ -12,5 +12,7 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/tests/mockserver/internal/handler/generated_handlers.go b/tests/mockserver/internal/handler/generated_handlers.go index 23b23873..4eaa2afa 100644 --- a/tests/mockserver/internal/handler/generated_handlers.go +++ b/tests/mockserver/internal/handler/generated_handlers.go @@ -14,10 +14,12 @@ func GeneratedHandlers(ctx context.Context, dir *logging.HTTPFileDirectory, rt * return []*GeneratedHandler{ NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/agents/{agent_id}", pathGetRestAPIV1AgentsAgentID(dir, rt)), NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/agents/{agent_id}/schemas", pathGetRestAPIV1AgentsAgentIDSchemas(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/configure/datasources/{datasourceId}/instances/{instanceId}", pathGetRestAPIV1ConfigureDatasourcesDatasourceIDInstancesInstanceID(dir, rt)), NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/governance/data/findings/exports", pathGetRestAPIV1GovernanceDataFindingsExports(dir, rt)), NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/governance/data/policies", pathGetRestAPIV1GovernanceDataPolicies(dir, rt)), NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/governance/data/policies/{id}", pathGetRestAPIV1GovernanceDataPoliciesID(dir, rt)), NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/tools/list", pathGetRestAPIV1ToolsList(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPatch, "/rest/api/v1/configure/datasources/{datasourceId}/instances/{instanceId}", pathPatchRestAPIV1ConfigureDatasourcesDatasourceIDInstancesInstanceID(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/adddatasource", pathPostAPIIndexV1Adddatasource(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/betausers", pathPostAPIIndexV1Betausers(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/bulkindexdocuments", pathPostAPIIndexV1Bulkindexdocuments(dir, rt)), diff --git a/tests/mockserver/internal/handler/pathgetrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go b/tests/mockserver/internal/handler/pathgetrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go new file mode 100644 index 00000000..9344b896 --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go @@ -0,0 +1,68 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetRestAPIV1ConfigureDatasourcesDatasourceIDInstancesInstanceID(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "getDatasourceInstanceConfiguration[0]": + dir.HandlerFunc("getDatasourceInstanceConfiguration", testGetDatasourceInstanceConfigurationGetDatasourceInstanceConfiguration0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testGetDatasourceInstanceConfigurationGetDatasourceInstanceConfiguration0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.AcceptHeader(req, []string{"application/json"}); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.DatasourceConfigurationResponse = &components.DatasourceConfigurationResponse{ + Configuration: components.DatasourceInstanceConfiguration{ + Values: map[string]components.ConfigurationValue{ + "key": components.ConfigurationValue{}, + }, + }, + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpatchrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go b/tests/mockserver/internal/handler/pathpatchrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go new file mode 100644 index 00000000..40105d8d --- /dev/null +++ b/tests/mockserver/internal/handler/pathpatchrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go @@ -0,0 +1,71 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/logging" + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPatchRestAPIV1ConfigureDatasourcesDatasourceIDInstancesInstanceID(dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) http.HandlerFunc { + return func(w http.ResponseWriter, req *http.Request) { + test := req.Header.Get("x-speakeasy-test-name") + instanceID := req.Header.Get("x-speakeasy-test-instance-id") + + count := rt.GetRequestCount(test, instanceID) + + switch fmt.Sprintf("%s[%d]", test, count) { + case "updateDatasourceInstanceConfiguration[0]": + dir.HandlerFunc("updateDatasourceInstanceConfiguration", testUpdateDatasourceInstanceConfigurationUpdateDatasourceInstanceConfiguration0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testUpdateDatasourceInstanceConfigurationUpdateDatasourceInstanceConfiguration0(w http.ResponseWriter, req *http.Request) { + if err := assert.SecurityAuthorizationHeader(req, false, "Bearer"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusUnauthorized) + return + } + if err := assert.ContentType(req, "application/json", true); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + if err := assert.AcceptHeader(req, []string{"application/json"}); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + if err := assert.HeaderExists(req, "User-Agent"); err != nil { + log.Printf("assertion error: %s\n", err) + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + var respBody *components.DatasourceConfigurationResponse = &components.DatasourceConfigurationResponse{ + Configuration: components.DatasourceInstanceConfiguration{ + Values: map[string]components.ConfigurationValue{}, + }, + } + respBodyBytes, err := utils.MarshalJSON(respBody, "", true) + + if err != nil { + http.Error( + w, + "Unable to encode response body as JSON: "+err.Error(), + http.StatusInternalServerError, + ) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1addcollectionitems.go b/tests/mockserver/internal/handler/pathpostrestapiv1addcollectionitems.go index 03677407..363e9896 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1addcollectionitems.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1addcollectionitems.go @@ -302,7 +302,7 @@ func testAddcollectionitemsAddcollectionitems0(w http.ResponseWriter, req *http. Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1addverificationreminder.go b/tests/mockserver/internal/handler/pathpostrestapiv1addverificationreminder.go index fc2edd30..238a63f7 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1addverificationreminder.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1addverificationreminder.go @@ -284,7 +284,7 @@ func testAddverificationreminderAddverificationreminder0(w http.ResponseWriter, Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1adminsearch.go b/tests/mockserver/internal/handler/pathpostrestapiv1adminsearch.go index 89975fde..26fdfdd7 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1adminsearch.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1adminsearch.go @@ -60,7 +60,7 @@ func testAdminsearchAdminsearch0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, @@ -70,7 +70,7 @@ func testAdminsearchAdminsearch0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{}, }, }, - GleanDataError: &components.GleanDataError{ + ErrorInfo: &components.GleanDataError{ ErrorMessages: []components.ErrorMessage{ components.ErrorMessage{ Source: types.String("gmail"), diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1createannouncement.go b/tests/mockserver/internal/handler/pathpostrestapiv1createannouncement.go index ef59636d..1efad5a3 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1createannouncement.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1createannouncement.go @@ -171,7 +171,7 @@ func testCreateannouncementCreateannouncement0(w http.ResponseWriter, req *http. Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1createanswer.go b/tests/mockserver/internal/handler/pathpostrestapiv1createanswer.go index a9011900..31b8c1ca 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1createanswer.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1createanswer.go @@ -802,7 +802,7 @@ func testCreateanswerCreateanswer0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, MustIncludeSuggestions: &components.QuerySuggestionList{ @@ -1006,7 +1006,7 @@ func testCreateanswerCreateanswer0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, MustIncludeSuggestions: &components.QuerySuggestionList{ diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go b/tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go index 5c99a0ad..371b9023 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go @@ -56,14 +56,14 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ operations.ResponseBody2{ Collection: &components.Collection{ Name: "", - Description: "motionless whenever paintwork import over cuckoo", + Description: "whole busily jive hawk gee basic minus hence", AddedRoles: []components.UserRoleSpecification{ components.UserRoleSpecification{ Person: &components.Person{ Name: "George Clooney", ObfuscatedID: "abc123", }, - Role: components.UserRoleOwner, + Role: components.UserRoleAnswerModerator, }, }, RemovedRoles: []components.UserRoleSpecification{ @@ -90,7 +90,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ }, }, }, - ID: 363711, + ID: 158969, Creator: &components.Person{ Name: "George Clooney", ObfuscatedID: "abc123", @@ -101,7 +101,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ }, Items: []components.CollectionItem{ components.CollectionItem{ - CollectionID: 570197, + CollectionID: 110375, CreatedBy: &components.Person{ Name: "George Clooney", ObfuscatedID: "abc123", @@ -266,13 +266,13 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ Name: "George Clooney", ObfuscatedID: "abc123", }, - Role: components.UserRoleAnswerModerator, + Role: components.UserRoleEditor, }, }, }, Collection: &components.Collection{ Name: "", - Description: "athwart skateboard newsstand farm bourgeoisie ah how elliptical aha well-to-do", + Description: "wedge colorfully orientate rally", AudienceFilters: []components.FacetFilter{ components.FacetFilter{ FieldName: types.String("type"), @@ -288,7 +288,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ }, }, }, - ID: 643990, + ID: 131797, Creator: &components.Person{ Name: "George Clooney", ObfuscatedID: "abc123", @@ -300,7 +300,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ Children: []components.Collection{ components.Collection{ Name: "", - Description: "woot purse salty even as advanced", + Description: "outside yippee sidetrack mature regularly mouser inject worth", AudienceFilters: []components.FacetFilter{ components.FacetFilter{ FieldName: types.String("type"), @@ -316,7 +316,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ }, }, }, - ID: 359978, + ID: 149448, Creator: &components.Person{ Name: "George Clooney", ObfuscatedID: "abc123", @@ -328,7 +328,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ }, }, }, - ItemType: components.CollectionItemItemTypeURL, + ItemType: components.CollectionItemItemTypeCollection, }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1deletecollectionitem.go b/tests/mockserver/internal/handler/pathpostrestapiv1deletecollectionitem.go index e50723dc..592a00df 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1deletecollectionitem.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1deletecollectionitem.go @@ -286,7 +286,7 @@ func testDeletecollectionitemDeletecollectionitem0(w http.ResponseWriter, req *h Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1editanswer.go b/tests/mockserver/internal/handler/pathpostrestapiv1editanswer.go index 79841ead..c4e632d1 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1editanswer.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1editanswer.go @@ -795,7 +795,7 @@ func testEditanswerEditanswer0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, MustIncludeSuggestions: &components.QuerySuggestionList{ @@ -999,7 +999,7 @@ func testEditanswerEditanswer0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, MustIncludeSuggestions: &components.QuerySuggestionList{ diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1editcollectionitem.go b/tests/mockserver/internal/handler/pathpostrestapiv1editcollectionitem.go index 30f68b62..54ec38a4 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1editcollectionitem.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1editcollectionitem.go @@ -333,7 +333,7 @@ func testEditcollectionitemEditcollectionitem0(w http.ResponseWriter, req *http. Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1editpin.go b/tests/mockserver/internal/handler/pathpostrestapiv1editpin.go index 21ab451c..b1279495 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1editpin.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1editpin.go @@ -302,7 +302,7 @@ func testEditpinEditpin0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1getanswer.go b/tests/mockserver/internal/handler/pathpostrestapiv1getanswer.go index 479093cc..abb763dd 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1getanswer.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1getanswer.go @@ -366,7 +366,7 @@ func testGetanswerGetanswer0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go b/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go index 020eb777..96d4127e 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go @@ -254,7 +254,7 @@ func testGetchatGetchat0(w http.ResponseWriter, req *http.Request) { }, }, }, - Snippet: "", + Snippet: types.String(""), }, }, }, @@ -628,8 +628,8 @@ func testGetchatGetchat0(w http.ResponseWriter, req *http.Request) { Roles: []components.UserRoleSpecification{}, SourceDocumentSpec: types.Pointer(components.CreateDocumentSpecUnionDocumentSpec3( components.DocumentSpec3{ - UgcType: components.DocumentSpecUgcType1Shortcuts, - ContentID: 602763, + UgcType: components.DocumentSpecUgcType1Announcements, + ContentID: 848009, }, )), SourceType: components.AnswerSourceTypeAssistant.ToPointer(), diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1getcollection.go b/tests/mockserver/internal/handler/pathpostrestapiv1getcollection.go index 73d2c0af..5d34142e 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1getcollection.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1getcollection.go @@ -335,7 +335,7 @@ func testGetcollectionGetcollection0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1getdocumentsbyfacets.go b/tests/mockserver/internal/handler/pathpostrestapiv1getdocumentsbyfacets.go index f0bc0e67..4952b77e 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1getdocumentsbyfacets.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1getdocumentsbyfacets.go @@ -164,7 +164,7 @@ func testGetdocumentsbyfacetsGetdocumentsbyfacets0(w http.ResponseWriter, req *h Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1getpin.go b/tests/mockserver/internal/handler/pathpostrestapiv1getpin.go index 211f85f5..fe2aa283 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1getpin.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1getpin.go @@ -343,7 +343,7 @@ func testGetpinGetpin0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1listanswers.go b/tests/mockserver/internal/handler/pathpostrestapiv1listanswers.go index b2a5979d..ca9c40ec 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1listanswers.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1listanswers.go @@ -278,7 +278,7 @@ func testListanswersListanswers0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1listchats.go b/tests/mockserver/internal/handler/pathpostrestapiv1listchats.go index 536c92db..572a0c4e 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1listchats.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1listchats.go @@ -344,7 +344,7 @@ func testListchatsListchats0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1listcollections.go b/tests/mockserver/internal/handler/pathpostrestapiv1listcollections.go index b9d78920..bf011d22 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1listcollections.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1listcollections.go @@ -286,7 +286,7 @@ func testListcollectionsListcollections0(w http.ResponseWriter, req *http.Reques Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1listentities.go b/tests/mockserver/internal/handler/pathpostrestapiv1listentities.go index 51b67092..1c590174 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1listentities.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1listentities.go @@ -308,7 +308,7 @@ func testListentitiesListentities0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1listpins.go b/tests/mockserver/internal/handler/pathpostrestapiv1listpins.go index 5590107d..b23d7ae8 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1listpins.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1listpins.go @@ -316,7 +316,7 @@ func testListpinsListpins0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1listverifications.go b/tests/mockserver/internal/handler/pathpostrestapiv1listverifications.go index 4cec558e..243e4b83 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1listverifications.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1listverifications.go @@ -268,7 +268,7 @@ func testListverificationsListverifications0(w http.ResponseWriter, req *http.Re Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1messages.go b/tests/mockserver/internal/handler/pathpostrestapiv1messages.go index ec30c908..bbd8a470 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1messages.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1messages.go @@ -63,7 +63,7 @@ func testMessagesMessages0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, @@ -6603,7 +6603,7 @@ func testMessagesMessages0(w http.ResponseWriter, req *http.Request) { }, }, }, - GleanDataError: &components.GleanDataError{ + ErrorInfo: &components.GleanDataError{ ErrorMessages: []components.ErrorMessage{ components.ErrorMessage{ Source: types.String("gmail"), diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1people.go b/tests/mockserver/internal/handler/pathpostrestapiv1people.go index 5c63d19b..ac833cc8 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1people.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1people.go @@ -1616,7 +1616,7 @@ func testPeoplePeople0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1pin.go b/tests/mockserver/internal/handler/pathpostrestapiv1pin.go index 347e0bb1..b137a0a8 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1pin.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1pin.go @@ -328,7 +328,7 @@ func testPinPin0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1recommendations.go b/tests/mockserver/internal/handler/pathpostrestapiv1recommendations.go index d834c7b1..e9f511ab 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1recommendations.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1recommendations.go @@ -60,7 +60,7 @@ func testRecommendationsRecommendations0(w http.ResponseWriter, req *http.Reques Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1search.go b/tests/mockserver/internal/handler/pathpostrestapiv1search.go index f2fcf477..f3b2ae98 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1search.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1search.go @@ -60,7 +60,7 @@ func testSearchSearch0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, @@ -70,7 +70,7 @@ func testSearchSearch0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{}, }, }, - GleanDataError: &components.GleanDataError{ + ErrorInfo: &components.GleanDataError{ ErrorMessages: []components.ErrorMessage{ components.ErrorMessage{ Source: types.String("gmail"), diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1updateannouncement.go b/tests/mockserver/internal/handler/pathpostrestapiv1updateannouncement.go index 89382abe..88346511 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1updateannouncement.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1updateannouncement.go @@ -171,7 +171,7 @@ func testUpdateannouncementUpdateannouncement0(w http.ResponseWriter, req *http. Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1verify.go b/tests/mockserver/internal/handler/pathpostrestapiv1verify.go index 70b17e95..ab0824f9 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1verify.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1verify.go @@ -290,7 +290,7 @@ func testVerifyVerify0(w http.ResponseWriter, req *http.Request) { Snippets: []components.SearchResultSnippet{ components.SearchResultSnippet{ MimeType: types.String("mimeType"), - Snippet: "snippet", + Snippet: types.String("snippet"), }, }, }, diff --git a/tests/mockserver/internal/sdk/models/components/actionsummary.go b/tests/mockserver/internal/sdk/models/components/actionsummary.go index 587431e0..b2ab4884 100644 --- a/tests/mockserver/internal/sdk/models/components/actionsummary.go +++ b/tests/mockserver/internal/sdk/models/components/actionsummary.go @@ -8,6 +8,25 @@ type ActionSummary struct { ToolID string `json:"tool_id"` // The display name of the action. DisplayName string `json:"display_name"` + // The type of tool - RETRIEVAL for read-only operations, ACTION for operations that modify data. + Type *string `json:"type,omitempty"` + // The authentication type required - OAUTH_USER, OAUTH_ADMIN, API_KEY, BASIC_AUTH, DWD (domain-wide delegation), or NONE. + AuthType *string `json:"auth_type,omitempty"` + // For write actions only - REDIRECT (client renders URL) or EXECUTION (external server call). + WriteActionType *string `json:"write_action_type,omitempty"` + // Whether this action has been fully configured and validated. + IsSetupFinished *bool `json:"is_setup_finished,omitempty"` + // Indicates the kind of knowledge a tool would access or modify. + // Company knowledge: + // - Glean search, and any native tools that derive from it (e.g., expert search, code search) + // - Native federated tools to company data sources (e.g., outlook search) + // World knowledge: + // - Platform action like bravewebsearch, geminiwebsearch, etc + // Neutral knowledge: + // - Native tools that don't access or modify content via APIs (e.g., file analyst, think) + // - Platform read or write tools (creator has to determine their knowledge implications) + // + DataSource *string `json:"data_source,omitempty"` } func (o *ActionSummary) GetToolID() string { @@ -23,3 +42,38 @@ func (o *ActionSummary) GetDisplayName() string { } return o.DisplayName } + +func (o *ActionSummary) GetType() *string { + if o == nil { + return nil + } + return o.Type +} + +func (o *ActionSummary) GetAuthType() *string { + if o == nil { + return nil + } + return o.AuthType +} + +func (o *ActionSummary) GetWriteActionType() *string { + if o == nil { + return nil + } + return o.WriteActionType +} + +func (o *ActionSummary) GetIsSetupFinished() *bool { + if o == nil { + return nil + } + return o.IsSetupFinished +} + +func (o *ActionSummary) GetDataSource() *string { + if o == nil { + return nil + } + return o.DataSource +} diff --git a/tests/mockserver/internal/sdk/models/components/authconfig.go b/tests/mockserver/internal/sdk/models/components/authconfig.go index b1fc3f6b..d9dd9049 100644 --- a/tests/mockserver/internal/sdk/models/components/authconfig.go +++ b/tests/mockserver/internal/sdk/models/components/authconfig.go @@ -134,6 +134,8 @@ type AuthConfig struct { Audiences []string `json:"audiences,omitempty"` // The OAuth provider's endpoint, where access tokens are requested. AuthorizationURL *string `json:"authorization_url,omitempty"` + // The OAuth 2.0 Resource Indicator (RFC 8707) for the protected resource. Discovered from Protected Resource Metadata (RFC 9728) during DCR. Included in authorization and token exchange requests when present. + Resource *string `json:"resource,omitempty"` // The time the tool was last authorized in ISO format (ISO 8601). LastAuthorizedAt *time.Time `json:"lastAuthorizedAt,omitempty"` } @@ -212,6 +214,13 @@ func (o *AuthConfig) GetAuthorizationURL() *string { return o.AuthorizationURL } +func (o *AuthConfig) GetResource() *string { + if o == nil { + return nil + } + return o.Resource +} + func (o *AuthConfig) GetLastAuthorizedAt() *time.Time { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/autocompleteresponse.go b/tests/mockserver/internal/sdk/models/components/autocompleteresponse.go index 7e2ca2ff..b5b93358 100644 --- a/tests/mockserver/internal/sdk/models/components/autocompleteresponse.go +++ b/tests/mockserver/internal/sdk/models/components/autocompleteresponse.go @@ -10,8 +10,8 @@ type AutocompleteResponse struct { SessionInfo *SessionInfo `json:"sessionInfo,omitempty"` Results []AutocompleteResult `json:"results,omitempty"` // Subsections of the results list from which distinct sections should be created. - Groups []AutocompleteResultGroup `json:"groups,omitempty"` - GleanDataError *GleanDataError `json:"errorInfo,omitempty"` + Groups []AutocompleteResultGroup `json:"groups,omitempty"` + ErrorInfo *GleanDataError `json:"errorInfo,omitempty"` // Time in milliseconds the backend took to respond to the request. BackendTimeMillis *int64 `json:"backendTimeMillis,omitempty"` } @@ -51,11 +51,11 @@ func (o *AutocompleteResponse) GetGroups() []AutocompleteResultGroup { return o.Groups } -func (o *AutocompleteResponse) GetGleanDataError() *GleanDataError { +func (o *AutocompleteResponse) GetErrorInfo() *GleanDataError { if o == nil { return nil } - return o.GleanDataError + return o.ErrorInfo } func (o *AutocompleteResponse) GetBackendTimeMillis() *int64 { diff --git a/tests/mockserver/internal/sdk/models/components/chatresponse.go b/tests/mockserver/internal/sdk/models/components/chatresponse.go index 45b9a649..a6f51d28 100644 --- a/tests/mockserver/internal/sdk/models/components/chatresponse.go +++ b/tests/mockserver/internal/sdk/models/components/chatresponse.go @@ -13,9 +13,6 @@ type ChatResponse struct { BackendTimeMillis *int64 `json:"backendTimeMillis,omitempty"` // A token that is used to track the session. ChatSessionTrackingToken *string `json:"chatSessionTrackingToken,omitempty"` - // Datasource instances that could not be queried because the user has not completed or has expired per-user OAuth, aggregated across all tools invoked in this turn. - // - UnauthorizedDatasourceInstances []UnauthorizedDatasourceInstance `json:"unauthorizedDatasourceInstances,omitempty"` } func (o *ChatResponse) GetMessages() []ChatMessage { @@ -52,10 +49,3 @@ func (o *ChatResponse) GetChatSessionTrackingToken() *string { } return o.ChatSessionTrackingToken } - -func (o *ChatResponse) GetUnauthorizedDatasourceInstances() []UnauthorizedDatasourceInstance { - if o == nil { - return nil - } - return o.UnauthorizedDatasourceInstances -} diff --git a/tests/mockserver/internal/sdk/models/components/configurationvalue.go b/tests/mockserver/internal/sdk/models/components/configurationvalue.go new file mode 100644 index 00000000..f6fc2161 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/configurationvalue.go @@ -0,0 +1,25 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// ConfigurationValue - A single configuration value, either a scalar or a list +type ConfigurationValue struct { + // The configuration value as a string. Only one of value or valueList should be populated. + Value *string `json:"value,omitempty"` + // The configuration value as a list of strings. Only one of value or valueList should be populated. + ValueList []string `json:"valueList,omitempty"` +} + +func (o *ConfigurationValue) GetValue() *string { + if o == nil { + return nil + } + return o.Value +} + +func (o *ConfigurationValue) GetValueList() []string { + if o == nil { + return nil + } + return o.ValueList +} diff --git a/tests/mockserver/internal/sdk/models/components/datasourceconfigurationresponse.go b/tests/mockserver/internal/sdk/models/components/datasourceconfigurationresponse.go new file mode 100644 index 00000000..0453f9ea --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/datasourceconfigurationresponse.go @@ -0,0 +1,16 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// DatasourceConfigurationResponse - The greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist are included. +type DatasourceConfigurationResponse struct { + // Configuration for a datasource instance + Configuration DatasourceInstanceConfiguration `json:"configuration"` +} + +func (o *DatasourceConfigurationResponse) GetConfiguration() DatasourceInstanceConfiguration { + if o == nil { + return DatasourceInstanceConfiguration{} + } + return o.Configuration +} diff --git a/tests/mockserver/internal/sdk/models/components/datasourceinstanceconfiguration.go b/tests/mockserver/internal/sdk/models/components/datasourceinstanceconfiguration.go new file mode 100644 index 00000000..695fba51 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/datasourceinstanceconfiguration.go @@ -0,0 +1,16 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// DatasourceInstanceConfiguration - Configuration for a datasource instance +type DatasourceInstanceConfiguration struct { + // A map from configuration key names to their values + Values map[string]ConfigurationValue `json:"values"` +} + +func (o *DatasourceInstanceConfiguration) GetValues() map[string]ConfigurationValue { + if o == nil { + return map[string]ConfigurationValue{} + } + return o.Values +} diff --git a/tests/mockserver/internal/sdk/models/components/gleandataerror.go b/tests/mockserver/internal/sdk/models/components/gleandataerror.go index b984ddb7..d549ead5 100644 --- a/tests/mockserver/internal/sdk/models/components/gleandataerror.go +++ b/tests/mockserver/internal/sdk/models/components/gleandataerror.go @@ -12,9 +12,6 @@ type GleanDataError struct { ErrorMessages []ErrorMessage `json:"errorMessages,omitempty"` // Indicates the federated search results could not be fetched due to rate limiting. FederatedSearchRateLimitError *bool `json:"federatedSearchRateLimitError,omitempty"` - // Datasource instances that could not be queried because the user has not completed or has expired per-user OAuth. - // - UnauthorizedDatasourceInstances []UnauthorizedDatasourceInstance `json:"unauthorizedDatasourceInstances,omitempty"` } func (o *GleanDataError) GetBadGmailToken() *bool { @@ -51,10 +48,3 @@ func (o *GleanDataError) GetFederatedSearchRateLimitError() *bool { } return o.FederatedSearchRateLimitError } - -func (o *GleanDataError) GetUnauthorizedDatasourceInstances() []UnauthorizedDatasourceInstance { - if o == nil { - return nil - } - return o.UnauthorizedDatasourceInstances -} diff --git a/tests/mockserver/internal/sdk/models/components/inviteinfo.go b/tests/mockserver/internal/sdk/models/components/inviteinfo.go index 84469a16..18cac8b3 100644 --- a/tests/mockserver/internal/sdk/models/components/inviteinfo.go +++ b/tests/mockserver/internal/sdk/models/components/inviteinfo.go @@ -16,11 +16,11 @@ type InviteInfo struct { Inviter *Person `json:"inviter,omitempty"` // The time this person was invited in ISO format (ISO 8601). // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use ChannelInviteInfo instead. InviteTime *time.Time `json:"inviteTime,omitempty"` // The time this person was reminded in ISO format (ISO 8601) if a reminder was sent. // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use ChannelInviteInfo instead. ReminderTime *time.Time `json:"reminderTime,omitempty"` } diff --git a/tests/mockserver/internal/sdk/models/components/listchatsresponse.go b/tests/mockserver/internal/sdk/models/components/listchatsresponse.go index 9a646b6b..19ca70fc 100644 --- a/tests/mockserver/internal/sdk/models/components/listchatsresponse.go +++ b/tests/mockserver/internal/sdk/models/components/listchatsresponse.go @@ -4,6 +4,8 @@ package components type ListChatsResponse struct { ChatResults []ChatMetadataResult `json:"chatResults,omitempty"` + // An opaque cursor for fetching the next page of results. If empty, there are no more results. + Cursor *string `json:"cursor,omitempty"` } func (o *ListChatsResponse) GetChatResults() []ChatMetadataResult { @@ -12,3 +14,10 @@ func (o *ListChatsResponse) GetChatResults() []ChatMetadataResult { } return o.ChatResults } + +func (o *ListChatsResponse) GetCursor() *string { + if o == nil { + return nil + } + return o.Cursor +} diff --git a/tests/mockserver/internal/sdk/models/components/resultsresponse.go b/tests/mockserver/internal/sdk/models/components/resultsresponse.go index 903402c8..6fd3dbe0 100644 --- a/tests/mockserver/internal/sdk/models/components/resultsresponse.go +++ b/tests/mockserver/internal/sdk/models/components/resultsresponse.go @@ -9,7 +9,7 @@ type ResultsResponse struct { Results []SearchResult `json:"results,omitempty"` StructuredResults []StructuredResult `json:"structuredResults,omitempty"` GeneratedQnaResult *GeneratedQna `json:"generatedQnaResult,omitempty"` - GleanDataError *GleanDataError `json:"errorInfo,omitempty"` + ErrorInfo *GleanDataError `json:"errorInfo,omitempty"` // A platform-generated request ID to correlate backend logs. RequestID *string `json:"requestID,omitempty"` // Time in milliseconds the backend took to respond to the request. @@ -51,11 +51,11 @@ func (o *ResultsResponse) GetGeneratedQnaResult() *GeneratedQna { return o.GeneratedQnaResult } -func (o *ResultsResponse) GetGleanDataError() *GleanDataError { +func (o *ResultsResponse) GetErrorInfo() *GleanDataError { if o == nil { return nil } - return o.GleanDataError + return o.ErrorInfo } func (o *ResultsResponse) GetRequestID() *string { diff --git a/tests/mockserver/internal/sdk/models/components/searchresponse.go b/tests/mockserver/internal/sdk/models/components/searchresponse.go index 7da8d59a..a9cdbe0e 100644 --- a/tests/mockserver/internal/sdk/models/components/searchresponse.go +++ b/tests/mockserver/internal/sdk/models/components/searchresponse.go @@ -9,7 +9,7 @@ type SearchResponse struct { Results []SearchResult `json:"results,omitempty"` StructuredResults []StructuredResult `json:"structuredResults,omitempty"` GeneratedQnaResult *GeneratedQna `json:"generatedQnaResult,omitempty"` - GleanDataError *GleanDataError `json:"errorInfo,omitempty"` + ErrorInfo *GleanDataError `json:"errorInfo,omitempty"` // A platform-generated request ID to correlate backend logs. RequestID *string `json:"requestID,omitempty"` // Time in milliseconds the backend took to respond to the request. @@ -66,11 +66,11 @@ func (o *SearchResponse) GetGeneratedQnaResult() *GeneratedQna { return o.GeneratedQnaResult } -func (o *SearchResponse) GetGleanDataError() *GleanDataError { +func (o *SearchResponse) GetErrorInfo() *GleanDataError { if o == nil { return nil } - return o.GleanDataError + return o.ErrorInfo } func (o *SearchResponse) GetRequestID() *string { diff --git a/tests/mockserver/internal/sdk/models/components/searchresultsnippet.go b/tests/mockserver/internal/sdk/models/components/searchresultsnippet.go index 8f7d3660..b131c899 100644 --- a/tests/mockserver/internal/sdk/models/components/searchresultsnippet.go +++ b/tests/mockserver/internal/sdk/models/components/searchresultsnippet.go @@ -19,8 +19,8 @@ type SearchResultSnippet struct { URL *string `json:"url,omitempty"` // A matching snippet from the document. Query term matches are marked by the unicode characters uE006 and uE007. Use 'text' field instead. // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. - Snippet string `json:"snippet"` + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use 'text' field instead. + Snippet *string `json:"snippet,omitempty"` } func (s SearchResultSnippet) MarshalJSON() ([]byte, error) { @@ -28,7 +28,7 @@ func (s SearchResultSnippet) MarshalJSON() ([]byte, error) { } func (s *SearchResultSnippet) UnmarshalJSON(data []byte) error { - if err := utils.UnmarshalJSON(data, &s, "", false, []string{"snippet"}); err != nil { + if err := utils.UnmarshalJSON(data, &s, "", false, nil); err != nil { return err } return nil @@ -69,9 +69,9 @@ func (o *SearchResultSnippet) GetURL() *string { return o.URL } -func (o *SearchResultSnippet) GetSnippet() string { +func (o *SearchResultSnippet) GetSnippet() *string { if o == nil { - return "" + return nil } return o.Snippet } diff --git a/tests/mockserver/internal/sdk/models/components/updatedatasourceconfigurationrequest.go b/tests/mockserver/internal/sdk/models/components/updatedatasourceconfigurationrequest.go new file mode 100644 index 00000000..07beb967 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/updatedatasourceconfigurationrequest.go @@ -0,0 +1,16 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// UpdateDatasourceConfigurationRequest - Request to update greenlisted configuration values for a datasource instance. Only keys that are exposed via the public API greenlist may be set. +type UpdateDatasourceConfigurationRequest struct { + // Configuration for a datasource instance + Configuration DatasourceInstanceConfiguration `json:"configuration"` +} + +func (o *UpdateDatasourceConfigurationRequest) GetConfiguration() DatasourceInstanceConfiguration { + if o == nil { + return DatasourceInstanceConfiguration{} + } + return o.Configuration +} diff --git a/tests/mockserver/internal/sdk/models/operations/getdatasourceinstanceconfiguration.go b/tests/mockserver/internal/sdk/models/operations/getdatasourceinstanceconfiguration.go new file mode 100644 index 00000000..515b849f --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/getdatasourceinstanceconfiguration.go @@ -0,0 +1,48 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type GetDatasourceInstanceConfigurationRequest struct { + // The datasource type identifier (e.g. o365sharepoint) + DatasourceID string `pathParam:"style=simple,explode=false,name=datasourceId"` + // The datasource instance identifier + InstanceID string `pathParam:"style=simple,explode=false,name=instanceId"` +} + +func (o *GetDatasourceInstanceConfigurationRequest) GetDatasourceID() string { + if o == nil { + return "" + } + return o.DatasourceID +} + +func (o *GetDatasourceInstanceConfigurationRequest) GetInstanceID() string { + if o == nil { + return "" + } + return o.InstanceID +} + +type GetDatasourceInstanceConfigurationResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + DatasourceConfigurationResponse *components.DatasourceConfigurationResponse +} + +func (o *GetDatasourceInstanceConfigurationResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *GetDatasourceInstanceConfigurationResponse) GetDatasourceConfigurationResponse() *components.DatasourceConfigurationResponse { + if o == nil { + return nil + } + return o.DatasourceConfigurationResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/updatedatasourceinstanceconfiguration.go b/tests/mockserver/internal/sdk/models/operations/updatedatasourceinstanceconfiguration.go new file mode 100644 index 00000000..b8568c63 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/updatedatasourceinstanceconfiguration.go @@ -0,0 +1,56 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type UpdateDatasourceInstanceConfigurationRequest struct { + // The datasource type identifier (e.g. o365sharepoint) + DatasourceID string `pathParam:"style=simple,explode=false,name=datasourceId"` + // The datasource instance identifier + InstanceID string `pathParam:"style=simple,explode=false,name=instanceId"` + Body components.UpdateDatasourceConfigurationRequest `request:"mediaType=application/json"` +} + +func (o *UpdateDatasourceInstanceConfigurationRequest) GetDatasourceID() string { + if o == nil { + return "" + } + return o.DatasourceID +} + +func (o *UpdateDatasourceInstanceConfigurationRequest) GetInstanceID() string { + if o == nil { + return "" + } + return o.InstanceID +} + +func (o *UpdateDatasourceInstanceConfigurationRequest) GetBody() components.UpdateDatasourceConfigurationRequest { + if o == nil { + return components.UpdateDatasourceConfigurationRequest{} + } + return o.Body +} + +type UpdateDatasourceInstanceConfigurationResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + DatasourceConfigurationResponse *components.DatasourceConfigurationResponse +} + +func (o *UpdateDatasourceInstanceConfigurationResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *UpdateDatasourceInstanceConfigurationResponse) GetDatasourceConfigurationResponse() *components.DatasourceConfigurationResponse { + if o == nil { + return nil + } + return o.DatasourceConfigurationResponse +} diff --git a/tests/mockserver/internal/sdk/models/sdkerrors/errorresponse.go b/tests/mockserver/internal/sdk/models/sdkerrors/errorresponse.go new file mode 100644 index 00000000..a3f04453 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/sdkerrors/errorresponse.go @@ -0,0 +1,22 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package sdkerrors + +import ( + "encoding/json" + "mockserver/internal/sdk/models/components" +) + +// ErrorResponse - Error response returned for failed requests +type ErrorResponse struct { + // Client-facing error message describing what went wrong + Message *string `json:"message,omitempty"` + HTTPMeta components.HTTPMetadata `json:"-"` +} + +var _ error = &ErrorResponse{} + +func (e *ErrorResponse) Error() string { + data, _ := json.Marshal(e) + return string(data) +} diff --git a/tests/mockserver/internal/sdk/models/sdkerrors/gleandataerror.go b/tests/mockserver/internal/sdk/models/sdkerrors/gleandataerror.go index 8e203ca2..05af2574 100644 --- a/tests/mockserver/internal/sdk/models/sdkerrors/gleandataerror.go +++ b/tests/mockserver/internal/sdk/models/sdkerrors/gleandataerror.go @@ -16,11 +16,8 @@ type GleanDataError struct { InvalidOperators []components.InvalidOperatorValueError `json:"invalidOperators,omitempty"` ErrorMessages []components.ErrorMessage `json:"errorMessages,omitempty"` // Indicates the federated search results could not be fetched due to rate limiting. - FederatedSearchRateLimitError *bool `json:"federatedSearchRateLimitError,omitempty"` - // Datasource instances that could not be queried because the user has not completed or has expired per-user OAuth. - // - UnauthorizedDatasourceInstances []components.UnauthorizedDatasourceInstance `json:"unauthorizedDatasourceInstances,omitempty"` - HTTPMeta components.HTTPMetadata `json:"-"` + FederatedSearchRateLimitError *bool `json:"federatedSearchRateLimitError,omitempty"` + HTTPMeta components.HTTPMetadata `json:"-"` } var _ error = &GleanDataError{} diff --git a/tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go b/tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go new file mode 100644 index 00000000..bdf1155c --- /dev/null +++ b/tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go @@ -0,0 +1,250 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package optionalnullable + +import ( + "bytes" + "encoding/json" + "reflect" +) + +// OptionalNullable represents a field that can distinguish between three states: +// 1. Set to a value: field is present with a non-nil value +// 2. Set to nil: field is present but explicitly set to null in JSON +// 3. Unset: field is omitted from JSON entirely +// +// This type is designed to work with JSON marshaling/unmarshaling and supports +// the `omitempty` struct tag to properly omit unset fields from JSON output. +// +// Usage: +// +// type User struct { +// Name OptionalNullable[string] `json:"name,omitempty"` +// Age OptionalNullable[int] `json:"age,omitempty"` +// Tags OptionalNullable[[]string] `json:"tags,omitempty"` +// } +// +// // Set to value +// user.Name = FromVal("John") +// +// // Set to value (pointer form) +// name := "John" +// user.Name = From(&name) +// +// // Set to nil (will appear as "name": null in JSON) +// user.Name = From[string](nil) +// +// // Leave unset (will be omitted from JSON with omitempty) +// user := User{} +// +// WARNING: Do NOT use *OptionalNullable[T] as a field type. Always use OptionalNullable[T] directly. +// Using *OptionalNullable[T] will break the omitempty behavior and JSON marshaling. +// +// The type is implemented as a map[bool]*T where: +// - nil map represents unset state +// - Map with true key represents set state (value may be nil) +type OptionalNullable[T any] map[bool]*T + +// From creates a new OptionalNullable with the given value. +// Pass nil to create a OptionalNullable that is set to null. +// Pass a pointer to a value to create a OptionalNullable with that value. +// +// Examples: +// +// hello := "hello" +// From(&hello) // set to "hello" +// From[string](nil) // set to null +func From[T any](value *T) OptionalNullable[T] { + return map[bool]*T{ + true: value, + } +} + +// FromVal creates a new OptionalNullable set to the given value. +// This is a convenience constructor that avoids needing to create +// a temporary variable and take its address. +// +// Examples: +// +// FromVal("hello") // set to "hello" +// FromVal(42) // set to 42 +func FromVal[T any](value T) OptionalNullable[T] { + return map[bool]*T{ + true: &value, + } +} + +// IsNull returns true if the OptionalNullable is explicitly set to nil. +// Returns false if the OptionalNullable is unset or has a value. +// +// Note: This differs from traditional null checks because unset fields +// return false, not true. Use IsSet() to check if a field was provided. +func (n OptionalNullable[T]) IsNull() bool { + v, ok := n[true] + return ok && v == nil +} + +// IsSet returns true if the OptionalNullable has been explicitly set (to either a value or nil). +// Returns false if the OptionalNullable is unset (omitted from JSON). +// +// This is the key method for distinguishing between: +// - Set to nil: IsSet() = true, IsNull() = true +// - Unset: IsSet() = false, IsNull() = false +func (n OptionalNullable[T]) IsSet() bool { + _, ok := n[true] + return ok +} + +// Get returns the internal pointer and whether the field was set. +// +// Return values: +// - (ptr, true): field was set (ptr may be nil if set to null) +// - (nil, false): field was unset/omitted +// +// This method provides direct access to the internal pointer representation. +func (n OptionalNullable[T]) Get() (*T, bool) { + v, ok := n[true] + return v, ok +} + +// GetOrZero returns the value and whether it was set. +// +// Return values: +// - (value, true): field was set to a non-nil value +// - (zero, true): field was explicitly set to nil +// - (zero, false): field was unset/omitted +// +// Examples: +// +// val, ok := nullable.GetOrZero() +// if !ok { +// // Field was unset/omitted +// } else if nullable.IsNull() { +// // Field was explicitly set to null +// } else { +// // Field has a value: val +// } +func (n OptionalNullable[T]) GetOrZero() (T, bool) { + var zero T + + if v, ok := n[true]; ok { + if v == nil { + return zero, true + } + return *v, true + } + return zero, false +} + +// GetUntyped returns the value as interface{} and whether it was set. +// This is useful for reflection-based code that needs to work with the value +// without knowing the specific type T. +// +// Return values: +// - (value, true): field was set to a non-nil value +// - (nil, true): field was explicitly set to nil +// - (nil, false): field was unset/omitted +func (n OptionalNullable[T]) GetUntyped() (interface{}, bool) { + if v, ok := n[true]; ok { + if v == nil { + return nil, true + } + return *v, true + } + return nil, false +} + +// Set sets the OptionalNullable to the given value pointer. +// Pass nil to set the field to null. +// Pass a pointer to a value to set the field to that value. +// +// Examples: +// +// nullable.Set(ptrFrom("hello")) // set to "hello" +// nullable.Set(nil) // set to null +func (n *OptionalNullable[T]) Set(value *T) { + *n = map[bool]*T{ + true: value, + } +} + +// Unset removes the value, making the field unset/omitted. +// After calling Unset(), IsSet() will return false and the field +// will be omitted from JSON output when using omitempty. +func (n *OptionalNullable[T]) Unset() { + *n = map[bool]*T{} +} + +// MarshalJSON implements json.Marshaler. +// +// Behavior: +// - Unset fields: omitted from JSON when struct field has omitempty tag +// - Null fields: serialized as "null" +// - Value fields: serialized as the actual value +// +// The omitempty behavior works because an empty map is considered +// a zero value by Go's JSON package. +func (n OptionalNullable[T]) MarshalJSON() ([]byte, error) { + if n.IsNull() { + return []byte("null"), nil + } + + return json.Marshal(n[true]) +} + +// UnmarshalJSON implements json.Unmarshaler. +// +// Behavior: +// - "null" in JSON: sets the field to null (IsSet=true, IsNull=true) +// - Any other value: sets the field to that value (IsSet=true, IsNull=false) +// - Missing from JSON: field remains unset (IsSet=false, IsNull=false) +func (n *OptionalNullable[T]) UnmarshalJSON(data []byte) error { + if bytes.Equal(data, []byte("null")) { + n.Set(nil) + return nil + } + var v T + if err := json.Unmarshal(data, &v); err != nil { + return err + } + n.Set(&v) + return nil +} + +// NullableInterface defines the interface that all OptionalNullable[T] types implement. +// This interface provides untyped access to optional nullable values for reflection-based code. +type OptionalNullableInterface interface { + GetUntyped() (interface{}, bool) +} + +// AsOptionalNullable attempts to convert a reflect.Value to a OptionalNullableInterface. +// This is a helper function for reflection-based code that needs to check +// if a value implements the optional nullable interface pattern. +// +// Returns: +// - (nullable, true): if the value implements OptionalNullableInterface +// - (nil, false): if the value does not implement OptionalNullableInterface +// +// Example usage: +// +// if nullable, ok := AsOptionalNullable(reflectValue); ok { +// if value, isSet := nullable.GetUntyped(); isSet { +// // Handle the nullable value +// } +// } +func AsOptionalNullable(v reflect.Value) (OptionalNullableInterface, bool) { + // Check if the value can be converted to an interface first + if !v.CanInterface() { + return nil, false + } + + // Check if the underlying value is a nil map (unset nullable) + if v.Kind() == reflect.Map && v.IsNil() { + return nil, false + } + + if nullable, ok := v.Interface().(OptionalNullableInterface); ok { + return nullable, true + } + return nil, false +} diff --git a/tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go b/tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go new file mode 100644 index 00000000..52fb11f9 --- /dev/null +++ b/tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go @@ -0,0 +1,1859 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package optionalnullable + +import ( + "encoding/json" + "reflect" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +// Test helper function to create pointers from values +func ptrFrom[T any](value T) *T { + return &value +} + +// Test helper types for comprehensive testing +type TestStruct struct { + Name string `json:"name"` + Age int `json:"age"` +} + +type TestContainer struct { + StringField OptionalNullable[string] `json:"string_field,omitempty"` + IntField OptionalNullable[int] `json:"int_field,omitempty"` + SliceField OptionalNullable[[]string] `json:"slice_field,omitempty"` + StructField OptionalNullable[TestStruct] `json:"struct_field,omitempty"` +} + +// TestNewNullable tests the From constructor +func TestNewNullable(t *testing.T) { + t.Parallel() + t.Run("with string value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "test", got) + }) + + t.Run("with nil pointer", func(t *testing.T) { + t.Parallel() + nullable := From[string](nil) + + assert.True(t, nullable.IsSet()) + assert.True(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "", got) // zero value for string + }) + + t.Run("with int value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom(42)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, 42, got) + }) + + t.Run("with slice value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom([]string{"a", "b", "c"})) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{"a", "b", "c"}, got) + }) + + t.Run("with empty slice", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom([]string{})) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{}, got) + }) + + t.Run("with struct value", func(t *testing.T) { + t.Parallel() + val := TestStruct{Name: "John", Age: 30} + nullable := From(&val) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + v, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, val, v) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, TestStruct{Name: "John", Age: 30}, got) + }) +} + +// TestFromVal tests the FromVal constructor +func TestFromVal(t *testing.T) { + t.Parallel() + t.Run("with string value", func(t *testing.T) { + t.Parallel() + nullable := FromVal("hello") + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "hello", got) + }) + + t.Run("with int value", func(t *testing.T) { + t.Parallel() + nullable := FromVal(42) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, 42, got) + }) + + t.Run("with struct value", func(t *testing.T) { + t.Parallel() + val := TestStruct{Name: "John", Age: 30} + nullable := FromVal(val) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, val, got) + }) + + t.Run("with zero value", func(t *testing.T) { + t.Parallel() + nullable := FromVal("") + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "", got) + }) +} + +// TestNewNullableUnset tests the NewNullableUnset constructor +func TestNewNullableUnset(t *testing.T) { + t.Parallel() + t.Run("string type", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + + assert.False(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) // Unset is not null + + got, ok := nullable.GetOrZero() + assert.False(t, ok) + assert.Equal(t, "", got) // zero value for string + }) + + t.Run("int type", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[int] + + assert.False(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) // Unset is not null + + got, ok := nullable.GetOrZero() + assert.False(t, ok) + assert.Equal(t, 0, got) // zero value for int + }) + + t.Run("slice type", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[[]string] + + assert.False(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) // Unset is not null + + got, ok := nullable.GetOrZero() + assert.False(t, ok) + assert.Nil(t, got) // zero value for slice is nil + }) +} + +// TestIsNull tests the IsNull method +func TestIsNull(t *testing.T) { + t.Parallel() + t.Run("with value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + assert.False(t, nullable.IsNull()) + }) + + t.Run("with nil pointer", func(t *testing.T) { + t.Parallel() + nullable := From[string](nil) + assert.True(t, nullable.IsNull()) + }) + + t.Run("unset", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + assert.False(t, nullable.IsNull()) + }) +} + +// TestIsSet tests the IsSet method +func TestIsSet(t *testing.T) { + t.Parallel() + t.Run("with value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + assert.True(t, nullable.IsSet()) + }) + + t.Run("with nil pointer", func(t *testing.T) { + t.Parallel() + nullable := From[string](nil) + assert.True(t, nullable.IsSet()) + }) + + t.Run("unset", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + assert.False(t, nullable.IsSet()) + }) +} + +// TestGet tests the Get method +func TestGet(t *testing.T) { + t.Parallel() + t.Run("with string value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "test", got) + }) + + t.Run("with nil pointer", func(t *testing.T) { + t.Parallel() + nullable := From[string](nil) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "", got) // zero value + }) + + t.Run("unset", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + + got, ok := nullable.GetOrZero() + assert.False(t, ok) + assert.Equal(t, "", got) // zero value + }) + + t.Run("with slice value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom([]string{"a", "b"})) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{"a", "b"}, got) + }) + + t.Run("with nil slice pointer", func(t *testing.T) { + t.Parallel() + nullable := From[[]string](nil) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Nil(t, got) // zero value for slice is nil + }) +} + +// TestPointer tests the Pointer method +func TestPointer(t *testing.T) { + t.Parallel() + t.Run("with value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + + ptr, ok := nullable.Get() + assert.True(t, ok) + assert.NotNil(t, ptr) + assert.Equal(t, "test", *ptr) + }) + + t.Run("with nil pointer", func(t *testing.T) { + t.Parallel() + nullable := From[string](nil) + + ptr, ok := nullable.Get() + assert.True(t, ok) + assert.Nil(t, ptr) + }) + + t.Run("unset", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + + ptr, ok := nullable.Get() + assert.False(t, ok) + assert.Nil(t, ptr) + }) +} + +// TestSet tests the Set method +func TestSet(t *testing.T) { + t.Parallel() + t.Run("set string value", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + + // Initially unset + assert.False(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) // Unset is not null + + // Set a value + nullable.Set(ptrFrom("test")) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "test", got) + }) + + t.Run("set int value", func(t *testing.T) { + t.Parallel() + nullable := OptionalNullable[int]{} + + nullable.Set(ptrFrom(42)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, 42, got) + }) + + t.Run("set slice value", func(t *testing.T) { + t.Parallel() + nullable := OptionalNullable[[]string]{} + + slice := []string{"a", "b"} + nullable.Set(ptrFrom(slice)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{"a", "b"}, got) + }) + + t.Run("set empty slice", func(t *testing.T) { + t.Parallel() + nullable := OptionalNullable[[]string]{} + + slice := []string{} + nullable.Set(ptrFrom(slice)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{}, got) + }) + + t.Run("overwrite existing value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("original")) + + // Verify original value + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "original", got) + + // Set new value + nullable.Set(ptrFrom("new")) + + got, ok = nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "new", got) + }) +} + +// TestUnset tests the Unset method +func TestUnset(t *testing.T) { + t.Parallel() + t.Run("unset from value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + + // Initially set + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + // Unset + nullable.Unset() + + assert.False(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) // After unset is not null + // Value is now internal to the map implementation + + got, ok := nullable.GetOrZero() + assert.False(t, ok) + assert.Equal(t, "", got) // zero value + }) + + t.Run("unset from nil", func(t *testing.T) { + t.Parallel() + nullable := From[string](nil) + + // Initially set to nil + assert.True(t, nullable.IsSet()) + assert.True(t, nullable.IsNull()) // Set to nil should be null + + // Unset + nullable.Unset() + + assert.False(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) // After unset is not null + }) + + t.Run("unset already unset", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + + // Initially unset + assert.False(t, nullable.IsSet()) + + // Unset again + nullable.Unset() + + assert.False(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) // Empty map is not null + }) +} + +// TestMarshalJSON tests JSON marshaling +func TestMarshalJSON(t *testing.T) { + t.Parallel() + t.Run("marshal string value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + + data, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, `"test"`, string(data)) + }) + + t.Run("marshal int value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom(42)) + + data, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, `42`, string(data)) + }) + + t.Run("marshal nil value", func(t *testing.T) { + t.Parallel() + nullable := From[string](nil) + + data, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, `null`, string(data)) + }) + + t.Run("marshal slice value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom([]string{"a", "b", "c"})) + + data, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, `["a","b","c"]`, string(data)) + }) + + t.Run("marshal empty slice", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom([]string{})) + + data, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, `[]`, string(data)) + }) + + t.Run("marshal struct value", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom(TestStruct{Name: "John", Age: 30})) + + data, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, `{"name":"John","age":30}`, string(data)) + }) + + // Note: Unset values are not tested here because the current implementation + // doesn't handle unset fields in marshaling (see TODO in the code) +} + +// TestUnmarshalJSON tests JSON unmarshaling +func TestUnmarshalJSON(t *testing.T) { + t.Parallel() + t.Run("unmarshal string value", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + err := json.Unmarshal([]byte(`"test"`), &nullable) + require.NoError(t, err) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "test", got) + }) + + t.Run("unmarshal int value", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[int] + err := json.Unmarshal([]byte(`42`), &nullable) + require.NoError(t, err) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, 42, got) + }) + + t.Run("unmarshal null value", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + err := json.Unmarshal([]byte(`null`), &nullable) + require.NoError(t, err) + + assert.True(t, nullable.IsSet()) + assert.True(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "", got) // zero value + }) + + t.Run("unmarshal slice value", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[[]string] + err := json.Unmarshal([]byte(`["a","b","c"]`), &nullable) + require.NoError(t, err) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{"a", "b", "c"}, got) + }) + + t.Run("unmarshal empty slice", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[[]string] + err := json.Unmarshal([]byte(`[]`), &nullable) + require.NoError(t, err) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{}, got) + }) + + t.Run("unmarshal struct value", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[TestStruct] + err := json.Unmarshal([]byte(`{"name":"John","age":30}`), &nullable) + require.NoError(t, err) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, TestStruct{Name: "John", Age: 30}, got) + }) + + t.Run("unmarshal invalid JSON", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + err := json.Unmarshal([]byte(`invalid`), &nullable) + assert.Error(t, err) + + // Ensure the nullable remains unset after error + assert.False(t, nullable.IsSet()) + }) + + t.Run("unmarshal invalid JSON for int", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[int] + err := json.Unmarshal([]byte(`"not_a_number"`), &nullable) + assert.Error(t, err) + + // Ensure the nullable remains unset after error + assert.False(t, nullable.IsSet()) + }) + + t.Run("unmarshal malformed JSON", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[TestStruct] + err := json.Unmarshal([]byte(`{invalid json`), &nullable) + assert.Error(t, err) + + // Ensure the nullable remains unset after error + assert.False(t, nullable.IsSet()) + }) +} + +// TestJSONRoundTrip tests marshaling and unmarshaling together +func TestJSONRoundTrip(t *testing.T) { + t.Parallel() + t.Run("string value round trip", func(t *testing.T) { + t.Parallel() + nullable1 := From(ptrFrom("test value")) + + // Marshal + data, err := json.Marshal(nullable1) + require.NoError(t, err) + + // Unmarshal + var nullable2 OptionalNullable[string] + err = json.Unmarshal(data, &nullable2) + require.NoError(t, err) + + // Compare + assert.Equal(t, nullable1.IsSet(), nullable2.IsSet()) + assert.Equal(t, nullable1.IsNull(), nullable2.IsNull()) + + got1, ok1 := nullable1.GetOrZero() + got2, ok2 := nullable2.GetOrZero() + assert.Equal(t, ok1, ok2) + assert.Equal(t, got1, got2) + }) + + t.Run("nil value round trip", func(t *testing.T) { + t.Parallel() + nullable1 := From[string](nil) + + // Marshal + data, err := json.Marshal(nullable1) + require.NoError(t, err) + + // Unmarshal + var nullable2 OptionalNullable[string] + err = json.Unmarshal(data, &nullable2) + require.NoError(t, err) + + // Compare + assert.Equal(t, nullable1.IsSet(), nullable2.IsSet()) + assert.Equal(t, nullable1.IsNull(), nullable2.IsNull()) + + got1, ok1 := nullable1.GetOrZero() + got2, ok2 := nullable2.GetOrZero() + assert.Equal(t, ok1, ok2) + assert.Equal(t, got1, got2) + }) + + t.Run("slice round trip", func(t *testing.T) { + t.Parallel() + nullable1 := From(ptrFrom([]string{"a", "b", "c"})) + + // Marshal + data, err := json.Marshal(nullable1) + require.NoError(t, err) + + // Unmarshal + var nullable2 OptionalNullable[[]string] + err = json.Unmarshal(data, &nullable2) + require.NoError(t, err) + + // Compare + assert.Equal(t, nullable1.IsSet(), nullable2.IsSet()) + assert.Equal(t, nullable1.IsNull(), nullable2.IsNull()) + + got1, ok1 := nullable1.GetOrZero() + got2, ok2 := nullable2.GetOrZero() + assert.Equal(t, ok1, ok2) + assert.Equal(t, got1, got2) + }) +} + +// TestJSONToJSONRoundTrip tests starting with JSON and ensuring we can serialize back to the same JSON +func TestJSONToJSONRoundTrip(t *testing.T) { + t.Parallel() + t.Run("string value JSON round trip", func(t *testing.T) { + t.Parallel() + originalJSON := `"hello world"` + + // Unmarshal from JSON + var nullable OptionalNullable[string] + err := json.Unmarshal([]byte(originalJSON), &nullable) + require.NoError(t, err) + + // Verify state + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "hello world", got) + + // Marshal back to JSON + resultJSON, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, originalJSON, string(resultJSON)) + }) + + t.Run("null value JSON round trip", func(t *testing.T) { + t.Parallel() + originalJSON := `null` + + // Unmarshal from JSON + var nullable OptionalNullable[string] + err := json.Unmarshal([]byte(originalJSON), &nullable) + require.NoError(t, err) + + // Verify state + assert.True(t, nullable.IsSet()) + assert.True(t, nullable.IsNull()) + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "", got) // zero value + + // Marshal back to JSON + resultJSON, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, originalJSON, string(resultJSON)) + }) + + t.Run("int value JSON round trip", func(t *testing.T) { + t.Parallel() + originalJSON := `42` + + // Unmarshal from JSON + var nullable OptionalNullable[int] + err := json.Unmarshal([]byte(originalJSON), &nullable) + require.NoError(t, err) + + // Verify state + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, 42, got) + + // Marshal back to JSON + resultJSON, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, originalJSON, string(resultJSON)) + }) + + t.Run("slice value JSON round trip", func(t *testing.T) { + t.Parallel() + originalJSON := `["a","b","c"]` + + // Unmarshal from JSON + var nullable OptionalNullable[[]string] + err := json.Unmarshal([]byte(originalJSON), &nullable) + require.NoError(t, err) + + // Verify state + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{"a", "b", "c"}, got) + + // Marshal back to JSON + resultJSON, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, originalJSON, string(resultJSON)) + }) + + t.Run("empty slice JSON round trip", func(t *testing.T) { + t.Parallel() + originalJSON := `[]` + + // Unmarshal from JSON + var nullable OptionalNullable[[]string] + err := json.Unmarshal([]byte(originalJSON), &nullable) + require.NoError(t, err) + + // Verify state + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{}, got) + + // Marshal back to JSON + resultJSON, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, originalJSON, string(resultJSON)) + }) + + t.Run("struct value JSON round trip", func(t *testing.T) { + t.Parallel() + originalJSON := `{"name":"Alice","age":25}` + + // Unmarshal from JSON + var nullable OptionalNullable[TestStruct] + err := json.Unmarshal([]byte(originalJSON), &nullable) + require.NoError(t, err) + + // Verify state + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, TestStruct{Name: "Alice", Age: 25}, got) + + // Marshal back to JSON + resultJSON, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, originalJSON, string(resultJSON)) + }) +} + +// TestContainerStates tests comprehensive state detection and serialization with TestContainer +func TestContainerStates(t *testing.T) { + t.Parallel() + t.Run("all fields set to values", func(t *testing.T) { + t.Parallel() + container := TestContainer{ + StringField: From(ptrFrom("hello")), + IntField: From(ptrFrom(42)), + SliceField: From(ptrFrom([]string{"a", "b"})), + StructField: From(ptrFrom(TestStruct{Name: "John", Age: 30})), + } + + // Verify all fields are set and not null + assert.True(t, container.StringField.IsSet()) + assert.False(t, container.StringField.IsNull()) + assert.True(t, container.IntField.IsSet()) + assert.False(t, container.IntField.IsNull()) + assert.True(t, container.SliceField.IsSet()) + assert.False(t, container.SliceField.IsNull()) + assert.True(t, container.StructField.IsSet()) + assert.False(t, container.StructField.IsNull()) + + // Verify values + stringVal, ok := container.StringField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "hello", stringVal) + + intVal, ok := container.IntField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, 42, intVal) + + sliceVal, ok := container.SliceField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{"a", "b"}, sliceVal) + + structVal, ok := container.StructField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, TestStruct{Name: "John", Age: 30}, structVal) + + // Test JSON serialization + data, err := json.Marshal(container) + require.NoError(t, err) + + var result map[string]interface{} + err = json.Unmarshal(data, &result) + require.NoError(t, err) + + assert.Equal(t, "hello", result["string_field"]) + assert.Equal(t, float64(42), result["int_field"]) // JSON numbers are float64 + assert.Equal(t, []interface{}{"a", "b"}, result["slice_field"]) + structResult := result["struct_field"].(map[string]interface{}) + assert.Equal(t, "John", structResult["name"]) + assert.Equal(t, float64(30), structResult["age"]) + }) + + t.Run("all fields set to nil", func(t *testing.T) { + t.Parallel() + container := TestContainer{ + StringField: From[string](nil), + IntField: From[int](nil), + SliceField: From[[]string](nil), + StructField: From[TestStruct](nil), + } + + // Verify all fields are set but null + assert.True(t, container.StringField.IsSet()) + assert.True(t, container.StringField.IsNull()) + assert.True(t, container.IntField.IsSet()) + assert.True(t, container.IntField.IsNull()) + assert.True(t, container.SliceField.IsSet()) + assert.True(t, container.SliceField.IsNull()) + assert.True(t, container.StructField.IsSet()) + assert.True(t, container.StructField.IsNull()) + + // Verify GetOrZero() behavior for nil values + stringVal, ok := container.StringField.GetOrZero() + assert.True(t, ok) // set to nil still returns true + assert.Equal(t, "", stringVal) // zero value + + intVal, ok := container.IntField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, 0, intVal) // zero value + + sliceVal, ok := container.SliceField.GetOrZero() + assert.True(t, ok) + assert.Nil(t, sliceVal) // zero value for slice is nil + + structVal, ok := container.StructField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, TestStruct{}, structVal) // zero value + + // Test JSON serialization - all should be null + data, err := json.Marshal(container) + require.NoError(t, err) + + var result map[string]interface{} + err = json.Unmarshal(data, &result) + require.NoError(t, err) + + assert.Nil(t, result["string_field"]) + assert.Nil(t, result["int_field"]) + assert.Nil(t, result["slice_field"]) + assert.Nil(t, result["struct_field"]) + }) + + t.Run("all fields unset", func(t *testing.T) { + t.Parallel() + container := TestContainer{} + + // Verify all fields are unset + assert.False(t, container.StringField.IsSet()) + assert.False(t, container.StringField.IsNull()) // unset is not null in new implementation + assert.False(t, container.IntField.IsSet()) + assert.False(t, container.IntField.IsNull()) + assert.False(t, container.SliceField.IsSet()) + assert.False(t, container.SliceField.IsNull()) + assert.False(t, container.StructField.IsSet()) + assert.False(t, container.StructField.IsNull()) + + // Verify GetOrZero() behavior for unset values + stringVal, ok := container.StringField.GetOrZero() + assert.False(t, ok) // unset returns false + assert.Equal(t, "", stringVal) // zero value + + intVal, ok := container.IntField.GetOrZero() + assert.False(t, ok) + assert.Equal(t, 0, intVal) // zero value + + sliceVal, ok := container.SliceField.GetOrZero() + assert.False(t, ok) + assert.Nil(t, sliceVal) // zero value + + structVal, ok := container.StructField.GetOrZero() + assert.False(t, ok) + assert.Equal(t, TestStruct{}, structVal) // zero value + + // Test JSON serialization - unset fields should be omitted due to omitempty + data, err := json.Marshal(container) + require.NoError(t, err) + + var result map[string]interface{} + err = json.Unmarshal(data, &result) + require.NoError(t, err) + + // With omitempty, unset fields should not appear in JSON + assert.NotContains(t, result, "string_field") + assert.NotContains(t, result, "int_field") + assert.NotContains(t, result, "slice_field") + assert.NotContains(t, result, "struct_field") + }) + + t.Run("slice field states: nil vs unset vs empty vs set", func(t *testing.T) { + t.Parallel() + // Test all possible slice states + nilSlice := TestContainer{ + SliceField: From[[]string](nil), // explicitly set to nil + } + unsetSlice := TestContainer{} // unset + emptySlice := TestContainer{ + SliceField: From(ptrFrom([]string{})), // empty slice + } + setSlice := TestContainer{ + SliceField: From(ptrFrom([]string{"a", "b"})), // slice with values + } + + // Verify nil slice + assert.True(t, nilSlice.SliceField.IsSet()) + assert.True(t, nilSlice.SliceField.IsNull()) + val, ok := nilSlice.SliceField.GetOrZero() + assert.True(t, ok) + assert.Nil(t, val) + + // Verify unset slice + assert.False(t, unsetSlice.SliceField.IsSet()) + assert.False(t, unsetSlice.SliceField.IsNull()) // Unset is not null + val, ok = unsetSlice.SliceField.GetOrZero() + assert.False(t, ok) + assert.Nil(t, val) + + // Verify empty slice + assert.True(t, emptySlice.SliceField.IsSet()) + assert.False(t, emptySlice.SliceField.IsNull()) + val, ok = emptySlice.SliceField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{}, val) + + // Verify set slice + assert.True(t, setSlice.SliceField.IsSet()) + assert.False(t, setSlice.SliceField.IsNull()) + val, ok = setSlice.SliceField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, []string{"a", "b"}, val) + + // Test JSON serialization for each state + nilData, err := json.Marshal(nilSlice) + require.NoError(t, err) + assert.Contains(t, string(nilData), `"slice_field":null`) + + unsetData, err := json.Marshal(unsetSlice) + require.NoError(t, err) + assert.NotContains(t, string(unsetData), "slice_field") // omitted due to omitempty + + emptyData, err := json.Marshal(emptySlice) + require.NoError(t, err) + assert.Contains(t, string(emptyData), `"slice_field":[]`) + + setData, err := json.Marshal(setSlice) + require.NoError(t, err) + assert.Contains(t, string(setData), `"slice_field":["a","b"]`) + }) + + t.Run("mixed states container", func(t *testing.T) { + t.Parallel() + container := TestContainer{ + StringField: From(ptrFrom("hello")), // set to value + IntField: From[int](nil), // set to nil + StructField: From(ptrFrom(TestStruct{Name: "Alice", Age: 25})), // set to value + } + + // Verify states + assert.True(t, container.StringField.IsSet()) + assert.False(t, container.StringField.IsNull()) + + assert.True(t, container.IntField.IsSet()) + assert.True(t, container.IntField.IsNull()) + + assert.False(t, container.SliceField.IsSet()) + assert.False(t, container.SliceField.IsNull()) // Unset is not null + + assert.True(t, container.StructField.IsSet()) + assert.False(t, container.StructField.IsNull()) + + // Test JSON serialization + data, err := json.Marshal(container) + require.NoError(t, err) + + var result map[string]interface{} + err = json.Unmarshal(data, &result) + require.NoError(t, err) + + assert.Equal(t, "hello", result["string_field"]) + assert.Nil(t, result["int_field"]) + assert.NotContains(t, result, "slice_field") // unset, so omitted + structResult := result["struct_field"].(map[string]interface{}) + assert.Equal(t, "Alice", structResult["name"]) + assert.Equal(t, float64(25), structResult["age"]) + }) + + t.Run("JSON unmarshaling preserves states", func(t *testing.T) { + t.Parallel() + // JSON with some fields missing, some null, some with values + jsonData := `{ + "string_field": "test", + "int_field": null, + "struct_field": {"name": "Bob", "age": 35} + }` + + var container TestContainer + err := json.Unmarshal([]byte(jsonData), &container) + require.NoError(t, err) + + // string_field: present with value + assert.True(t, container.StringField.IsSet()) + assert.False(t, container.StringField.IsNull()) + stringVal, ok := container.StringField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "test", stringVal) + + // int_field: present but null + assert.True(t, container.IntField.IsSet()) + assert.True(t, container.IntField.IsNull()) + intVal, ok := container.IntField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, 0, intVal) // zero value + + // slice_field: missing from JSON, should remain unset + assert.False(t, container.SliceField.IsSet()) + assert.False(t, container.SliceField.IsNull()) // Unset is not null + sliceVal, ok := container.SliceField.GetOrZero() + assert.False(t, ok) + assert.Nil(t, sliceVal) + + // struct_field: present with value + assert.True(t, container.StructField.IsSet()) + assert.False(t, container.StructField.IsNull()) + structVal, ok := container.StructField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, TestStruct{Name: "Bob", Age: 35}, structVal) + }) +} + +// TestNilVsUnsetDistinction tests the key feature of distinguishing nil from unset +func TestNilVsUnsetDistinction(t *testing.T) { + t.Parallel() + t.Run("explicit nil vs unset", func(t *testing.T) { + t.Parallel() + // Explicitly set to nil + explicitNil := From[string](nil) + + // Unset + var unset OptionalNullable[string] + + // Both are null, but only one is set + assert.True(t, explicitNil.IsNull()) + assert.True(t, explicitNil.IsSet()) + + assert.False(t, unset.IsNull()) // Unset is not null + assert.False(t, unset.IsSet()) + + // Get behavior differs + got1, ok1 := explicitNil.GetOrZero() + got2, ok2 := unset.GetOrZero() + + assert.True(t, ok1) // explicitly set to nil returns true + assert.False(t, ok2) // unset returns false + assert.Equal(t, "", got1) // both return zero value + assert.Equal(t, "", got2) + + // Get behavior differs + ptr1, ok1 := explicitNil.Get() + ptr2, ok2 := unset.Get() + + assert.True(t, ok1) // explicitly set to nil returns true + assert.False(t, ok2) // unset returns false + assert.Nil(t, ptr1) // both return nil pointer + assert.Nil(t, ptr2) + }) + + t.Run("empty slice vs nil slice vs unset", func(t *testing.T) { + t.Parallel() + // Empty slice + emptyNullable := From(ptrFrom([]string{})) + + // Nil slice + nilNullable := From[[]string](nil) + + // Unset + var unsetNullable OptionalNullable[[]string] + + // All have different characteristics + assert.True(t, emptyNullable.IsSet()) + assert.False(t, emptyNullable.IsNull()) + + assert.True(t, nilNullable.IsSet()) + assert.True(t, nilNullable.IsNull()) + + assert.False(t, unsetNullable.IsSet()) + assert.False(t, unsetNullable.IsNull()) // Unset is not null + + // Get behavior + got1, ok1 := emptyNullable.GetOrZero() + got2, ok2 := nilNullable.GetOrZero() + got3, ok3 := unsetNullable.GetOrZero() + + assert.True(t, ok1) + assert.Equal(t, []string{}, got1) + + assert.True(t, ok2) + assert.Nil(t, got2) + + assert.False(t, ok3) + assert.Nil(t, got3) + }) +} + +// TestJSONOmitEmpty tests behavior with omitempty tag +func TestJSONOmitEmpty(t *testing.T) { + t.Parallel() + t.Run("marshal with omitempty", func(t *testing.T) { + t.Parallel() + // Test container with various nullable states + container := TestContainer{ + StringField: From(ptrFrom("test")), + IntField: From(ptrFrom(42)), + StructField: From[TestStruct](nil), // explicitly nil + } + + data, err := json.Marshal(container) + require.NoError(t, err) + + // Parse back to verify structure + var result map[string]interface{} + err = json.Unmarshal(data, &result) + require.NoError(t, err) + + // Should contain set fields + assert.Contains(t, result, "string_field") + assert.Contains(t, result, "int_field") + assert.Contains(t, result, "struct_field") + + // Should not contain unset field (due to omitempty) + // Note: This depends on how the marshaling handles unset fields + // The current implementation doesn't handle this case properly (see TODO) + }) + + t.Run("unmarshal missing fields", func(t *testing.T) { + t.Parallel() + // JSON with some fields missing + jsonData := `{"string_field": "test", "int_field": null}` + + var container TestContainer + err := json.Unmarshal([]byte(jsonData), &container) + require.NoError(t, err) + + // Present fields should be set + assert.True(t, container.StringField.IsSet()) + assert.False(t, container.StringField.IsNull()) + got, ok := container.StringField.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "test", got) + + // Null field should be set to nil + assert.True(t, container.IntField.IsSet()) + assert.True(t, container.IntField.IsNull()) + + // Missing fields should remain unset + assert.False(t, container.SliceField.IsSet()) + assert.False(t, container.StructField.IsSet()) + }) +} + +// TestEdgeCases tests various edge cases +func TestEdgeCases(t *testing.T) { + t.Parallel() + t.Run("zero values", func(t *testing.T) { + t.Parallel() + // Test with zero values that are not nil + intNullable := From(ptrFrom(0)) + stringNullable := From(ptrFrom("")) + + assert.True(t, intNullable.IsSet()) + assert.False(t, intNullable.IsNull()) + got, ok := intNullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, 0, got) + + assert.True(t, stringNullable.IsSet()) + assert.False(t, stringNullable.IsNull()) + got2, ok2 := stringNullable.GetOrZero() + assert.True(t, ok2) + assert.Equal(t, "", got2) + }) + + t.Run("pointer to pointer", func(t *testing.T) { + t.Parallel() + // Test with pointer to pointer type + inner := "test" + nullable := From(ptrFrom(&inner)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, &inner, got) + assert.Equal(t, "test", *got) + }) + + t.Run("complex struct", func(t *testing.T) { + t.Parallel() + complexStruct := struct { + Name string + Values []int + Metadata map[string]string + }{ + Name: "complex", + Values: []int{1, 2, 3}, + Metadata: map[string]string{ + "key1": "value1", + "key2": "value2", + }, + } + + nullable := From(ptrFrom(complexStruct)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, complexStruct, got) + }) +} + +// TestDoublePointers tests comprehensive double pointer scenarios +func TestDoublePointers(t *testing.T) { + t.Parallel() + + t.Run("string double pointer with value", func(t *testing.T) { + t.Parallel() + inner := "hello world" + ptr := &inner + nullable := From(ptrFrom(ptr)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, ptr, got) + assert.Equal(t, &inner, got) + assert.Equal(t, "hello world", *got) + }) + + t.Run("int double pointer with value", func(t *testing.T) { + t.Parallel() + inner := 42 + ptr := &inner + nullable := From(ptrFrom(ptr)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, ptr, got) + assert.Equal(t, &inner, got) + assert.Equal(t, 42, *got) + }) + + t.Run("double pointer to nil", func(t *testing.T) { + t.Parallel() + var ptr *string = nil + nullable := From(ptrFrom(ptr)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, ptr, got) + assert.Nil(t, got) + }) + + t.Run("nil double pointer", func(t *testing.T) { + t.Parallel() + nullable := From[*string](nil) + + assert.True(t, nullable.IsSet()) + assert.True(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Nil(t, got) // zero value for **string is nil + }) + + t.Run("unset double pointer", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[*string] + + assert.False(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.False(t, ok) + assert.Nil(t, got) // zero value for **string is nil + }) + + t.Run("double pointer modification", func(t *testing.T) { + t.Parallel() + inner := "original" + ptr := &inner + nullable := From(ptrFrom(ptr)) + + // Verify original value + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "original", *got) + + // Modify through double pointer + *got = "modified" + assert.Equal(t, "modified", inner) + assert.Equal(t, "modified", *got) + }) + + t.Run("double pointer to struct", func(t *testing.T) { + t.Parallel() + inner := TestStruct{Name: "Alice", Age: 30} + ptr := &inner + nullable := From(ptrFrom(ptr)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, ptr, got) + assert.Equal(t, TestStruct{Name: "Alice", Age: 30}, *got) + + // Modify through double pointer + (*got).Name = "Bob" + assert.Equal(t, "Bob", inner.Name) + assert.Equal(t, "Bob", (*got).Name) + }) + + t.Run("double pointer to slice", func(t *testing.T) { + t.Parallel() + inner := []string{"a", "b", "c"} + ptr := &inner + nullable := From(ptrFrom(ptr)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, ptr, got) + assert.Equal(t, []string{"a", "b", "c"}, *got) + + // Modify through double pointer + *got = append(*got, "d") + assert.Equal(t, []string{"a", "b", "c", "d"}, inner) + assert.Equal(t, []string{"a", "b", "c", "d"}, *got) + }) + + t.Run("double pointer to empty slice", func(t *testing.T) { + t.Parallel() + inner := []string{} + ptr := &inner + nullable := From(ptrFrom(ptr)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, ptr, got) + assert.Equal(t, []string{}, *got) + }) + + t.Run("double pointer to nil slice", func(t *testing.T) { + t.Parallel() + var inner []string = nil + ptr := &inner + nullable := From(ptrFrom(ptr)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, ptr, got) + assert.Nil(t, *got) + }) + + t.Run("double pointer JSON marshaling", func(t *testing.T) { + t.Parallel() + inner := "json test" + ptr := &inner + nullable := From(ptrFrom(ptr)) + + data, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, `"json test"`, string(data)) + }) + + t.Run("double pointer JSON unmarshaling", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[*string] + err := json.Unmarshal([]byte(`"json test"`), &nullable) + require.NoError(t, err) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.NotNil(t, got) + assert.Equal(t, "json test", *got) + }) + + t.Run("double pointer JSON null marshaling", func(t *testing.T) { + t.Parallel() + nullable := From[*string](nil) + + data, err := json.Marshal(nullable) + require.NoError(t, err) + assert.Equal(t, `null`, string(data)) + }) + + t.Run("double pointer JSON null unmarshaling", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[*string] + err := json.Unmarshal([]byte(`null`), &nullable) + require.NoError(t, err) + + assert.True(t, nullable.IsSet()) + assert.True(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Nil(t, got) + }) + + t.Run("double pointer round trip", func(t *testing.T) { + t.Parallel() + inner := "round trip test" + ptr := &inner + nullable1 := From(ptrFrom(ptr)) + + // Marshal + data, err := json.Marshal(nullable1) + require.NoError(t, err) + + // Unmarshal + var nullable2 OptionalNullable[*string] + err = json.Unmarshal(data, &nullable2) + require.NoError(t, err) + + // Compare states + assert.Equal(t, nullable1.IsSet(), nullable2.IsSet()) + assert.Equal(t, nullable1.IsNull(), nullable2.IsNull()) + + got1, ok1 := nullable1.GetOrZero() + got2, ok2 := nullable2.GetOrZero() + assert.Equal(t, ok1, ok2) + + // Values should be equal + assert.Equal(t, *got1, *got2) + }) + + t.Run("triple pointer", func(t *testing.T) { + t.Parallel() + inner := "triple" + ptr1 := &inner + ptr2 := &ptr1 + nullable := From(ptrFrom(ptr2)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, ptr2, got) + assert.Equal(t, ptr1, *got) + assert.Equal(t, "triple", **got) + }) + + t.Run("double pointer set and unset", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[*string] + + // Initially unset + assert.False(t, nullable.IsSet()) + + // Set to double pointer + inner := "set test" + ptr := &inner + nullable.Set(ptrFrom(ptr)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "set test", *got) + + // Set to nil + nullable.Set(nil) + + assert.True(t, nullable.IsSet()) + assert.True(t, nullable.IsNull()) + + got, ok = nullable.GetOrZero() + assert.True(t, ok) + assert.Nil(t, got) + + // Unset + nullable.Unset() + + assert.False(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok = nullable.GetOrZero() + assert.False(t, ok) + assert.Nil(t, got) + }) + + t.Run("double pointer Get method", func(t *testing.T) { + t.Parallel() + inner := "get test" + ptr := &inner + nullable := From(ptrFrom(ptr)) + + // Test Get method + gotPtr, ok := nullable.Get() + assert.True(t, ok) + assert.NotNil(t, gotPtr) + assert.Equal(t, ptr, *gotPtr) + assert.Equal(t, "get test", **gotPtr) + + // Test with nil + nilNullable := From[*string](nil) + gotPtr, ok = nilNullable.Get() + assert.True(t, ok) + assert.Nil(t, gotPtr) + + // Test with unset + var unsetNullable OptionalNullable[*string] + gotPtr, ok = unsetNullable.Get() + assert.False(t, ok) + assert.Nil(t, gotPtr) + }) + + t.Run("double pointer zero values", func(t *testing.T) { + t.Parallel() + // Test with zero value string + inner := "" + ptr := &inner + nullable := From(ptrFrom(ptr)) + + assert.True(t, nullable.IsSet()) + assert.False(t, nullable.IsNull()) + + got, ok := nullable.GetOrZero() + assert.True(t, ok) + assert.Equal(t, "", *got) + + // Test with zero value int + innerInt := 0 + ptrInt := &innerInt + nullableInt := From(ptrFrom(ptrInt)) + + assert.True(t, nullableInt.IsSet()) + assert.False(t, nullableInt.IsNull()) + + gotInt, okInt := nullableInt.GetOrZero() + assert.True(t, okInt) + assert.Equal(t, 0, *gotInt) + }) +} + +// TestAsOptionalNullable tests the AsOptionalNullable helper function +func TestAsOptionalNullable(t *testing.T) { + t.Parallel() + + t.Run("with nullable string", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + reflectValue := reflect.ValueOf(nullable) + + result, ok := AsOptionalNullable(reflectValue) + assert.True(t, ok) + assert.NotNil(t, result) + + value, isSet := result.GetUntyped() + assert.True(t, isSet) + assert.Equal(t, "test", value) + }) + + t.Run("with nullable int", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom(42)) + reflectValue := reflect.ValueOf(nullable) + + result, ok := AsOptionalNullable(reflectValue) + assert.True(t, ok) + assert.NotNil(t, result) + + value, isSet := result.GetUntyped() + assert.True(t, isSet) + assert.Equal(t, 42, value) + }) + + t.Run("with nullable nil", func(t *testing.T) { + t.Parallel() + nullable := From[string](nil) + reflectValue := reflect.ValueOf(nullable) + + result, ok := AsOptionalNullable(reflectValue) + assert.True(t, ok) + assert.NotNil(t, result) + + value, isSet := result.GetUntyped() + assert.True(t, isSet) + assert.Nil(t, value) + }) + + t.Run("with unset nullable", func(t *testing.T) { + t.Parallel() + var nullable OptionalNullable[string] + reflectValue := reflect.ValueOf(nullable) + + result, ok := AsOptionalNullable(reflectValue) + assert.False(t, ok) + assert.Nil(t, result) + }) + + t.Run("with non-nullable string", func(t *testing.T) { + t.Parallel() + regularString := "not nullable" + reflectValue := reflect.ValueOf(regularString) + + result, ok := AsOptionalNullable(reflectValue) + assert.False(t, ok) + assert.Nil(t, result) + }) + + t.Run("with non-nullable int", func(t *testing.T) { + t.Parallel() + regularInt := 42 + reflectValue := reflect.ValueOf(regularInt) + + result, ok := AsOptionalNullable(reflectValue) + assert.False(t, ok) + assert.Nil(t, result) + }) + + t.Run("with non-nullable map", func(t *testing.T) { + t.Parallel() + regularMap := map[string]int{"key": 42} + reflectValue := reflect.ValueOf(regularMap) + + result, ok := AsOptionalNullable(reflectValue) + assert.False(t, ok) + assert.Nil(t, result) + }) + + t.Run("with non-nullable struct", func(t *testing.T) { + t.Parallel() + regularStruct := TestStruct{Name: "test", Age: 30} + reflectValue := reflect.ValueOf(regularStruct) + + result, ok := AsOptionalNullable(reflectValue) + assert.False(t, ok) + assert.Nil(t, result) + }) + + t.Run("with nullable double pointer", func(t *testing.T) { + t.Parallel() + inner := "test" + ptr := &inner + nullable := From(ptrFrom(ptr)) + reflectValue := reflect.ValueOf(nullable) + + result, ok := AsOptionalNullable(reflectValue) + assert.True(t, ok) + assert.NotNil(t, result) + + value, isSet := result.GetUntyped() + assert.True(t, isSet) + assert.Equal(t, ptr, value) + assert.Equal(t, "test", *value.(*string)) + }) + + t.Run("with nullable slice", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom([]string{"a", "b", "c"})) + reflectValue := reflect.ValueOf(nullable) + + result, ok := AsOptionalNullable(reflectValue) + assert.True(t, ok) + assert.NotNil(t, result) + + value, isSet := result.GetUntyped() + assert.True(t, isSet) + assert.Equal(t, []string{"a", "b", "c"}, value) + }) + + t.Run("with nullable struct", func(t *testing.T) { + t.Parallel() + testStruct := TestStruct{Name: "Alice", Age: 25} + nullable := From(ptrFrom(testStruct)) + reflectValue := reflect.ValueOf(nullable) + + result, ok := AsOptionalNullable(reflectValue) + assert.True(t, ok) + assert.NotNil(t, result) + + value, isSet := result.GetUntyped() + assert.True(t, isSet) + assert.Equal(t, testStruct, value) + }) + + t.Run("with pointer to nullable", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + ptrToNullable := &nullable + reflectValue := reflect.ValueOf(ptrToNullable) + + // This should work since the pointer to nullable still contains a nullable + result, ok := AsOptionalNullable(reflectValue) + assert.True(t, ok) + assert.NotNil(t, result) + + value, isSet := result.GetUntyped() + assert.True(t, isSet) + assert.Equal(t, "test", value) + }) + + t.Run("with interface containing nullable", func(t *testing.T) { + t.Parallel() + nullable := From(ptrFrom("test")) + var iface interface{} = nullable + reflectValue := reflect.ValueOf(iface) + + result, ok := AsOptionalNullable(reflectValue) + assert.True(t, ok) + assert.NotNil(t, result) + + value, isSet := result.GetUntyped() + assert.True(t, isSet) + assert.Equal(t, "test", value) + }) +} diff --git a/tests/mockserver/internal/sdk/utils/json.go b/tests/mockserver/internal/sdk/utils/json.go index 84d12928..e797f87e 100644 --- a/tests/mockserver/internal/sdk/utils/json.go +++ b/tests/mockserver/internal/sdk/utils/json.go @@ -58,14 +58,14 @@ func MarshalJSON(v interface{}, tag reflect.StructTag, topLevel bool) ([]byte, e for _, tag := range strings.Split(jsonTag, ",") { if tag == "omitempty" { omitEmpty = true - } else { + } else if tag != "omitzero" { fieldName = tag } } } - if (isNil(field.Type, fieldVal) || isEmpty(field.Type, fieldVal)) && field.Tag.Get("const") == "" { - if omitEmpty { + if omitEmpty && field.Tag.Get("const") == "" { + if isNil(field.Type, fieldVal) || isEmpty(field.Type, fieldVal) { continue } } @@ -168,7 +168,7 @@ func UnmarshalJSON(b []byte, v interface{}, tag reflect.StructTag, topLevel bool jsonTag := field.Tag.Get("json") if jsonTag != "" { for _, tag := range strings.Split(jsonTag, ",") { - if tag != "omitempty" { + if tag != "omitempty" && tag != "omitzero" { fieldName = tag } } @@ -299,6 +299,10 @@ func marshalValue(v interface{}, tag reflect.StructTag) (json.RawMessage, error) return []byte("null"), nil } + if implementsJSONMarshaler(v) { + return json.Marshal(v) + } + out := map[string]json.RawMessage{} for _, key := range val.MapKeys() { diff --git a/tests/mockserver/internal/sdk/utils/reflect.go b/tests/mockserver/internal/sdk/utils/reflect.go index 255f3dd7..c9ae9a7c 100644 --- a/tests/mockserver/internal/sdk/utils/reflect.go +++ b/tests/mockserver/internal/sdk/utils/reflect.go @@ -28,8 +28,10 @@ func isEmpty(typ reflect.Type, val reflect.Value) bool { } switch typ.Kind() { - case reflect.Array, reflect.Map, reflect.Slice, reflect.String: + case reflect.Array, reflect.Slice, reflect.String: return val.Len() == 0 + // Maps are only "empty" when nil; a non-nil empty map is preserved so that + // optional map[string]any{} fields are serialized as {} rather than omitted. } return false diff --git a/tests/test_datasources.py b/tests/test_datasources.py index 8aaeb530..68d59bc6 100644 --- a/tests/test_datasources.py +++ b/tests/test_datasources.py @@ -56,3 +56,39 @@ def test_datasources_post_api_index_v1_getdatasourceconfig(): res = glean.indexing.datasources.retrieve_config(datasource="") assert res is not None + + +def test_datasources_get_datasource_instance_configuration(): + test_http_client = create_test_http_client("getDatasourceInstanceConfiguration") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.datasources.get_datasource_instance_configuration( + datasource_id="o365sharepoint", instance_id="o365sharepoint_abc123" + ) + assert res is not None + + +def test_datasources_update_datasource_instance_configuration(): + test_http_client = create_test_http_client("updateDatasourceInstanceConfiguration") + + with Glean( + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.datasources.update_datasource_instance_configuration( + datasource_id="o365sharepoint", + instance_id="o365sharepoint_abc123", + configuration={ + "values": {}, + }, + ) + assert res is not None diff --git a/tests/test_messages.py b/tests/test_messages.py index 36643db3..dfdc1864 100644 --- a/tests/test_messages.py +++ b/tests/test_messages.py @@ -18,7 +18,7 @@ def test_messages_messages(): res = glean.client.messages.retrieve( id_type=models.IDType.CONVERSATION_ID, id="", - datasource=models.Datasource.MICROSOFTTEAMS, + datasource=models.Datasource.SLACKENTGRID, timestamp_millis=558834, ) assert res is not None diff --git a/tests/test_summarize.py b/tests/test_summarize.py index cac8e978..52005738 100644 --- a/tests/test_summarize.py +++ b/tests/test_summarize.py @@ -18,12 +18,11 @@ def test_summarize_summarize(): res = glean.client.documents.summarize( document_specs=[ { - "ugc_type": models.DocumentSpecUgcType1.SHORTCUTS, - "content_id": 602763, + "ugc_type": models.DocumentSpecUgcType2.COLLECTIONS, + "ugc_id": "", }, { - "ugc_type": models.DocumentSpecUgcType1.SHORTCUTS, - "content_id": 602763, + "url": "https://necessary-dandelion.net", }, ] ) From 61de7c07e8b6b7e66652cd155f4be5ae721390f0 Mon Sep 17 00:00:00 2001 From: "speakeasy-github[bot]" <128539517+speakeasy-github[bot]@users.noreply.github.com> Date: Mon, 9 Mar 2026 02:17:21 +0000 Subject: [PATCH 2/2] empty commit to trigger [run-tests] workflow