diff --git a/.genignore b/.genignore index 7b2511e4..e69de29b 100644 --- a/.genignore +++ b/.genignore @@ -1 +0,0 @@ -pyproject.toml \ No newline at end of file diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 7b040e69..d5fcb714 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -26,6 +26,9 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: "Ensure README-PYPI.md is created" + run: python scripts/prepare_readme.py + # run the glean target specified in .speakeasy/workflow.yaml - run: speakeasy test --target glean diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 7dd5e51a..c34ed015 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,1898 +1,8617 @@ lockVersion: 2.0.0 id: 3e3290ca-0ee8-4981-b1bc-14536048fa63 management: - docChecksum: f901905eddb4d3e76a54e8da46f5347d + docChecksum: a20695749796cddfd0cc7c0e4a12a7ab docVersion: 0.9.0 - speakeasyVersion: 1.650.0 - generationVersion: 2.743.2 - releaseVersion: 0.11.22 - configChecksum: 15c71f102e245f5606dc6f4f470c2ad8 + speakeasyVersion: 1.770.0 + generationVersion: 2.893.0 + releaseVersion: 0.13.0 + configChecksum: fbdf6564dabfc66d8d43921f9aab9d41 repoURL: https://github.com/gleanwork/api-client-python.git installationURL: https://github.com/gleanwork/api-client-python.git published: true +persistentEdits: + generation_id: 987864f6-cd1e-4c05-a16b-4739643415d0 + pristine_commit_hash: 06cc8c7f7c551cc2f82ad39dd38c63fe2ca63e29 + pristine_tree_hash: 9cd8d96d15f384f677b54671075391a45cdd533f features: python: - additionalDependencies: 1.0.0 + acceptHeaders: 3.0.0 + additionalDependencies: 1.1.0 additionalProperties: 1.0.1 configurableModuleName: 0.2.0 - constsAndDefaults: 1.0.5 - core: 5.23.5 + constsAndDefaults: 1.0.7 + core: 6.0.24 defaultEnabledRetries: 0.2.0 deprecations: 3.0.2 devContainers: 3.0.0 - enumUnions: 0.1.0 - envVarSecurityUsage: 0.3.2 - examples: 3.0.2 + downloadStreams: 1.0.1 + enumUnions: 0.1.1 + envVarSecurityUsage: 0.3.3 + examples: 3.0.4 flatRequests: 1.0.1 flattening: 3.1.1 - globalSecurity: 3.0.4 + globalSecurity: 3.0.7 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 + methodArguments: 1.1.0 + methodServerURLs: 3.1.2 + mockServer: 0.1.4 multipartFileContentType: 1.0.0 - nameOverrides: 3.0.1 - responseFormat: 1.0.1 - retries: 3.0.2 - sdkHooks: 1.1.0 - tests: 1.19.5 - unions: 3.1.0 - uploadStreams: 1.0.0 -generatedFiles: - - .devcontainer/README.md - - .devcontainer/devcontainer.json - - .devcontainer/setup.sh - - .gitattributes - - .vscode/settings.json - - USAGE.md - - docs/errors/collectionerror.md - - docs/errors/gleandataerror.md - - docs/models/activity.md - - docs/models/activityenum.md - - docs/models/activityevent.md - - docs/models/activityeventaction.md - - docs/models/activityeventparams.md - - docs/models/addcollectionitemserror.md - - docs/models/addcollectionitemserrorerrortype.md - - docs/models/addcollectionitemsrequest.md - - docs/models/addcollectionitemsresponse.md - - docs/models/additionalfielddefinition.md - - docs/models/agent.md - - docs/models/agentcapabilities.md - - docs/models/agentconfig.md - - docs/models/agentenum.md - - docs/models/agentexecutionstatus.md - - docs/models/agentmetadata.md - - docs/models/agentrun.md - - docs/models/agentruncreate.md - - docs/models/agentrunwaitresponse.md - - docs/models/agentschemas.md - - docs/models/agentsinsightsv2request.md - - docs/models/agentsinsightsv2response.md - - docs/models/agentsusagebydepartmentinsight.md - - docs/models/agentusersinsight.md - - docs/models/aiappactioncounts.md - - docs/models/aiappsinsightsresponse.md - - docs/models/aiinsightsresponse.md - - docs/models/allowlistoptions.md - - docs/models/announcement.md - - docs/models/announcementchannel.md - - docs/models/announcementposttype.md - - docs/models/announcementviewerinfo.md - - docs/models/anonymousevent.md - - docs/models/anonymouseventeventtype.md - - docs/models/answer.md - - docs/models/answerboard.md - - docs/models/answercreationdata.md - - docs/models/answercreationdatasourcetype.md - - docs/models/answerlike.md - - docs/models/answerlikes.md - - docs/models/answerresult.md - - docs/models/answersourcetype.md - - docs/models/appresult.md - - docs/models/assistantactivitytype.md - - docs/models/assistantinsightsresponse.md - - docs/models/authconfig.md - - docs/models/authconfigstatus.md - - docs/models/authconfigtype.md - - docs/models/author.md - - docs/models/authtoken.md - - docs/models/authtype.md - - docs/models/autocompleterequest.md - - docs/models/autocompleterequestresulttype.md - - docs/models/autocompleteresponse.md - - docs/models/autocompleteresult.md - - docs/models/autocompleteresultgroup.md - - docs/models/autocompleteresultresulttype.md - - docs/models/badge.md - - docs/models/bulkindexdocumentsrequest.md - - docs/models/bulkindexemployeesrequest.md - - docs/models/bulkindexgroupsrequest.md - - docs/models/bulkindexmembershipsrequest.md - - docs/models/bulkindexshortcutsrequest.md - - docs/models/bulkindexteamsrequest.md - - docs/models/bulkindexusersrequest.md - - docs/models/bulkuploadhistoryevent.md - - docs/models/bulkuploadhistoryeventstatus.md - - docs/models/calendarattendee.md - - docs/models/calendarattendees.md - - docs/models/calendarevent.md - - docs/models/calendareventeventtype.md - - docs/models/canonicalizingregextype.md - - docs/models/categorytoresultsize.md - - docs/models/channelinviteinfo.md - - docs/models/chat.md - - docs/models/chatfile.md - - docs/models/chatfilefailurereason.md - - docs/models/chatfilemetadata.md - - docs/models/chatfilestatus.md - - docs/models/chatmessage.md - - docs/models/chatmessagecitation.md - - docs/models/chatmessagefragment.md - - docs/models/chatmetadata.md - - docs/models/chatmetadataresult.md - - docs/models/chatrequest.md - - docs/models/chatrequestrequest.md - - docs/models/chatresponse.md - - docs/models/chatrestrictionfilters.md - - docs/models/chatresult.md - - docs/models/chatstreamrequest.md - - docs/models/chatsuggestion.md - - docs/models/chatzerostatesuggestionoptions.md - - docs/models/checkdocumentaccessrequest.md - - docs/models/checkdocumentaccessresponse.md - - docs/models/clustergroup.md - - docs/models/clustertypeenum.md - - docs/models/code.md - - docs/models/codeline.md - - docs/models/collection.md - - docs/models/collectionerror.md - - docs/models/collectionerrorerrorcode.md - - docs/models/collectionitem.md - - docs/models/collectionitemdescriptor.md - - docs/models/collectionitemdescriptoritemtype.md - - docs/models/collectionitemitemtype.md - - docs/models/collectionpinmetadata.md - - docs/models/collectionpinnablecategories.md - - docs/models/collectionpinnabletargets.md - - docs/models/collectionpinnedmetadata.md - - docs/models/collectionpintarget.md - - docs/models/commentdefinition.md - - docs/models/communicationchannel.md - - docs/models/company.md - - docs/models/conferencedata.md - - docs/models/conferencedatasource.md - - docs/models/connectortype.md - - docs/models/contentdefinition.md - - docs/models/contentinsightsresponse.md - - docs/models/contenttype.md - - docs/models/countinfo.md - - docs/models/createannouncementrequest.md - - docs/models/createannouncementrequestchannel.md - - docs/models/createannouncementrequestposttype.md - - docs/models/createanswerrequest.md - - docs/models/createauthtokenresponse.md - - docs/models/createcollectionrequest.md - - docs/models/createcollectionresponse.md - - docs/models/createdlpreportrequest.md - - docs/models/createdlpreportresponse.md - - docs/models/createshortcutrequest.md - - docs/models/createshortcutresponse.md - - docs/models/currentactiveusers.md - - docs/models/customdatasourceconfig.md - - docs/models/customdatasourceconfigconnectortype.md - - docs/models/customdatavalue.md - - docs/models/customentity.md - - docs/models/customentitymetadata.md - - docs/models/customer.md - - docs/models/customermetadata.md - - docs/models/customfielddata.md - - docs/models/customfieldvalue.md - - docs/models/customfieldvaluehyperlink.md - - docs/models/customfieldvalueperson.md - - docs/models/customfieldvaluestr.md - - docs/models/customproperty.md - - docs/models/datasource.md - - docs/models/datasourcebulkmembershipdefinition.md - - docs/models/datasourcecategory.md - - docs/models/datasourcegroupdefinition.md - - docs/models/datasourcemembershipdefinition.md - - docs/models/datasourceobjecttypedocumentcountentry.md - - docs/models/datasourceprofile.md - - docs/models/datasourcestype.md - - docs/models/datasourceuserdefinition.md - - docs/models/datasourcevisibility.md - - docs/models/debugdatasourcestatusidentityresponsecomponent.md - - docs/models/debugdatasourcestatusidentityresponsecomponentcounts.md - - docs/models/debugdatasourcestatusresponse.md - - docs/models/debugdatasourcestatusresponsecounts.md - - docs/models/debugdocumentrequest.md - - docs/models/debugdocumentresponse.md - - docs/models/debugdocumentsrequest.md - - docs/models/debugdocumentsresponse.md - - docs/models/debugdocumentsresponseitem.md - - docs/models/debuguserrequest.md - - docs/models/debuguserresponse.md - - docs/models/deleteallchatsrequest.md - - docs/models/deleteannouncementrequest.md - - docs/models/deleteanswerrequest.md - - docs/models/deletechatfilesrequest.md - - docs/models/deletechatfilesrequestrequest.md - - docs/models/deletechatsrequest.md - - docs/models/deletechatsrequestrequest.md - - docs/models/deletecollectionitemrequest.md - - docs/models/deletecollectionitemresponse.md - - docs/models/deletecollectionrequest.md - - docs/models/deletedocumentrequest.md - - docs/models/deleteemployeerequest.md - - docs/models/deletegrouprequest.md - - docs/models/deletemembershiprequest.md - - docs/models/deleteshortcutrequest.md - - docs/models/deleteteamrequest.md - - docs/models/deleteuserrequest.md - - docs/models/digest.md - - docs/models/digestsection.md - - docs/models/digestupdate.md - - docs/models/direction.md - - docs/models/disambiguation.md - - docs/models/displayablelistitemuiconfig.md - - docs/models/dlpconfig.md - - docs/models/dlpfrequency.md - - docs/models/dlpperson.md - - docs/models/dlppersonmetadata.md - - docs/models/dlpreport.md - - docs/models/dlpreportstatus.md - - docs/models/dlpsimpleresult.md - - docs/models/doccategory.md - - docs/models/document.md - - docs/models/documentcontent.md - - docs/models/documentdefinition.md - - docs/models/documentinsight.md - - docs/models/documentinteractions.md - - docs/models/documentinteractionsdefinition.md - - docs/models/documentmetadata.md - - docs/models/documentorerror.md - - docs/models/documentorerrorunion.md - - docs/models/documentpermissionsdefinition.md - - docs/models/documents.md - - docs/models/documentsection.md - - docs/models/documentspec1.md - - docs/models/documentspec2.md - - docs/models/documentspec3.md - - docs/models/documentspec4.md - - docs/models/documentspecugctype1.md - - docs/models/documentspecugctype2.md - - docs/models/documentspecunion.md - - docs/models/documentstatusresponse.md - - docs/models/documentvisibility.md - - docs/models/documentvisibilityoverride.md - - docs/models/documentvisibilityoverrideoverride.md - - docs/models/documentvisibilityupdateresult.md - - docs/models/documentvisibilityupdateresultoverride.md - - docs/models/downloadpolicycsvrequest.md - - docs/models/downloadreportcsvrequest.md - - docs/models/editanswerrequest.md - - docs/models/editanswerrequestsourcetype.md - - docs/models/editcollectionitemrequest.md - - docs/models/editcollectionitemresponse.md - - docs/models/editcollectionrequest.md - - docs/models/editcollectionresponse.md - - docs/models/editcollectionresponseerrorcode.md - - docs/models/editpinrequest.md - - docs/models/employeeinfodefinition.md - - docs/models/employeeteaminfo.md - - docs/models/entitiessortorder.md - - docs/models/entityrelationship.md - - docs/models/entitytype.md - - docs/models/error.md - - docs/models/errormessage.md - - docs/models/event.md - - docs/models/eventclassification.md - - docs/models/eventclassificationname.md - - docs/models/eventstrategyname.md - - docs/models/externalsharingoptions.md - - docs/models/externalshortcut.md - - docs/models/extractedqna.md - - docs/models/facetbucket.md - - docs/models/facetbucketfilter.md - - docs/models/facetfilter.md - - docs/models/facetfilterset.md - - docs/models/facetfiltervalue.md - - docs/models/facetresult.md - - docs/models/facetvalue.md - - docs/models/favoriteinfo.md - - docs/models/feedback.md - - docs/models/feedbackcategory.md - - docs/models/feedbackchannel.md - - docs/models/feedbackchatexchange.md - - docs/models/feedbackrequest.md - - docs/models/feedentry.md - - docs/models/feedrequest.md - - docs/models/feedrequestcategory.md - - docs/models/feedrequestoptions.md - - docs/models/feedresponse.md - - docs/models/feedresult.md - - docs/models/feedresultcategory.md - - docs/models/file.md - - docs/models/followupaction.md - - docs/models/format_.md - - docs/models/generatedattachment.md - - docs/models/generatedattachmentcontent.md - - docs/models/generatedqna.md - - docs/models/generatedqnastatus.md - - docs/models/getagentrequest.md - - docs/models/getagentschemasrequest.md - - docs/models/getanswererror.md - - docs/models/getanswererrorerrortype.md - - docs/models/getanswerrequest.md - - docs/models/getanswerresponse.md - - docs/models/getchatapplicationrequest.md - - docs/models/getchatapplicationrequestrequest.md - - docs/models/getchatapplicationresponse.md - - docs/models/getchatfilesrequest.md - - docs/models/getchatfilesrequestrequest.md - - docs/models/getchatfilesresponse.md - - docs/models/getchatrequest.md - - docs/models/getchatrequestrequest.md - - docs/models/getchatresponse.md - - docs/models/getcollectionrequest.md - - docs/models/getcollectionresponse.md - - docs/models/getdatasourceconfigrequest.md - - docs/models/getdlpreportresponse.md - - docs/models/getdocpermissionsrequest.md - - docs/models/getdocpermissionsresponse.md - - docs/models/getdocumentcountrequest.md - - docs/models/getdocumentcountresponse.md - - docs/models/getdocumentsbyfacetsrequest.md - - docs/models/getdocumentsbyfacetsresponse.md - - docs/models/getdocumentsrequest.md - - docs/models/getdocumentsrequestincludefield.md - - docs/models/getdocumentsresponse.md - - docs/models/getdocumentstatusrequest.md - - docs/models/getdocumentstatusresponse.md - - docs/models/getdocumentvisibilityoverridesresponse.md - - docs/models/getdocvisibilityrequest.md - - docs/models/getpinrequest.md - - docs/models/getpinresponse.md - - docs/models/getpolicyrequest.md - - docs/models/getreportstatusrequest.md - - docs/models/getrestapiv1toolslistrequest.md - - docs/models/getshortcutrequest.md - - docs/models/getshortcutrequestunion.md - - docs/models/getshortcutresponse.md - - docs/models/getusercountrequest.md - - docs/models/getusercountresponse.md - - docs/models/gleanassistinsightsresponse.md - - docs/models/gleandataerror.md - - docs/models/grantpermission.md - - docs/models/granttype.md - - docs/models/greenlistusersrequest.md - - docs/models/group.md - - docs/models/grouptype.md - - docs/models/hidebuiltinfacet.md - - docs/models/hotword.md - - docs/models/hotwordproximity.md - - docs/models/iconconfig.md - - docs/models/icontype.md - - docs/models/identity.md - - docs/models/idtype.md - - docs/models/includetype.md - - docs/models/indexdocumentrequest.md - - docs/models/indexdocumentsrequest.md - - docs/models/indexemployeerequest.md - - docs/models/indexgrouprequest.md - - docs/models/indexingshortcut.md - - docs/models/indexmembershiprequest.md - - docs/models/indexstatus.md - - docs/models/indexteamrequest.md - - docs/models/indexuserrequest.md - - docs/models/inputoptions.md - - docs/models/inputschema.md - - docs/models/insightsagentsrequestoptions.md - - docs/models/insightsaiapprequestoptions.md - - docs/models/insightsassistantrequest.md - - docs/models/insightschatsummary.md - - docs/models/insightsoverviewrequest.md - - docs/models/insightsoverviewresponse.md - - docs/models/insightsrequest.md - - docs/models/insightsrequestcategory.md - - docs/models/insightsresponse.md - - docs/models/insightssearchsummary.md - - docs/models/invalidoperatorvalueerror.md - - docs/models/inviteinfo.md - - docs/models/issue.md - - docs/models/justificationtype.md - - docs/models/knowledgetype.md - - docs/models/labeledcountinfo.md - - docs/models/lastscanstatus.md - - docs/models/likelihoodthreshold.md - - docs/models/listanswersrequest.md - - docs/models/listanswersresponse.md - - docs/models/listchatsrequest.md - - docs/models/listchatsresponse.md - - docs/models/listcollectionsrequest.md - - docs/models/listcollectionsresponse.md - - docs/models/listdlpreportsresponse.md - - docs/models/listentitiesrequest.md - - docs/models/listentitiesrequestentitytype.md - - docs/models/listentitiesrequestincludefield.md - - docs/models/listentitiesresponse.md - - docs/models/listpinsrequest.md - - docs/models/listpinsresponse.md - - docs/models/listpoliciesrequest.md - - docs/models/listshortcutspaginatedrequest.md - - docs/models/listshortcutspaginatedrequestincludefield.md - - docs/models/listshortcutspaginatedresponse.md - - docs/models/listverificationsrequest.md - - docs/models/manualfeedbackinfo.md - - docs/models/manualfeedbackinfosource.md - - docs/models/manualfeedbackinfovote.md - - docs/models/manualfeedbacksidebysideinfo.md - - docs/models/manualfeedbacksidebysideinfosource.md - - docs/models/manualfeedbacksidebysideinfovote.md - - docs/models/meeting.md - - docs/models/message.md - - docs/models/messagesrequest.md - - docs/models/messagesresponse.md - - docs/models/messagetextblock.md - - docs/models/messagetype.md - - docs/models/mode.md - - docs/models/objectdefinition.md - - docs/models/objectpermissions.md - - docs/models/operatormetadata.md - - docs/models/operatorscope.md - - docs/models/operatortype.md - - docs/models/orderby.md - - docs/models/outputschema.md - - docs/models/peoplerequest.md - - docs/models/peoplerequestincludefield.md - - docs/models/peopleresponse.md - - docs/models/peragentinsight.md - - docs/models/period.md - - docs/models/permissions.md - - docs/models/permissionsgroupintersectiondefinition.md - - docs/models/person.md - - docs/models/persondistance.md - - docs/models/personmetadata.md - - docs/models/personmetadatatype.md - - docs/models/personobject.md - - docs/models/personteam.md - - docs/models/personteamrelationship.md - - docs/models/persontoteamrelationship.md - - docs/models/persontoteamrelationshiprelationship.md - - docs/models/peruserassistantinsight.md - - docs/models/peruserinsight.md - - docs/models/pindocument.md - - docs/models/pinrequest.md - - docs/models/possiblevalue.md - - docs/models/postapiindexv1debugdatasourcedocumentrequest.md - - docs/models/postapiindexv1debugdatasourcedocumentsrequest.md - - docs/models/postapiindexv1debugdatasourcestatusrequest.md - - docs/models/postapiindexv1debugdatasourceuserrequest.md - - docs/models/processalldocumentsrequest.md - - docs/models/processallmembershipsrequest.md - - docs/models/processinghistoryevent.md - - docs/models/processingstate.md - - docs/models/prominence.md - - docs/models/prompttemplate.md - - docs/models/prompttemplateresult.md - - docs/models/propertydefinition.md - - docs/models/propertygroup.md - - docs/models/propertytype.md - - docs/models/provider.md - - docs/models/queryinsight.md - - docs/models/queryinsightsresponse.md - - docs/models/querysuggestion.md - - docs/models/querysuggestionlist.md - - docs/models/quicklink.md - - docs/models/reaction.md - - docs/models/readpermission.md - - docs/models/recommendationsrequest.md - - docs/models/recommendationsrequestoptions.md - - docs/models/referencerange.md - - docs/models/relateddocuments.md - - docs/models/relatedobject.md - - docs/models/relatedobjectedge.md - - docs/models/relatedobjectmetadata.md - - docs/models/relatedquestion.md - - docs/models/relation.md - - docs/models/relationtype.md - - docs/models/reminder.md - - docs/models/reminderrequest.md - - docs/models/reportstatusresponse.md - - docs/models/reportstatusresponsestatus.md - - docs/models/requesttype.md - - docs/models/responsebody1.md - - docs/models/responsebody2.md - - docs/models/responsehint.md - - docs/models/responsemetadata.md - - docs/models/responsestatus.md - - docs/models/restrictionfilters.md - - docs/models/resultdocument.md - - docs/models/resultsdescription.md - - docs/models/resultsresponse.md - - docs/models/resulttab.md - - docs/models/role.md - - docs/models/rotatetokenresponse.md - - docs/models/scope.md - - docs/models/scopetype.md - - docs/models/searchagentsrequest.md - - docs/models/searchagentsresponse.md - - docs/models/searchproviderinfo.md - - docs/models/searchrequest.md - - docs/models/searchrequestinputdetails.md - - docs/models/searchrequestoptions.md - - docs/models/searchresponse.md - - docs/models/searchresponsemetadata.md - - docs/models/searchresult.md - - docs/models/searchresultprominenceenum.md - - docs/models/searchresultsnippet.md - - docs/models/searchwarning.md - - docs/models/sectiontype.md - - docs/models/security.md - - docs/models/seenfeedbackinfo.md - - docs/models/sensitivecontentoptions.md - - docs/models/sensitiveexpression.md - - docs/models/sensitiveinfotype.md - - docs/models/sessioninfo.md - - docs/models/share.md - - docs/models/sharingoptions.md - - docs/models/shortcut.md - - docs/models/shortcuterror.md - - docs/models/shortcuterrorerrortype.md - - docs/models/shortcutinsight.md - - docs/models/shortcutinsightsresponse.md - - docs/models/shortcutmutableproperties.md - - docs/models/shortcutspaginationmetadata.md - - docs/models/sidebysideimplementation.md - - docs/models/socialnetwork.md - - docs/models/socialnetworkdefinition.md - - docs/models/sortoptions.md - - docs/models/state.md - - docs/models/structuredlink.md - - docs/models/structuredlocation.md - - docs/models/structuredresult.md - - docs/models/structuredresultsource.md - - docs/models/structuredtext.md - - docs/models/structuredtextitem.md - - docs/models/structuredtextmutableproperties.md - - docs/models/summarizerequest.md - - docs/models/summarizeresponse.md - - docs/models/summary.md - - docs/models/team.md - - docs/models/teamemail.md - - docs/models/teaminfodefinition.md - - docs/models/teammember.md - - docs/models/teamstatus.md - - docs/models/textrange.md - - docs/models/textrangetype.md - - docs/models/thumbnail.md - - docs/models/timeinterval.md - - docs/models/timeperiodtype.md - - docs/models/timepoint.md - - docs/models/timerange.md - - docs/models/tool.md - - docs/models/toolinfo.md - - docs/models/toolmetadata.md - - docs/models/toolmetadatatype.md - - docs/models/toolparameter.md - - docs/models/toolparametertype.md - - docs/models/toolscallparameter.md - - docs/models/toolscallrequest.md - - docs/models/toolscallresponse.md - - docs/models/toolsets.md - - docs/models/toolslistresponse.md - - docs/models/tooltype.md - - docs/models/ugctype.md - - docs/models/uiconfig.md - - docs/models/uioptions.md - - docs/models/unpin.md - - docs/models/updateannouncementrequest.md - - docs/models/updateannouncementrequestchannel.md - - docs/models/updateannouncementrequestposttype.md - - docs/models/updatedlpconfigrequest.md - - docs/models/updatedlpconfigresponse.md - - docs/models/updatedlpreportrequest.md - - docs/models/updatedlpreportresponse.md - - docs/models/updatedocumentvisibilityoverridesrequest.md - - docs/models/updatedocumentvisibilityoverridesresponse.md - - docs/models/updatepermissionsrequest.md - - docs/models/updatepolicyrequest.md - - docs/models/updateshortcutrequest.md - - docs/models/updateshortcutresponse.md - - docs/models/updatetype.md - - docs/models/uploadchatfilesrequest.md - - docs/models/uploadchatfilesrequestrequest.md - - docs/models/uploadchatfilesresponse.md - - docs/models/uploadshortcutsrequest.md - - docs/models/uploadstatusenum.md - - docs/models/user.md - - docs/models/useractivity.md - - docs/models/useractivityaction.md - - docs/models/useractivityinsight.md - - docs/models/usergeneratedcontentid.md - - docs/models/userinsightsresponse.md - - docs/models/userreferencedefinition.md - - docs/models/userrole.md - - docs/models/userrolespecification.md - - docs/models/userstatusresponse.md - - docs/models/userviewinfo.md - - docs/models/utils/retryconfig.md - - docs/models/value.md - - docs/models/verification.md - - docs/models/verificationfeed.md - - docs/models/verificationmetadata.md - - docs/models/verifyrequest.md - - docs/models/verifyrequestaction.md - - docs/models/viewerinfo.md - - docs/models/warningtype.md - - docs/models/workflow.md - - docs/models/workflowfeedbackinfo.md - - docs/models/workflowfeedbackinfosource.md - - docs/models/workflowresult.md - - docs/models/writeactionparameter.md - - docs/models/writeactionparametertype.md - - docs/models/writeactiontype.md - - docs/models/writepermission.md - - docs/sdks/agents/README.md - - docs/sdks/announcements/README.md - - docs/sdks/answers/README.md - - docs/sdks/clientactivity/README.md - - docs/sdks/clientauthentication/README.md - - docs/sdks/clientchat/README.md - - docs/sdks/clientdocuments/README.md - - docs/sdks/clientshortcuts/README.md - - docs/sdks/clientverification/README.md - - docs/sdks/collections/README.md - - docs/sdks/datasources/README.md - - docs/sdks/entities/README.md - - docs/sdks/indexingauthentication/README.md - - docs/sdks/indexingdatasource/README.md - - docs/sdks/indexingdocuments/README.md - - docs/sdks/indexingpermissions/README.md - - docs/sdks/indexingshortcuts/README.md - - docs/sdks/insights/README.md - - docs/sdks/messages/README.md - - docs/sdks/people/README.md - - docs/sdks/pins/README.md - - docs/sdks/policies/README.md - - docs/sdks/reports/README.md - - docs/sdks/search/README.md - - docs/sdks/tools/README.md - - docs/sdks/visibilityoverrides/README.md - - poetry.toml - - py.typed - - pylintrc - - scripts/prepare_readme.py - - scripts/publish.sh - - src/glean/api_client/__init__.py - - src/glean/api_client/_hooks/__init__.py - - src/glean/api_client/_hooks/sdkhooks.py - - src/glean/api_client/_hooks/types.py - - src/glean/api_client/_version.py - - src/glean/api_client/agents.py - - src/glean/api_client/announcements.py - - src/glean/api_client/answers.py - - src/glean/api_client/basesdk.py - - src/glean/api_client/client.py - - src/glean/api_client/client_activity.py - - src/glean/api_client/client_authentication.py - - src/glean/api_client/client_chat.py - - src/glean/api_client/client_documents.py - - src/glean/api_client/client_shortcuts.py - - src/glean/api_client/client_verification.py - - src/glean/api_client/collections.py - - src/glean/api_client/data.py - - src/glean/api_client/datasources.py - - src/glean/api_client/entities.py - - src/glean/api_client/errors/__init__.py - - src/glean/api_client/errors/collectionerror.py - - src/glean/api_client/errors/gleanbaseerror.py - - src/glean/api_client/errors/gleandataerror.py - - src/glean/api_client/errors/gleanerror.py - - src/glean/api_client/errors/no_response_error.py - - src/glean/api_client/errors/responsevalidationerror.py - - src/glean/api_client/governance.py - - src/glean/api_client/governance_documents.py - - src/glean/api_client/httpclient.py - - src/glean/api_client/indexing.py - - src/glean/api_client/indexing_authentication.py - - src/glean/api_client/indexing_datasource.py - - src/glean/api_client/indexing_documents.py - - src/glean/api_client/indexing_permissions.py - - src/glean/api_client/indexing_shortcuts.py - - src/glean/api_client/insights.py - - src/glean/api_client/messages.py - - src/glean/api_client/models/__init__.py - - src/glean/api_client/models/activity.py - - src/glean/api_client/models/activityevent.py - - src/glean/api_client/models/activityeventparams.py - - src/glean/api_client/models/addcollectionitemserror.py - - src/glean/api_client/models/addcollectionitemsrequest.py - - src/glean/api_client/models/addcollectionitemsresponse.py - - src/glean/api_client/models/additionalfielddefinition.py - - src/glean/api_client/models/agent.py - - src/glean/api_client/models/agentconfig.py - - src/glean/api_client/models/agentexecutionstatus.py - - src/glean/api_client/models/agentrun.py - - src/glean/api_client/models/agentruncreate.py - - src/glean/api_client/models/agentrunwaitresponse.py - - src/glean/api_client/models/agentschemas.py - - src/glean/api_client/models/agentsinsightsv2request.py - - src/glean/api_client/models/agentsinsightsv2response.py - - src/glean/api_client/models/agentsusagebydepartmentinsight.py - - src/glean/api_client/models/agentusersinsight.py - - src/glean/api_client/models/aiappactioncounts.py - - src/glean/api_client/models/aiappsinsightsresponse.py - - src/glean/api_client/models/aiinsightsresponse.py - - src/glean/api_client/models/allowlistoptions.py - - src/glean/api_client/models/announcement.py - - src/glean/api_client/models/anonymousevent.py - - src/glean/api_client/models/answer.py - - src/glean/api_client/models/answerboard.py - - src/glean/api_client/models/answercreationdata.py - - src/glean/api_client/models/answerlike.py - - src/glean/api_client/models/answerlikes.py - - src/glean/api_client/models/answerresult.py - - src/glean/api_client/models/appresult.py - - src/glean/api_client/models/assistantinsightsresponse.py - - src/glean/api_client/models/authconfig.py - - src/glean/api_client/models/authtoken.py - - src/glean/api_client/models/autocompleterequest.py - - src/glean/api_client/models/autocompleteresponse.py - - src/glean/api_client/models/autocompleteresult.py - - src/glean/api_client/models/autocompleteresultgroup.py - - src/glean/api_client/models/badge.py - - src/glean/api_client/models/bulkindexdocumentsrequest.py - - src/glean/api_client/models/bulkindexemployeesrequest.py - - src/glean/api_client/models/bulkindexgroupsrequest.py - - src/glean/api_client/models/bulkindexmembershipsrequest.py - - src/glean/api_client/models/bulkindexshortcutsrequest.py - - src/glean/api_client/models/bulkindexteamsrequest.py - - src/glean/api_client/models/bulkindexusersrequest.py - - src/glean/api_client/models/bulkuploadhistoryevent.py - - src/glean/api_client/models/calendarattendee.py - - src/glean/api_client/models/calendarattendees.py - - src/glean/api_client/models/calendarevent.py - - src/glean/api_client/models/canonicalizingregextype.py - - src/glean/api_client/models/channelinviteinfo.py - - src/glean/api_client/models/chat.py - - src/glean/api_client/models/chatfile.py - - src/glean/api_client/models/chatfilefailurereason.py - - src/glean/api_client/models/chatfilemetadata.py - - src/glean/api_client/models/chatfilestatus.py - - src/glean/api_client/models/chatmessage.py - - src/glean/api_client/models/chatmessagecitation.py - - src/glean/api_client/models/chatmessagefragment.py - - src/glean/api_client/models/chatmetadata.py - - src/glean/api_client/models/chatmetadataresult.py - - src/glean/api_client/models/chatop.py - - src/glean/api_client/models/chatrequest.py - - src/glean/api_client/models/chatresponse.py - - src/glean/api_client/models/chatrestrictionfilters.py - - src/glean/api_client/models/chatresult.py - - src/glean/api_client/models/chatstreamop.py - - src/glean/api_client/models/chatsuggestion.py - - src/glean/api_client/models/chatzerostatesuggestionoptions.py - - src/glean/api_client/models/checkdocumentaccessrequest.py - - src/glean/api_client/models/checkdocumentaccessresponse.py - - src/glean/api_client/models/clustergroup.py - - src/glean/api_client/models/clustertypeenum.py - - src/glean/api_client/models/code.py - - src/glean/api_client/models/codeline.py - - src/glean/api_client/models/collection.py - - src/glean/api_client/models/collectionerror.py - - src/glean/api_client/models/collectionitem.py - - src/glean/api_client/models/collectionitemdescriptor.py - - src/glean/api_client/models/collectionpinmetadata.py - - src/glean/api_client/models/collectionpinnablecategories.py - - src/glean/api_client/models/collectionpinnabletargets.py - - src/glean/api_client/models/collectionpinnedmetadata.py - - src/glean/api_client/models/collectionpintarget.py - - src/glean/api_client/models/commentdefinition.py - - src/glean/api_client/models/communicationchannel.py - - src/glean/api_client/models/company.py - - src/glean/api_client/models/conferencedata.py - - src/glean/api_client/models/connectortype.py - - src/glean/api_client/models/contentdefinition.py - - src/glean/api_client/models/contentinsightsresponse.py - - src/glean/api_client/models/contenttype.py - - src/glean/api_client/models/countinfo.py - - src/glean/api_client/models/createannouncementrequest.py - - src/glean/api_client/models/createanswerrequest.py - - src/glean/api_client/models/createauthtokenresponse.py - - src/glean/api_client/models/createcollectionop.py - - src/glean/api_client/models/createcollectionrequest.py - - src/glean/api_client/models/createdlpreportrequest.py - - src/glean/api_client/models/createdlpreportresponse.py - - src/glean/api_client/models/createshortcutrequest.py - - src/glean/api_client/models/createshortcutresponse.py - - src/glean/api_client/models/currentactiveusers.py - - src/glean/api_client/models/customdatasourceconfig.py - - src/glean/api_client/models/customdatavalue.py - - src/glean/api_client/models/customentity.py - - src/glean/api_client/models/customentitymetadata.py - - src/glean/api_client/models/customer.py - - src/glean/api_client/models/customermetadata.py - - src/glean/api_client/models/customfielddata.py - - src/glean/api_client/models/customfieldvalue.py - - src/glean/api_client/models/customfieldvaluehyperlink.py - - src/glean/api_client/models/customfieldvalueperson.py - - src/glean/api_client/models/customfieldvaluestr.py - - src/glean/api_client/models/customproperty.py - - src/glean/api_client/models/datasourcebulkmembershipdefinition.py - - src/glean/api_client/models/datasourcegroupdefinition.py - - src/glean/api_client/models/datasourcemembershipdefinition.py - - src/glean/api_client/models/datasourceobjecttypedocumentcountentry.py - - src/glean/api_client/models/datasourceprofile.py - - src/glean/api_client/models/datasourceuserdefinition.py - - src/glean/api_client/models/debugdatasourcestatusidentityresponsecomponent.py - - src/glean/api_client/models/debugdatasourcestatusresponse.py - - src/glean/api_client/models/debugdocumentrequest.py - - src/glean/api_client/models/debugdocumentresponse.py - - src/glean/api_client/models/debugdocumentsrequest.py - - src/glean/api_client/models/debugdocumentsresponse.py - - src/glean/api_client/models/debugdocumentsresponseitem.py - - src/glean/api_client/models/debuguserrequest.py - - src/glean/api_client/models/debuguserresponse.py - - src/glean/api_client/models/deleteallchatsop.py - - src/glean/api_client/models/deleteannouncementrequest.py - - src/glean/api_client/models/deleteanswerrequest.py - - src/glean/api_client/models/deletechatfilesop.py - - src/glean/api_client/models/deletechatfilesrequest.py - - src/glean/api_client/models/deletechatsop.py - - src/glean/api_client/models/deletechatsrequest.py - - src/glean/api_client/models/deletecollectionitemrequest.py - - src/glean/api_client/models/deletecollectionitemresponse.py - - src/glean/api_client/models/deletecollectionrequest.py - - src/glean/api_client/models/deletedocumentrequest.py - - src/glean/api_client/models/deleteemployeerequest.py - - src/glean/api_client/models/deletegrouprequest.py - - src/glean/api_client/models/deletemembershiprequest.py - - src/glean/api_client/models/deleteshortcutrequest.py - - src/glean/api_client/models/deleteteamrequest.py - - src/glean/api_client/models/deleteuserrequest.py - - src/glean/api_client/models/digest.py - - src/glean/api_client/models/digestsection.py - - src/glean/api_client/models/digestupdate.py - - src/glean/api_client/models/disambiguation.py - - src/glean/api_client/models/displayablelistitemuiconfig.py - - src/glean/api_client/models/dlpconfig.py - - src/glean/api_client/models/dlpfrequency.py - - src/glean/api_client/models/dlpperson.py - - src/glean/api_client/models/dlppersonmetadata.py - - src/glean/api_client/models/dlpreport.py - - src/glean/api_client/models/dlpreportstatus.py - - src/glean/api_client/models/dlpsimpleresult.py - - src/glean/api_client/models/document.py - - src/glean/api_client/models/documentcontent.py - - src/glean/api_client/models/documentdefinition.py - - src/glean/api_client/models/documentinsight.py - - src/glean/api_client/models/documentinteractions.py - - src/glean/api_client/models/documentinteractionsdefinition.py - - src/glean/api_client/models/documentmetadata.py - - src/glean/api_client/models/documentorerror_union.py - - src/glean/api_client/models/documentpermissionsdefinition.py - - src/glean/api_client/models/documentsection.py - - src/glean/api_client/models/documentspec_union.py - - src/glean/api_client/models/documentstatusresponse.py - - src/glean/api_client/models/documentvisibility.py - - src/glean/api_client/models/documentvisibilityoverride.py - - src/glean/api_client/models/documentvisibilityupdateresult.py - - src/glean/api_client/models/downloadpolicycsvop.py - - src/glean/api_client/models/downloadreportcsvop.py - - src/glean/api_client/models/editanswerrequest.py - - src/glean/api_client/models/editcollectionitemrequest.py - - src/glean/api_client/models/editcollectionitemresponse.py - - src/glean/api_client/models/editcollectionrequest.py - - src/glean/api_client/models/editcollectionresponse.py - - src/glean/api_client/models/editpinrequest.py - - src/glean/api_client/models/employeeinfodefinition.py - - src/glean/api_client/models/employeeteaminfo.py - - src/glean/api_client/models/entitiessortorder.py - - src/glean/api_client/models/entityrelationship.py - - src/glean/api_client/models/entitytype.py - - src/glean/api_client/models/errormessage.py - - src/glean/api_client/models/eventclassification.py - - src/glean/api_client/models/eventclassificationname.py - - src/glean/api_client/models/eventstrategyname.py - - src/glean/api_client/models/externalsharingoptions.py - - src/glean/api_client/models/externalshortcut.py - - src/glean/api_client/models/extractedqna.py - - src/glean/api_client/models/facetbucket.py - - src/glean/api_client/models/facetbucketfilter.py - - src/glean/api_client/models/facetfilter.py - - src/glean/api_client/models/facetfilterset.py - - src/glean/api_client/models/facetfiltervalue.py - - src/glean/api_client/models/facetresult.py - - src/glean/api_client/models/facetvalue.py - - src/glean/api_client/models/favoriteinfo.py - - src/glean/api_client/models/feedback.py - - src/glean/api_client/models/feedbackchatexchange.py - - src/glean/api_client/models/feedbackop.py - - src/glean/api_client/models/feedentry.py - - src/glean/api_client/models/feedrequest.py - - src/glean/api_client/models/feedrequestoptions.py - - src/glean/api_client/models/feedresponse.py - - src/glean/api_client/models/feedresult.py - - src/glean/api_client/models/followupaction.py - - src/glean/api_client/models/generatedattachment.py - - src/glean/api_client/models/generatedattachmentcontent.py - - src/glean/api_client/models/generatedqna.py - - src/glean/api_client/models/get_rest_api_v1_tools_listop.py - - src/glean/api_client/models/getagentop.py - - src/glean/api_client/models/getagentschemasop.py - - src/glean/api_client/models/getanswererror.py - - src/glean/api_client/models/getanswerrequest.py - - src/glean/api_client/models/getanswerresponse.py - - src/glean/api_client/models/getchatapplicationop.py - - src/glean/api_client/models/getchatapplicationrequest.py - - src/glean/api_client/models/getchatapplicationresponse.py - - src/glean/api_client/models/getchatfilesop.py - - src/glean/api_client/models/getchatfilesrequest.py - - src/glean/api_client/models/getchatfilesresponse.py - - src/glean/api_client/models/getchatop.py - - src/glean/api_client/models/getchatrequest.py - - src/glean/api_client/models/getchatresponse.py - - src/glean/api_client/models/getcollectionrequest.py - - src/glean/api_client/models/getcollectionresponse.py - - src/glean/api_client/models/getdatasourceconfigrequest.py - - src/glean/api_client/models/getdlpreportresponse.py - - src/glean/api_client/models/getdocpermissionsrequest.py - - src/glean/api_client/models/getdocpermissionsresponse.py - - src/glean/api_client/models/getdocumentcountrequest.py - - src/glean/api_client/models/getdocumentcountresponse.py - - src/glean/api_client/models/getdocumentsbyfacetsrequest.py - - src/glean/api_client/models/getdocumentsbyfacetsresponse.py - - src/glean/api_client/models/getdocumentsrequest.py - - src/glean/api_client/models/getdocumentsresponse.py - - src/glean/api_client/models/getdocumentstatusrequest.py - - src/glean/api_client/models/getdocumentstatusresponse.py - - src/glean/api_client/models/getdocumentvisibilityoverridesresponse.py - - src/glean/api_client/models/getdocvisibilityop.py - - src/glean/api_client/models/getpinrequest.py - - src/glean/api_client/models/getpinresponse.py - - src/glean/api_client/models/getpolicyop.py - - src/glean/api_client/models/getreportstatusop.py - - src/glean/api_client/models/getshortcutrequest_union.py - - src/glean/api_client/models/getshortcutresponse.py - - src/glean/api_client/models/getusercountrequest.py - - src/glean/api_client/models/getusercountresponse.py - - src/glean/api_client/models/gleanassistinsightsresponse.py - - src/glean/api_client/models/gleandataerror.py - - src/glean/api_client/models/grantpermission.py - - src/glean/api_client/models/greenlistusersrequest.py - - src/glean/api_client/models/group.py - - src/glean/api_client/models/grouptype.py - - src/glean/api_client/models/hotword.py - - src/glean/api_client/models/hotwordproximity.py - - src/glean/api_client/models/iconconfig.py - - src/glean/api_client/models/indexdocumentrequest.py - - src/glean/api_client/models/indexdocumentsrequest.py - - src/glean/api_client/models/indexemployeerequest.py - - src/glean/api_client/models/indexgrouprequest.py - - src/glean/api_client/models/indexingshortcut.py - - src/glean/api_client/models/indexmembershiprequest.py - - src/glean/api_client/models/indexstatus.py - - src/glean/api_client/models/indexteamrequest.py - - src/glean/api_client/models/indexuserrequest.py - - src/glean/api_client/models/inputoptions.py - - src/glean/api_client/models/insightsagentsrequestoptions.py - - src/glean/api_client/models/insightsaiapprequestoptions.py - - src/glean/api_client/models/insightsassistantrequest.py - - src/glean/api_client/models/insightschatsummary.py - - src/glean/api_client/models/insightsoverviewrequest.py - - src/glean/api_client/models/insightsoverviewresponse.py - - src/glean/api_client/models/insightsrequest.py - - src/glean/api_client/models/insightsresponse.py - - src/glean/api_client/models/insightssearchsummary.py - - src/glean/api_client/models/invalidoperatorvalueerror.py - - src/glean/api_client/models/inviteinfo.py - - src/glean/api_client/models/labeledcountinfo.py - - src/glean/api_client/models/listanswersrequest.py - - src/glean/api_client/models/listanswersresponse.py - - src/glean/api_client/models/listchatsop.py - - src/glean/api_client/models/listchatsresponse.py - - src/glean/api_client/models/listcollectionsrequest.py - - src/glean/api_client/models/listcollectionsresponse.py - - src/glean/api_client/models/listdlpreportsresponse.py - - src/glean/api_client/models/listentitiesrequest.py - - src/glean/api_client/models/listentitiesresponse.py - - src/glean/api_client/models/listpinsop.py - - src/glean/api_client/models/listpinsresponse.py - - src/glean/api_client/models/listpoliciesop.py - - src/glean/api_client/models/listshortcutspaginatedrequest.py - - src/glean/api_client/models/listshortcutspaginatedresponse.py - - src/glean/api_client/models/listverificationsop.py - - src/glean/api_client/models/manualfeedbackinfo.py - - src/glean/api_client/models/manualfeedbacksidebysideinfo.py - - src/glean/api_client/models/meeting.py - - src/glean/api_client/models/message.py - - src/glean/api_client/models/messagesrequest.py - - src/glean/api_client/models/messagesresponse.py - - src/glean/api_client/models/objectdefinition.py - - src/glean/api_client/models/objectpermissions.py - - src/glean/api_client/models/operatormetadata.py - - src/glean/api_client/models/operatorscope.py - - src/glean/api_client/models/peoplerequest.py - - src/glean/api_client/models/peopleresponse.py - - src/glean/api_client/models/peragentinsight.py - - src/glean/api_client/models/period.py - - src/glean/api_client/models/permissions.py - - src/glean/api_client/models/permissionsgroupintersectiondefinition.py - - src/glean/api_client/models/person.py - - src/glean/api_client/models/persondistance.py - - src/glean/api_client/models/personmetadata.py - - src/glean/api_client/models/personobject.py - - src/glean/api_client/models/personteam.py - - src/glean/api_client/models/persontoteamrelationship.py - - src/glean/api_client/models/peruserassistantinsight.py - - src/glean/api_client/models/peruserinsight.py - - src/glean/api_client/models/pindocument.py - - src/glean/api_client/models/pinrequest.py - - src/glean/api_client/models/possiblevalue.py - - src/glean/api_client/models/post_api_index_v1_debug_datasource_documentop.py - - src/glean/api_client/models/post_api_index_v1_debug_datasource_documentsop.py - - src/glean/api_client/models/post_api_index_v1_debug_datasource_statusop.py - - src/glean/api_client/models/post_api_index_v1_debug_datasource_userop.py - - src/glean/api_client/models/processalldocumentsrequest.py - - src/glean/api_client/models/processallmembershipsrequest.py - - src/glean/api_client/models/processinghistoryevent.py - - src/glean/api_client/models/prompttemplate.py - - src/glean/api_client/models/prompttemplateresult.py - - src/glean/api_client/models/propertydefinition.py - - src/glean/api_client/models/propertygroup.py - - src/glean/api_client/models/queryinsight.py - - src/glean/api_client/models/queryinsightsresponse.py - - src/glean/api_client/models/querysuggestion.py - - src/glean/api_client/models/querysuggestionlist.py - - src/glean/api_client/models/quicklink.py - - src/glean/api_client/models/reaction.py - - src/glean/api_client/models/readpermission.py - - src/glean/api_client/models/recommendationsrequest.py - - src/glean/api_client/models/recommendationsrequestoptions.py - - src/glean/api_client/models/referencerange.py - - src/glean/api_client/models/relateddocuments.py - - src/glean/api_client/models/relatedobject.py - - src/glean/api_client/models/relatedobjectedge.py - - src/glean/api_client/models/relatedquestion.py - - src/glean/api_client/models/reminder.py - - src/glean/api_client/models/reminderrequest.py - - src/glean/api_client/models/reportstatusresponse.py - - src/glean/api_client/models/restrictionfilters.py - - src/glean/api_client/models/resultsdescription.py - - src/glean/api_client/models/resultsresponse.py - - src/glean/api_client/models/resulttab.py - - src/glean/api_client/models/rotatetokenresponse.py - - src/glean/api_client/models/scopetype.py - - src/glean/api_client/models/searchagentsrequest.py - - src/glean/api_client/models/searchagentsresponse.py - - src/glean/api_client/models/searchproviderinfo.py - - src/glean/api_client/models/searchrequest.py - - src/glean/api_client/models/searchrequestinputdetails.py - - src/glean/api_client/models/searchrequestoptions.py - - src/glean/api_client/models/searchresponse.py - - src/glean/api_client/models/searchresponsemetadata.py - - src/glean/api_client/models/searchresult.py - - src/glean/api_client/models/searchresultprominenceenum.py - - src/glean/api_client/models/searchresultsnippet.py - - src/glean/api_client/models/searchwarning.py - - src/glean/api_client/models/sectiontype.py - - src/glean/api_client/models/security.py - - src/glean/api_client/models/seenfeedbackinfo.py - - src/glean/api_client/models/sensitivecontentoptions.py - - src/glean/api_client/models/sensitiveexpression.py - - src/glean/api_client/models/sensitiveinfotype.py - - src/glean/api_client/models/sessioninfo.py - - src/glean/api_client/models/share.py - - src/glean/api_client/models/sharingoptions.py - - src/glean/api_client/models/shortcut.py - - src/glean/api_client/models/shortcuterror.py - - src/glean/api_client/models/shortcutinsight.py - - src/glean/api_client/models/shortcutinsightsresponse.py - - src/glean/api_client/models/shortcutmutableproperties.py - - src/glean/api_client/models/shortcutspaginationmetadata.py - - src/glean/api_client/models/sidebysideimplementation.py - - src/glean/api_client/models/socialnetwork.py - - src/glean/api_client/models/socialnetworkdefinition.py - - src/glean/api_client/models/sortoptions.py - - src/glean/api_client/models/structuredlink.py - - src/glean/api_client/models/structuredlocation.py - - src/glean/api_client/models/structuredresult.py - - src/glean/api_client/models/structuredtext.py - - src/glean/api_client/models/structuredtextitem.py - - src/glean/api_client/models/structuredtextmutableproperties.py - - src/glean/api_client/models/summarizerequest.py - - src/glean/api_client/models/summarizeresponse.py - - src/glean/api_client/models/summary.py - - src/glean/api_client/models/team.py - - src/glean/api_client/models/teamemail.py - - src/glean/api_client/models/teaminfodefinition.py - - src/glean/api_client/models/teammember.py - - src/glean/api_client/models/textrange.py - - src/glean/api_client/models/thumbnail.py - - src/glean/api_client/models/timeinterval.py - - src/glean/api_client/models/timepoint.py - - src/glean/api_client/models/timerange.py - - src/glean/api_client/models/tool.py - - src/glean/api_client/models/toolinfo.py - - src/glean/api_client/models/toolmetadata.py - - src/glean/api_client/models/toolparameter.py - - src/glean/api_client/models/toolscallparameter.py - - src/glean/api_client/models/toolscallrequest.py - - src/glean/api_client/models/toolscallresponse.py - - src/glean/api_client/models/toolsets.py - - src/glean/api_client/models/toolslistresponse.py - - src/glean/api_client/models/ugctype.py - - src/glean/api_client/models/unpin.py - - src/glean/api_client/models/updateannouncementrequest.py - - src/glean/api_client/models/updatedlpconfigrequest.py - - src/glean/api_client/models/updatedlpconfigresponse.py - - src/glean/api_client/models/updatedlpreportrequest.py - - src/glean/api_client/models/updatedlpreportresponse.py - - src/glean/api_client/models/updatedocumentvisibilityoverridesrequest.py - - src/glean/api_client/models/updatedocumentvisibilityoverridesresponse.py - - src/glean/api_client/models/updatepermissionsrequest.py - - src/glean/api_client/models/updatepolicyop.py - - src/glean/api_client/models/updateshortcutrequest.py - - src/glean/api_client/models/updateshortcutresponse.py - - src/glean/api_client/models/updatetype.py - - src/glean/api_client/models/uploadchatfilesop.py - - src/glean/api_client/models/uploadchatfilesrequest.py - - src/glean/api_client/models/uploadchatfilesresponse.py - - src/glean/api_client/models/uploadshortcutsrequest.py - - src/glean/api_client/models/uploadstatusenum.py - - src/glean/api_client/models/user.py - - src/glean/api_client/models/useractivity.py - - src/glean/api_client/models/useractivityinsight.py - - src/glean/api_client/models/usergeneratedcontentid.py - - src/glean/api_client/models/userinsightsresponse.py - - src/glean/api_client/models/userreferencedefinition.py - - src/glean/api_client/models/userrole.py - - src/glean/api_client/models/userrolespecification.py - - src/glean/api_client/models/userstatusresponse.py - - src/glean/api_client/models/userviewinfo.py - - src/glean/api_client/models/verification.py - - src/glean/api_client/models/verificationfeed.py - - src/glean/api_client/models/verificationmetadata.py - - src/glean/api_client/models/verifyrequest.py - - src/glean/api_client/models/viewerinfo.py - - src/glean/api_client/models/workflow.py - - src/glean/api_client/models/workflowfeedbackinfo.py - - src/glean/api_client/models/workflowresult.py - - src/glean/api_client/models/writeactionparameter.py - - src/glean/api_client/models/writepermission.py - - src/glean/api_client/people.py - - src/glean/api_client/pins.py - - src/glean/api_client/policies.py - - src/glean/api_client/py.typed - - src/glean/api_client/reports.py - - src/glean/api_client/sdk.py - - src/glean/api_client/sdkconfiguration.py - - src/glean/api_client/search.py - - src/glean/api_client/tools.py - - src/glean/api_client/types/__init__.py - - src/glean/api_client/types/basemodel.py - - src/glean/api_client/utils/__init__.py - - src/glean/api_client/utils/annotations.py - - src/glean/api_client/utils/datetimes.py - - src/glean/api_client/utils/enums.py - - src/glean/api_client/utils/eventstreaming.py - - src/glean/api_client/utils/forms.py - - src/glean/api_client/utils/headers.py - - src/glean/api_client/utils/logger.py - - src/glean/api_client/utils/metadata.py - - src/glean/api_client/utils/queryparams.py - - src/glean/api_client/utils/requestbodies.py - - src/glean/api_client/utils/retries.py - - src/glean/api_client/utils/security.py - - src/glean/api_client/utils/serializers.py - - src/glean/api_client/utils/unmarshal_json_response.py - - src/glean/api_client/utils/url.py - - src/glean/api_client/utils/values.py - - src/glean/api_client/visibilityoverrides.py - - tests/__init__.py - - tests/mockserver/.gitignore - - tests/mockserver/Dockerfile - - tests/mockserver/Makefile - - tests/mockserver/README.md - - tests/mockserver/go.mod - - tests/mockserver/go.sum - - tests/mockserver/internal/handler/assert/contenttype.go - - tests/mockserver/internal/handler/assert/header.go - - tests/mockserver/internal/handler/assert/parameter.go - - tests/mockserver/internal/handler/assert/pointer.go - - tests/mockserver/internal/handler/assert/security.go - - tests/mockserver/internal/handler/doc.go - - tests/mockserver/internal/handler/generated_handler.go - - tests/mockserver/internal/handler/generated_handlers.go - - tests/mockserver/internal/handler/pathgetrestapiv1agentsagentid.go - - tests/mockserver/internal/handler/pathgetrestapiv1agentsagentidschemas.go - - tests/mockserver/internal/handler/pathgetrestapiv1governancedatapolicies.go - - tests/mockserver/internal/handler/pathgetrestapiv1governancedatapoliciesid.go - - tests/mockserver/internal/handler/pathgetrestapiv1toolslist.go - - tests/mockserver/internal/handler/pathpostapiindexv1adddatasource.go - - tests/mockserver/internal/handler/pathpostapiindexv1betausers.go - - tests/mockserver/internal/handler/pathpostapiindexv1bulkindexdocuments.go - - tests/mockserver/internal/handler/pathpostapiindexv1bulkindexgroups.go - - tests/mockserver/internal/handler/pathpostapiindexv1bulkindexmemberships.go - - tests/mockserver/internal/handler/pathpostapiindexv1bulkindexusers.go - - tests/mockserver/internal/handler/pathpostapiindexv1checkdocumentaccess.go - - tests/mockserver/internal/handler/pathpostapiindexv1deletedocument.go - - tests/mockserver/internal/handler/pathpostapiindexv1deletegroup.go - - tests/mockserver/internal/handler/pathpostapiindexv1deletemembership.go - - tests/mockserver/internal/handler/pathpostapiindexv1deleteuser.go - - tests/mockserver/internal/handler/pathpostapiindexv1getdatasourceconfig.go - - tests/mockserver/internal/handler/pathpostapiindexv1getdocumentcount.go - - tests/mockserver/internal/handler/pathpostapiindexv1getdocumentstatus.go - - tests/mockserver/internal/handler/pathpostapiindexv1getusercount.go - - tests/mockserver/internal/handler/pathpostapiindexv1indexdocument.go - - tests/mockserver/internal/handler/pathpostapiindexv1indexdocuments.go - - tests/mockserver/internal/handler/pathpostapiindexv1indexgroup.go - - tests/mockserver/internal/handler/pathpostapiindexv1indexmembership.go - - tests/mockserver/internal/handler/pathpostapiindexv1indexuser.go - - tests/mockserver/internal/handler/pathpostapiindexv1processalldocuments.go - - tests/mockserver/internal/handler/pathpostapiindexv1processallemployeesandteams.go - - tests/mockserver/internal/handler/pathpostapiindexv1processallmemberships.go - - tests/mockserver/internal/handler/pathpostapiindexv1rotatetoken.go - - tests/mockserver/internal/handler/pathpostapiindexv1updatepermissions.go - - tests/mockserver/internal/handler/pathpostrestapiv1activity.go - - tests/mockserver/internal/handler/pathpostrestapiv1addcollectionitems.go - - tests/mockserver/internal/handler/pathpostrestapiv1addverificationreminder.go - - tests/mockserver/internal/handler/pathpostrestapiv1adminsearch.go - - tests/mockserver/internal/handler/pathpostrestapiv1autocomplete.go - - tests/mockserver/internal/handler/pathpostrestapiv1chat.go - - tests/mockserver/internal/handler/pathpostrestapiv1createannouncement.go - - tests/mockserver/internal/handler/pathpostrestapiv1createanswer.go - - tests/mockserver/internal/handler/pathpostrestapiv1createauthtoken.go - - tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go - - tests/mockserver/internal/handler/pathpostrestapiv1createshortcut.go - - tests/mockserver/internal/handler/pathpostrestapiv1deleteallchats.go - - tests/mockserver/internal/handler/pathpostrestapiv1deleteannouncement.go - - tests/mockserver/internal/handler/pathpostrestapiv1deleteanswer.go - - tests/mockserver/internal/handler/pathpostrestapiv1deletechatfiles.go - - tests/mockserver/internal/handler/pathpostrestapiv1deletechats.go - - tests/mockserver/internal/handler/pathpostrestapiv1deletecollection.go - - tests/mockserver/internal/handler/pathpostrestapiv1deletecollectionitem.go - - tests/mockserver/internal/handler/pathpostrestapiv1deleteshortcut.go - - tests/mockserver/internal/handler/pathpostrestapiv1editanswer.go - - tests/mockserver/internal/handler/pathpostrestapiv1editcollection.go - - tests/mockserver/internal/handler/pathpostrestapiv1editcollectionitem.go - - tests/mockserver/internal/handler/pathpostrestapiv1editpin.go - - tests/mockserver/internal/handler/pathpostrestapiv1feed.go - - tests/mockserver/internal/handler/pathpostrestapiv1feedback.go - - tests/mockserver/internal/handler/pathpostrestapiv1getanswer.go - - tests/mockserver/internal/handler/pathpostrestapiv1getchat.go - - tests/mockserver/internal/handler/pathpostrestapiv1getchatapplication.go - - tests/mockserver/internal/handler/pathpostrestapiv1getchatfiles.go - - tests/mockserver/internal/handler/pathpostrestapiv1getcollection.go - - tests/mockserver/internal/handler/pathpostrestapiv1getdocpermissions.go - - tests/mockserver/internal/handler/pathpostrestapiv1getdocuments.go - - tests/mockserver/internal/handler/pathpostrestapiv1getdocumentsbyfacets.go - - tests/mockserver/internal/handler/pathpostrestapiv1getpin.go - - tests/mockserver/internal/handler/pathpostrestapiv1getshortcut.go - - tests/mockserver/internal/handler/pathpostrestapiv1insights.go - - tests/mockserver/internal/handler/pathpostrestapiv1listanswers.go - - tests/mockserver/internal/handler/pathpostrestapiv1listchats.go - - tests/mockserver/internal/handler/pathpostrestapiv1listcollections.go - - tests/mockserver/internal/handler/pathpostrestapiv1listentities.go - - tests/mockserver/internal/handler/pathpostrestapiv1listpins.go - - tests/mockserver/internal/handler/pathpostrestapiv1listshortcuts.go - - tests/mockserver/internal/handler/pathpostrestapiv1listverifications.go - - tests/mockserver/internal/handler/pathpostrestapiv1messages.go - - tests/mockserver/internal/handler/pathpostrestapiv1people.go - - tests/mockserver/internal/handler/pathpostrestapiv1pin.go - - tests/mockserver/internal/handler/pathpostrestapiv1recommendations.go - - tests/mockserver/internal/handler/pathpostrestapiv1search.go - - tests/mockserver/internal/handler/pathpostrestapiv1summarize.go - - tests/mockserver/internal/handler/pathpostrestapiv1toolscall.go - - tests/mockserver/internal/handler/pathpostrestapiv1unpin.go - - tests/mockserver/internal/handler/pathpostrestapiv1updateannouncement.go - - tests/mockserver/internal/handler/pathpostrestapiv1updateshortcut.go - - tests/mockserver/internal/handler/pathpostrestapiv1verify.go - - tests/mockserver/internal/handler/values/files.go - - tests/mockserver/internal/logging/doc.go - - tests/mockserver/internal/logging/formats.go - - tests/mockserver/internal/logging/http_file.go - - tests/mockserver/internal/logging/http_logger.go - - tests/mockserver/internal/logging/levels.go - - tests/mockserver/internal/logging/logger.go - - tests/mockserver/internal/logging/oas_operation.go - - tests/mockserver/internal/logging/oas_operation_call.go - - tests/mockserver/internal/sdk/models/components/activity.go - - tests/mockserver/internal/sdk/models/components/activityevent.go - - tests/mockserver/internal/sdk/models/components/activityeventparams.go - - tests/mockserver/internal/sdk/models/components/addcollectionitemserror.go - - tests/mockserver/internal/sdk/models/components/addcollectionitemsrequest.go - - tests/mockserver/internal/sdk/models/components/addcollectionitemsresponse.go - - tests/mockserver/internal/sdk/models/components/additionalfielddefinition.go - - tests/mockserver/internal/sdk/models/components/agent.go - - tests/mockserver/internal/sdk/models/components/agentconfig.go - - tests/mockserver/internal/sdk/models/components/agentexecutionstatus.go - - tests/mockserver/internal/sdk/models/components/agentrun.go - - tests/mockserver/internal/sdk/models/components/agentruncreate.go - - tests/mockserver/internal/sdk/models/components/agentrunwaitresponse.go - - tests/mockserver/internal/sdk/models/components/agentschemas.go - - tests/mockserver/internal/sdk/models/components/agentsinsightsv2request.go - - tests/mockserver/internal/sdk/models/components/agentsinsightsv2response.go - - tests/mockserver/internal/sdk/models/components/agentsusagebydepartmentinsight.go - - tests/mockserver/internal/sdk/models/components/agentusersinsight.go - - tests/mockserver/internal/sdk/models/components/aiappactioncounts.go - - tests/mockserver/internal/sdk/models/components/aiappsinsightsresponse.go - - tests/mockserver/internal/sdk/models/components/aiinsightsresponse.go - - tests/mockserver/internal/sdk/models/components/allowlistoptions.go - - tests/mockserver/internal/sdk/models/components/announcement.go - - tests/mockserver/internal/sdk/models/components/anonymousevent.go - - tests/mockserver/internal/sdk/models/components/answer.go - - tests/mockserver/internal/sdk/models/components/answerboard.go - - tests/mockserver/internal/sdk/models/components/answercreationdata.go - - tests/mockserver/internal/sdk/models/components/answerlike.go - - tests/mockserver/internal/sdk/models/components/answerlikes.go - - tests/mockserver/internal/sdk/models/components/answerresult.go - - tests/mockserver/internal/sdk/models/components/appresult.go - - tests/mockserver/internal/sdk/models/components/assistantinsightsresponse.go - - tests/mockserver/internal/sdk/models/components/authconfig.go - - tests/mockserver/internal/sdk/models/components/authtoken.go - - tests/mockserver/internal/sdk/models/components/autocompleterequest.go - - tests/mockserver/internal/sdk/models/components/autocompleteresponse.go - - tests/mockserver/internal/sdk/models/components/autocompleteresult.go - - tests/mockserver/internal/sdk/models/components/autocompleteresultgroup.go - - tests/mockserver/internal/sdk/models/components/badge.go - - tests/mockserver/internal/sdk/models/components/bulkindexdocumentsrequest.go - - tests/mockserver/internal/sdk/models/components/bulkindexemployeesrequest.go - - tests/mockserver/internal/sdk/models/components/bulkindexgroupsrequest.go - - tests/mockserver/internal/sdk/models/components/bulkindexmembershipsrequest.go - - tests/mockserver/internal/sdk/models/components/bulkindexshortcutsrequest.go - - tests/mockserver/internal/sdk/models/components/bulkindexteamsrequest.go - - tests/mockserver/internal/sdk/models/components/bulkindexusersrequest.go - - tests/mockserver/internal/sdk/models/components/bulkuploadhistoryevent.go - - tests/mockserver/internal/sdk/models/components/calendarattendee.go - - tests/mockserver/internal/sdk/models/components/calendarattendees.go - - tests/mockserver/internal/sdk/models/components/calendarevent.go - - tests/mockserver/internal/sdk/models/components/canonicalizingregextype.go - - tests/mockserver/internal/sdk/models/components/channelinviteinfo.go - - tests/mockserver/internal/sdk/models/components/chat.go - - tests/mockserver/internal/sdk/models/components/chatfile.go - - tests/mockserver/internal/sdk/models/components/chatfilefailurereason.go - - tests/mockserver/internal/sdk/models/components/chatfilemetadata.go - - tests/mockserver/internal/sdk/models/components/chatfilestatus.go - - tests/mockserver/internal/sdk/models/components/chatmessage.go - - tests/mockserver/internal/sdk/models/components/chatmessagecitation.go - - tests/mockserver/internal/sdk/models/components/chatmessagefragment.go - - tests/mockserver/internal/sdk/models/components/chatmetadata.go - - tests/mockserver/internal/sdk/models/components/chatmetadataresult.go - - tests/mockserver/internal/sdk/models/components/chatrequest.go - - tests/mockserver/internal/sdk/models/components/chatresponse.go - - tests/mockserver/internal/sdk/models/components/chatrestrictionfilters.go - - tests/mockserver/internal/sdk/models/components/chatresult.go - - tests/mockserver/internal/sdk/models/components/chatsuggestion.go - - tests/mockserver/internal/sdk/models/components/chatzerostatesuggestionoptions.go - - tests/mockserver/internal/sdk/models/components/checkdocumentaccessrequest.go - - tests/mockserver/internal/sdk/models/components/checkdocumentaccessresponse.go - - tests/mockserver/internal/sdk/models/components/clustergroup.go - - tests/mockserver/internal/sdk/models/components/clustertypeenum.go - - tests/mockserver/internal/sdk/models/components/code.go - - tests/mockserver/internal/sdk/models/components/codeline.go - - tests/mockserver/internal/sdk/models/components/collection.go - - tests/mockserver/internal/sdk/models/components/collectionerror.go - - tests/mockserver/internal/sdk/models/components/collectionitem.go - - tests/mockserver/internal/sdk/models/components/collectionitemdescriptor.go - - tests/mockserver/internal/sdk/models/components/collectionpinmetadata.go - - tests/mockserver/internal/sdk/models/components/collectionpinnablecategories.go - - tests/mockserver/internal/sdk/models/components/collectionpinnabletargets.go - - tests/mockserver/internal/sdk/models/components/collectionpinnedmetadata.go - - tests/mockserver/internal/sdk/models/components/collectionpintarget.go - - tests/mockserver/internal/sdk/models/components/commentdefinition.go - - tests/mockserver/internal/sdk/models/components/communicationchannel.go - - tests/mockserver/internal/sdk/models/components/company.go - - tests/mockserver/internal/sdk/models/components/conferencedata.go - - tests/mockserver/internal/sdk/models/components/connectortype.go - - tests/mockserver/internal/sdk/models/components/contentdefinition.go - - tests/mockserver/internal/sdk/models/components/contentinsightsresponse.go - - tests/mockserver/internal/sdk/models/components/contenttype.go - - tests/mockserver/internal/sdk/models/components/countinfo.go - - tests/mockserver/internal/sdk/models/components/createannouncementrequest.go - - tests/mockserver/internal/sdk/models/components/createanswerrequest.go - - tests/mockserver/internal/sdk/models/components/createauthtokenresponse.go - - tests/mockserver/internal/sdk/models/components/createcollectionrequest.go - - tests/mockserver/internal/sdk/models/components/createdlpreportrequest.go - - tests/mockserver/internal/sdk/models/components/createdlpreportresponse.go - - tests/mockserver/internal/sdk/models/components/createshortcutrequest.go - - tests/mockserver/internal/sdk/models/components/createshortcutresponse.go - - tests/mockserver/internal/sdk/models/components/currentactiveusers.go - - tests/mockserver/internal/sdk/models/components/customdatasourceconfig.go - - tests/mockserver/internal/sdk/models/components/customdatavalue.go - - tests/mockserver/internal/sdk/models/components/customentity.go - - tests/mockserver/internal/sdk/models/components/customentitymetadata.go - - tests/mockserver/internal/sdk/models/components/customer.go - - tests/mockserver/internal/sdk/models/components/customermetadata.go - - tests/mockserver/internal/sdk/models/components/customfielddata.go - - tests/mockserver/internal/sdk/models/components/customfieldvalue.go - - tests/mockserver/internal/sdk/models/components/customfieldvaluehyperlink.go - - tests/mockserver/internal/sdk/models/components/customfieldvalueperson.go - - tests/mockserver/internal/sdk/models/components/customfieldvaluestr.go - - tests/mockserver/internal/sdk/models/components/customproperty.go - - tests/mockserver/internal/sdk/models/components/datasourcebulkmembershipdefinition.go - - tests/mockserver/internal/sdk/models/components/datasourcegroupdefinition.go - - tests/mockserver/internal/sdk/models/components/datasourcemembershipdefinition.go - - tests/mockserver/internal/sdk/models/components/datasourceobjecttypedocumentcountentry.go - - tests/mockserver/internal/sdk/models/components/datasourceprofile.go - - tests/mockserver/internal/sdk/models/components/datasourceuserdefinition.go - - tests/mockserver/internal/sdk/models/components/debugdatasourcestatusidentityresponsecomponent.go - - tests/mockserver/internal/sdk/models/components/debugdatasourcestatusresponse.go - - tests/mockserver/internal/sdk/models/components/debugdocumentrequest.go - - tests/mockserver/internal/sdk/models/components/debugdocumentresponse.go - - tests/mockserver/internal/sdk/models/components/debugdocumentsrequest.go - - tests/mockserver/internal/sdk/models/components/debugdocumentsresponse.go - - tests/mockserver/internal/sdk/models/components/debugdocumentsresponseitem.go - - tests/mockserver/internal/sdk/models/components/debuguserrequest.go - - tests/mockserver/internal/sdk/models/components/debuguserresponse.go - - tests/mockserver/internal/sdk/models/components/deleteannouncementrequest.go - - tests/mockserver/internal/sdk/models/components/deleteanswerrequest.go - - tests/mockserver/internal/sdk/models/components/deletechatfilesrequest.go - - tests/mockserver/internal/sdk/models/components/deletechatsrequest.go - - tests/mockserver/internal/sdk/models/components/deletecollectionitemrequest.go - - tests/mockserver/internal/sdk/models/components/deletecollectionitemresponse.go - - tests/mockserver/internal/sdk/models/components/deletecollectionrequest.go - - tests/mockserver/internal/sdk/models/components/deletedocumentrequest.go - - tests/mockserver/internal/sdk/models/components/deleteemployeerequest.go - - tests/mockserver/internal/sdk/models/components/deletegrouprequest.go - - tests/mockserver/internal/sdk/models/components/deletemembershiprequest.go - - tests/mockserver/internal/sdk/models/components/deleteshortcutrequest.go - - tests/mockserver/internal/sdk/models/components/deleteteamrequest.go - - tests/mockserver/internal/sdk/models/components/deleteuserrequest.go - - tests/mockserver/internal/sdk/models/components/digest.go - - tests/mockserver/internal/sdk/models/components/digestsection.go - - tests/mockserver/internal/sdk/models/components/digestupdate.go - - tests/mockserver/internal/sdk/models/components/disambiguation.go - - tests/mockserver/internal/sdk/models/components/displayablelistitemuiconfig.go - - tests/mockserver/internal/sdk/models/components/dlpconfig.go - - tests/mockserver/internal/sdk/models/components/dlpfrequency.go - - tests/mockserver/internal/sdk/models/components/dlpperson.go - - tests/mockserver/internal/sdk/models/components/dlppersonmetadata.go - - tests/mockserver/internal/sdk/models/components/dlpreport.go - - tests/mockserver/internal/sdk/models/components/dlpreportstatus.go - - tests/mockserver/internal/sdk/models/components/dlpsimpleresult.go - - tests/mockserver/internal/sdk/models/components/document.go - - tests/mockserver/internal/sdk/models/components/documentcontent.go - - tests/mockserver/internal/sdk/models/components/documentdefinition.go - - tests/mockserver/internal/sdk/models/components/documentinsight.go - - tests/mockserver/internal/sdk/models/components/documentinteractions.go - - tests/mockserver/internal/sdk/models/components/documentinteractionsdefinition.go - - tests/mockserver/internal/sdk/models/components/documentmetadata.go - - tests/mockserver/internal/sdk/models/components/documentorerrorunion.go - - tests/mockserver/internal/sdk/models/components/documentpermissionsdefinition.go - - tests/mockserver/internal/sdk/models/components/documentsection.go - - tests/mockserver/internal/sdk/models/components/documentspecunion.go - - tests/mockserver/internal/sdk/models/components/documentstatusresponse.go - - tests/mockserver/internal/sdk/models/components/documentvisibility.go - - tests/mockserver/internal/sdk/models/components/documentvisibilityoverride.go - - tests/mockserver/internal/sdk/models/components/documentvisibilityupdateresult.go - - tests/mockserver/internal/sdk/models/components/editanswerrequest.go - - tests/mockserver/internal/sdk/models/components/editcollectionitemrequest.go - - tests/mockserver/internal/sdk/models/components/editcollectionitemresponse.go - - tests/mockserver/internal/sdk/models/components/editcollectionrequest.go - - tests/mockserver/internal/sdk/models/components/editcollectionresponse.go - - tests/mockserver/internal/sdk/models/components/editpinrequest.go - - tests/mockserver/internal/sdk/models/components/employeeinfodefinition.go - - tests/mockserver/internal/sdk/models/components/employeeteaminfo.go - - tests/mockserver/internal/sdk/models/components/entitiessortorder.go - - tests/mockserver/internal/sdk/models/components/entityrelationship.go - - tests/mockserver/internal/sdk/models/components/entitytype.go - - tests/mockserver/internal/sdk/models/components/errormessage.go - - tests/mockserver/internal/sdk/models/components/eventclassification.go - - tests/mockserver/internal/sdk/models/components/eventclassificationname.go - - tests/mockserver/internal/sdk/models/components/eventstrategyname.go - - tests/mockserver/internal/sdk/models/components/externalsharingoptions.go - - tests/mockserver/internal/sdk/models/components/externalshortcut.go - - tests/mockserver/internal/sdk/models/components/extractedqna.go - - tests/mockserver/internal/sdk/models/components/facetbucket.go - - tests/mockserver/internal/sdk/models/components/facetbucketfilter.go - - tests/mockserver/internal/sdk/models/components/facetfilter.go - - tests/mockserver/internal/sdk/models/components/facetfilterset.go - - tests/mockserver/internal/sdk/models/components/facetfiltervalue.go - - tests/mockserver/internal/sdk/models/components/facetresult.go - - tests/mockserver/internal/sdk/models/components/facetvalue.go - - tests/mockserver/internal/sdk/models/components/favoriteinfo.go - - tests/mockserver/internal/sdk/models/components/feedback.go - - tests/mockserver/internal/sdk/models/components/feedbackchatexchange.go - - tests/mockserver/internal/sdk/models/components/feedentry.go - - tests/mockserver/internal/sdk/models/components/feedrequest.go - - tests/mockserver/internal/sdk/models/components/feedrequestoptions.go - - tests/mockserver/internal/sdk/models/components/feedresponse.go - - tests/mockserver/internal/sdk/models/components/feedresult.go - - tests/mockserver/internal/sdk/models/components/followupaction.go - - tests/mockserver/internal/sdk/models/components/generatedattachment.go - - tests/mockserver/internal/sdk/models/components/generatedattachmentcontent.go - - tests/mockserver/internal/sdk/models/components/generatedqna.go - - tests/mockserver/internal/sdk/models/components/getanswererror.go - - tests/mockserver/internal/sdk/models/components/getanswerrequest.go - - tests/mockserver/internal/sdk/models/components/getanswerresponse.go - - tests/mockserver/internal/sdk/models/components/getchatapplicationrequest.go - - tests/mockserver/internal/sdk/models/components/getchatapplicationresponse.go - - tests/mockserver/internal/sdk/models/components/getchatfilesrequest.go - - tests/mockserver/internal/sdk/models/components/getchatfilesresponse.go - - tests/mockserver/internal/sdk/models/components/getchatrequest.go - - tests/mockserver/internal/sdk/models/components/getchatresponse.go - - tests/mockserver/internal/sdk/models/components/getcollectionrequest.go - - tests/mockserver/internal/sdk/models/components/getcollectionresponse.go - - tests/mockserver/internal/sdk/models/components/getdatasourceconfigrequest.go - - tests/mockserver/internal/sdk/models/components/getdlpreportresponse.go - - tests/mockserver/internal/sdk/models/components/getdocpermissionsrequest.go - - tests/mockserver/internal/sdk/models/components/getdocpermissionsresponse.go - - tests/mockserver/internal/sdk/models/components/getdocumentcountrequest.go - - tests/mockserver/internal/sdk/models/components/getdocumentcountresponse.go - - tests/mockserver/internal/sdk/models/components/getdocumentsbyfacetsrequest.go - - tests/mockserver/internal/sdk/models/components/getdocumentsbyfacetsresponse.go - - tests/mockserver/internal/sdk/models/components/getdocumentsrequest.go - - tests/mockserver/internal/sdk/models/components/getdocumentsresponse.go - - tests/mockserver/internal/sdk/models/components/getdocumentstatusrequest.go - - tests/mockserver/internal/sdk/models/components/getdocumentstatusresponse.go - - tests/mockserver/internal/sdk/models/components/getdocumentvisibilityoverridesresponse.go - - tests/mockserver/internal/sdk/models/components/getpinrequest.go - - tests/mockserver/internal/sdk/models/components/getpinresponse.go - - tests/mockserver/internal/sdk/models/components/getshortcutrequestunion.go - - tests/mockserver/internal/sdk/models/components/getshortcutresponse.go - - tests/mockserver/internal/sdk/models/components/getusercountrequest.go - - tests/mockserver/internal/sdk/models/components/getusercountresponse.go - - tests/mockserver/internal/sdk/models/components/gleanassistinsightsresponse.go - - tests/mockserver/internal/sdk/models/components/gleandataerror.go - - tests/mockserver/internal/sdk/models/components/grantpermission.go - - tests/mockserver/internal/sdk/models/components/greenlistusersrequest.go - - tests/mockserver/internal/sdk/models/components/group.go - - tests/mockserver/internal/sdk/models/components/grouptype.go - - tests/mockserver/internal/sdk/models/components/hotword.go - - tests/mockserver/internal/sdk/models/components/hotwordproximity.go - - tests/mockserver/internal/sdk/models/components/httpmetadata.go - - tests/mockserver/internal/sdk/models/components/iconconfig.go - - tests/mockserver/internal/sdk/models/components/indexdocumentrequest.go - - tests/mockserver/internal/sdk/models/components/indexdocumentsrequest.go - - tests/mockserver/internal/sdk/models/components/indexemployeerequest.go - - tests/mockserver/internal/sdk/models/components/indexgrouprequest.go - - tests/mockserver/internal/sdk/models/components/indexingshortcut.go - - tests/mockserver/internal/sdk/models/components/indexmembershiprequest.go - - tests/mockserver/internal/sdk/models/components/indexstatus.go - - tests/mockserver/internal/sdk/models/components/indexteamrequest.go - - tests/mockserver/internal/sdk/models/components/indexuserrequest.go - - tests/mockserver/internal/sdk/models/components/inputoptions.go - - tests/mockserver/internal/sdk/models/components/insightsagentsrequestoptions.go - - tests/mockserver/internal/sdk/models/components/insightsaiapprequestoptions.go - - tests/mockserver/internal/sdk/models/components/insightsassistantrequest.go - - tests/mockserver/internal/sdk/models/components/insightschatsummary.go - - tests/mockserver/internal/sdk/models/components/insightsoverviewrequest.go - - tests/mockserver/internal/sdk/models/components/insightsoverviewresponse.go - - tests/mockserver/internal/sdk/models/components/insightsrequest.go - - tests/mockserver/internal/sdk/models/components/insightsresponse.go - - tests/mockserver/internal/sdk/models/components/insightssearchsummary.go - - tests/mockserver/internal/sdk/models/components/invalidoperatorvalueerror.go - - tests/mockserver/internal/sdk/models/components/inviteinfo.go - - tests/mockserver/internal/sdk/models/components/labeledcountinfo.go - - tests/mockserver/internal/sdk/models/components/listanswersrequest.go - - tests/mockserver/internal/sdk/models/components/listanswersresponse.go - - tests/mockserver/internal/sdk/models/components/listchatsresponse.go - - tests/mockserver/internal/sdk/models/components/listcollectionsrequest.go - - tests/mockserver/internal/sdk/models/components/listcollectionsresponse.go - - tests/mockserver/internal/sdk/models/components/listdlpreportsresponse.go - - tests/mockserver/internal/sdk/models/components/listentitiesrequest.go - - tests/mockserver/internal/sdk/models/components/listentitiesresponse.go - - tests/mockserver/internal/sdk/models/components/listpinsresponse.go - - tests/mockserver/internal/sdk/models/components/listshortcutspaginatedrequest.go - - tests/mockserver/internal/sdk/models/components/listshortcutspaginatedresponse.go - - tests/mockserver/internal/sdk/models/components/manualfeedbackinfo.go - - tests/mockserver/internal/sdk/models/components/manualfeedbacksidebysideinfo.go - - tests/mockserver/internal/sdk/models/components/meeting.go - - tests/mockserver/internal/sdk/models/components/message.go - - tests/mockserver/internal/sdk/models/components/messagesrequest.go - - tests/mockserver/internal/sdk/models/components/messagesresponse.go - - tests/mockserver/internal/sdk/models/components/objectdefinition.go - - tests/mockserver/internal/sdk/models/components/objectpermissions.go - - tests/mockserver/internal/sdk/models/components/operatormetadata.go - - tests/mockserver/internal/sdk/models/components/operatorscope.go - - tests/mockserver/internal/sdk/models/components/peoplerequest.go - - tests/mockserver/internal/sdk/models/components/peopleresponse.go - - tests/mockserver/internal/sdk/models/components/peragentinsight.go - - tests/mockserver/internal/sdk/models/components/period.go - - tests/mockserver/internal/sdk/models/components/permissions.go - - tests/mockserver/internal/sdk/models/components/permissionsgroupintersectiondefinition.go - - tests/mockserver/internal/sdk/models/components/person.go - - tests/mockserver/internal/sdk/models/components/persondistance.go - - tests/mockserver/internal/sdk/models/components/personmetadata.go - - tests/mockserver/internal/sdk/models/components/personobject.go - - tests/mockserver/internal/sdk/models/components/personteam.go - - tests/mockserver/internal/sdk/models/components/persontoteamrelationship.go - - tests/mockserver/internal/sdk/models/components/peruserassistantinsight.go - - tests/mockserver/internal/sdk/models/components/peruserinsight.go - - tests/mockserver/internal/sdk/models/components/pindocument.go - - tests/mockserver/internal/sdk/models/components/pinrequest.go - - tests/mockserver/internal/sdk/models/components/possiblevalue.go - - tests/mockserver/internal/sdk/models/components/processalldocumentsrequest.go - - tests/mockserver/internal/sdk/models/components/processallmembershipsrequest.go - - tests/mockserver/internal/sdk/models/components/processinghistoryevent.go - - tests/mockserver/internal/sdk/models/components/prompttemplate.go - - tests/mockserver/internal/sdk/models/components/prompttemplateresult.go - - tests/mockserver/internal/sdk/models/components/propertydefinition.go - - tests/mockserver/internal/sdk/models/components/propertygroup.go - - tests/mockserver/internal/sdk/models/components/queryinsight.go - - tests/mockserver/internal/sdk/models/components/queryinsightsresponse.go - - tests/mockserver/internal/sdk/models/components/querysuggestion.go - - tests/mockserver/internal/sdk/models/components/querysuggestionlist.go - - tests/mockserver/internal/sdk/models/components/quicklink.go - - tests/mockserver/internal/sdk/models/components/reaction.go - - tests/mockserver/internal/sdk/models/components/readpermission.go - - tests/mockserver/internal/sdk/models/components/recommendationsrequest.go - - tests/mockserver/internal/sdk/models/components/recommendationsrequestoptions.go - - tests/mockserver/internal/sdk/models/components/referencerange.go - - tests/mockserver/internal/sdk/models/components/relateddocuments.go - - tests/mockserver/internal/sdk/models/components/relatedobject.go - - tests/mockserver/internal/sdk/models/components/relatedobjectedge.go - - tests/mockserver/internal/sdk/models/components/relatedquestion.go - - tests/mockserver/internal/sdk/models/components/reminder.go - - tests/mockserver/internal/sdk/models/components/reminderrequest.go - - tests/mockserver/internal/sdk/models/components/reportstatusresponse.go - - tests/mockserver/internal/sdk/models/components/restrictionfilters.go - - tests/mockserver/internal/sdk/models/components/resultsdescription.go - - tests/mockserver/internal/sdk/models/components/resultsresponse.go - - tests/mockserver/internal/sdk/models/components/resulttab.go - - tests/mockserver/internal/sdk/models/components/rotatetokenresponse.go - - tests/mockserver/internal/sdk/models/components/scopetype.go - - tests/mockserver/internal/sdk/models/components/searchagentsrequest.go - - tests/mockserver/internal/sdk/models/components/searchagentsresponse.go - - tests/mockserver/internal/sdk/models/components/searchproviderinfo.go - - tests/mockserver/internal/sdk/models/components/searchrequest.go - - tests/mockserver/internal/sdk/models/components/searchrequestinputdetails.go - - tests/mockserver/internal/sdk/models/components/searchrequestoptions.go - - tests/mockserver/internal/sdk/models/components/searchresponse.go - - tests/mockserver/internal/sdk/models/components/searchresponsemetadata.go - - tests/mockserver/internal/sdk/models/components/searchresult.go - - tests/mockserver/internal/sdk/models/components/searchresultprominenceenum.go - - tests/mockserver/internal/sdk/models/components/searchresultsnippet.go - - tests/mockserver/internal/sdk/models/components/searchwarning.go - - tests/mockserver/internal/sdk/models/components/sectiontype.go - - tests/mockserver/internal/sdk/models/components/security.go - - tests/mockserver/internal/sdk/models/components/seenfeedbackinfo.go - - tests/mockserver/internal/sdk/models/components/sensitivecontentoptions.go - - tests/mockserver/internal/sdk/models/components/sensitiveexpression.go - - tests/mockserver/internal/sdk/models/components/sensitiveinfotype.go - - tests/mockserver/internal/sdk/models/components/sessioninfo.go - - tests/mockserver/internal/sdk/models/components/share.go - - tests/mockserver/internal/sdk/models/components/sharingoptions.go - - tests/mockserver/internal/sdk/models/components/shortcut.go - - tests/mockserver/internal/sdk/models/components/shortcuterror.go - - tests/mockserver/internal/sdk/models/components/shortcutinsight.go - - tests/mockserver/internal/sdk/models/components/shortcutinsightsresponse.go - - tests/mockserver/internal/sdk/models/components/shortcutmutableproperties.go - - tests/mockserver/internal/sdk/models/components/shortcutspaginationmetadata.go - - tests/mockserver/internal/sdk/models/components/sidebysideimplementation.go - - tests/mockserver/internal/sdk/models/components/socialnetwork.go - - tests/mockserver/internal/sdk/models/components/socialnetworkdefinition.go - - tests/mockserver/internal/sdk/models/components/sortoptions.go - - tests/mockserver/internal/sdk/models/components/structuredlink.go - - tests/mockserver/internal/sdk/models/components/structuredlocation.go - - tests/mockserver/internal/sdk/models/components/structuredresult.go - - tests/mockserver/internal/sdk/models/components/structuredtext.go - - tests/mockserver/internal/sdk/models/components/structuredtextitem.go - - tests/mockserver/internal/sdk/models/components/structuredtextmutableproperties.go - - tests/mockserver/internal/sdk/models/components/summarizerequest.go - - tests/mockserver/internal/sdk/models/components/summarizeresponse.go - - tests/mockserver/internal/sdk/models/components/summary.go - - tests/mockserver/internal/sdk/models/components/team.go - - tests/mockserver/internal/sdk/models/components/teamemail.go - - tests/mockserver/internal/sdk/models/components/teaminfodefinition.go - - tests/mockserver/internal/sdk/models/components/teammember.go - - tests/mockserver/internal/sdk/models/components/textrange.go - - tests/mockserver/internal/sdk/models/components/thumbnail.go - - tests/mockserver/internal/sdk/models/components/timeinterval.go - - tests/mockserver/internal/sdk/models/components/timepoint.go - - tests/mockserver/internal/sdk/models/components/timerange.go - - tests/mockserver/internal/sdk/models/components/tool.go - - tests/mockserver/internal/sdk/models/components/toolinfo.go - - tests/mockserver/internal/sdk/models/components/toolmetadata.go - - tests/mockserver/internal/sdk/models/components/toolparameter.go - - tests/mockserver/internal/sdk/models/components/toolscallparameter.go - - tests/mockserver/internal/sdk/models/components/toolscallrequest.go - - tests/mockserver/internal/sdk/models/components/toolscallresponse.go - - tests/mockserver/internal/sdk/models/components/toolsets.go - - tests/mockserver/internal/sdk/models/components/toolslistresponse.go - - tests/mockserver/internal/sdk/models/components/ugctype.go - - tests/mockserver/internal/sdk/models/components/unpin.go - - tests/mockserver/internal/sdk/models/components/updateannouncementrequest.go - - tests/mockserver/internal/sdk/models/components/updatedlpconfigrequest.go - - tests/mockserver/internal/sdk/models/components/updatedlpconfigresponse.go - - tests/mockserver/internal/sdk/models/components/updatedlpreportrequest.go - - tests/mockserver/internal/sdk/models/components/updatedlpreportresponse.go - - tests/mockserver/internal/sdk/models/components/updatedocumentvisibilityoverridesrequest.go - - tests/mockserver/internal/sdk/models/components/updatedocumentvisibilityoverridesresponse.go - - tests/mockserver/internal/sdk/models/components/updatepermissionsrequest.go - - tests/mockserver/internal/sdk/models/components/updateshortcutrequest.go - - tests/mockserver/internal/sdk/models/components/updateshortcutresponse.go - - tests/mockserver/internal/sdk/models/components/updatetype.go - - tests/mockserver/internal/sdk/models/components/uploadchatfilesrequest.go - - tests/mockserver/internal/sdk/models/components/uploadchatfilesresponse.go - - tests/mockserver/internal/sdk/models/components/uploadshortcutsrequest.go - - tests/mockserver/internal/sdk/models/components/uploadstatusenum.go - - tests/mockserver/internal/sdk/models/components/user.go - - tests/mockserver/internal/sdk/models/components/useractivity.go - - tests/mockserver/internal/sdk/models/components/useractivityinsight.go - - tests/mockserver/internal/sdk/models/components/usergeneratedcontentid.go - - tests/mockserver/internal/sdk/models/components/userinsightsresponse.go - - tests/mockserver/internal/sdk/models/components/userreferencedefinition.go - - tests/mockserver/internal/sdk/models/components/userrole.go - - tests/mockserver/internal/sdk/models/components/userrolespecification.go - - tests/mockserver/internal/sdk/models/components/userstatusresponse.go - - tests/mockserver/internal/sdk/models/components/userviewinfo.go - - tests/mockserver/internal/sdk/models/components/verification.go - - tests/mockserver/internal/sdk/models/components/verificationfeed.go - - tests/mockserver/internal/sdk/models/components/verificationmetadata.go - - tests/mockserver/internal/sdk/models/components/verifyrequest.go - - tests/mockserver/internal/sdk/models/components/viewerinfo.go - - tests/mockserver/internal/sdk/models/components/workflow.go - - tests/mockserver/internal/sdk/models/components/workflowfeedbackinfo.go - - tests/mockserver/internal/sdk/models/components/workflowresult.go - - tests/mockserver/internal/sdk/models/components/writeactionparameter.go - - tests/mockserver/internal/sdk/models/components/writepermission.go - - tests/mockserver/internal/sdk/models/operations/activity.go - - tests/mockserver/internal/sdk/models/operations/addcollectionitems.go - - tests/mockserver/internal/sdk/models/operations/addverificationreminder.go - - tests/mockserver/internal/sdk/models/operations/adminsearch.go - - tests/mockserver/internal/sdk/models/operations/autocomplete.go - - tests/mockserver/internal/sdk/models/operations/chat.go - - tests/mockserver/internal/sdk/models/operations/chatstream.go - - tests/mockserver/internal/sdk/models/operations/createandstreamrun.go - - tests/mockserver/internal/sdk/models/operations/createandwaitrun.go - - tests/mockserver/internal/sdk/models/operations/createannouncement.go - - tests/mockserver/internal/sdk/models/operations/createanswer.go - - tests/mockserver/internal/sdk/models/operations/createauthtoken.go - - tests/mockserver/internal/sdk/models/operations/createcollection.go - - tests/mockserver/internal/sdk/models/operations/createpolicy.go - - tests/mockserver/internal/sdk/models/operations/createreport.go - - tests/mockserver/internal/sdk/models/operations/createshortcut.go - - tests/mockserver/internal/sdk/models/operations/deleteallchats.go - - tests/mockserver/internal/sdk/models/operations/deleteannouncement.go - - tests/mockserver/internal/sdk/models/operations/deleteanswer.go - - tests/mockserver/internal/sdk/models/operations/deletechatfiles.go - - tests/mockserver/internal/sdk/models/operations/deletechats.go - - tests/mockserver/internal/sdk/models/operations/deletecollection.go - - tests/mockserver/internal/sdk/models/operations/deletecollectionitem.go - - tests/mockserver/internal/sdk/models/operations/deleteshortcut.go - - tests/mockserver/internal/sdk/models/operations/downloadpolicycsv.go - - tests/mockserver/internal/sdk/models/operations/downloadreportcsv.go - - tests/mockserver/internal/sdk/models/operations/editanswer.go - - tests/mockserver/internal/sdk/models/operations/editcollection.go - - tests/mockserver/internal/sdk/models/operations/editcollectionitem.go - - tests/mockserver/internal/sdk/models/operations/editpin.go - - tests/mockserver/internal/sdk/models/operations/feed.go - - tests/mockserver/internal/sdk/models/operations/feedback.go - - tests/mockserver/internal/sdk/models/operations/getagent.go - - tests/mockserver/internal/sdk/models/operations/getagentschemas.go - - tests/mockserver/internal/sdk/models/operations/getanswer.go - - tests/mockserver/internal/sdk/models/operations/getchat.go - - tests/mockserver/internal/sdk/models/operations/getchatapplication.go - - tests/mockserver/internal/sdk/models/operations/getchatfiles.go - - tests/mockserver/internal/sdk/models/operations/getcollection.go - - tests/mockserver/internal/sdk/models/operations/getdocpermissions.go - - tests/mockserver/internal/sdk/models/operations/getdocuments.go - - tests/mockserver/internal/sdk/models/operations/getdocumentsbyfacets.go - - tests/mockserver/internal/sdk/models/operations/getdocvisibility.go - - tests/mockserver/internal/sdk/models/operations/getpin.go - - tests/mockserver/internal/sdk/models/operations/getpolicy.go - - tests/mockserver/internal/sdk/models/operations/getreportstatus.go - - tests/mockserver/internal/sdk/models/operations/getrestapiv1toolslist.go - - tests/mockserver/internal/sdk/models/operations/getshortcut.go - - tests/mockserver/internal/sdk/models/operations/insights.go - - tests/mockserver/internal/sdk/models/operations/listanswers.go - - tests/mockserver/internal/sdk/models/operations/listchats.go - - tests/mockserver/internal/sdk/models/operations/listcollections.go - - tests/mockserver/internal/sdk/models/operations/listentities.go - - tests/mockserver/internal/sdk/models/operations/listpins.go - - tests/mockserver/internal/sdk/models/operations/listpolicies.go - - tests/mockserver/internal/sdk/models/operations/listshortcuts.go - - tests/mockserver/internal/sdk/models/operations/listverifications.go - - tests/mockserver/internal/sdk/models/operations/messages.go - - tests/mockserver/internal/sdk/models/operations/people.go - - tests/mockserver/internal/sdk/models/operations/pin.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1adddatasource.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1betausers.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexdocuments.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexemployees.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexgroups.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexmemberships.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexshortcuts.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexteams.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexusers.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1checkdocumentaccess.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcedocument.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcedocuments.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcestatus.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourceuser.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1deletedocument.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1deleteemployee.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1deletegroup.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1deletemembership.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1deleteteam.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1deleteuser.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1getdatasourceconfig.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1getdocumentcount.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1getdocumentstatus.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1getusercount.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1indexdocument.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1indexdocuments.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1indexemployee.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1indexgroup.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1indexmembership.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1indexteam.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1indexuser.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1processalldocuments.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1processallemployeesandteams.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1processallmemberships.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1rotatetoken.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1updatepermissions.go - - tests/mockserver/internal/sdk/models/operations/postapiindexv1uploadshortcuts.go - - tests/mockserver/internal/sdk/models/operations/postrestapiv1toolscall.go - - tests/mockserver/internal/sdk/models/operations/recommendations.go - - tests/mockserver/internal/sdk/models/operations/search.go - - tests/mockserver/internal/sdk/models/operations/searchagents.go - - tests/mockserver/internal/sdk/models/operations/setdocvisibility.go - - tests/mockserver/internal/sdk/models/operations/summarize.go - - tests/mockserver/internal/sdk/models/operations/unpin.go - - tests/mockserver/internal/sdk/models/operations/updateannouncement.go - - tests/mockserver/internal/sdk/models/operations/updatepolicy.go - - tests/mockserver/internal/sdk/models/operations/updateshortcut.go - - tests/mockserver/internal/sdk/models/operations/uploadchatfiles.go - - tests/mockserver/internal/sdk/models/operations/verify.go - - tests/mockserver/internal/sdk/models/sdkerrors/collectionerror.go - - tests/mockserver/internal/sdk/models/sdkerrors/gleandataerror.go - - tests/mockserver/internal/sdk/types/bigint.go - - tests/mockserver/internal/sdk/types/date.go - - tests/mockserver/internal/sdk/types/datetime.go - - tests/mockserver/internal/sdk/types/decimal.go - - tests/mockserver/internal/sdk/types/jsonl/jsonl.go - - tests/mockserver/internal/sdk/types/pointers.go - - tests/mockserver/internal/sdk/utils/json.go - - tests/mockserver/internal/sdk/utils/reflect.go - - tests/mockserver/internal/sdk/utils/sort.go - - tests/mockserver/internal/server/doc.go - - tests/mockserver/internal/server/generated_handlers.go - - tests/mockserver/internal/server/internal_handlers.go - - tests/mockserver/internal/server/server.go - - tests/mockserver/internal/server/server_option.go - - tests/mockserver/internal/server/templates/log/index.html.tmpl - - tests/mockserver/internal/server/templates/log/operation.html.tmpl - - tests/mockserver/internal/server/templates/log/style.css.tmpl - - tests/mockserver/internal/tracking/requesttracker.go - - tests/mockserver/main.go - - tests/test_activities.py - - tests/test_agents.py - - tests/test_announcements.py - - tests/test_answers.py - - tests/test_calendar.py - - tests/test_client.py - - tests/test_client_activity.py - - tests/test_client_authentication.py - - tests/test_client_chat.py - - tests/test_client_documents.py - - tests/test_client_shortcuts.py - - tests/test_client_user.py - - tests/test_client_verification.py - - tests/test_collections.py - - tests/test_datasources.py - - tests/test_displayablelists.py - - tests/test_entities.py - - tests/test_indexing_authentication.py - - tests/test_indexing_documents.py - - tests/test_indexing_permissions.py - - tests/test_insights.py - - tests/test_messages.py - - tests/test_people.py - - tests/test_pins.py - - tests/test_policies.py - - tests/test_reports.py - - tests/test_search.py - - tests/test_summarize.py - - tests/test_tools.py - - tests/test_troubleshooting.py - - tests/test_visibilityoverrides.py + nameOverrides: 3.0.3 + responseFormat: 1.1.0 + retries: 3.0.5 + sdkHooks: 1.2.1 + tests: 1.19.9 + unions: 3.1.5 + uploadStreams: 1.0.2 +trackedFiles: + .devcontainer/README.md: + id: b170c0f184ac + last_write_checksum: sha1:9d5ef0af03b274d5cfd29d7e84887ee7f72a7905 + pristine_git_object: 3ad425b0cb9a26c91434d1b9741e80a741d2cfad + .devcontainer/devcontainer.json: + id: b34062a34eb1 + last_write_checksum: sha1:fbbce5654b8990b172a9ffe841d7635cd51c495b + pristine_git_object: 7e67af9f5b5aeed56bab8dd84f75d3729df3ada1 + .devcontainer/setup.sh: + id: 5f1dfbfeb8eb + last_write_checksum: sha1:61a429ae008473c6b1c9803e0315ca251bf258c1 + pristine_git_object: 9f04ea600c2c2f7073d33f91af62ad14fbfbcf9d + .gitattributes: + id: 24139dae6567 + last_write_checksum: sha1:53134de3ada576f37c22276901e1b5b6d85cd2da + pristine_git_object: 4d75d59008e4d8609876d263419a9dc56c8d6f3a + .vscode/settings.json: + id: 89aa447020cd + last_write_checksum: sha1:f84632c81029fcdda8c3b0c768d02b836fc80526 + pristine_git_object: 8d79f0abb72526f1fb34a4c03e5bba612c6ba2ae + USAGE.md: + id: 3aed33ce6e6f + last_write_checksum: sha1:8e83346b5645b6bef8a2423f0dbc9a6365b5bd46 + pristine_git_object: 13f153fada6e805e20d596947edc7b0bc9351317 + docs/errors/collectionerror.md: + id: 3d0bc04308fd + last_write_checksum: sha1:b0c6864817dbdc3bde8fee4a1e142d51e89f781c + pristine_git_object: a6800fed5ba94f25934cdd5b8fe3fa6832f51239 + docs/errors/errorinforesponse.md: + id: 140fa0c6adb9 + last_write_checksum: sha1:7c4f28cfb4e47bcb3f6dbc44d9cc2baa6b2027a7 + pristine_git_object: 09e01a60f99d53e50015bf69e749965e69617771 + 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:a6567c83c6c0bf8eaed55f50af08001869d6a5de + pristine_git_object: 7c4c0d90fd0a2de3e48b99ce691c1e9a6ab03041 + docs/models/actionauthtype.md: + id: f6c3ce39f190 + last_write_checksum: sha1:6fe1004cc273d5e15dff5ba82f42bd218774a83b + pristine_git_object: d288ff5c0b7fa166bdd7d0b218083b6a1595ee50 + docs/models/actionpackauthstatus.md: + id: ac77720bcbb1 + last_write_checksum: sha1:55c853abc3f8cf36560a2f07a6a906332363abfe + pristine_git_object: 70a7b62401070d647ccad29ba721f91c413785e8 + docs/models/actionpackauthstatusresponse.md: + id: f9e31988def9 + last_write_checksum: sha1:765093f3bb92679552cd425206653065235f08f9 + pristine_git_object: af0cfc2eb55c65f7d424ee10654d824c968af9f8 + docs/models/actionsummary.md: + id: 1ff225176066 + 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: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:53a8104830b267072a14c0019d9e31beb6d2fcd5 + pristine_git_object: f2a30c1b9f3709f477f22f3a1507377ccb35e607 + docs/models/activityeventparams.md: + id: 45b35cfb2c89 + last_write_checksum: sha1:c800299d146bf1563b15d48d47536abe1e1a021b + pristine_git_object: df871a175cdedac0523be6e5cb11a1b6cd08d1bd + docs/models/addcollectionitemserror.md: + id: 7dcf122e13ff + last_write_checksum: sha1:f1d8f815bf28e1fe2826d1ecda262940e5fcf90f + pristine_git_object: 31aa0600e412c0b6eae303d6ce4ff6a152f865bf + docs/models/addcollectionitemserrorerrortype.md: + id: 19bb11e23f98 + last_write_checksum: sha1:48722d7fe76382e5d457a8d0a6f1bdb93405eb39 + pristine_git_object: 761a12fef01d4fd9fe497b78376c1ee82a9201e5 + docs/models/addcollectionitemsrequest.md: + id: 77be3840df27 + last_write_checksum: sha1:d3c2c8791ea4ad38979641f79b12473d5ef7b6af + pristine_git_object: 3f8e3df44347af6a5233e01edd5ed4eb8a195ee3 + docs/models/addcollectionitemsrequestrequest.md: + id: 12fae7efc710 + last_write_checksum: sha1:12862265b02d82195bb05861465a683f1ff70b6f + pristine_git_object: 06b734c859b0d9579513d68bb5819df38aff3e3c + docs/models/addcollectionitemsresponse.md: + id: 7da8da71c4d9 + last_write_checksum: sha1:973313c99ec4dd5eeabbce4373d5ba409d3c17a9 + pristine_git_object: e28589adb972e3161ed17228f468624e1bee439d + docs/models/additionalfielddefinition.md: + id: 561d5510e1fd + last_write_checksum: sha1:372dec0693e8b9804729161c20c4064c6c8e054b + pristine_git_object: b91d9ff68747160fb9b1df76f6499ddc66baef14 + docs/models/addverificationreminderrequest.md: + id: d036e5a8e487 + last_write_checksum: sha1:c6bce69847c73c7d812862396affa79d8f3e47ca + pristine_git_object: ac943c103887202145ede4cc4fda97541cc768be + docs/models/adminsearchrequest.md: + id: defaea5cef39 + last_write_checksum: sha1:f2593488f88b6a1a278dc05787212eec1ea023c0 + pristine_git_object: 608a7bad94d9445cfa1e7ad9de07cd0bb6848272 + docs/models/agent.md: + id: ffdbb4c53c87 + last_write_checksum: sha1:5cae21e5f1580771477cf08ee54749aa174f1390 + pristine_git_object: 8cbfa3521954b573413aceba3695f06014016419 + docs/models/agentcapabilities.md: + id: f37e00238491 + last_write_checksum: sha1:24e41b7440b760886dd1515d041e2fdc6fcc087a + pristine_git_object: 47426715d21177cf3607ad4bf73b2b4857d7526f + docs/models/agentconfig.md: + id: 133ae1c7f243 + last_write_checksum: sha1:03f01204b02a6ea2212efd6d952047210295f0e9 + pristine_git_object: a1664d98b1a9d02c1b2aa5fc8ec85a9bcdfc89e8 + docs/models/agentenum.md: + id: 1209c0033b50 + last_write_checksum: sha1:ded3d81b230238d759bc5f0a1a9de8b8cfb399d2 + pristine_git_object: 561a7e7728db00d22208921c69d8ae9389e63774 + docs/models/agentexecutionstatus.md: + id: 4087123e1461 + last_write_checksum: sha1:a7b37e7351ffaa54aa2384af4ffba8fc95fe9cee + pristine_git_object: d15717b2f9659e4aefbdf8e1560adb663102b0df + docs/models/agentmetadata.md: + id: 73ecfb89f67c + last_write_checksum: sha1:0695be39013d7ee099dd77e65f5ef57bb97a3019 + pristine_git_object: aec0cc1eec7dad413ec698c535c010e6be756a69 + docs/models/agentrun.md: + id: 71e2caf9b95a + last_write_checksum: sha1:8433dcf487a90f703f04b766383a08b5c0c933b3 + pristine_git_object: 534e93714734fd41fabc0d64b5da344b2dda110d + docs/models/agentruncreate.md: + id: 2ab11e93c9de + last_write_checksum: sha1:5f6d67b0cf39049f4ead7eecec6a27f3d2862cba + pristine_git_object: 46d31de6280f25734883618e5ac037cb623e6eda + docs/models/agentrunwaitresponse.md: + id: 2c571dee53ea + last_write_checksum: sha1:a9d9e9928a5629f4c75364315f312801f06c51b7 + pristine_git_object: 51fc6fc76b0487468b5e073f048628ed03b38836 + docs/models/agentschemas.md: + id: a2193f5fe96f + last_write_checksum: sha1:e6801938b086307067b31fe554e3d4f87fc22d4f + pristine_git_object: 4ccba78fab4fe2cae243e8a654413edb6e01c422 + docs/models/agentsinsightsv2request.md: + id: 9d5fdb90e1e6 + last_write_checksum: sha1:2599567d774df8843a83e974e3af1439c5dca8a0 + pristine_git_object: 0218c6facda06ed257e28efb43191b2dad1ee403 + docs/models/agentsinsightsv2response.md: + id: c419d6511b8b + last_write_checksum: sha1:660b206505b7e2cc7181dda1e2b9e6acd76b09a3 + pristine_git_object: bde7e4fd054fb0e8b4b3c243370ba46ece9e8def + docs/models/agentstimesavedinsight.md: + id: c998db614c46 + last_write_checksum: sha1:0653ac44dfc9ed51985aec9a129941b91501812a + pristine_git_object: 552714b4d8aeed7dba72e1b11880f3fb71884e53 + docs/models/agentsusagebydepartmentinsight.md: + id: 8e00b4ec28db + last_write_checksum: sha1:ba6bc3369d70a9f8b0cd136e5ffa9318b54222d3 + pristine_git_object: 4c36908d52176a2a907c75baa72220dd0c5b4af7 + docs/models/agentusecaseinsight.md: + id: 64232b208d9b + last_write_checksum: sha1:1b16c2e2fb1dfe9497529830dc32cd5cf746737b + pristine_git_object: 88a6bd23f65b896d244ac106cada2c2bf48be582 + docs/models/agentusersinsight.md: + id: d175e9ef2267 + last_write_checksum: sha1:13186b89e562d1930304e5f822f47de768855397 + pristine_git_object: 69acef4de938067397980887e41d16ff3df23529 + docs/models/allowlistoptions.md: + id: ba4d408f7c0f + last_write_checksum: sha1:552aedb8f14b744735e387cac111e935991b6330 + pristine_git_object: e986d96670dfd60f104d4690368bd5f08153a4fa + docs/models/announcement.md: + id: b48819ef2145 + last_write_checksum: sha1:6abbccb48016fff478e8edf48b8a51621d850a54 + pristine_git_object: ccd458aa3227bfb995c169efd677951366d21584 + docs/models/announcementchannel.md: + id: 77e2f76c4a55 + last_write_checksum: sha1:e910c9e0f9bbde66ce0aefbb97f63263ae9be9c6 + pristine_git_object: cf846a339de5fab4017d9608d68d6e3e34a6dab0 + docs/models/announcementposttype.md: + id: 06f56ae76086 + last_write_checksum: sha1:c417ea9c3d3d0d397aff39310fec7bb6a6631f09 + pristine_git_object: cd25f0b90e6ef3586645ad5340e1a217083c5616 + docs/models/announcementviewerinfo.md: + id: 94b4b32f9d1b + last_write_checksum: sha1:ead129b26d41a570bfb6c1b7aa789428140be339 + pristine_git_object: 01e9e0600246bb7449c1d4d64650db7b5821020b + docs/models/anonymousevent.md: + id: a8fb58c39efe + last_write_checksum: sha1:63d338a0b1a5b042ef0cf9f768bce071882f6bc6 + pristine_git_object: 7d8f1d017e4ffb671bf8037fbd6c156b433cc994 + docs/models/anonymouseventeventtype.md: + id: 8a14e5a8a712 + last_write_checksum: sha1:f8aa5517148368188aed5be9784e76ac0ea510d6 + pristine_git_object: 484b59b07d1e829e2a31d7f3bcfd5c27b885630b + docs/models/answer.md: + id: 9ac735faad2d + last_write_checksum: sha1:325cb54c4dcb9510a9b1d6dd8f0e149b43ab7913 + pristine_git_object: 70996a33c2feb01bd99159fd2d971dee17e602a1 + docs/models/answercreationdata.md: + id: a18b584bd509 + last_write_checksum: sha1:a17a1af356808b805aee9e0c4053beccd176d161 + pristine_git_object: d9670acef650c59dfe7f0983b20c25ed6484cdf0 + docs/models/answercreationdatasourcetype.md: + id: 28abe8879511 + last_write_checksum: sha1:42b03ea1b83924b05562f4d747ebe0deea555e72 + pristine_git_object: 2290212184627ae706a1b6d643b9ad048401ca9e + docs/models/answerlike.md: + id: fc0e3d3a62ee + last_write_checksum: sha1:299e5a0177a6fa19ac83fbb53bf4185edc0b4327 + pristine_git_object: d6d8deac7206ad6deb3567a9c5f0c287f01985b0 + docs/models/answerlikes.md: + id: 1b12fca01b55 + last_write_checksum: sha1:82ee9d9c396a8c830a2bf041eaae10000eb05e5c + pristine_git_object: 745079d0f49ffe73827ca3c0d7766928f9ed9b80 + docs/models/answerresult.md: + id: d31c58c69e7b + last_write_checksum: sha1:455f22206adfdb51913ada758c1e6f6de63c841d + pristine_git_object: 5e2a67582cc17c8b0492152ea4626187e8ff7f6c + docs/models/answersourcetype.md: + id: ac6a657e8c7d + last_write_checksum: sha1:e30431477256685c99a486eda882442270d5fdaa + pristine_git_object: 6de6108904db7850847317149806fbb54575d037 + docs/models/appresult.md: + id: 333a2b7c460c + last_write_checksum: sha1:f9779ac516afac0d0cab5f0a9e4993b5e305f413 + pristine_git_object: b1d37dea76990544293f38221b2314739c22ffaa + docs/models/assistantinsightsresponse.md: + id: 4da438a09c8e + last_write_checksum: sha1:79953a586b4b90fa67d44c370271de068b3d49f3 + pristine_git_object: d5cc0973f8bced08083dc8ad0ce7ff501668cedb + docs/models/authconfig.md: + id: fbdae66f0362 + last_write_checksum: sha1:c565685e22f3411d4c4e50f089be513b3ba98187 + pristine_git_object: e28f87707e1a35b32887f571b7fe43c2903a4d9d + docs/models/authconfigstatus.md: + id: faed76680e4f + last_write_checksum: sha1:b4337cf080b32707bf4d897552f3433ecd409f5b + pristine_git_object: 62132edb9479509e8474df1dc15ca34a209480e1 + docs/models/authconfigtype.md: + id: 631104fca2c6 + last_write_checksum: sha1:cf868619375d419c3e69d7b536c2a9bd58975734 + pristine_git_object: 0427eb93de1eeb4305c60569a4c72c92987de17d + docs/models/author.md: + id: b4139065dbed + last_write_checksum: sha1:015462f693083cc40f7c88d90621ec5613fcd98a + pristine_git_object: 9145b8660b04968e115355c7cfa85711040d1bf2 + docs/models/authorizeactionpackrequest.md: + id: 0b38a0fb43b7 + last_write_checksum: sha1:a3067a0ec18cbc72faab1d73bf1f2b0d21ac8292 + pristine_git_object: 1b8864fe428ff9a1f09b60a49529f4f282f28192 + docs/models/authorizeactionpackrequestrequest.md: + id: 08beba244fd1 + last_write_checksum: sha1:73f039e074e4bc54d0f636228f0aca15da29a002 + pristine_git_object: 8b8fbeb8e65836abcced47952b57d26e2c6cdd85 + docs/models/authorizeactionpackresponse.md: + id: 259c7805d864 + last_write_checksum: sha1:a2a36f4376b5550c02047bfe1b528b10b039cf80 + pristine_git_object: 24363138d837adc7e9c840c941f1caae2054bb21 + docs/models/authstatus.md: + id: a3855939ee61 + 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:c9a0046345344bc545a6ad2937956c653f812c4b + pristine_git_object: 120f98984fd9088eefaa77137bef62f43912089a + docs/models/autocompleterequest.md: + id: 17d479e27d90 + last_write_checksum: sha1:e59c2e682e4271aee48faf382e069ec614f1f1b7 + pristine_git_object: f3dfd2e93990c4b6bc193454f63ad4fee24d7095 + docs/models/autocompleterequestrequest.md: + id: 317ac647722c + last_write_checksum: sha1:12cc5b7ecb4f809bf8735c278e50b9d89c5a337e + pristine_git_object: f52bd9ee886df0323f70d1416c7f567beee45fe9 + docs/models/autocompleterequestresulttype.md: + id: b8d90b50b8a1 + last_write_checksum: sha1:384db0e85ba2259d36c469bf18aad238ce221de9 + pristine_git_object: 1133a59c5d24f501ea467fb19e9a467682cd9d31 + docs/models/autocompleteresponse.md: + id: a8f4f0d2e960 + last_write_checksum: sha1:e80e1ab5896798594c21df4361f9c5711f55d8d0 + pristine_git_object: ff394f51ecf5b8b41424500bda1c252b8b60227f + docs/models/autocompleteresult.md: + id: 3a28814f653b + last_write_checksum: sha1:008501536c2b3df725b7d472025a487503624c2d + pristine_git_object: 73654d2f45d378053fd1a4e2a16e68202b5d4abe + docs/models/autocompleteresultgroup.md: + id: b468805c7407 + last_write_checksum: sha1:62578711014ba4fe4bec11879e46aa39311a61d2 + pristine_git_object: 50c4361043902ea66f73de0cca21e46eb72d8735 + docs/models/autocompleteresultresulttype.md: + id: 6836c607354c + last_write_checksum: sha1:400e45cf3c6c4373d774711f701ef567a3bb9b84 + pristine_git_object: 9e2a7661c61009d972b42f3fad2d8af966b95fc9 + docs/models/badge.md: + id: 1a875de7727e + last_write_checksum: sha1:41161b237fd17651efebe457fac1d95052605a89 + pristine_git_object: 06cf46df1c5e8e897928c57585c307b386f4aefb + docs/models/breakdowntype.md: + id: 852d76343384 + last_write_checksum: sha1:fb3820973b2df634462475d5bed0b75cc09dfa09 + pristine_git_object: dbe3672757339f9ecbbb904f50a7ba5924ee4a43 + docs/models/bulkindexdocumentsrequest.md: + id: ea279e5855b8 + last_write_checksum: sha1:4ae80ed6fa8146e90de4818a30d46af50e9affaa + pristine_git_object: c71fbef928392ba566e754f742e90b0529bdd1d8 + docs/models/bulkindexemployeesrequest.md: + id: 5dff8cb1d62d + last_write_checksum: sha1:ff1091c147ce186b955d9e39bd6a363b20d4a216 + pristine_git_object: a6a4de5c6d9574dfa1147c0de058bc833c669483 + docs/models/bulkindexgroupsrequest.md: + id: 6d771419f663 + last_write_checksum: sha1:a074421032046706f24a2586df2a13d7c4a8da41 + pristine_git_object: 07451b99a38a6d5e125053f078b5aeac2d0286ed + docs/models/bulkindexmembershipsrequest.md: + id: 066f781776b6 + last_write_checksum: sha1:2af6086d9e335170d0ce403dbdaee9ccf6c3f78e + pristine_git_object: c45143bfe93e3b06030b731e268af5d6dae1fadd + docs/models/bulkindexshortcutsrequest.md: + id: 0e97c93e7b86 + last_write_checksum: sha1:204bc817b4c928ec873551beb092f9046eb3875e + pristine_git_object: c2d1d3743fc392c984fbfbc07a311fbbac08462b + docs/models/bulkindexteamsrequest.md: + id: c27a9cbfdcc8 + last_write_checksum: sha1:54ddafb9f7f9f751d407687bbc66eb951c92f574 + pristine_git_object: d09502fc93324d25aac751cfec6658e43b7af9f3 + docs/models/bulkindexusersrequest.md: + id: 476e7e6227d2 + last_write_checksum: sha1:8ac4c85fe5b63cc89ec74a7020f403345b7bb89b + pristine_git_object: d9b8921055651eaabc817776155ab04237a252df + docs/models/bulkuploadhistoryevent.md: + id: 2b94771f2b93 + last_write_checksum: sha1:601c2c057b2d35dc39a133fc93c60250a8199c22 + pristine_git_object: 4663c390eb1ac356d16c42042bb36d96d15d37b7 + docs/models/bulkuploadhistoryeventstatus.md: + id: 19182dacc064 + last_write_checksum: sha1:81aad9b978d55bd5e4bb6b0b78736ae51c96a2a4 + pristine_git_object: dcc8036722980aeadd202cacc8343f4c40fcca0d + docs/models/calendarattendee.md: + id: 65658df6d5ed + last_write_checksum: sha1:95c9c7713d8dd0387c417133e10f3e8fc015738e + pristine_git_object: 7cf9ed41a341225236e9b8ffd3ec71f0099b3655 + docs/models/calendarattendees.md: + id: 3edd85e6c6b7 + last_write_checksum: sha1:c6512e8e00670a90a5b738b433c11ca8d1360118 + pristine_git_object: 58af4f277fb9df54ac00672daccab0a9de5ef85f + docs/models/calendarevent.md: + id: 9e2312fab53f + last_write_checksum: sha1:ab74d1fc0dae4709bce9315595b2e0540db47d49 + pristine_git_object: 91c8c22a8b8193d6390213ea3b67c6063b605084 + docs/models/calendareventeventtype.md: + id: d46158398e36 + last_write_checksum: sha1:086fce57b60cd539b9ab120f24055d3d5388959a + pristine_git_object: d477e13e31d8af9e32a0b71dfaa896fad33b3c8a + docs/models/canonicalizingregextype.md: + id: 7fbd76463a36 + last_write_checksum: sha1:8a160bf9d8941da21f49dcdcd60dca736abe56c6 + pristine_git_object: cf8076f618f376528d7e3fed8ed548d85e1203c5 + docs/models/categorytoresultsize.md: + id: 8c75c475804e + last_write_checksum: sha1:3855a82e3ebc6261bf0683dcd59f217c2da31ba4 + pristine_git_object: 78e164eefc0d787a49d13a1540a0bf79131376a8 + docs/models/channelinviteinfo.md: + id: 4866f013a047 + last_write_checksum: sha1:1efa595c4526ed2dc66def559b87a5ba18f15f96 + pristine_git_object: 7fb6ebfe4d4ce45281d2997bd69091e7c2cd2b57 + docs/models/chat.md: + id: 7e034062963b + last_write_checksum: sha1:4246de59554acd84a4468d3f1e6c39e694e529ba + pristine_git_object: 18c670eccfe85be9099c9282d287c37b21b55162 + docs/models/chatfile.md: + id: 7a18331d1f94 + last_write_checksum: sha1:9f1205fc69a4a6ea9c80355d2bd43c8ed2ed5aab + pristine_git_object: 31d5a62636ad0c94d41892b473b78a7988df0a17 + docs/models/chatfilefailurereason.md: + id: 7d31e70789c0 + 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:14a82425ae8934057ad003b6329fe463aa8a8620 + pristine_git_object: d531ff5bcb94079a22528ff5a2b64e572bf677d6 + docs/models/chatmessage.md: + id: 768623ba5622 + last_write_checksum: sha1:de3b12dcf57e893d4facbfc151263895f807605f + pristine_git_object: 7134cbbbb0e874365e08c98808b1fbba6666cd59 + docs/models/chatmessagecitation.md: + id: 081d0d2ead7a + last_write_checksum: sha1:9c7ea402a970b8114589686c1c43730daab4786f + pristine_git_object: 842f2730c228c5816c872437f067f59fddc6023c + docs/models/chatmessagefragment.md: + id: 9f4738df6b1b + last_write_checksum: sha1:c1579999ebb97ae544c1dbc1c9df2f5cfd9d0e65 + pristine_git_object: f7de9397bbdbc53cd8b41821b9f34e33d69bf653 + docs/models/chatmetadata.md: + id: 04d1111a98ac + last_write_checksum: sha1:3e94025fd78eea7b18064ba4b5741bec7286e912 + pristine_git_object: 2c485d005d095c8881e91fe1d815a84ecd4d3dc7 + docs/models/chatmetadataresult.md: + id: db6392c084dd + last_write_checksum: sha1:14a622b7d6610c4006bda4d046b820a736d75d85 + pristine_git_object: 8b11c11bef041ee25c45fec411abe4aacfb48d24 + docs/models/chatrequest.md: + id: 81b65d713472 + last_write_checksum: sha1:7d7ffd282cd2080d2079fad89032883cae45de95 + pristine_git_object: ae4528f9bb83105c8bb4a8f7d9bcef9ce97e83c8 + docs/models/chatrequestrequest.md: + id: a3ec3d49636c + last_write_checksum: sha1:a7728be88e6fc29a1827f5abeb9b565293447857 + pristine_git_object: 743e1fd15ef2e5a212c755a793811ccbf19d46a5 + docs/models/chatresponse.md: + id: f59beb8f6c98 + last_write_checksum: sha1:bd47cff924de4909d80b32ccf122e0c8a8ae366c + pristine_git_object: 5c8440777426c3cea6b1d2d4608ccf5bbe84005d + docs/models/chatrestrictionfilters.md: + id: cae12da2c86d + last_write_checksum: sha1:0cbed53f5ff5fe8fe9f44909300ad9ab82ace936 + pristine_git_object: 5558447a20209476cd633927e1bb73bb9cb0840b + docs/models/chatresult.md: + id: 0d44370308d5 + last_write_checksum: sha1:a9d6fa6612f238fea9328bc614cc44da5423a5d1 + pristine_git_object: f9d52d76dd6527406433f485ed424eb1e66dc923 + docs/models/chatstreamrequest.md: + id: 1602d5226e53 + last_write_checksum: sha1:7276ee2d9c61572dd0747c4f41059e7ea3f970ad + pristine_git_object: f04f0b8f01b063f1b3cb838e55a093880cf94693 + docs/models/chatsuggestion.md: + id: ed9377964a1e + last_write_checksum: sha1:ec415c7f0e372089f398ba9425cd64cce9e2b527 + pristine_git_object: e18aae7ba79f1f9c0d9a9b302f15ce4b1b1a8aac + docs/models/chatzerostatesuggestionoptions.md: + id: 93484e4440f7 + last_write_checksum: sha1:70ab46266394ffd387991ec7036aa7e12346d278 + pristine_git_object: f003c186b000ff51b939282191e5d42e08e06f7b + docs/models/checkdatasourceauthresponse.md: + id: c4214ea019e2 + last_write_checksum: sha1:0cb03f6f8262685c2963aee29986841a38b6548a + pristine_git_object: be60699cc5a111d76b214d6f28642c7e79c6a806 + docs/models/checkdocumentaccessrequest.md: + id: 7e17285c9fb1 + last_write_checksum: sha1:40cc7d27e54e5aca99ebaa24670579d312b9252c + pristine_git_object: 7828ef5e54ed627cb691ed5f5721f831a2c64d98 + docs/models/checkdocumentaccessresponse.md: + id: c51c30c4e12f + last_write_checksum: sha1:a6b4370290da38e68c491ac597df7f04a9251288 + pristine_git_object: 6cb5331b7550f17b9959b0d96b6095cf41c25129 + docs/models/clustergroup.md: + id: d84c7387cbed + last_write_checksum: sha1:cf407d4ae3c0de9bf14af310c5a29de9bb379234 + pristine_git_object: c4adf53fcc703010d5524af57ca9758c04e939d2 + docs/models/clustertypeenum.md: + id: 2f55d1ed0998 + last_write_checksum: sha1:5bc2294488eac58eb85c082b68dc12512c93224c + pristine_git_object: 11effcca09bc9721015d0a6171c3019f3037a5e9 + docs/models/code.md: + id: 2fcb3964c9c0 + last_write_checksum: sha1:e7dda0d13324c09f7acda4cde816844a3f070916 + pristine_git_object: 2c1b314162071c89f00c39dbcd52f639f2a43bfd + docs/models/codeline.md: + id: 80320f06d219 + last_write_checksum: sha1:5d6478b4794a777c4e4852e6e2f084b7507e5371 + pristine_git_object: 27e56b3268211656a422d2717f6caff64a7f024f + docs/models/collection.md: + id: 33e46ebd8c53 + last_write_checksum: sha1:4c081264dc6f3916379fb3b1cdc112e0c9f65709 + pristine_git_object: e029a031371401344f81ad282dd0c47bf894400d + docs/models/collectionerror.md: + id: 6279ba18f0a7 + last_write_checksum: sha1:b0c6864817dbdc3bde8fee4a1e142d51e89f781c + pristine_git_object: a6800fed5ba94f25934cdd5b8fe3fa6832f51239 + docs/models/collectionerrorerrorcode.md: + id: 0d8a5a9d335a + last_write_checksum: sha1:01673cf76ab5e3a3155835835ee98cba03fd4d35 + pristine_git_object: 2aedaf4ae1ab74dc735b8ebadf93561a9ac93a23 + docs/models/collectionitem.md: + id: 4960e28c5856 + last_write_checksum: sha1:72297a3ca7b72b75a41a12073bb959e308051c65 + pristine_git_object: 645d78b29a467d45fe76995d8abd7f967a948fca + docs/models/collectionitemdescriptor.md: + id: 5a16ffbd61fc + last_write_checksum: sha1:5c4dcf57b4a10b9a7f279dea8002abf0138b56d9 + pristine_git_object: 1ce4ae9b5310e7aeb341de3d5dc80839b2a4ece9 + docs/models/collectionitemdescriptoritemtype.md: + id: a708a0061fd8 + last_write_checksum: sha1:39c753bf47906a1bc51b3513859979f77fc5f8d3 + pristine_git_object: 46d88741305849ceb9eb0ea3e7161356fb0bf545 + docs/models/collectionitemitemtype.md: + id: 77ee84f9265a + 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:0675290db8fd17fad831b6d7210c29f730332d2c + pristine_git_object: f9ed8d0540287369214ec1549a8a5a8888771473 + docs/models/collectionpinnabletargets.md: + id: 1679e91bb30f + last_write_checksum: sha1:ae795f89cafff161afd89ace89800e5ffda3b86a + pristine_git_object: e58d9dfb7c809eb0fe8ac0f795ee4e2af957dce6 + docs/models/collectionpinnedmetadata.md: + id: 46c604ec06b0 + last_write_checksum: sha1:12fa1ba7289b21515a574c1f12e882a988ab8b82 + pristine_git_object: 63d66583ec058e45a27cf3dbebed6227806b44c3 + docs/models/collectionpintarget.md: + id: 4cbf91892356 + last_write_checksum: sha1:2114ee396627d364ba9927ed21650ab05d7cd2b5 + pristine_git_object: 2c86f8553566f0814bf94f0f0544e696f7154c90 + docs/models/commentdefinition.md: + id: 793ad11ebcdf + last_write_checksum: sha1:eef0f42c3cf38dea6384296ced59e8360cb6b905 + pristine_git_object: c5c009d177582eef349547c5de1f9b9a99371611 + docs/models/communicationchannel.md: + id: 8aab95c8335e + last_write_checksum: sha1:95070961be8a99439ab49acc3d83ae50e42530ef + pristine_git_object: 4acce537794987af82c102e294cfd8d3f099cdcb + docs/models/company.md: + id: 25a3bf8dece0 + last_write_checksum: sha1:9ba8857ffd2dfbf88f32095f35f561ea66bbc162 + pristine_git_object: 9cc025302b243b17afc808e6217f89023842b35e + docs/models/conferencedata.md: + id: 7327041fba3d + last_write_checksum: sha1:501b116cb02b03c1ab52cd6a10b99d67a4e27cb4 + pristine_git_object: 79a189506ba75c9afc180d0a5332c7b909d7d839 + docs/models/conferencedatasource.md: + id: 0ef7e380c9bc + 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: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:7755464b42b31e074708e3fcbc2f6d50643a4a4c + pristine_git_object: f20d9c65cd50c9a5204a9bc6a06c12870381c4bf + docs/models/countinfo.md: + id: fdce0b0bc491 + last_write_checksum: sha1:6ba12c90efff718bdd939e773d0426df695090d4 + pristine_git_object: dd22b66754081ff30b9d76cfc937603c6d80d965 + docs/models/createannouncementrequest.md: + id: a37b0e57dfe9 + last_write_checksum: sha1:5da6f2bd206ac915200248706e91c0601a4c7d79 + pristine_git_object: f7bf1e242474f0362d50c45c04c217ca21472084 + docs/models/createannouncementrequestchannel.md: + id: 489eb87f68bb + last_write_checksum: sha1:f459e86f42918351e4a9c1a2a359f12cd073f5a0 + pristine_git_object: e9068e68350e26d5609f7c7450c6385abbf14a0f + docs/models/createannouncementrequestposttype.md: + id: a024b65d5db4 + last_write_checksum: sha1:d5152f2a5b3abfe46562a0d0b5516558f6274615 + pristine_git_object: 0c04105de6c2b6a59b9040d673fbde577fb3ed3d + docs/models/createannouncementrequestrequest.md: + id: de0c3ac42c0f + last_write_checksum: sha1:81b253aba6c657667e69d75cf93c6030a2118a42 + pristine_git_object: 69fa43dd3539008293a4d5dd0d345864665cf5da + docs/models/createanswerrequest.md: + id: b2f4f1bd1e2d + last_write_checksum: sha1:06738631e9d37cd6b74284d99ea0a13a538a4f32 + pristine_git_object: d00968f31b3d5c21eecdb205bf6bbc76586e968c + docs/models/createanswerrequestrequest.md: + id: ceeb2981de22 + last_write_checksum: sha1:a4ba09a3544dd4eda7b0ffa862fdc4f8f393780b + pristine_git_object: 297b5967bdbfb9dfcb0cdae19efd17f0aaacec9e + docs/models/createauthtokenresponse.md: + id: 11242161d015 + last_write_checksum: sha1:97cdc3ab9b3f9f9ad126ed2e2195f373114fec26 + pristine_git_object: 69597d8b8dc6ff198a85b4873055f62c8c05491f + docs/models/createcollectionrequest.md: + id: 4fb742a4bf50 + last_write_checksum: sha1:54daa6dff72ccf9da5aa759e7e6ac7693f491f85 + pristine_git_object: f0e6c91b8fd6a92ff6862fcc99a6c8aa1d32ae3d + docs/models/createcollectionrequestrequest.md: + id: aba8cdd4ff72 + last_write_checksum: sha1:f9fac4f1e3989d38a3997785710c6b00e56d2d17 + pristine_git_object: 7eaa07b63ff249dd034cb37b080a5936a586b945 + docs/models/createcollectionresponse.md: + id: 1c420e97a6da + last_write_checksum: sha1:28feca094bb87797c4129d2f61685e7d521a60c8 + pristine_git_object: 42c3788c6056cb6d8b8c6b476ba7bae8d9428cbf + docs/models/createdlpreportrequest.md: + id: 7ff4b805bc59 + last_write_checksum: sha1:ff9cd0cfac7e6728edb314345ea9f20a759e4ece + pristine_git_object: a275ae498266caa03f922238947142511da22755 + docs/models/createdlpreportresponse.md: + id: 631566acd80a + last_write_checksum: sha1:3fadec729c15fedcdad03fe4a7f0c58b2c4a8fcb + pristine_git_object: 1685f9843433003d8eea6d9ea48caf7a9c6defe0 + docs/models/createshortcutrequest.md: + id: 19d7a34341b9 + last_write_checksum: sha1:8eb5ba8fbfea9bf7df0d5ed1da91c8c639067dd8 + pristine_git_object: 1b6b63a0fbf2b25ed4a8337d663860bc417a4a10 + docs/models/createshortcutrequestrequest.md: + id: a616232d47e9 + last_write_checksum: sha1:01576ae1544e66d6f283901101d822132acbb383 + pristine_git_object: 558b5abfe01c41bad4f92940f1c95e5ed057ddbf + docs/models/createshortcutresponse.md: + id: 82707fc9efe5 + last_write_checksum: sha1:320bddb9b5ab5dec88760d844b2d585aea2d87f8 + pristine_git_object: f3315390350a0db0d3eded212d626abc52c0c834 + docs/models/currentactiveusers.md: + id: 8c45d84c2408 + last_write_checksum: sha1:74a4477b894de8d1caca58492504b472a82a94c2 + pristine_git_object: f5cb3add39de3d84535d0ff5cda036c3bf68d012 + docs/models/customdatasourceconfig.md: + id: dcc49d2f5f6e + last_write_checksum: sha1:2d9a671f15e56ecd77c318817ca2828420f86119 + pristine_git_object: 2ecb8158e5265f1ddcddb4d0ce1231dfaf97f82d + docs/models/customdatasourceconfigconnectortype.md: + id: 7dd8e0da1ef8 + last_write_checksum: sha1:ed03cb8615d256289ff98d79f7b0131df48c1c19 + pristine_git_object: 0478f66844c4622dec82606d6fed5865c672dc7e + docs/models/customdatavalue.md: + id: 0646c2f2d3ef + last_write_checksum: sha1:259403bd21db12ffe1d2c83510dbbb1f5f06fa5e + pristine_git_object: ed26eae4383b2f707f71f106f0f97214efd6c343 + docs/models/customentity.md: + id: 5a41cb6aa2c4 + last_write_checksum: sha1:07212eadae0fb49ad134ef9e55f3104775afd062 + pristine_git_object: 5ddfcbaac423a65f0fa682e316e302a90ecefe37 + docs/models/customentitymetadata.md: + id: aaf0caae806f + last_write_checksum: sha1:9c972f61ef1604104cd13ea5808cce5de706d1a9 + pristine_git_object: 957cbf829dc8e51bcbb4623fc118a85174412276 + docs/models/customer.md: + id: 42ac97d31359 + last_write_checksum: sha1:010a0be8d736f3f0745d88fcf6f0086c40971345 + pristine_git_object: 87a18b07de3cb1af1b7b8679f67f0b5851b27c0c + docs/models/customermetadata.md: + id: 779d2943e4c4 + last_write_checksum: sha1:781bc1782f52f35d179d72a40296e8a47e4a8a51 + pristine_git_object: 3460285e56e05943d58d190221d20808189aa0f5 + docs/models/customfielddata.md: + id: ed3fc14221b4 + last_write_checksum: sha1:60cf69724363a9ecd07544e7dfb661e98a2d88b3 + pristine_git_object: 98838d5edbe13a70191acb0423e781d1e0d9ccec + docs/models/customfieldvalue.md: + id: 7bfffa1a087d + last_write_checksum: sha1:20194f445e98e37596afa2955cfd394cd4f2f200 + pristine_git_object: 5a983f5a2323d9a4799ed799fb68136fc10360c1 + docs/models/customfieldvaluehyperlink.md: + id: 6740953e3749 + last_write_checksum: sha1:22523130edc689ad5ef00729356ab862afb8952d + pristine_git_object: 04311134357f59547d4ce78e83c2811e26714589 + docs/models/customfieldvalueperson.md: + id: 45e1b166d269 + last_write_checksum: sha1:b89b31e3f86bd6c20040dcdee365dba12eb98aec + pristine_git_object: 8a6d62a3485f68e9ae6ae154a22001b749e3b84f + docs/models/customfieldvaluestr.md: + id: 10e27bf957cf + last_write_checksum: sha1:d7e46925c8afddb55373a1eaf4fd242615f98dae + pristine_git_object: a4b0b181977a85fe59b01ecdaa91574a651d91da + docs/models/custommetadatapropertydefinition.md: + id: 7504ef58165c + last_write_checksum: sha1:0499d47e78ef18fb559af34ad28f7c4cf3f5b7f3 + pristine_git_object: 302418b2bc09c69a0bc141968716dcbf18bfbedc + docs/models/custommetadatapropertydefinitionpropertytype.md: + id: 2cde37e83967 + last_write_checksum: sha1:54fd555b214ef9d8edede064f42ae7ca489f6aaf + pristine_git_object: 3901872095edb3ead48784140a6539439ef698cd + docs/models/custommetadataputrequest.md: + id: a122a6bc9bbe + last_write_checksum: sha1:cb455b4c9e5299c601ca2a1504469fad7ed456a7 + pristine_git_object: cce52d05cbf5643cd894aa9f562b4cb0afa4a237 + docs/models/custommetadataschema.md: + id: 92b8f5c6aa4e + last_write_checksum: sha1:ac8969c2b2c2634a3c1cc4e195f09ba50f3cf4c7 + pristine_git_object: 0795bcb58b5ce1714df36d8dab2c0a75e0b3628f + docs/models/customproperty.md: + id: b78e4b74d102 + last_write_checksum: sha1:68ff7c444fdf2b0d8009dcb6f61dd3867333fa2b + pristine_git_object: 415897d4299dd3cd8105eb2f6e2a619dfab70e22 + docs/models/customsensitiveexpression.md: + id: 978a0191d4b9 + last_write_checksum: sha1:2d43d5d8b71ce4640b0a9b0cccc33350cb66a3f4 + pristine_git_object: 2ec75dcd8eb5df2d2e1306650a01a61aab3ec09a + docs/models/customsensitiverule.md: + id: f2e57d375fcb + last_write_checksum: sha1:bf4e50a8d91f1160b45971417899b2313f668422 + pristine_git_object: 04ae799b13b8747facae38cd235e17e4c94c0d61 + docs/models/customsensitiverulelikelihoodthreshold.md: + id: 4fd57e9cd6cb + last_write_checksum: sha1:2f50620e3cc362c46de7a79e7daded8850dc3f00 + pristine_git_object: fae764188c3c67ea85608839ff84cb5ffd87b085 + docs/models/customsensitiveruletype.md: + id: 6bd863598a1a + last_write_checksum: sha1:1c371d5f383860c537688f361928cb6ae662acf3 + pristine_git_object: 6961690df0348a2e1ed6f05630921ad81ff2ff62 + docs/models/datasource.md: + id: 1fe408a0fe08 + 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:015d56c41be98ea2c521890e16153d81d293e77a + pristine_git_object: eccdbdeb57567caebb4ae64d7f8a263ed38a989a + docs/models/datasourceconfigurationresponse.md: + id: 7c6f38290f96 + last_write_checksum: sha1:10c0068be581150ab5915785029e610bdf472ab5 + pristine_git_object: ba3be1321e92d6af0bfdad972ec394d96dec7baf + docs/models/datasourcecredentialstatus.md: + id: b2c547314a78 + last_write_checksum: sha1:d9668e2b566cb7f7401035f4b517f0679b3c16bc + pristine_git_object: 546c77b9e9d419c6e9489314b72a535b80685c87 + docs/models/datasourcecredentialstatusresponse.md: + id: d513182b6b07 + last_write_checksum: sha1:62dfc54ae5c5732258745444162c57f34243c117 + pristine_git_object: 29641fd5e8b7176222bb063da21e360a6f188286 + 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 + pristine_git_object: d2a1042ec6c4f581a4595bfc7993d3085ef152ac + docs/models/datasourceobjecttypedocumentcountentry.md: + id: f745b26958a8 + last_write_checksum: sha1:d865d62cc0c0eda352d2350e4cb4e93ac9af2914 + pristine_git_object: 5c1414a95c24f5b0e346e7d29c0d64dbba760144 + docs/models/datasourceprofile.md: + id: 182e0af296d3 + last_write_checksum: sha1:1403912e1936ea4f2ecc066021f6416c96d11240 + pristine_git_object: deaaa99771f93f4b90dd93fae540370bde88af4f + docs/models/datasourcestype.md: + id: 25d08b2d7720 + 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:a4e5af873ee3567294fa852244f34590dc3a807d + pristine_git_object: 3ae0d199f7ae7d287ed6015738f58b39257e31d2 + docs/models/debugdatasourcestatusidentityresponsecomponent.md: + id: 9e97db1d9971 + last_write_checksum: sha1:b87f54d7eff6aaec0026cdee931d2ddd6a6e9d09 + pristine_git_object: cf19ef35edcd4a6f608b328d436fb1859b0758c0 + docs/models/debugdatasourcestatusidentityresponsecomponentcounts.md: + id: 090ff991c448 + last_write_checksum: sha1:b1a089b9c72d38802f3cae9e3f767de6722921f2 + pristine_git_object: 8f4834579a31176f77b19c87118ec73f2e6f4ced + docs/models/debugdatasourcestatusresponse.md: + id: 862e9f43dfac + last_write_checksum: sha1:3ee3fa33f81abacb6bb37925a74538341e3c6449 + pristine_git_object: 95f27015b1911c5652d8570bdfc2462d324f7d90 + docs/models/debugdatasourcestatusresponsecounts.md: + id: a15c7f77c9ed + last_write_checksum: sha1:8d352c83a81d629bd06cdda8d74a942b459580fb + pristine_git_object: e28d970e78ba1a9aefc121d61e2b338453c965ff + docs/models/debugdocumentlifecyclerequest.md: + id: b38894d9a56d + last_write_checksum: sha1:c68e16b64c52a4c8d4c73c8732fa528df2042297 + pristine_git_object: f17f8e7e6f761e474acdd95dce6e4d2b10daa17b + docs/models/debugdocumentlifecycleresponse.md: + id: d825e536ff47 + last_write_checksum: sha1:19f615eab9605ea42138e052761bd6a4969a9450 + pristine_git_object: 401d2b6c68304da62e32702856fedb8ac56c493e + docs/models/debugdocumentrequest.md: + id: 472dfd215403 + last_write_checksum: sha1:d8af629ac5ef4a502dc2433a899b878588bd92a8 + pristine_git_object: fe737ae132d6ee81cd1527deaa2a27e85c202dfc + docs/models/debugdocumentresponse.md: + id: 1e00b3246cd8 + last_write_checksum: sha1:a899059c392f464522ad78c40b6d9e86407670ce + pristine_git_object: 333ba22c9c2614b0bbb615b58156d98896238841 + docs/models/debugdocumentsrequest.md: + id: cf5ecd08fa6a + last_write_checksum: sha1:6d6c95fe388befea6c77cda741299badfa286378 + pristine_git_object: c5f7aa5a365df52ba832b43ea319d1ffcaf24f2e + docs/models/debugdocumentsresponse.md: + id: e1fc14720325 + last_write_checksum: sha1:80475f3cc83f8c969f8407ffd9a9114fb508121a + pristine_git_object: 5cbf71d7d408a43fd028e66baf7975787ebfa0e0 + docs/models/debugdocumentsresponseitem.md: + id: 2b35bb58b6ab + last_write_checksum: sha1:30d448376453685bb918f48d321a53d270ec354e + pristine_git_object: b0de9771e6be617176a21ccf621671b1d8478810 + docs/models/debuguserrequest.md: + id: 8b423b911bbd + last_write_checksum: sha1:2aaf4153cfaeaa7ea5a8293b9a2140fc6e1b6121 + pristine_git_object: 387028fe0f024abbc485b1593035971c2953fa02 + docs/models/debuguserresponse.md: + id: cbb2c3fe19c1 + last_write_checksum: sha1:03928e3475d1380bdbf8f01850b53da156736542 + pristine_git_object: c4849b3bf6c68ed1bf5a4d515b3f78117b06c9e3 + docs/models/deleteallchatsrequest.md: + id: 0df31df547ef + last_write_checksum: sha1:469b4a6d062bdb6d7932751074656d48d1d9f3b1 + pristine_git_object: 01ac00c0e14b2cac033a0f543f5552a9e64641f0 + docs/models/deleteannouncementrequest.md: + id: 697f967aeab2 + last_write_checksum: sha1:7ba31babddd36adf4e5f5ad96f1188e4ea4dd758 + pristine_git_object: 61052076395a429afa6fb0fce1a64baa85c86db8 + docs/models/deleteannouncementrequestrequest.md: + id: 7000e6336d32 + last_write_checksum: sha1:9d1f60a56d32aa96750c2e458372edca7643fc56 + pristine_git_object: 689b1e04c427d189edd6689a3ad7a7d5d07f0b15 + docs/models/deleteanswerrequest.md: + id: 03a96322822c + last_write_checksum: sha1:4255563fe55a59ed04d3dbd64f18eb66d44d91b0 + pristine_git_object: 0c9627b096e3cd35d84de3d7a59ff18ddbbf916a + docs/models/deleteanswerrequestrequest.md: + id: 039fc36c25a1 + last_write_checksum: sha1:b0c6e179d80fe5b2e6b95ebd7a7e10bd420292d0 + pristine_git_object: 05520c6f5bac6b44027aa115d9cbd7ee5fba5079 + docs/models/deletechatfilesrequest.md: + id: 8a85abb12a53 + last_write_checksum: sha1:e6de32e685605fd3f0ec4689ca5d52143adf6acf + pristine_git_object: 4c7da5812e95ca08dad4b6e669d02bbb919950c5 + docs/models/deletechatfilesrequestrequest.md: + id: 359c2e279405 + last_write_checksum: sha1:2f317be3efc3295261a2ae27d444298dd39d5c72 + pristine_git_object: 4aa1d9f25e08907aba0385df709db78dac447008 + docs/models/deletechatsrequest.md: + id: 89eb2641c5d9 + last_write_checksum: sha1:bee37f24e3baf452912e515861c22ae9035b2b72 + pristine_git_object: 2db87b989294d5b8e6fda90fb59bc32547dd9237 + docs/models/deletechatsrequestrequest.md: + id: c44e6e70af59 + last_write_checksum: sha1:f846035edf3b9f73d0c1bee6bd92b0ab109f4a50 + pristine_git_object: 9f0ae5c5f49f2745f903a21d51a1afdfb3c52f1f + docs/models/deletecollectionitemrequest.md: + id: 7ba74477b69c + last_write_checksum: sha1:de0700bb4c8d17753e62a4fb574b47b7c562f321 + pristine_git_object: 8032c1e5b6d81d0620b8f8166e2e1e5379f0f651 + docs/models/deletecollectionitemrequestrequest.md: + id: c7f22b20106b + last_write_checksum: sha1:d478c5c18c6fe3654e036f2ca42518631358a124 + pristine_git_object: 3c1c904e0df5ba3e03ee6cb7746d99efc6bc121f + docs/models/deletecollectionitemresponse.md: + id: 4131887f6194 + last_write_checksum: sha1:d481dbb630fd9d0fac3a94185c13dd841a5e1b50 + pristine_git_object: 9275d6647d5a1ce39084dde7b2ecca58ed3e5414 + docs/models/deletecollectionrequest.md: + id: 6a319d49e4f8 + last_write_checksum: sha1:58ba2e905f3e38d29aff18861a32e192ffed0bff + pristine_git_object: 5bc3169deaa37662a11e4f16d2208634ba753db6 + docs/models/deletecollectionrequestrequest.md: + id: 6dd52e128fe1 + last_write_checksum: sha1:d897af0af4cc61fb5bc681b69d849c23e299a5fe + pristine_git_object: b77671511a581b186eb3d516c642c33a48fae9c8 + docs/models/deletedocumentrequest.md: + id: 898eebfc019e + last_write_checksum: sha1:4b56b845e774d8f683d8f35beebc18b6daa43673 + pristine_git_object: 0c19087c23d645014033daf5cd0fd3368cc4ff95 + docs/models/deleteemployeerequest.md: + id: 189542043f37 + last_write_checksum: sha1:3ed873e97a940c1d1347f63695208f4bc24fcd53 + pristine_git_object: 895e628a4fe7f1ec37106250e8b2aadd0bca3377 + docs/models/deletefindingsexportrequest.md: + id: d7eb48971da7 + last_write_checksum: sha1:bde6a1e9908e01748da85ba7b54c8bd86d454df2 + pristine_git_object: 29ba755b17e209b0d2682716fc5a260f4e6b4244 + docs/models/deletegrouprequest.md: + id: f8649aa49457 + last_write_checksum: sha1:0eb7e2cfd2c25763fd99d9b161e147555fec394f + pristine_git_object: 931f50d1e0cb03b1bbb136ecf72e3ed9d224ee5b + docs/models/deletemembershiprequest.md: + id: e7dcb92de8a0 + last_write_checksum: sha1:5d3183312e721af24d6d81400272a22754ef26b2 + pristine_git_object: f4a13cb78952e4bce54071d893f79c02b0e94024 + docs/models/deleterestapiindexcustommetadataschemagroupnamerequest.md: + id: 749ae57c5051 + last_write_checksum: sha1:f6db2e24f557205caecae70a92f58a20bf990332 + pristine_git_object: fc0cdd0a271ffa15bdc403852e5da71ebab4e552 + docs/models/deleterestapiindexdocumentdocidcustommetadatagroupnamerequest.md: + id: 6c98296f1b76 + last_write_checksum: sha1:4fb073454cb521f4d1bdce6564363ea27e4f7c0e + pristine_git_object: 2214e13e746cd5005faad17f350bbd9d0f11602c + docs/models/deleteshortcutrequest.md: + id: 7c2220e28702 + last_write_checksum: sha1:950cbd1d2057b793803c538edd36d988228ec913 + pristine_git_object: 1e2e09b0677375585aef92057bc5039d035510a4 + docs/models/deleteshortcutrequestrequest.md: + id: cb6f1bded05e + last_write_checksum: sha1:a83911aaddb48be2961f7b055b581be62806d0db + pristine_git_object: 8c355d07279087e5563e1e2bf62075743cc5937a + docs/models/deleteteamrequest.md: + id: e984ecb440f4 + last_write_checksum: sha1:f3e7cbefd6bd5dd7ebd0c77334e6038f1917f75f + pristine_git_object: f02be9a346e327ebb1190c48e1f70c05b0dbd3ab + docs/models/deleteuserrequest.md: + id: 36548eaea998 + last_write_checksum: sha1:7c9e3facdadd75754a756523003d502a3b1cd54d + pristine_git_object: 89aeee2a39caccc35016d3c2c3d7f4028d1d671e + docs/models/digest.md: + id: 4286bf106e45 + last_write_checksum: sha1:5c303d324e9f96203e0dc9a1b4b1216e4b66900a + pristine_git_object: 69b303d5f194c0e33a828f65cbb1862e406bd9ae + docs/models/digestsection.md: + id: 25184a2ca977 + last_write_checksum: sha1:2f6f983edd0f2a4f2be08ae4692df846b93d791a + pristine_git_object: f73def2b2a50de6b3cb571ea2d82eae27ac95a65 + docs/models/digestupdate.md: + id: 94c9d4380888 + last_write_checksum: sha1:1decf8f4b91558ad74ce8fb98df98f72f1487c4c + pristine_git_object: ee7bb74980dd5f42d03ec3bb84804e2c13965e14 + docs/models/direction.md: + id: 5c2dbb7995cb + last_write_checksum: sha1:a827dab6128d52fba4cbda0f543017e9fc64df0f + pristine_git_object: efe05ba95a985a7f8ec655a3d86b8c18191dd0cb + docs/models/disambiguation.md: + id: 7f98ff32a361 + last_write_checksum: sha1:2c394e73d2a8dd69f57b523639bf166b4021c3e7 + pristine_git_object: bd69362fa40c54e17d3af4e308c29cdf5fc2676d + docs/models/displayablelistitemuiconfig.md: + id: c2acfbceb7b5 + last_write_checksum: sha1:06b67f8e1ba3324dcf339002e999dcb0cec28095 + pristine_git_object: e29b2f5fe2b191a8ad8f3e225b6accc748b81e2f + docs/models/dlpconfig.md: + id: bee569951c5c + last_write_checksum: sha1:a7cafb975a5bca6458a7c4a50e1f98d3d29e1a18 + pristine_git_object: eec4bb2823477745162b6a604d6ed6547bdfcdbd + docs/models/dlpexportfindingsrequest.md: + id: 846a7d063614 + last_write_checksum: sha1:9ca5aec938795a317d000ea1f234a9c64d85be47 + pristine_git_object: 3b8f7ff6562ca538b5d24f5c0a2b3c8f403e78e1 + docs/models/dlpexportfindingsrequestexporttype.md: + id: 7dd2a90d5769 + last_write_checksum: sha1:5f8fdc9eed3f5729b296eb59c1fc38157b5dfc0a + pristine_git_object: 7e9aee477a448c831c541e857c45255b826159c5 + docs/models/dlpfindingfilter.md: + id: 72eab9f49f83 + last_write_checksum: sha1:266f51fd4af5f9a986ec5e5d417b971de887913f + pristine_git_object: 24d1a90183680b617094e528f710271b9ae6aa33 + docs/models/dlpfrequency.md: + id: f4604a8ff945 + last_write_checksum: sha1:59cf084fba6095ff5151b96ca8dfd4269f728456 + pristine_git_object: 17476f3f5a6693576fd0c699271fa1bad636427e + docs/models/dlpissuefilter.md: + id: 015c17ef6125 + last_write_checksum: sha1:2554635c00b4906fe04b46dc616963faf58504fd + pristine_git_object: 9769c13471fcee3a3b04e39a063e0abf2d8bb939 + docs/models/dlpissuestatus.md: + id: bd67979c68c1 + last_write_checksum: sha1:1f9b9f3090255714b1ece78a71f0a4fa71d6b38f + pristine_git_object: 26c2139d9e09cdb0f9aaf221e341f4e3a115f39c + docs/models/dlpperson.md: + id: a7d2a215ac10 + last_write_checksum: sha1:6e328f42974e9211f7a259efaf18f38e825d10a9 + pristine_git_object: 47141ff6afa3fa848e44208bd11ab91f7b9cdfc5 + docs/models/dlppersonmetadata.md: + id: 55ce77de9027 + last_write_checksum: sha1:b9ed0b37d5220528c78a011d1fdde86b25990fd3 + pristine_git_object: d399482142d3ad06f7bc73d2073034fe82089133 + docs/models/dlpreport.md: + id: b408b2dc0d66 + last_write_checksum: sha1:c832d604beccf8567323271eeb0dcbed7ca26222 + pristine_git_object: 67dc82411941f609b7b00bc43ae7c1a57f1d7df0 + docs/models/dlpreportstatus.md: + id: b9c039d457a2 + last_write_checksum: sha1:fe360daac10e2aee01245b7dc9697950a9e7c489 + pristine_git_object: ed2a14b5b68de54335a7439d8b531781417ea127 + docs/models/dlpseverity.md: + id: fad6ecae05e8 + last_write_checksum: sha1:962be89ee33d95c57de6f2b1475b26dcb13ba271 + pristine_git_object: 4083ea25abee1ad91821316e10675608cdfd5270 + docs/models/dlpsimpleresult.md: + id: ca81e0658bbe + last_write_checksum: sha1:bb79f1ce7cce83ea4d0b9f95e4bd8e12eedb63ec + pristine_git_object: 52a18a1148721667dfc7a24e9858cfba774d5c78 + docs/models/doccategory.md: + id: 821ad62d2df6 + last_write_checksum: sha1:dde799e6eb1d7b4b1515d636c07939219b3cfa0f + pristine_git_object: 3560e89449148b672eebef4ff2dbd84ca47d7b25 + docs/models/document.md: + id: cd1d2a444370 + last_write_checksum: sha1:3c58b1bee296890b3ad00d72b32647ab4ae67bd4 + pristine_git_object: 0ef8d71b674e92094644a4d72c369aef2adbc663 + docs/models/documentcontent.md: + id: 803a392940f1 + last_write_checksum: sha1:232dca0c5ce302062b31d4934b927f001f112904 + pristine_git_object: 5fb524be4047a39a705ea7befc6aa8afe8cc7f5f + docs/models/documentdefinition.md: + id: 3177ff20ce95 + last_write_checksum: sha1:6584c0b35fae2216e7b2960718654fddb1e696e0 + pristine_git_object: c1c884b1f6cfba977620b2f9a6a6b9d02feeb1b0 + docs/models/documentinteractions.md: + id: 40929f336351 + last_write_checksum: sha1:ede65df5d5f50eeeaf919598bcb2c04ff569e552 + pristine_git_object: 6c5eb1a1ec1f832f1c392423a138bfc441fa0e7d + docs/models/documentinteractionsdefinition.md: + id: c25cb3fbc0da + last_write_checksum: sha1:db3ce2e164b64346a2d686e1f00bd08f17828a73 + pristine_git_object: 49bc371a0d92f72ba3a13a0f0dc4a779969ac9b9 + docs/models/documentmetadata.md: + id: 4e38d3813c9d + last_write_checksum: sha1:e19351702eb01c0bc1ebbec55bcbfbc6fc1bacee + pristine_git_object: fdfc1ff7d21316a49f16962a6fff2a086cf9e8c3 + docs/models/documentorerror.md: + id: b27519c283dd + last_write_checksum: sha1:e91dba160f27d880bac02545881c5b9bc04be41b + pristine_git_object: 0d3d2cb4a5081c745169f74b5ba4ef3f3729d641 + docs/models/documentorerrorunion.md: + id: 03482d8845ea + last_write_checksum: sha1:62f1b6ff1ff93184b6b713b2b01c962062a2cbf1 + pristine_git_object: 4e441b5ad260921fca20e07216cb4af76314744a + docs/models/documentpermissionsdefinition.md: + id: 7e7543b326f2 + last_write_checksum: sha1:dace2eaa019eb92437e9f6c124ef3df3a7c43973 + pristine_git_object: 98577b20dc7dcbd6a5e4c54d1450d581adb79796 + docs/models/documents.md: + id: b4aec1b09482 + last_write_checksum: sha1:3a90a813129851163b5adacfc11fd8a626c94cd9 + pristine_git_object: e7186d33dc0dc42254e0cfaaf4b501e9a1893498 + docs/models/documentsection.md: + id: 6d02741cb22f + last_write_checksum: sha1:69e7f70855f8065dd02f6ddb7d25fe6d8109e2bc + pristine_git_object: 997270d188d37185f38fbc3f6a38cd49bffc14ec + docs/models/documentspec1.md: + id: 305f9415cbdc + last_write_checksum: sha1:a32fd2a2ca4a4451b3b553eaf8ce1d8e31bc5c23 + pristine_git_object: 752d3825b6f1d4b04fcc84ef60657994a9d59e2e + docs/models/documentspec2.md: + id: 971983b0e497 + last_write_checksum: sha1:504c3954b89b1cdb036715a8da5fd4e81313863c + pristine_git_object: 4186c95ef560201da1dd0ff1dfb42df9841c387a + docs/models/documentspec3.md: + id: 6b4a9dffdb97 + last_write_checksum: sha1:d62648ecc1b7a0317f67be6583a0082b249ab573 + pristine_git_object: e694c962a8478701f9e42a32fce1cf9855dd3fa2 + docs/models/documentspec4.md: + id: "950787342121" + last_write_checksum: sha1:351e9549b7e3e3f8ebcc8f991e9167bc0499bfe5 + pristine_git_object: f97ba78eea3e84426e32fa16906bff8c6e2de17c + docs/models/documentspecugctype1.md: + id: d65ddd3c18d9 + last_write_checksum: sha1:2f9426c2753077155877db7b8e39bc260d739a49 + pristine_git_object: 6b1e6c24ec175c5d5ed53f605e5ad94e2600fab7 + docs/models/documentspecugctype2.md: + id: 482fa3980aad + last_write_checksum: sha1:1568f539b72084faf5bb533f37b07a75123de070 + pristine_git_object: fea16d9d2b0488c5d45bbe5e1faca5401c61865c + docs/models/documentspecunion.md: + id: eb4d3f9f0d42 + last_write_checksum: sha1:0d398dc3150ae343de568eef63c7c6e388721207 + pristine_git_object: 764502e71a324eb6cd71abf16c98ec4d95c14d63 + docs/models/documentstatusresponse.md: + id: 65e1fc11c02a + last_write_checksum: sha1:15824d4c79b265ef2816c2df139579c743f34771 + pristine_git_object: 96a477e2b89f439d54159a148133652258b710d2 + docs/models/documentvisibility.md: + id: f8c6ea7ffd5b + 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: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:e8023d64d851923cb7a380b776ba155b0d8e9231 + pristine_git_object: 519b41bac9f083d3b5a08c86bb8794186cb07c99 + docs/models/downloadfindingsexportrequest.md: + id: 1887e2a3af00 + last_write_checksum: sha1:4998758be6bd6eb334cb0e12f71ea987e7bc5d88 + pristine_git_object: b8b85477be879f6543e732a36626282a9c5ce2b0 + docs/models/downloadpolicycsvrequest.md: + id: dd65ef586843 + last_write_checksum: sha1:63a3fbb4bb5b49ca25703cca9248fa96518e66e2 + pristine_git_object: e882b3c312d932904433c1d236f249c327ebfa43 + docs/models/downloadreportcsvrequest.md: + id: 5e8a4d6d3e5f + last_write_checksum: sha1:d2c6dd8e69e7aa99ce5f9dd8d2c041a5eadb6ca1 + pristine_git_object: 9b386ce7fbdb22083a859ab281e833ffdecd12eb + docs/models/editagentrequest.md: + id: 16ab120df264 + last_write_checksum: sha1:3a0a4c5fe1ceb921e9ce2b2ee5543f7b08d499d4 + pristine_git_object: 41e6d8edfd644b10c4b3a2cf14ba03289fd084c1 + docs/models/editanswerrequest.md: + id: d6d2f92e3300 + last_write_checksum: sha1:436f46238083aafcbab2ae2561f1452b683ec7a3 + pristine_git_object: 3b3680d3b763bffd5c6028e6a422971e19ded8ae + docs/models/editanswerrequestrequest.md: + id: 29a629f36dd9 + last_write_checksum: sha1:7176b8e885cff7465ddd3a446e21037b30685043 + pristine_git_object: 07d1c82630deece31e284e2914d380fd97c74dae + docs/models/editanswerrequestsourcetype.md: + id: 4c53a25d9227 + last_write_checksum: sha1:dfed9e63125291ed36b20412bc229e53c85a7103 + pristine_git_object: 2b4fcbd78afbfb50f8560266c3587322bf138f0a + docs/models/editcollectionitemrequest.md: + id: e02a0f87262c + last_write_checksum: sha1:32eecb9baa98e59b8aeffb296f1692d5b4e9c68d + pristine_git_object: e056d4def346c362deb7cde0010169072528765e + docs/models/editcollectionitemrequestrequest.md: + id: e0e03730dbb8 + last_write_checksum: sha1:6691cfd131e1dae196959e4c657a9b3c5469dedc + pristine_git_object: a43167aba6ad6c80848b90013a0f7d08495f8e63 + docs/models/editcollectionitemresponse.md: + id: 40136411d95f + last_write_checksum: sha1:41db244e001368e59a181c4bad5aa642916571f5 + pristine_git_object: 200aaf1e5399ef801bd226dcbf3b3cc5949c6fc5 + docs/models/editcollectionrequest.md: + id: a74e4ec0b3ed + last_write_checksum: sha1:d4c9d43581c19a236a9204c69c8f8ffb1f1296fa + pristine_git_object: 361840bf4bb069a3a95d0424cf1eac9fcb1076eb + docs/models/editcollectionrequestrequest.md: + id: cbd9fc914161 + last_write_checksum: sha1:21ebe4440dd686c0a5afd9d5e944081b566f16f2 + pristine_git_object: b806bc3786468d8fbd35803cb70f56cfd004df87 + docs/models/editcollectionresponse.md: + id: e9c5d6082c19 + last_write_checksum: sha1:18a9035123207ea8137edabf0991532f50827e44 + pristine_git_object: 4feaf8e2d6ebb2eeb0c675b05360af30710572f0 + docs/models/editcollectionresponseerrorcode.md: + id: 9040965d42e4 + last_write_checksum: sha1:2298ba3c1f554536f5e219024b81bfd362fa37f7 + pristine_git_object: bc8f34aac40073035b752bcf860000a2c3af3f39 + docs/models/editpinrequest.md: + id: 14bb9e17a143 + last_write_checksum: sha1:11e046873d7975a69c248dd6c640482531048289 + pristine_git_object: 764555151025f6fe4bdc8fb14da13b67981d775c + docs/models/editpinrequestrequest.md: + id: 4e87783ec6bc + last_write_checksum: sha1:cab2f9325db582bde8f6057bac8aba582e5d1257 + pristine_git_object: 5a6db80b8b819de1b5de17b7519c8d629ba8d60a + docs/models/editworkflowrequest.md: + id: 2d3136c89102 + last_write_checksum: sha1:402a6e5cdb1b2a93887694ea3bd0d83cd8be94d1 + pristine_git_object: 3577eaa24f64055a24e9e06af370324b45cbf900 + docs/models/employeeinfodefinition.md: + id: 78f0c2b4aeb3 + last_write_checksum: sha1:db1de06db0f1673a96b05bf7f180ef8c9e2ccc1e + pristine_git_object: c6c8ed10113146521038a84a6174ab07b2030f17 + docs/models/employeeteaminfo.md: + id: 9b6d83fdbff8 + last_write_checksum: sha1:960d66f5b3d86a89d59264e2661b34fc59561102 + pristine_git_object: 2ed673106d7587b01c35b1287ae6610c4f7d57e1 + docs/models/entitiessortorder.md: + id: 8792ae5f7e52 + 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:d46a25756cce3ffcd5790b65328ef2b8df491c8b + pristine_git_object: cc245095a5bdb777aed9468ad3deb10e7c5a864b + docs/models/error.md: + id: b96a6fb71e96 + last_write_checksum: sha1:678b0f84e8f44d4eb599828cb3fb6d2520fa7c99 + pristine_git_object: 9f42aa323c9f5b099e2e3e788218db20e6e7e7f3 + docs/models/errormessage.md: + id: be449d5322d1 + last_write_checksum: sha1:c76cee4dfdc41c9062bff50fac7882daf2c02f8f + pristine_git_object: aba28baec1db3447632d5e920f5766a354b304e8 + 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:c5b5cdc058f20892fb6efbe70b709f546080c128 + pristine_git_object: 809a1e8311a3309e58034ad7b0aa35fe91f2139e + docs/models/eventstrategyname.md: + id: e28a808b01dc + last_write_checksum: sha1:5fe888a1a5120889a681270563b8dfb8e24ce8a2 + pristine_git_object: 9fa8de74a849d5f7628c70defcd8e7f6d0f8121c + docs/models/exportinfo.md: + id: 08c8529beddd + last_write_checksum: sha1:fd668b48fbff594629afdc2a988ffff580eb0b99 + pristine_git_object: 606ef59e99f439c2cfe4f7a64b0e2953b5d3af6e + docs/models/exportinfoexporttype.md: + id: 122be1d02850 + last_write_checksum: sha1:d3626d4bfae8e63435d8d874c360d6fa3512b3b1 + pristine_git_object: fd269c2f34b80de158597191405d54914a41b319 + docs/models/exportinfostatus.md: + id: 00e8b292b3fb + last_write_checksum: sha1:a0c9f47ee9e748357aace4b84079d18a321aa52c + pristine_git_object: f257dc5200e63afb4c756a25661244c101e2363b + docs/models/externalsharingoptions.md: + id: f1ff0bb532c4 + last_write_checksum: sha1:4aa8737cc989465e7ae6d0aecb0dd18d31e1acf6 + pristine_git_object: 96a8d1eb99e4cc073aef28a94a6a31d779a65f16 + docs/models/externalshortcut.md: + id: 4f33a219d4f7 + last_write_checksum: sha1:3673228a49e905cb4c7c217004f0f6642748b300 + pristine_git_object: 3af382268d5ebd1aaa8e8e6148d6d576a42226da + docs/models/extractedqna.md: + id: 0f86d9e8b582 + last_write_checksum: sha1:b2cf63e5ffcec27c2812e2329dc1681c4c9062a1 + pristine_git_object: 5bf715b985fedb8e52eb987e76d39830df1799a8 + docs/models/facetbucket.md: + id: 505adf83d6d8 + last_write_checksum: sha1:db6c016c360766b32371cb5a98fe22482b1924a6 + pristine_git_object: e290169e961c15fc23cacc0e8f397c2874136098 + docs/models/facetbucketfilter.md: + id: ebfd475e5fb1 + last_write_checksum: sha1:b94b8d5ba060de06e161bc5d6c78a4852cc25577 + pristine_git_object: c907424936d5cf577d042ce33bcf20930d61030a + docs/models/facetfilter.md: + id: 8aacefe6eab9 + last_write_checksum: sha1:ff70fec1e6db953c716028094a698ba474e1e458 + pristine_git_object: a40fb3b917a6ac2ac86ed9ead3c9eb72ae51a835 + docs/models/facetfilterset.md: + id: fd8573de97e5 + last_write_checksum: sha1:d02daeefa399c6a38df8d95e22c71b95fa4335db + pristine_git_object: 5db794d949ed3e2e606579aa6eefc7f6477eaa13 + docs/models/facetfiltervalue.md: + id: 501cf7ea1ad2 + last_write_checksum: sha1:3c9405d204fb20a25b89b57a674fa6bd07de1f56 + pristine_git_object: 84c2170436d8a27af07137fc9ec9e7d3402da784 + docs/models/facetresult.md: + id: 7a68e5e2821e + last_write_checksum: sha1:3393d2c01205b3d3c46fc46a8d5c3e24217099d3 + pristine_git_object: 158a3337e97899e92182e4b4b2cdb3e7a0a1f1cb + docs/models/facetvalue.md: + id: e8838b3e7c62 + last_write_checksum: sha1:1004bd02edda3d097aff2f8f5b665618ed554bf0 + pristine_git_object: b7e4fc8bc72e75c6f0289061d954e209b4804513 + docs/models/favoriteinfo.md: + id: 44a87cc9b422 + last_write_checksum: sha1:eb0502b4e2461f9a7e96fbe918f580974f98f6d5 + pristine_git_object: cda19e794c2804c82be0d56fed9d32239c9ff312 + docs/models/feedback.md: + id: 0b23bc8d754e + last_write_checksum: sha1:3c33ed23371c2e7c5af7ab570d4d8757083d4fcf + pristine_git_object: 635bde27e87c984c8056313d6c7f7226d4a39a2a + docs/models/feedbackcategory.md: + id: 11d7d6ae413a + last_write_checksum: sha1:95981db935631ad5da5bd48d1f52570e119d0236 + pristine_git_object: 53cf5fdba1751f76ef1f4662b722532105ab44af + docs/models/feedbackchannel.md: + id: 89419461712e + last_write_checksum: sha1:4f19104093f394b1a7a4a0be08c976fc5863ff30 + pristine_git_object: 10a59bd3da2a1729a1d63d61794aec74559093b4 + docs/models/feedbackchatexchange.md: + id: 29903e964933 + last_write_checksum: sha1:fd1cd864d67a4ad5acd5cc1d8452b54f275053af + pristine_git_object: e7fd9066fb837f2982110121146ed2bf5bb12a65 + docs/models/feedbackevent.md: + id: b5a9d15e3af5 + last_write_checksum: sha1:2bd583d011d2aaf5812806c09637d4d8712ca8b8 + pristine_git_object: e64b37496759c50e3eca30da56ee0b9811e3e3e3 + docs/models/feedbackrequest.md: + id: 85ad9bb28a9c + last_write_checksum: sha1:cc9882978656e3308e13926fea9d1ce93f031bbf + pristine_git_object: a7f9cc65e951cde4ec2bd487bb503091dfb0448f + docs/models/feedentry.md: + id: 8e0049288859 + last_write_checksum: sha1:d48b1572749550a4f3fff5f800ab197b9175be3e + pristine_git_object: d5dc57ee4d2ce6a8839d49e33a6898a3fa36a660 + docs/models/feedrequest.md: + id: 8820786ec183 + last_write_checksum: sha1:17473338e421c2ec513322c05519d4138e0020a4 + pristine_git_object: a851a7f13eb25d515fa9b9244c5dfdc98fa14e2c + docs/models/feedrequestcategory.md: + id: 31a02f3064c7 + last_write_checksum: sha1:864d482f0e5991b6e68d380cf56b9e831c473503 + pristine_git_object: a4e28a088012c3ad5150dacc7d9c827b22682aa9 + docs/models/feedrequestoptions.md: + id: 58eb26b19e77 + last_write_checksum: sha1:fd2ab08736cef8156169b0cfee8c52e7aed1accf + pristine_git_object: 78ae4bc82dcbaf7881021b486ac501a7f1bdfdda + docs/models/feedrequestrequest.md: + id: 6b8dea423ab2 + last_write_checksum: sha1:a326cece89473e5acd6029847b3b091a4c75f1ee + pristine_git_object: e662bffd1c3411c0d30099c488c90cea22931998 + docs/models/feedresponse.md: + id: f45ab450a68f + last_write_checksum: sha1:96e3f76f8ad6bf8c9717b53d6fa530fab2530089 + pristine_git_object: 7f3ded753911005508191be31592746cef1c2781 + docs/models/feedresult.md: + id: 4b67dc1cea64 + last_write_checksum: sha1:88483849cc6d4bcfe685cf25a593e9ab50d47c26 + pristine_git_object: 6318b0206b7d4027b036e78c709ed4eb259ccedb + docs/models/feedresultcategory.md: + id: a5f77f38d0a7 + last_write_checksum: sha1:97990b6481189431a706847e927154583ee09270 + pristine_git_object: 5d0a0beb0c0210a48a7125715620b446c1fdde46 + docs/models/fieldscope.md: + id: e6b52bcb22a6 + last_write_checksum: sha1:13a1492ce39d2f89a01d626996a345a1339a1873 + pristine_git_object: 3c3c097ac04d2e75a6cff47985e6688cf027d236 + docs/models/file.md: + id: 4ad31355bd1c + last_write_checksum: sha1:ade4d3c908c664a07a3c333cc24bc1bfb43ab88b + pristine_git_object: 37cc418f9e5189c18f312c42060fd702e2963765 + docs/models/followupaction.md: + id: 5c7a87d7ed17 + last_write_checksum: sha1:c554d9907c2a862ba7d07855bdcbfad06f7631ce + pristine_git_object: 65bdd1003fcb4ea405b23fc891b37c0791dd3ab0 + docs/models/format_.md: + id: a17c22228eda + last_write_checksum: sha1:577734c6a90602d0e5e0a0e43e130367f6d4dbbc + pristine_git_object: d5119bf1f3aa290c96daf28eeb1743aa8e3f27d1 + docs/models/generatedattachment.md: + id: bd997931455b + last_write_checksum: sha1:8a821c9febd74e3cf171fe1a7b2d3a139e7550cf + pristine_git_object: 704e3e1991f29a62387a9e35dd90f04edbe3a279 + docs/models/generatedattachmentcontent.md: + id: 12ce41985e91 + last_write_checksum: sha1:54ef22d4441b43887b6c7cc5d839dc3df858224b + pristine_git_object: 5b6df50b66f6d12c7ef616ea9675098a0d92312c + docs/models/generatedqna.md: + id: 5cf2dc8efcd4 + last_write_checksum: sha1:655c7741c553808f487b6d7ad889b82e364d7d75 + pristine_git_object: 45bd3342eac923ce91d9ad9be9c33865f3b8638d + docs/models/generatedqnastatus.md: + id: 539b7c1a607d + last_write_checksum: sha1:88766a93162f9ea70a183c7937e6566994232b30 + pristine_git_object: a7b0cc919fcb4dc72c6717298fd386798b0c3f07 + docs/models/getactionpackauthstatusrequest.md: + id: fc2bd8f0d8e5 + last_write_checksum: sha1:73f71d5b3b728b7721cd8246390e5c1e87069446 + pristine_git_object: 60ccf15d8a46fb1cce406b74a919776dc12350b0 + docs/models/getagentrequest.md: + id: 743f3a4630be + last_write_checksum: sha1:b6d2630bc17e91ec71d2bc7e01fec9f7cf046914 + pristine_git_object: 7418c2cec29a24966be06d6da4f7c184ba7f530f + docs/models/getagentschemasrequest.md: + id: 6eb36cc8bcc8 + last_write_checksum: sha1:4db48f06eef4729de598b493e32efa4857c9cf2f + pristine_git_object: 110d717211f9a714c82cdddcfe5ef4be93558194 + docs/models/getanswererror.md: + id: b744c56b1dd9 + last_write_checksum: sha1:317f4758e8da16c2d3ba3929edebc9593e3042cf + pristine_git_object: 1585ad62bb0e81173a4ec0fda48e5d55f95a6750 + docs/models/getanswererrorerrortype.md: + id: d248499e9347 + last_write_checksum: sha1:65aa17f028cee3c7745eceacef3f28c2e6584d4f + pristine_git_object: 3f9be2ece700fea1190f089d79661484282290be + docs/models/getanswerrequest.md: + id: 25f11c52ac77 + last_write_checksum: sha1:17475690eebcc1076b3956f764f52ed3d16c36ff + pristine_git_object: bc1d44fc2d81ba4956a70cf3532597ae82ba29ab + docs/models/getanswerrequestrequest.md: + id: 659200436db2 + last_write_checksum: sha1:782906eda75ea7eb9f00b70a4f1c111991585dc2 + pristine_git_object: 3502669e02362cb22f4e2c816b7a1a5dfd05662e + docs/models/getanswerresponse.md: + id: a2d88593e719 + last_write_checksum: sha1:816f478aa8e17984131569eb7ccc093d520e5174 + pristine_git_object: 5442ffe35d86599ddd2318d121334ba55045c9d2 + docs/models/getchatapplicationrequest.md: + id: d3ab33894ed4 + last_write_checksum: sha1:a033641de154fba879e020d43cab14761d76a1e5 + pristine_git_object: ad9d8ad5f1b5098e95d1f0f16bfc4c4c7300c895 + docs/models/getchatapplicationrequestrequest.md: + id: 87a4fde892ff + last_write_checksum: sha1:b1e295e46ea284b811665ab6f92d596e7e7ac3e8 + pristine_git_object: 79cddc37d221bf75e0f1fcb8ab39735e05cc1eac + docs/models/getchatapplicationresponse.md: + id: 5c2141b43841 + last_write_checksum: sha1:61a1da000e2b5157f5bab5582e828026e1989212 + pristine_git_object: 2d9398f6a4a3641a77489a6ef9c408e5ff772722 + docs/models/getchatfilerequest.md: + id: 26456bd960ca + last_write_checksum: sha1:88a59fcaf364c5e979491a2a45365c66b5d4753e + pristine_git_object: c4a020cc9dfc566b246b9fd6c09266c7585354f2 + docs/models/getchatfilesrequest.md: + id: e3db2543e901 + last_write_checksum: sha1:7dcf6a78247d07976795a1941bb80346af2704a7 + pristine_git_object: 13d9edeca4d01df1e77f2d65a4f2ca6e42401846 + docs/models/getchatfilesrequestrequest.md: + id: db34624f95d8 + last_write_checksum: sha1:650f3861450fe6b44c9f953df4552617a4a1ee82 + pristine_git_object: 886c639f34d2287b6ef8529616e78780ee8ac125 + docs/models/getchatfilesresponse.md: + id: 5ed77f7dd180 + last_write_checksum: sha1:75949c792ed2d2b22195a14fccc9fcbbaec5cf44 + pristine_git_object: 49a30eccc5428665f7bc43fd37aabbc5ca19ced5 + docs/models/getchatrequest.md: + id: 91bbf71a45ec + last_write_checksum: sha1:08aa30e90f5507cb9200a5a713a0bd61ed1940f0 + pristine_git_object: 8b44a4628b905f2e3a23968b1343e75f69a9d86a + docs/models/getchatrequestrequest.md: + id: 89032ad4cded + last_write_checksum: sha1:d1af0c95a4f7ff75c6acf98f4ac59b4385a648b0 + pristine_git_object: e810c575de9d2e1cb0ce47ba68d8a739a6dfcc58 + docs/models/getchatresponse.md: + id: 8ca5e1521fef + last_write_checksum: sha1:8a604ddd40ad6882e9620b6a4959b3b9884bc438 + pristine_git_object: da75bf93aaee602631c91bf2fb35028837847579 + docs/models/getcollectionrequest.md: + id: c728f2a301f7 + last_write_checksum: sha1:6f7221455f2bbfdc6ff4cb6a69e4d4f3238c8fbe + pristine_git_object: 08c4ed74925b1fe99d66a5743547c422b812cbcb + docs/models/getcollectionrequestrequest.md: + id: 1951f5dd0d28 + last_write_checksum: sha1:81ef51998f8f36ddd3c42ecc33dd6950a1d80c7e + pristine_git_object: 63737249618d58f7b93fa1271dccd447b5b412e3 + docs/models/getcollectionresponse.md: + id: a41700e5b076 + last_write_checksum: sha1:de691b93daa3790a10ac5e5ec44f32f57b9ae005 + pristine_git_object: e4795b0d4a08b1cbd66a052888937fc5fbd69518 + docs/models/getdatasourceconfigrequest.md: + id: 4cf100b4fe49 + last_write_checksum: sha1:2209ee35f4f21791035a6785f464befc568e9afd + pristine_git_object: 6bd845ab38a08ac7ec5473920c9d1f6567716ced + docs/models/getdatasourcecredentialstatusrequest.md: + id: 32c550529760 + last_write_checksum: sha1:e89cac63e998ebf2121aa0d35403d05e8b10d86f + pristine_git_object: 07c45dd2595db9f387e9dea158d9237d6edf67ae + 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 + pristine_git_object: 413ca2a659e6384d370101991774480b976160dc + docs/models/getdocpermissionsrequest.md: + id: 5ff6c3679628 + last_write_checksum: sha1:e2add2ab3cdc7d5bf858321febf1c18f2ceb5c22 + pristine_git_object: 0812366b66a6001815d72742ebbe037d0a28c58c + docs/models/getdocpermissionsrequestrequest.md: + id: 5890e488b0c3 + last_write_checksum: sha1:773d36b442ae7a05493a86ea3e4ab0ecd78efeb4 + pristine_git_object: 3f91457dd637af67938bbff9840d340427cf41fb + docs/models/getdocpermissionsresponse.md: + id: f3c871864de0 + last_write_checksum: sha1:e5ba530519c1214d6b0dbea6894bf1268ba93958 + pristine_git_object: 51cf365aac624084aebafe76af9ef1c279a86352 + docs/models/getdocumentcountrequest.md: + id: d88e8ba402a3 + last_write_checksum: sha1:1e7d303309ac75c4a719610983ff9d91cb62d5da + pristine_git_object: caf6568b3250785b5c315c04cd32077701a0787f + docs/models/getdocumentcountresponse.md: + id: d0967f25dd22 + last_write_checksum: sha1:c3a7315469835f70e41e1dbe2a61d8779e317bd1 + pristine_git_object: 9668de64010c5da59510a26019d49b51c6bd41fb + docs/models/getdocumentsbyfacetsrequest.md: + id: 55aa662b3ae3 + last_write_checksum: sha1:dec8f276f92ba15b33efa1331d89572be32a2fd3 + pristine_git_object: e234fb977243311c33d195ff3ff0d7ed8097894c + docs/models/getdocumentsbyfacetsrequestrequest.md: + id: 5596394ba58a + last_write_checksum: sha1:6fbcfd5f2dc4356030cbc75bb3cf303ba5ddfa63 + pristine_git_object: 6fb44cfc1e3321981ac5be045d26426a1681905e + docs/models/getdocumentsbyfacetsresponse.md: + id: 1db5b3ab74aa + last_write_checksum: sha1:eaf2a24392f54a50b940f15f39f9cbc2296cc867 + pristine_git_object: 84a6fc873f72160e9037855c5977483f1874b66a + docs/models/getdocumentsrequest.md: + id: e3bf285e69ab + last_write_checksum: sha1:b0057956bdaeebcd6028d6b41b5ea9717d44b1ac + pristine_git_object: 8ec36f384e76e6bec77b1f1a33f87c402b01c9b5 + docs/models/getdocumentsrequestincludefield.md: + id: b352a208f521 + last_write_checksum: sha1:85b6ba98a60acd04b0474fe13ed8b4250034228f + pristine_git_object: 6d537debaff2078ca507df6d0c50475d4a2df133 + docs/models/getdocumentsrequestrequest.md: + id: a8c374952e75 + last_write_checksum: sha1:ee19224caa436cd2b5558e005c64775211aeb731 + pristine_git_object: d1c6b7a47144560652788c0e1a74a607bcef19bc + docs/models/getdocumentsresponse.md: + id: 67802d5a0eed + last_write_checksum: sha1:cf5326c022369e8d38c9c596f8ab055edec2754e + pristine_git_object: 1871c372fd5ed489dabf199783662d5e23a89d99 + docs/models/getdocumentstatusrequest.md: + id: d0a69468ea34 + last_write_checksum: sha1:fd7886bfdd18683ce3db6f049c08711302515323 + pristine_git_object: ba0d5a5d0acefc4ef9f28c528abc10e37e8ae984 + docs/models/getdocumentstatusresponse.md: + id: 1a973b93381d + last_write_checksum: sha1:fa80cbc1796dc1241e2fca25729dfc9a039953b0 + pristine_git_object: cbaeda9a7031e146c5c6f9b9838096619e40a80e + docs/models/getdocumentvisibilityoverridesresponse.md: + id: 08345117b8da + last_write_checksum: sha1:a46ff6d1984b0a8a85f31cb724bba90b497706df + pristine_git_object: a367b3b31c9a62d228617525408006f3502e3d3f + docs/models/getdocvisibilityrequest.md: + id: eacac7a08e9f + last_write_checksum: sha1:054e551fbaef0033c3914347dfd00b74b68fb5d4 + pristine_git_object: 0bce5dedae73b06e8718f17ea3932b3a9a57463f + docs/models/getpersonphotorequest.md: + id: 90dbc76a2335 + last_write_checksum: sha1:0ca0cb5d9a126c0c85964e52dcf160bfb71bba93 + pristine_git_object: a81c0243a0c64203acc9a3fb89fb031363bb5cd9 + docs/models/getpersonphotoresponse.md: + id: eeaa7b80b779 + last_write_checksum: sha1:32205d02262773a98cea15be8eaa032f8a6787e9 + pristine_git_object: a8fca12e0b9351eebc60227476578bcf51e160bf + docs/models/getpersonphotoresponseresult.md: + id: 35c9caf792ce + last_write_checksum: sha1:36a6fb6677c1bbe44b59d764bf5f6a05b912916e + pristine_git_object: 39cfd7379a9249b1c9d56a503753dae487e9a84d + docs/models/getpinrequest.md: + id: 0493cde45bd0 + last_write_checksum: sha1:8877bbd39413b43d4ccf88bcfe42fdbdc5e9d9d8 + pristine_git_object: 09088c90c1bbd5f1c8d750472b2804cfbb7aa916 + docs/models/getpinrequestrequest.md: + id: 32c54ed66a34 + last_write_checksum: sha1:991fcff3dc0458057d6fe4b27c796127560e5cc6 + pristine_git_object: ac7a1f220e8fbe054e4306f1c860657562e6a7b8 + docs/models/getpinresponse.md: + id: 66abda0c0858 + last_write_checksum: sha1:047514d17806168b0d7c599ec012ae6010d7df03 + pristine_git_object: bfcc1b2bd3ee7a78229db5b5c2856987036fb2fb + docs/models/getpolicyrequest.md: + id: 7830e8e627c2 + last_write_checksum: sha1:fc351d31c20eae01363c3eaf3e2c099832f44855 + pristine_git_object: a9b8a36626996c12f50873c0e6de778c1b8d02ec + docs/models/getreportstatusrequest.md: + id: 0e4d4eda043f + last_write_checksum: sha1:52768733e9dfb11f965b77c4e5b470370d758c47 + pristine_git_object: 7238f4ad8a04417f41ebd8eeb8aabf212d23fb0f + docs/models/getrestapiindexcustommetadataschemagroupnamerequest.md: + id: 242e0151a8b7 + last_write_checksum: sha1:0684faa18965fe4703b4931501d0fc29e8cf70c7 + pristine_git_object: 8ad9325ed1cd7525bd14f5d3bc0d2b087445d7da + docs/models/getrestapiv1toolslistrequest.md: + id: c40db54873e1 + last_write_checksum: sha1:7d013cf69ab135ed71da9161ae6aa1ed004b691f + pristine_git_object: 8c30fc4970323955f18cf70e3f4dde208df10512 + docs/models/getshortcutrequest.md: + id: 92141254f6ab + last_write_checksum: sha1:4c1e631b57dbe41d2536ef7116944892134c493a + pristine_git_object: 9da5746594d93b66c13ecfa5b3d6733060628f98 + docs/models/getshortcutrequest1.md: + id: f532add93576 + last_write_checksum: sha1:b5700a9a423e9585f66ae7b3ea0ad006239fdf29 + pristine_git_object: e8d237168cb2eaab56c033d4db6f366e1126bb5f + docs/models/getshortcutrequestrequest.md: + id: 25d2ed600c62 + last_write_checksum: sha1:b148c8cef65ca3f4c2a7a7e48d7e6acb1d955fd8 + pristine_git_object: 79056b951a7652bc408d6cad92f8f511a59911fb + docs/models/getshortcutresponse.md: + id: 9aa3fd9aebdb + last_write_checksum: sha1:98dc39c0164b5baef1dd0ed8f1a60d59da7abaf4 + pristine_git_object: 5c43f37b52c456342ca156d3ccdb8ed988116606 + docs/models/getusercountrequest.md: + id: b0cf45ad2c01 + last_write_checksum: sha1:47972cc017eec42ff9e6572c938cccd1fa047471 + pristine_git_object: 25c57e0135c93f04f65b2cefbaca2828c6c18914 + docs/models/getusercountresponse.md: + id: 9d4ec7c3f5c0 + last_write_checksum: sha1:2d49b21aaf4d7be86feebb33c2d8a34c7f4ab864 + pristine_git_object: 4502ead455c6d50702562f05c8c8de35d526668f + docs/models/gleanassistinsightsresponse.md: + id: cdc2bf5d8476 + last_write_checksum: sha1:9e746b441bef6d1e0cdbc12435c2d337293c4273 + pristine_git_object: 51f7027a16bc10bb4effbdd438eab18581703421 + docs/models/gleandataerror.md: + id: feb7c60631e4 + 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:b0129abfff6f0d70b545c8a39bc9a6a20a1499cf + pristine_git_object: 6e2e1b8f58fa22f1fdbcb1ec1f9e1ca07257cccb + docs/models/greenlistusersrequest.md: + id: 02c23967c0de + last_write_checksum: sha1:f33ab26aeb1d057f22774458d7f97d527c438763 + pristine_git_object: 2bc9ff830188b0c77041675be498e9eb69547799 + docs/models/group.md: + id: 565e059670b0 + last_write_checksum: sha1:c6d475061dc58f396e0870246578d921d6c5073c + pristine_git_object: c1d48433bcb643f3403e312a32ebbd2a91909f60 + docs/models/grouptype.md: + id: ca781cf2b1c3 + last_write_checksum: sha1:413a748c346eac3513abddae0d69276e14e52d0a + pristine_git_object: 4e38962c518a55b094e86abba5886f06b4e84c40 + docs/models/hidebuiltinfacet.md: + id: 338b17567126 + last_write_checksum: sha1:6fe74dd1957d4050706a4bbce1c1c413fafe12e9 + pristine_git_object: 50276f1d34c2659a852e74252f4c2e6d00c5fa4e + docs/models/hotword.md: + id: 68f79504703e + last_write_checksum: sha1:dd7f5a06470850e7195264d0f71af828c2a9a76b + pristine_git_object: 7caa364042d66fe8012641c803da6ecc99ba56bc + docs/models/hotwordproximity.md: + id: 7ff362b515c8 + last_write_checksum: sha1:3135899fbfc0feda4e8fccd6de1ce78d68a834ad + pristine_git_object: 8b4e24bcb8756fd3e12d6ad78f03e7477c89fded + docs/models/iconconfig.md: + id: 038fd12f6be9 + last_write_checksum: sha1:2cc8f9193bf19ce07ec5626c848fa09f4e710079 + pristine_git_object: 626e9b861b1737b314e2a507b4fcf50e4df5ae29 + docs/models/icontype.md: + id: 0e3967649a12 + 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:691f92007f621c3190dd8e17e293be0852457d96 + pristine_git_object: 4f71310b6864d240adb6739549f5f8fee4807538 + docs/models/includetype.md: + id: c81f8e97e293 + last_write_checksum: sha1:060845bfb32df30df1f8d9927c4cd550aca16c37 + pristine_git_object: bd1e080c6d5b6f159571b2169eab580e36769408 + docs/models/indexdocumentrequest.md: + id: 993d8499e413 + last_write_checksum: sha1:aae876c02cc969d488ec475883c93e6b626dee76 + pristine_git_object: 094190d5cd09b3fff677a074718b39b1aabaceba + docs/models/indexdocumentsrequest.md: + id: d89ecf1cc0be + last_write_checksum: sha1:534d9fd1b114d74931b7655e85fc1d43253f2a9a + pristine_git_object: f57604ef1a25a9f2e2677fb9d48e8db03536383f + docs/models/indexemployeerequest.md: + id: 4ca8b1940cdc + last_write_checksum: sha1:fc155e2f02cb2543acd3a1645ef18f1be47625e4 + pristine_git_object: 9e62a960e9483e1e00b870a7aa3533076d360121 + docs/models/indexgrouprequest.md: + id: 01521201a1b7 + last_write_checksum: sha1:b314767011930f683cf7473d88fe75bcda5afb70 + pristine_git_object: 1185d2f2617ac2613886f842f61b44e8624030bf + docs/models/indexingshortcut.md: + id: 1b232c35a4ef + last_write_checksum: sha1:0e28b87a0acf9f7858c96c949d40aa1d9a0a5554 + pristine_git_object: b3eb8c41be95fe1e64a4096fc10692cff600ffc7 + docs/models/indexmembershiprequest.md: + id: 0767b135378d + last_write_checksum: sha1:5d01152794b136f191f9be5dfd7a5c38befe64f8 + pristine_git_object: 263e710fd0f371065df122cc44fc06c853638882 + docs/models/indexstatus.md: + id: fc2d0503e09a + last_write_checksum: sha1:6f7117ec124bf4b87193dd8fdf0b0d460d8353df + pristine_git_object: 419c4405a0713793981d77982ead77bbd6c84dca + docs/models/indexteamrequest.md: + id: 30a5493f0d84 + last_write_checksum: sha1:3c38eb06219ece53bbed8d3f837954001cc5282f + pristine_git_object: a24b9ffab2d2b3803012b84a909b8f96186faf1a + docs/models/indexuserrequest.md: + id: 1db1dc7ee526 + last_write_checksum: sha1:c5fcecc026e19e338aa6f14b49e177eeeffea606 + pristine_git_object: 92e666de5f7156588d4dbaa09b36fec6e8f2403e + docs/models/inputoptions.md: + id: 138e423f4a10 + last_write_checksum: sha1:35aa8de6835bef5a294ef685f6480529f55f26f6 + pristine_git_object: b45ddba581891e155a1e49a6e1fe741fa66ed1da + docs/models/inputoptionstimeperiodtype.md: + id: c6b86b1220fb + last_write_checksum: sha1:3f99df003dbb91a5153899f0c82ff785f745bf98 + pristine_git_object: 26843791b062e373841a2b2242dc25b6ec82d8c8 + docs/models/inputschema.md: + id: 5efea712238f + last_write_checksum: sha1:05d1c3d1aa27fe96584c28bdb93110e7f38ce2ed + pristine_git_object: 6c2fc6ab04a050a3586ef8014d4ee48c343abf92 + docs/models/insightsassistantrequest.md: + id: 37f76b1045f1 + last_write_checksum: sha1:7a52f3a08b97d98479b0485f417af26620760d95 + pristine_git_object: 5bca057243a4d509ec33eafbc0f7c8b70d1ce337 + docs/models/insightschatsummary.md: + id: 388233cb8df2 + last_write_checksum: sha1:9b40b1d0d6a996c522a8c2346e6289670122f637 + pristine_git_object: 21fc84d49e3fe1f7b8cd2e68e044d28aa2165200 + docs/models/insightsoverviewrequest.md: + id: 568a56d1c6bb + last_write_checksum: sha1:8158a52e81032094547beaa8a996a6c91683a84b + pristine_git_object: b6fc7e69c80120509d9f691f3ba92d586b09f61d + docs/models/insightsoverviewresponse.md: + id: c980a8e3a69e + last_write_checksum: sha1:a58c624e6a7096b9a0dbd86c29198cdda001016a + pristine_git_object: 56bb2b24091e32f66d3011c7d2c5d3e9b2e567d2 + docs/models/insightsrequest.md: + id: 13eaa34edff4 + last_write_checksum: sha1:43421d855599f8045baf28ab774eb06de08c2acb + pristine_git_object: 9bb517e8da0fadce81700642dee2cbf4c9951e73 + docs/models/insightsrequestrequest.md: + id: 567dcce50fab + last_write_checksum: sha1:b550099f60580ba3cac9675a4e9515044be423b3 + pristine_git_object: 42aaa5da08e2b378d3da97b7a0720a98d855374b + docs/models/insightsresponse.md: + id: 7bcab338ae18 + last_write_checksum: sha1:e3ffc3ed91a66ae4c994cf6d66904a05433f6d2c + pristine_git_object: 7e11a8a186be6923915c6986177f268adc56dfe7 + docs/models/insightssearchsummary.md: + id: 9bf0ac766bf9 + last_write_checksum: sha1:4133181c7716d5f1a0d83b9f933d60891ed8aac2 + pristine_git_object: 940085a00fdf0270f7e842ef9f6b4b7e79a0df4d + docs/models/invalidoperatorvalueerror.md: + id: ee6e58f56866 + last_write_checksum: sha1:84827ee6331279f0148f3f299e05d30fec497f99 + pristine_git_object: e6acc93ce0eae76434a8ef9f94ba080e954f022e + docs/models/inviteinfo.md: + id: 3d5da9535438 + last_write_checksum: sha1:5f65df8961f7c86a847f4808a3e1fffe97ae0082 + pristine_git_object: 627329922765aae3e91345adcf21351b2877ebc1 + docs/models/issue.md: + id: 44d611a73cb7 + last_write_checksum: sha1:a2fe883d6ac0b6dd923b35fd743e7026bf2332d0 + pristine_git_object: 4203309096512cab077b45bc77906df389c01421 + docs/models/justificationtype.md: + id: 8286affacee4 + last_write_checksum: sha1:471d436013bd93750dd63edbe0f8ddaa799d2fca + pristine_git_object: adf5b69bdf3cd8c90a108b8fcca2b79a38acddc1 + docs/models/knowledgetype.md: + id: 1e0c90679228 + 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:4f573cd8188662713bd35a9e0ccad5fb58c5e6ba + pristine_git_object: b870d4d41898abb592af834330932c014ad09c17 + docs/models/lifecycleevent.md: + id: 23b7e744cee2 + last_write_checksum: sha1:96297bbd77d2f5a6a39ba055510861b1587aecc1 + pristine_git_object: 4f9776b75b0177fc0abc0949856ba6fe0225f8c4 + docs/models/lifecycleeventevent.md: + id: 3393c50a2dc8 + last_write_checksum: sha1:7f7c28fbde4ed2aa4b8323c36dc67df9cfcf1932 + pristine_git_object: 29e4fb1ab057caf48115c86a51788ce410a164ea + docs/models/listanswersrequest.md: + id: 6864867e393c + last_write_checksum: sha1:e492b758d47f41c50b8ed2c91cb6ee197a67a647 + pristine_git_object: f0b1840d21cfd5745841ee3dad9f4790f7886f81 + docs/models/listanswersrequestrequest.md: + id: 593161e5aad5 + last_write_checksum: sha1:56877f7b51072348f4d7c71a68e1bf090644307d + pristine_git_object: cbe66c049da354b2aadddb5eaa583af41d553599 + docs/models/listanswersresponse.md: + id: ac203d72fef4 + last_write_checksum: sha1:d84b2b1f6174509f4b4dcb3602b57a41f609a153 + pristine_git_object: e02a3fddcc9e682dceeef74ee52bcf293ee867f5 + docs/models/listchatsrequest.md: + id: f4f060e9b0e1 + last_write_checksum: sha1:e9fb2c1df6315eb6d41cfc1a9bbd172b5f5acd02 + pristine_git_object: 9a0d72592d98d5f0cd2b8e6729b2596b0e5d116a + docs/models/listchatsresponse.md: + id: 56cf9a543286 + last_write_checksum: sha1:ea777d1de516cc4a5f76ab4bc308bea17a1dd50d + pristine_git_object: 76be2b6b41d5967fe143ce27cc1d728bbb27cf04 + docs/models/listcollectionsrequest.md: + id: 67e1b9abedd7 + last_write_checksum: sha1:7dfe597ae0081226b8dddd81abd17d38b7557abd + pristine_git_object: a566a33c052e1d66489a5725e3756a816dcdfc29 + docs/models/listcollectionsrequestrequest.md: + id: 9800bc4f9d9a + last_write_checksum: sha1:7f4bff6d20418a8dfef4ae27e4d7144c508d0672 + pristine_git_object: 1ccd21f38d814a5f4070eec6146a34da18d9141d + docs/models/listcollectionsresponse.md: + id: d4e9fc9b0229 + last_write_checksum: sha1:b7d5407d6740b2f0ee0bf95f226b5ecce198b3f6 + pristine_git_object: 180f82c0735272a42ed8924880f41bed0ac54b9c + docs/models/listdlpfindingsexportsresponse.md: + id: 4120b837cd6e + last_write_checksum: sha1:17bd6cd9c97690d95d5bfc3cba2d4984d4d6387d + pristine_git_object: c5f7958ee88114d4e07372ddc42f484516a77608 + docs/models/listdlpreportsresponse.md: + id: 3e4134e134c9 + last_write_checksum: sha1:56947b9d0f14a2e793d25cfa06a44c58ae26bf60 + pristine_git_object: 351bb2b615a924d3be9f37bb6123ef8a4948f653 + docs/models/listentitiesrequest.md: + id: 561ac207e315 + last_write_checksum: sha1:da4bf06589b74036707459c5e5a6cf0ce9d8fe3f + pristine_git_object: c4ac2d31d21b0682eb015401a23eccb068314e3f + docs/models/listentitiesrequestentitytype.md: + id: 15ec59436444 + last_write_checksum: sha1:cb7f4664f81d08d7a6961e6bf931059a4ab34d43 + pristine_git_object: 4977acf6b7490bbca56d55d5e8861769ce979ac9 + docs/models/listentitiesrequestincludefield.md: + id: 22408579dc19 + last_write_checksum: sha1:25b3f4a138b8c28449a213f4793cae253d16b003 + pristine_git_object: 443d5026adf0e717f1ad7fed318e648266b7558d + docs/models/listentitiesrequestrequest.md: + id: cfcc2081e0ed + last_write_checksum: sha1:3023b6615096f5c018efb1b43524499b662094ae + pristine_git_object: ec6cdd0169b604153c648926101d1925d254676a + docs/models/listentitiesresponse.md: + id: 795662eb1108 + last_write_checksum: sha1:b8b4d3b76ff95441aa3ef08babaaad0239807cfa + pristine_git_object: d7699639a2dd03f0b6dbcaaa29742a8a2b206ad5 + docs/models/listpinsrequest.md: + id: 8d96c63ec1bb + last_write_checksum: sha1:6b0dc565942e4b6b5859a2dec2e5fb463212ac52 + pristine_git_object: 49bbce57bbf9657d01c0114817ab7ea3d08e012b + docs/models/listpinsrequestbody.md: + id: b6ad35029581 + last_write_checksum: sha1:9be1a996e1620a68492d843203dd90640b527e69 + pristine_git_object: ad2e4cbdd68308127ba6df5c346316b099f85010 + docs/models/listpinsresponse.md: + id: c936ae1c22b1 + last_write_checksum: sha1:ac94f90c1b5188fb627e4527def7187dd64db008 + pristine_git_object: 2cf1136f5114564d6fa601b79d114958637fb9d6 + docs/models/listpoliciesrequest.md: + id: b432e008e2c7 + last_write_checksum: sha1:e959d4970325435000ba422d5963bde366b8c99e + pristine_git_object: 022def66bb36fa48775b701830bd5b1f032c9f2b + docs/models/listshortcutspaginatedrequest.md: + id: bf1fc9284127 + last_write_checksum: sha1:964eac22f98f9fb50887cc8e2ae962713235039c + pristine_git_object: c2daf74a3e83af43a3158e76b220dff3fc5a1578 + docs/models/listshortcutspaginatedrequestincludefield.md: + id: adaed923bedd + last_write_checksum: sha1:c743fe23333aa42d9871e4e11d412ec74a86d024 + pristine_git_object: b68782a765355611a739692df428ee3402a3f2a2 + docs/models/listshortcutspaginatedresponse.md: + id: 782aabefcf0b + last_write_checksum: sha1:0bfe9c54078eff8b900ca0dd643b1ec62c4ffd5f + pristine_git_object: c575579aff1d399e726acfb8fcc8dafba14570a7 + docs/models/listshortcutsrequest.md: + id: c52f7311f417 + last_write_checksum: sha1:ccf9d16424d7c4727cf4f424567f244fc6796a5f + pristine_git_object: 5ddc952c170644b3d4ba5b110d442422e38fe84f + docs/models/listverificationsrequest.md: + id: 774f0a0298e4 + last_write_checksum: sha1:65c65a6c41036b2d14dccb892353e2f34e167446 + pristine_git_object: 320d13234b20a559d2998685f60dbddf4c6a3d4f + docs/models/manualfeedbackinfo.md: + id: ba432c1095fd + last_write_checksum: sha1:1b414738886556bfd280a822964b640f6faa6d55 + pristine_git_object: dc221748b44a4bc3e0be19654e2df6e128ee2776 + docs/models/manualfeedbackinfosource.md: + id: c5aed96ec5a0 + last_write_checksum: sha1:032cb332121259781b84ac1bb92d9005bdd049d1 + pristine_git_object: e5e604b2b9ee894ad5d724c5eee4a0fe20ab123b + docs/models/manualfeedbackinfovote.md: + id: aab988027ef4 + 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:44ead8db7b5ac7312038dfc2040feeeefa0e0ff4 + pristine_git_object: f95896aee0aebe75d740efe0eca5fa4df49e5891 + docs/models/manualfeedbacksidebysideinfovote.md: + id: cf68b1f63cc7 + last_write_checksum: sha1:6f62aad4e5e0583365e661548b8564d1b3c97e08 + pristine_git_object: ba4cf618261dec6b6829099ec1760a6fd48bce10 + docs/models/mcpbreakdowninsightsrequest.md: + id: 8c3c8a81e52f + last_write_checksum: sha1:1aa64aa623e6a963d57251261f28e38050922509 + pristine_git_object: dfc799474ee77c7a1086e51067bcf7a2b71c3fd2 + docs/models/mcpbreakdowninsightsresponse.md: + id: cdfee60eb6f4 + last_write_checksum: sha1:c1381c087e140760b2896d1ccc047cae26b596dc + pristine_git_object: 94328ff46f865baafc8a3470bbc03119d8b5b135 + docs/models/mcphostapplicationbreakdown.md: + id: 7dbd2599b33b + last_write_checksum: sha1:bbb736a2752cec78704d81935408318ee3381236 + pristine_git_object: 22ebec8450461d7500d74f9de8e5e0a36aa1588e + docs/models/mcpinsightsrequest.md: + id: 31c5ec107f2b + last_write_checksum: sha1:0ecb48a6d0a991db7dc5b81d175fc4ba1edb87ea + pristine_git_object: dbf8e02939d30a3f36c0e5c801fb7c028d8949ab + docs/models/mcpinsightsresponse.md: + id: 7fb281e802f0 + last_write_checksum: sha1:30765d80063561930e96b060cc14649159b1d2d7 + pristine_git_object: f52735b7137552a3d71d7dbabcf348abb593c61a + docs/models/mcpserverbreakdown.md: + id: c176ce85af03 + last_write_checksum: sha1:7bd38b6bbbe91bc519010e78ae82add8e4b473c0 + pristine_git_object: d69d4ca36cbf827b298c17aa32f2e24c8e7126e1 + docs/models/mcptoolbreakdown.md: + id: fa26a0ae4ccf + last_write_checksum: sha1:bc3e3349110ab0fa18c0dc466e9f6aebb8d86e62 + pristine_git_object: 8eade3001193f86363e036f448148ca22d6e3758 + docs/models/mcpuserbreakdown.md: + id: 5a038100c9e2 + last_write_checksum: sha1:a642b877609d2765fe27b945fdaff8efc9853a8b + pristine_git_object: 1c4e22ef0d97f24e0b593d2080d123e7ce75b5d4 + docs/models/meeting.md: + id: 823ab6288010 + last_write_checksum: sha1:9efd1c28c84b767ea662cd26598364b032e35cf3 + pristine_git_object: 977c94c1f354f712855d58eecf856e5055d23342 + docs/models/message.md: + id: a9614076792b + last_write_checksum: sha1:683c85b12ba65929d2c250f60767f043cc8edc9e + pristine_git_object: 2bc3e9910f3919cf9b9a63f2b6f25b3c45ae9f54 + docs/models/messagesrequest.md: + id: 43ebf5c6fe35 + last_write_checksum: sha1:beecc147e019b999a49250a0379489cd5d9ac8a5 + pristine_git_object: 4e064fddb83831285473b6c1d39b815d3ca2d173 + docs/models/messagesrequestrequest.md: + id: 2fa50c40c725 + last_write_checksum: sha1:b2f45e2474960413282369d0130b901cca91b302 + pristine_git_object: 8acae3985b40574380b506d0ae0aacf7e4700d51 + docs/models/messagesresponse.md: + id: c975c0170460 + last_write_checksum: sha1:98a285bfbe7da7d41ba2da1d16d6db8d5c3f3ee7 + pristine_git_object: cd049438890155b3c0804d5987ac7d92afcaca00 + docs/models/messagetextblock.md: + id: 725f98843e44 + last_write_checksum: sha1:7413449c2a3047e781411c7854bcd2053d957e2c + pristine_git_object: 9d44b3e3c25c22a3312ba9153974c8bc8b978d95 + docs/models/messagetype.md: + id: 7c0a714c5440 + last_write_checksum: sha1:0e6889365b4cb2e70786a18e10c26003d7f55426 + pristine_git_object: 8f91442a60a35b61cb10ca0e9509bf5eba723e60 + docs/models/mode.md: + id: 568581cb28bc + last_write_checksum: sha1:263515c9f97885b91b6cd5844222320658442b07 + pristine_git_object: b1cd1e56279e4db030fc140598c10231ff311137 + docs/models/objectdefinition.md: + id: 11daa0bec25f + last_write_checksum: sha1:6990618d91fdb10bba60313d1b94e1f1be0dcc24 + pristine_git_object: c9ded51b4648085d281788a00f277cf592011266 + docs/models/objectpermissions.md: + id: b594dcf5417b + last_write_checksum: sha1:6caf5827d4da2f9279f733ab063c489f24e27551 + pristine_git_object: 75f9ddbbb057b5d4d011999825023254b3ee9ea8 + docs/models/operatormetadata.md: + id: bb1b8522afc0 + last_write_checksum: sha1:decaa2a1d74557b3011a3b6b778059482fce2846 + pristine_git_object: 384ba3a370e6ee501deeaa5f3c5b3ad559aa867f + docs/models/operatorscope.md: + id: 109af3198afc + last_write_checksum: sha1:61298b614017773d25f7fa3d77deb59d6f47bea1 + pristine_git_object: 88ecad105ba636cef49eed138b4e0daac952f649 + docs/models/operatortype.md: + id: 89dd5c1bde53 + last_write_checksum: sha1:503d883f051b5eb2db687d41c95e58e1ee99e802 + pristine_git_object: 7525e28380b5ffbb57beb76dfda514357c3ec9eb + docs/models/orderby.md: + id: 9e749ed80f72 + last_write_checksum: sha1:0525561e99af7f049d797b94b7df2cf20176cc6b + pristine_git_object: cb24df145ff35afedfbcec164e7531136cd7500e + docs/models/outputschema.md: + id: 48e0d37a531a + last_write_checksum: sha1:4b66a4ceff4de7d1382332e2107928df7ab32bb9 + pristine_git_object: 4555c0106ca95de3c4ff40e7d2ec703506c30450 + docs/models/peoplerequest.md: + id: a2efd0c61878 + last_write_checksum: sha1:6d1ac4de80b9014019ead9c45dc74d6635be315f + pristine_git_object: cabbe6e5060ca81606726370df1d3cfeffee879f + docs/models/peoplerequestincludefield.md: + id: 1cc1f2177bbd + last_write_checksum: sha1:a02e302ceae15bdcd65b89c04a3d67252d95653b + pristine_git_object: 8b933ae8aedf742a3b75025f62b43439acbbd273 + docs/models/peoplerequestrequest.md: + id: acc3cda54b12 + last_write_checksum: sha1:536bcc20d50abb8c2eda1d893650f69316f51e7d + pristine_git_object: a7ddc1835b7761cfec45f8dc7a60817e630e57ee + docs/models/peopleresponse.md: + id: f2403a1a85d4 + last_write_checksum: sha1:2255e7801b2cea22d06806713476f711333bfb88 + pristine_git_object: e92e9e8616bb5b6477112ac48f234f5e12aba738 + docs/models/peragentinsight.md: + id: 8b9e40d9c0e2 + last_write_checksum: sha1:7eabfe6920858eaada150c7629e0acde0d8d783f + pristine_git_object: c8b0534806541e4e8c9f523191beee0fa870aec9 + docs/models/period.md: + id: bb84ae146fc6 + last_write_checksum: sha1:018f64f47fe320ff0b8d46eb8d8323a06aae8420 + pristine_git_object: 84572857947f054d68e717419f4dc1e720100481 + docs/models/permissions.md: + id: 9f5fb12f1ed7 + last_write_checksum: sha1:c7150754bbd7b68f65ad69a5c2c2d4934f7ef36b + pristine_git_object: 508a3dbb372ff3f898f42386102a596d6acafb61 + docs/models/permissionsgroupintersectiondefinition.md: + id: 59fb540534ec + last_write_checksum: sha1:91823af7eb57ab7ba9265afa3933ae431afa07fb + pristine_git_object: 5d2835e91400f8c721cd32ac9c4ad0c2d4dff668 + docs/models/person.md: + id: 3b0ea6e43010 + last_write_checksum: sha1:40bd01513e17ccb41bb7f3af8dabf8afef4a2663 + pristine_git_object: 345b60a8450d8d723f3233a50d7e757e24b3dd3a + docs/models/persondistance.md: + id: 26300c30163c + last_write_checksum: sha1:37d6ba089ac53d0338b6e7f5e00d343adcc05317 + pristine_git_object: a7a45c74dea5b256e3fcb318e570639113612000 + docs/models/personmetadata.md: + id: 15c9858b351f + last_write_checksum: sha1:67000efaad8be89c4edada9aa12fc8cd824cbe7b + pristine_git_object: 3bf2f1247f4a2fe0fd8c0c93f776df93057cb7ad + docs/models/personmetadatatype.md: + id: b6d1cc2d332e + last_write_checksum: sha1:fe678a00b3e162b7cf80a2ef0c718bf4e6bbe741 + pristine_git_object: 429584783250b15eba7dc4b9d4899fe4f6d725c9 + docs/models/personobject.md: + id: b61db667c399 + last_write_checksum: sha1:a46315902270ad1be4fe59d63bc70674ffabe7cb + pristine_git_object: 84407e89d5da112f2ed68314b723af4513f71a2f + docs/models/personteam.md: + id: 13bdabd9c3c4 + last_write_checksum: sha1:9bd986d75eb1c3fe6def8416e28cf0deeeff232a + pristine_git_object: a4a52f3bcb30eedcceba09add09fc65dae8c946c + docs/models/personteamrelationship.md: + id: fffae2019126 + 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:1ad1f85a2dcfb4522f115df9a3f45a487578c4fc + pristine_git_object: bfb66e7a6c72f801c638ef0e27dac175f66613fe + docs/models/peruserassistantinsight.md: + id: 37bed9e00ed7 + last_write_checksum: sha1:7543f948eea853768b8b8ba6a87bb180d62de66c + pristine_git_object: 785dbb7a8af90c40fe2f22f3e37bcc540b9403d7 + docs/models/peruserinsight.md: + id: 06dafe79aaef + last_write_checksum: sha1:f6c7824a025f72edfe0d944300fe50d9baae21b3 + pristine_git_object: 623d8c427d1ab64f8aa61cbd600709e2cd98e41e + docs/models/pindocument.md: + id: be1599f901e2 + last_write_checksum: sha1:a2b6f01b11f6eb2ec492643ac691bf470ec1ccf7 + pristine_git_object: def0aeba81ef69593009783dead087b206ce1b40 + docs/models/pinrequest.md: + id: 9633c2e6f354 + last_write_checksum: sha1:8715b7cee9c72f746c8a24e7baa4c04ae084027a + pristine_git_object: ae0403e50fece6b08d250e302e60d3e6a98f0145 + docs/models/pinrequestrequest.md: + id: 52df3106f8dd + last_write_checksum: sha1:64309a6e996c663f2f34cea4390bab0b5909764e + pristine_git_object: a24b8b95237035cda5ff134a9c0cc3bb601e06d7 + docs/models/possiblevalue.md: + id: 630387aebbc5 + last_write_checksum: sha1:490f03fc39621ae0f816bb16d2922e1a8042cdb1 + pristine_git_object: 02f0ac74a6782ea8fe45b55a94902c78f7fab079 + docs/models/postapiindexv1debugdatasourcedocumenteventsrequest.md: + id: 43915828bc17 + last_write_checksum: sha1:a83e0604127f19ab318ec1436dc473c92a4eb1b0 + pristine_git_object: 9f2b3c975820801ac23513248e143952f40ff289 + docs/models/postapiindexv1debugdatasourcedocumentrequest.md: + id: 38ecbe6de48c + last_write_checksum: sha1:8584d4701d40c4cee616a2f2883d7f4c2d12e6a0 + pristine_git_object: 4673e978c434d85cc9c1d82d52d8cdcea7192d06 + docs/models/postapiindexv1debugdatasourcedocumentsrequest.md: + id: 53adc056097c + last_write_checksum: sha1:f835b76de7da7e785ef7de22ee1d34ea557b4e36 + pristine_git_object: f463e990c4529f25c803f89c731dd7b8243eb2f9 + docs/models/postapiindexv1debugdatasourcestatusrequest.md: + id: 39cf305b4bfa + last_write_checksum: sha1:d7568fe420303ffc20a42ecc36cdcb17c12647cd + pristine_git_object: 3c711a715ac94cf3af5142d2aeecb8bb5879d03a + docs/models/postapiindexv1debugdatasourceuserrequest.md: + id: eeaa85e50636 + last_write_checksum: sha1:e255ef8b11d751c43ada45d3aa22b5490bd252d4 + pristine_git_object: 15ff2ebc05e1ebc9b05388846f36ad5d7bac455b + docs/models/processalldocumentsrequest.md: + id: 39f3b9c55db6 + last_write_checksum: sha1:02030cd56cdfd7c6edde20074164a94d6fcf075a + pristine_git_object: 30556beb4a919881ca2ab96b0d7f3f1f21a218aa + docs/models/processallmembershipsrequest.md: + id: 5c791b6f858f + last_write_checksum: sha1:80fcec5b43bfd23655bf7d35e44fee2bb00fd760 + pristine_git_object: 3c126565d4c566f0678c0e86eac0852f04212e7d + docs/models/processinghistoryevent.md: + id: ff15c942eb12 + last_write_checksum: sha1:8c880090df4790ae574634857e5e7b0f2ee1bd93 + pristine_git_object: 91e3cb2eaf76f0b814ce9a2f7fb1d6b25ab5b801 + docs/models/processingstate.md: + id: f7dd740e0572 + last_write_checksum: sha1:21bcbddadd7313166578e1e6b7dc596e28c8a04a + pristine_git_object: 63439d0308aeec0d690826dbb9a35d1deb3a54e4 + docs/models/prominence.md: + id: 426f5a937205 + last_write_checksum: sha1:999b72a93b980bc8871cf2233497fd370e8908ea + pristine_git_object: e2084849cec0bf8d693f7113b9b0fbd21382980f + docs/models/prompttemplate.md: + id: 11e24c1dd6c9 + last_write_checksum: sha1:c4583b14ff8d8d1a29bb3beeb36ebfd356876000 + pristine_git_object: a468f5b0f86027b6c1466fec658dd9147f618cc5 + docs/models/prompttemplateresult.md: + id: 5a015c98b709 + last_write_checksum: sha1:22c5dfe03e65d532c798ed7c33cbb2efafd9b8a4 + pristine_git_object: 104dbd52aeaa357ce54fbd9f407b73067a1c957c + docs/models/propertydefinition.md: + id: a50cb5977744 + last_write_checksum: sha1:762e9a02215d5be678ae7a1704adfeec419a91f0 + pristine_git_object: e34ed621310c9dce2462589ce50467022bb14848 + docs/models/propertydefinitionpropertytype.md: + id: 7aa045c850c3 + last_write_checksum: sha1:0b8f2724562ae0aed2a5bebdf593f94860d26200 + pristine_git_object: 732480e5c844428bcc8562b847929eeb4e536f70 + docs/models/propertygroup.md: + id: 5e6aeebff127 + last_write_checksum: sha1:ec73b9607d1e3203324f876f912471f217939d42 + pristine_git_object: a1d9b7a2497fe865f3ee3435025328c14def9893 + docs/models/provider.md: + id: cedb2a98f8e3 + last_write_checksum: sha1:d6899eeeb30af28988f37702ffd4fd00b44e8f9f + pristine_git_object: 4e51686e6e15ea7c11098d7766601d73fcb40f70 + docs/models/putrestapiindexcustommetadataschemagroupnamerequest.md: + id: c549318b9d46 + last_write_checksum: sha1:6fe92187ec673555b6125afee34d2da6dc4d2a49 + pristine_git_object: 342fa724901224d81c82a58835b1473f01554596 + docs/models/putrestapiindexdocumentdocidcustommetadatagroupnamerequest.md: + id: 09cbfcb31353 + last_write_checksum: sha1:85b40dc1164f197037b2b7ace5207ee7254d5685 + pristine_git_object: 5af8c6170c943739d8c120b7c70e4436b7e57631 + docs/models/querysuggestion.md: + id: d204ce67c5d4 + last_write_checksum: sha1:a0ff5b4d9d199993c2951c54b57e975487116470 + pristine_git_object: ebd5621bee3cd7d281b293c9a339f90f55ebb126 + docs/models/querysuggestionlist.md: + id: 3ac61ae3997e + last_write_checksum: sha1:bd5f7e3b9c1371067152f7f8b15e7e1ab00e882f + pristine_git_object: 5aedf6767e486a724beff150251e5627918fb90d + docs/models/quicklink.md: + id: 7949bd70cbfa + last_write_checksum: sha1:11a218d644d8f9a084ba94da71823a88a2d7a62d + pristine_git_object: c003724dd32f0a8e17c0cc1bc078a36b55c2ae33 + docs/models/reaction.md: + id: 2e98084a9945 + last_write_checksum: sha1:b56f0acd53dad903acadd270d39c4e52177f1c7e + pristine_git_object: 52b84adb2f726da1bb7f51376fb8b9249cbdc904 + docs/models/readpermission.md: + id: 2912add884ff + last_write_checksum: sha1:f0f377cf3a4598f4c8c84bfc35fa18a04b370985 + pristine_git_object: 55e06451976acf5b924521b8fe50465cc1783340 + docs/models/recommendationsrequest.md: + id: a569b82d33c5 + last_write_checksum: sha1:23c180967794dc86f9c7ccc3d012c4824c8bca0e + pristine_git_object: 683ac40ec1a31fc49a20a15c1a73f2eb157413cb + docs/models/recommendationsrequestoptions.md: + id: 9af3afaa9e89 + last_write_checksum: sha1:6c61bbf334e07ef058d29a674632f8d8507ac3c9 + pristine_git_object: 93f5815fc8c797405971ca52b84176073549730b + docs/models/recommendationsrequestrequest.md: + id: d2aeaccbd96a + last_write_checksum: sha1:d975dcbcb9abe64aa53de0504e890d7791b9e631 + pristine_git_object: 763a6dbaa6e001859acc66b609fadbeb87a81a5b + docs/models/referencerange.md: + id: 5f43eaff88a3 + last_write_checksum: sha1:50afa7a8c59ee89013d2c6e2e5181f16f0d7b5e4 + pristine_git_object: 961316baec5e47232764342301bcb7e7fa5e45a7 + docs/models/relateddocuments.md: + id: 37f62d34d466 + last_write_checksum: sha1:fa99942ef722571ea6a82d8c2b4fc2e1f647f2b0 + pristine_git_object: 0002a5a978cc3e3f2cb153d3f261c152649aa36e + docs/models/relatedobject.md: + id: b199f29bd27f + last_write_checksum: sha1:6792ea9688f7506cde526301de830759490c72ac + pristine_git_object: 46ccd726013b5485106e78951c8b8b333e6c3a2d + docs/models/relatedobjectedge.md: + id: e5a8f5aeb647 + last_write_checksum: sha1:190391cd901c9e56a9bf744ca9db17dc81c69969 + pristine_git_object: d4543e9ac676c72d2e9f340f6fa538368ece5d6f + docs/models/relatedobjectmetadata.md: + id: e90ed24f484c + last_write_checksum: sha1:7abe738847406467c7559ff7f6e937091aa22a77 + pristine_git_object: 7c1376d3edd2760e5ae7354bd630355c42e7dee2 + docs/models/relatedquestion.md: + id: efee81b26c89 + last_write_checksum: sha1:6900a787405ad708f30bf4a32821def1b44127bd + pristine_git_object: 9fae3b0a68d116bccc7918711829018e05d5f544 + docs/models/relation.md: + id: bd62bd10e24e + last_write_checksum: sha1:706b41145cf274d6a464710022cd258beb0f1e52 + pristine_git_object: dd90ac50fe5fc29e51081c509e45902b0423e555 + docs/models/relationtype.md: + id: a3e82ab5197f + last_write_checksum: sha1:ef5260e78a563ffd9ef43519c9885cfe534ff097 + pristine_git_object: 2ca42951f8063802b0655f044836bd7c02202d4a + docs/models/reminder.md: + id: 0047a1b89b3b + last_write_checksum: sha1:43ee9bee8ea2d7fd681baef92221422803babb81 + pristine_git_object: f38ee587a23b70ac7c8663f5b818a1f40c556cbd + docs/models/reminderrequest.md: + id: 8da6ff640d66 + last_write_checksum: sha1:46814175724e454c2c3b76a315589dc44ca32813 + pristine_git_object: 54457dc5b487e5d770f7b6e6ef4998a3c6f3455a + docs/models/reportstatusresponse.md: + id: b234bfad37da + last_write_checksum: sha1:6659df9dc73b2333a48da7e256245f1672a99a9d + pristine_git_object: ab490c5442a9b52d0a5388ab39d3a4792f8d4ae1 + docs/models/reportstatusresponsestatus.md: + id: c6d3311eea79 + last_write_checksum: sha1:cb11955a7ece754400f4fd1a09a4586945a6e9b3 + pristine_git_object: fbbf6879eb3a324a311927d99fe558be1da01b65 + docs/models/requesttype.md: + id: 2e3b600ad04d + last_write_checksum: sha1:1f4f2b3f882695f70cc0655c6013e35e295e05a2 + pristine_git_object: 2d050701a58976f2076a0b9bd970a844c98ea22b + docs/models/responsebody1.md: + id: f324bedb3b30 + last_write_checksum: sha1:998f6661be7e3d24c165ddcf3cc2c2c85d4de195 + pristine_git_object: 11d2fa8c6380bfbe6666177203cccf8673998914 + docs/models/responsebody2.md: + id: 4ee8d6f7504e + last_write_checksum: sha1:9c594f0ee6664e2a1d780f7b781656416017b351 + pristine_git_object: 5a64d4a2875808416196d80e8598ac263382c31e + docs/models/responsehint.md: + id: 2fa9a49e2b25 + 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:91e9b4a7f9fc27963e261a4f12f90baad3800d70 + pristine_git_object: bcd5413ee10241817bc51bd2104b5415723599d8 + docs/models/restrictionfilters.md: + id: 080254acc2eb + last_write_checksum: sha1:4d6e84f502a02998c3d8c123fce6110e6a28c5f0 + pristine_git_object: 0bf8ca42d7ed8b47754bde05ef07aa6be61178c0 + docs/models/resultdocument.md: + id: 9ab77d14fc45 + last_write_checksum: sha1:4d3ef17d920f4821538517eaf562b06b6ddb92a6 + pristine_git_object: 113d025997bd29b1769753ac87dd19c5a78f7ff7 + docs/models/resultsdescription.md: + id: 9eb8e897b941 + last_write_checksum: sha1:234aaa4ba985536a46c084eeb73b7b3def638458 + pristine_git_object: ee17059ad2ec7579155aa7810bd2c1f7430cd67d + docs/models/resultsresponse.md: + id: ecfd02386c7e + last_write_checksum: sha1:4bbd7daa6d46e8dd9b289b75588531a3ce3cf031 + pristine_git_object: ec424f45b27b9116369d3ff93c0aa36accd74075 + docs/models/resulttab.md: + id: c27ee1a4b407 + last_write_checksum: sha1:5e3c17cc69a66fb79a9d4935bfad8e2d2312ec7f + pristine_git_object: fcc597abd3b5095bef1a5bdd9fd2bb372b2785b8 + docs/models/role.md: + id: b694540a5b1e + last_write_checksum: sha1:9f88b67c2e11ff6d70d769beff80158190c7d5c8 + pristine_git_object: f039c916bddf57012d6733253a30f781d61d9716 + docs/models/rotatedatasourcecredentialsrequest.md: + id: 426db1e134f1 + last_write_checksum: sha1:7046726cc6e2da03528c6df07f69dbd9c711f61c + pristine_git_object: 2074cc10e82ee45278f861502265168b24f02420 + docs/models/rotatedatasourcecredentialsrequestrequest.md: + id: b61a6cb42b82 + last_write_checksum: sha1:1f3ef55d822ce2ac387fdccbbc8c544a32edaa40 + pristine_git_object: 4a1765451a67573d800ddb567979645e031e5154 + 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:14100818939e973ba9ea563c203ec40b39a1c113 + pristine_git_object: 189ff0f776f6bdaa5cee36d35444dd724f52e0d2 + docs/models/scopetype.md: + id: bbf7df39278c + last_write_checksum: sha1:8d81c1586c14b6fa0547fdc277613894419c4e4f + pristine_git_object: 7c67e71c306fb2ec56162638dbf9beb068ced038 + docs/models/searchagentsrequest.md: + id: dd80edd4008d + last_write_checksum: sha1:a6a2f3c53f8bd651c96eee45d73e83de4dce9564 + pristine_git_object: e4f351ffc3848bbdf60e889050317f982dc12ea7 + docs/models/searchagentsresponse.md: + id: 4b4a1111d5dd + last_write_checksum: sha1:b7271a3f2379df99e76e66e1a7f17ee0e776eaf5 + pristine_git_object: 3ade4e5bee9a143de0f7d77b57c6bd2d144c6c6e + docs/models/searchproviderinfo.md: + id: b5eab56a4275 + last_write_checksum: sha1:511202a801d9d1f22c66f0627a89c45445a9e381 + pristine_git_object: feb004ca5cb978decd8aeb00f38ede4fb759820b + docs/models/searchrequest.md: + id: bc36c5e5aee1 + last_write_checksum: sha1:9e09e3fe8c7e72b78ba824dd6089d371a430a5fb + pristine_git_object: ae190b5599695558ee0a5d2e7f92fc9f54226d51 + docs/models/searchrequestinputdetails.md: + id: 26d781659873 + last_write_checksum: sha1:761b9f8ccba9a19f0f00c5f0ff1789b81422aa6c + pristine_git_object: 9c740ec78bb7e4263973079890559679433d4464 + docs/models/searchrequestoptions.md: + id: 46607eff2140 + last_write_checksum: sha1:8880f8a97b5311b5efa0efe7474f865c33641776 + pristine_git_object: fb83a2a79ff524a3d8d2e3c5eeb93dc956255a38 + docs/models/searchrequestrequest.md: + id: 0ce27fe572d6 + last_write_checksum: sha1:14c866db2a1c8143c1a13e07578f0dca0d7b2b1f + pristine_git_object: 79efc8a78bf7e29a3f1fdbe108942695aca756c2 + docs/models/searchresponse.md: + id: d5606b4d403f + last_write_checksum: sha1:c3c978f89c42845abab11e176d6265d073b65f48 + pristine_git_object: 4d5241f9117ce520e719dd44e27168c6e8cea5c9 + docs/models/searchresponsemetadata.md: + id: 41acae6d9dcc + last_write_checksum: sha1:b33cc2c93f4e2dbe97093b4f88e05cc7b771cf92 + pristine_git_object: e212c207b498f661b34810d9a7ef8e254657796a + docs/models/searchresult.md: + id: f24c4c356d71 + last_write_checksum: sha1:c628874a8da839c1a496d7e172320d8db67c1e36 + pristine_git_object: 0ceec198bd42b9c7785367267b733c8f3f1e6c96 + docs/models/searchresultprominenceenum.md: + id: b42f970c0c9d + last_write_checksum: sha1:40adf871c5deb2fd183aebf65d4dd423c6f5b8dd + pristine_git_object: 65f9fa4b4c01602d85acbc95bed4d1241506db03 + docs/models/searchresultsnippet.md: + id: 9e1b4de38d1c + 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:8303f299a622a1b8ea238a81f90db6399066bcd5 + pristine_git_object: a9aa833111af162ca56ec269c90280c67a036df1 + docs/models/security.md: + id: 452e4d4eb67a + last_write_checksum: sha1:5a8ca6c033f57e615f3ffa94175b82d8eb3a9822 + pristine_git_object: 60445b0da90ab9c9ce4d79956add72d891d77dc6 + docs/models/seenfeedbackinfo.md: + id: 64f471f51c7d + last_write_checksum: sha1:e5572d387ab4aa8ebb9d208d6fabdf1cb8efef8c + pristine_git_object: 4d3d39552476495c4aa2a247e66bc87cf0847ae2 + docs/models/sensitivecontentoptions.md: + id: 768a5761ce69 + last_write_checksum: sha1:6a896484ac45424ad2562ddcd6f17bd5e97643e7 + pristine_git_object: f0eae79cfb424a180030a0881f4307fee923a295 + docs/models/sensitiveexpression.md: + id: dfd7689b2818 + last_write_checksum: sha1:991db48988096e9810a89d75ee10150139997fea + pristine_git_object: 9115fe32b92d4a72016dcbe12cf6699babaf9704 + docs/models/sensitiveinfotype.md: + id: a96873d05eba + last_write_checksum: sha1:923004ffe629074132c7d41c7ba991ba7f9397f6 + pristine_git_object: cce44d495574a77d559ba3f01d7e4514804efde1 + docs/models/sensitiveinfotypelikelihoodthreshold.md: + id: 3ee71d33a4d7 + last_write_checksum: sha1:e8354d546d4580055c9be0803efad0dcc6c1b7f2 + pristine_git_object: 7f825e04ad8edef5297451309815f20ef1a3ba0b + docs/models/sessioninfo.md: + id: 4f35f0cd75e6 + last_write_checksum: sha1:54947b191223cc0100d33978470ef085255e0b45 + pristine_git_object: 15c611967244f8374cd3477ff88b8b4d0c1f5769 + docs/models/share.md: + id: 10eb1cf183c4 + last_write_checksum: sha1:c2adc257698c498be11fbc023c8b6a4a7d88f5a8 + pristine_git_object: 6159d62667813f7d8ec05cdf85675030bc715b92 + docs/models/sharingoptions.md: + id: eeb3a7691b62 + last_write_checksum: sha1:6033cd71f617cfcfb3c5fec6ca82550be8238400 + pristine_git_object: fb4801ebcad8bd8a43338c01c5df23e396db2cfe + docs/models/shortcut.md: + id: 057d5232b4cf + last_write_checksum: sha1:8be588a646fb805921aa2217202c21c91eb10b37 + pristine_git_object: bdbadaafc2aa7af4a529f3a1eab13c7fd63389a9 + docs/models/shortcuterror.md: + id: 026e1d881413 + last_write_checksum: sha1:dd5330cedfe492120459d7002269e7cc142c3722 + pristine_git_object: 64b1554570d3fcb4b0449bee384314793d54fc6e + docs/models/shortcuterrorerrortype.md: + id: e1bc39b68a8a + last_write_checksum: sha1:302761ab3b7d221a4ca91fa9b609e53891b945cb + pristine_git_object: 737b2781df70717480fc76172af46e45577d5310 + docs/models/shortcutmutableproperties.md: + id: 78d6ffe3cf2c + last_write_checksum: sha1:84ae6b4acd2e66edb0f0b641949a001abeccdef1 + pristine_git_object: cb702f9c15b204ea445fe804ecb5531459e97611 + docs/models/shortcutspaginationmetadata.md: + id: 1eb2af56dd25 + last_write_checksum: sha1:c9e2dd3b964c7288a4f26372586f8698f3938973 + pristine_git_object: 34a47a29709b8091d581461e95249e7199b7e290 + docs/models/sidebysideimplementation.md: + id: bd0bc41fb2c5 + last_write_checksum: sha1:5f750a2b8ec3fd3fe09ab579bcb1cbc4de35f258 + pristine_git_object: f52783070daa5518b9d65f565f89ea2f3c6ea58a + docs/models/socialnetwork.md: + id: 7d08dc36a21f + last_write_checksum: sha1:3f57d2edce6d216f2d80440029afbdc58069f9e2 + pristine_git_object: 8a96bed035325052e02229786cfdbdad1e0bf284 + docs/models/socialnetworkdefinition.md: + id: b98dff57c16b + last_write_checksum: sha1:289855c42a924e6a8237a10294111c9d20be25f8 + pristine_git_object: 6ba1f62c16f2aff317279a30fd685cbd229295b2 + docs/models/sortoptions.md: + id: 7c081c02b22c + last_write_checksum: sha1:2ff4904f596fb375bf0aad5fff7d0857ef88695a + pristine_git_object: 3163bd9b142a7e47cdff754d0c540909ddd26ad8 + docs/models/state.md: + id: e560b4e72643 + last_write_checksum: sha1:9d1ff41934e2a8f7258825dbcb425b41c94b4fda + pristine_git_object: 0b0039c52ef671a23e097a64f73ba80f24671789 + docs/models/structuredlink.md: + id: da6d9150c7ab + last_write_checksum: sha1:df24ab2b09f885ebd7a4631bbeaf6a5dac93eee2 + pristine_git_object: 9eca47f6a90d1d854c351078827780493c877de1 + docs/models/structuredlocation.md: + id: 794ea7f6265f + last_write_checksum: sha1:7bee77ab7e9a46141d09a5a5980d3136ae34ac10 + pristine_git_object: 9da32f0e7841e87099fbe94de2e2e025f62070c2 + docs/models/structuredresult.md: + id: 64daefd6d356 + last_write_checksum: sha1:ae2a47158f5495406f756eabceab6bb523faabf3 + pristine_git_object: 3291d8df76ba41b9dcc65e6fe069d0c40455662d + docs/models/structuredresultsource.md: + id: 065642e7abe3 + last_write_checksum: sha1:49da95e857c000c5dc316bab657d36a060e90616 + pristine_git_object: 75ce27201b7dd633cc2f77b858e727a2c75f3f31 + docs/models/structuredtext.md: + id: f29072cb71a7 + last_write_checksum: sha1:ea77efd10d4b272a7f95d83f31013753fc74113d + pristine_git_object: a2a951725ba1b34ae5624d35559dddba3da99d43 + docs/models/structuredtextitem.md: + id: d6d09c408091 + last_write_checksum: sha1:021cef125aea6c966af7a9f1dba6b45e87d3b59c + pristine_git_object: a0ea9d9a4b0d0aeb0bcc99a68c85a6720d411251 + docs/models/structuredtextmutableproperties.md: + id: 6db82cf50bb8 + last_write_checksum: sha1:bd645af9b26a5ef20862ed6a29c37d3fb7920928 + pristine_git_object: c144284194e4b3b591e904a26efa8afb5364a884 + docs/models/successresponse.md: + id: 95d2dc3eecc0 + last_write_checksum: sha1:f88d95a24342e6acac95ffbe0de1970fd49cc0ca + pristine_git_object: 16f7627ad669257c0ff1c0f7ea18fbac7f08b479 + docs/models/summarizerequest.md: + id: 8fadabab743e + last_write_checksum: sha1:789e5b8e38b25c10969e80222e55f1f4de54afb1 + pristine_git_object: eed3bab068a828a4059c0d1b5757161f66f0ec21 + docs/models/summarizerequestrequest.md: + id: d9e372065f07 + last_write_checksum: sha1:e0450f8cef54e63e076ff9a9c14bd69bcffa9883 + pristine_git_object: e4f7d4962256aaa4cd1e3735cb7ebde6bfc5254e + docs/models/summarizeresponse.md: + id: ce1fcfe05e49 + last_write_checksum: sha1:cb44648e6e2d3e33ac24a81351fd6bff8955a834 + pristine_git_object: 3147f75e305dc750bb5df7c28fa0b85014c7d085 + docs/models/summary.md: + id: 7683f2898f85 + last_write_checksum: sha1:2cdc574731512757f5af138fff53d0eb735dee74 + pristine_git_object: 9da09f85c6fee609c0deb219d927b6f9b01928fd + docs/models/team.md: + id: 5f3e94821ac7 + last_write_checksum: sha1:48e03931a33407f6cffc957b0573d780c147e45c + pristine_git_object: 720885e27dcaca923c758cdc47ca5813d110915a + docs/models/teamemail.md: + id: 9d865ab34588 + last_write_checksum: sha1:68e6d28f2aa653568d05bcac3f07242371dee7c7 + pristine_git_object: 4c8190b285af00e3307a724ee5f6c4b6d87f5c7f + docs/models/teaminfodefinition.md: + id: baea57313b83 + last_write_checksum: sha1:8e4f7681e33e2e8fcef5418f6fedfe36603f82a4 + pristine_git_object: 1948e1291a6def7aef7538d62b59a39d2dd3f9d8 + docs/models/teammember.md: + id: b7fe7ee9118d + last_write_checksum: sha1:4a033e8e5c1297652607570280ef089ec9145806 + pristine_git_object: 8d7abd87759341052e2d21b22eae68411f2ba00f + docs/models/teamstatus.md: + id: 89e4b47e021c + 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:6bc6095a9e4042f15a55c76a7db32705ae06fbae + pristine_git_object: 1da1c5ecfb57d12722c631412af4700f1f4ead7c + docs/models/thumbnail.md: + id: 67df0baa2bef + last_write_checksum: sha1:63f363692d3548792f187d7b0256753e51b0a8f9 + pristine_git_object: 82c318f9af8fd4c4d26f76bed3cf07a0f59cb8e1 + docs/models/timeinterval.md: + id: 1569199eac69 + last_write_checksum: sha1:2c6280b32fa61f27c4228ac83f6aefdb4835c61b + pristine_git_object: 1c9f1f7a61215cbb3c04665585c956bd7a7d0b54 + docs/models/timepoint.md: + id: f494f2342453 + last_write_checksum: sha1:6d90a970b179a9ca4cab7d43f037366125124d7b + pristine_git_object: e187bd0dead115985ce5cb20bfe3af3026b40880 + docs/models/timerange.md: + id: 6866f2e2889a + last_write_checksum: sha1:91e09f4232153c0f8378809d09077223568988b4 + pristine_git_object: 56bde82ff70286e840a4b1900174723efdc3cfc3 + docs/models/timerangefilter.md: + id: 316c5160b2af + last_write_checksum: sha1:5682849a723aa77a8e9fa9653ff0352e63997a04 + pristine_git_object: df34cde7f877567e4a7d7a6cbbfc5416610b9d34 + docs/models/timerangefiltertimeperiodtype.md: + id: f0522eda6cc6 + last_write_checksum: sha1:45e661129d7ef5a7b7d53c4c359f1d1a1933670a + pristine_git_object: 64f1bba3aefec45ea846c103a9c666f9149e868e + docs/models/tokenendpointauthmethod.md: + id: ecc9be73734a + last_write_checksum: sha1:e4f508af54804043c21b96405f33cf17c1186b67 + pristine_git_object: 292a955adca4baebcc7fec90e4cd745ed26489da + docs/models/tool.md: + id: 8966139dbeed + last_write_checksum: sha1:e49814f5bc36e497d901a65b3a4aa64261f8a1a6 + pristine_git_object: 55b6b74e41bc39f70f0a784802401c8c8d9281be + docs/models/toolinfo.md: + id: 9cbb352cf0f7 + last_write_checksum: sha1:9bd54f773231ec20950e3603d5001e05c9930451 + pristine_git_object: 469bda8fbd2cc545c4df6d9c5ee37add49cc8aea + docs/models/toolmetadata.md: + id: 23fa32436363 + last_write_checksum: sha1:a9ed4882e8d4eadf0d9eaf1a89a62b5aafd41a9a + pristine_git_object: 1ef5b029096d561cc42e52d6c71854a31e15d63d + docs/models/toolmetadatatype.md: + id: b1a95a1b5c7e + 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:9ad438ad09ca09e625564cf0da3e3f59ad309682 + pristine_git_object: c6fda07a3035c653da0d4409b7baac502ec84057 + docs/models/toolscallparameter.md: + id: 5cea7f92f640 + last_write_checksum: sha1:712d7288e576894278440908916b239126ecce87 + pristine_git_object: 2e5ae00fb5db723cfccc8bffb55e7c5bef47b64a + docs/models/toolscallrequest.md: + id: 6650c8b3fe1d + last_write_checksum: sha1:9178ea9dcaea5469a8f1d9b92d582d8ead6f4438 + pristine_git_object: ca0e8e14b4552c464269325c8bee2a45585ad39c + docs/models/toolscallresponse.md: + id: cf3f9152cd7b + last_write_checksum: sha1:97ee5f6b52e1de5814bc36a1a677146011aeb311 + pristine_git_object: aa65d98a224fe146196e2e787ddae4d7293d198b + docs/models/toolsets.md: + id: a965e94026ac + last_write_checksum: sha1:b1adf4e7412e880a27756e105778d4cff3c258ce + pristine_git_object: acdf63845c96ce8cf1ea0afb8e5d216dd48d078e + docs/models/toolslistresponse.md: + id: 50111cdb03d9 + last_write_checksum: sha1:50cb8f2754ba52be6e89fc920b8df329ba09ff8c + pristine_git_object: 4fc04799b7fd88ff49f8e91c7a9975a39a73d6a3 + docs/models/tooltype.md: + id: 5e2ddf7b3863 + last_write_checksum: sha1:af9eeb7a0cbd9ecd79a0f8fb1eda22009a23a114 + pristine_git_object: c7f7adecc74cc4072799169c68332df2d8932c44 + docs/models/ugctype.md: + id: 675d62d57771 + last_write_checksum: sha1:169a6f517f4b9adbf679237581b4d3066b210ad5 + pristine_git_object: 6eb0e28433d7cdfac10ceb8fad23adfe5b780a86 + 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:047eab64e277bd948c39b0ef2733ee0bfea82a0b + pristine_git_object: 658ce2f53147228ae816674a68c9ffee72ea2453 + docs/models/unauthorizeddatasourceinstance.md: + id: b0a4b91f5b89 + last_write_checksum: sha1:252dfa0628b61ac47ac34245bc7812ba4a7cb17d + pristine_git_object: 4996cf51527f18ee273b1ec1b4e6c3fead16d44c + docs/models/unpin.md: + id: d3b597ed91fd + last_write_checksum: sha1:c3f2d39278abdd61760af541adc0c4e0ff4c8aa7 + pristine_git_object: 02cafe18f701ebabf5c89888749d7af33a1021d4 + docs/models/unpinrequest.md: + id: 0c109e9c4694 + last_write_checksum: sha1:5cf4bbc04724e25828decacfc651405ab7d12394 + pristine_git_object: 4108423841d6851a21d7fb6c10ebecc0dc5cd20a + docs/models/updateannouncementrequest.md: + id: b8e569974360 + last_write_checksum: sha1:5ca6f13eabc5b2dd0fe8e79e87bf06a3651c1975 + pristine_git_object: 00da426a4573950bf4382c785bc3b97142957469 + docs/models/updateannouncementrequestchannel.md: + id: 0ec5a9b511a9 + last_write_checksum: sha1:8eb84e595e238facab67c2089e95c05546d62fc9 + pristine_git_object: efb4113fe14249cebfff870fedff388b46a1fd03 + docs/models/updateannouncementrequestposttype.md: + id: c4fb8de3c6b0 + 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 + pristine_git_object: c778c0b08c9561b45d01a39e4e4ac22410a71974 + docs/models/updatedlpconfigresponse.md: + id: 0a34873edd36 + last_write_checksum: sha1:6d0aadb89a6120e6d6def2bf42be5404e7498584 + pristine_git_object: 4c0ae6d83f58084b5c19544b110e7c3797bd2a27 + docs/models/updatedlpreportrequest.md: + id: 899be938fb5c + last_write_checksum: sha1:a9d8450273c72e5f406ec82109ce19a52cce6acd + pristine_git_object: 0a8b53e5921026e54c0caac56937b652dc0e9eab + docs/models/updatedlpreportresponse.md: + id: 61f789cfc716 + last_write_checksum: sha1:d4d8b842a70185946211630920c70837dbdffd10 + pristine_git_object: 028b13f618212c6eeacbcc613c2e48d08aee6793 + docs/models/updatedocumentvisibilityoverridesrequest.md: + id: a36979240ed2 + last_write_checksum: sha1:827f71ffcb206aaa602de726662e2c12cc092ce2 + pristine_git_object: 941e97d516ae07ba81ad802ffa720232587132bb + docs/models/updatedocumentvisibilityoverridesresponse.md: + id: cc980ada3c5d + last_write_checksum: sha1:91934cfcce2dd7291c28900b650919dccc59b4ef + pristine_git_object: 92e58347db58b2622d5c1d550293463d9f8abbd3 + docs/models/updatepermissionsrequest.md: + id: 32d4b748d409 + last_write_checksum: sha1:71f5ac006dd502080c24d55cad8f36f4796bb963 + pristine_git_object: 4a75a6bf1da5903eb59d117fd265e1d5172375e6 + docs/models/updatepolicyrequest.md: + id: ee35ec8cf254 + last_write_checksum: sha1:727445c5cbdff21336b548781d2a7ba5760e261f + pristine_git_object: d82b6177c6f79bea164aecca4a5b17bdd718ed90 + docs/models/updateshortcutrequest.md: + id: f05a3e5f94df + last_write_checksum: sha1:61a0f8367c4c8a2326e679f18bb8d0e0f1dde830 + pristine_git_object: 4fc6d60473199f94ee0bcce00cb625cf5cd90597 + docs/models/updateshortcutrequestrequest.md: + id: b7ac13dcabf8 + last_write_checksum: sha1:581bc7338e6854cbe08e49e0ae25e09c73dffb75 + pristine_git_object: cf21e6867e54c4f136827d083f0b08bcbce289b8 + docs/models/updateshortcutresponse.md: + id: 9a49aeb8358d + last_write_checksum: sha1:4ce1e4cddec0f3834d9d5166df84173633e5053a + pristine_git_object: eb8f7dcb8b3db7f74033c2c002d4000543398055 + docs/models/updatetype.md: + id: 4e32b28bffa5 + last_write_checksum: sha1:4a1d4c8b62f84c91cbb4e5bedad5356dd2ab4421 + pristine_git_object: 9208da7a22f7a9632ff93faa326408a5c8802c04 + docs/models/uploadchatfilesrequest.md: + id: c52c3f25ab45 + last_write_checksum: sha1:99a112866bfd01c4ed2389b94112cd83e5fcd191 + pristine_git_object: 78d47ad60753d15ff9256e4df9bdea65641b3fc9 + docs/models/uploadchatfilesrequestrequest.md: + id: da805ab42079 + last_write_checksum: sha1:647679df1c7159482257ad4747b13e681b3e3858 + pristine_git_object: 47ad9ca64c909e148151aa27b69ea4cf0ab0f761 + docs/models/uploadchatfilesresponse.md: + id: dd5d6eda7e5f + last_write_checksum: sha1:f9ae1854cf52c507220b5943274969b7c887668c + pristine_git_object: c4784c9024ab92ca9e8bac177e8b138086c2c4f6 + docs/models/uploadshortcutsrequest.md: + id: 929ae43b4931 + last_write_checksum: sha1:dcdf9c5eb05f32096adbc72cc5cd9b1c76068a49 + pristine_git_object: c39bc4c8185092b7bff6ef2d70c4ef80aae468fb + docs/models/uploadstatusenum.md: + id: 71048534ec39 + last_write_checksum: sha1:bf315ac7ce23f4359859d4e00483bb6547314418 + pristine_git_object: a46e1e00e1a8117bd32935823ffbcdb38c731376 + docs/models/user.md: + id: 8306f1e41187 + last_write_checksum: sha1:2b7119a504a8ed2044d41c522319269c116e35f0 + pristine_git_object: 6fafa98b3cd8b42f4d6c5ab01452736d0bff7934 + docs/models/useractivity.md: + id: d1b990fefedf + last_write_checksum: sha1:13b69144a0b1236d73817c3afe5c30f76a3dcca7 + pristine_git_object: 90d7bb168aeee6f8c87a0756556309390ccb5d5a + docs/models/useractivityaction.md: + id: 8b611b38e1ec + last_write_checksum: sha1:77b143836a0e3489fe1c0b74a78bf5a76e320b6b + pristine_git_object: 24d98acf55487579fb7a65ba7f32fe53df2d6093 + docs/models/useractivityinsight.md: + id: a9213240776e + last_write_checksum: sha1:d21f208280f0dd69c3e83ea4b822450aad7456a5 + pristine_git_object: 919d62f061845ed4de821d6ae4f583e28830ad36 + docs/models/usergeneratedcontentid.md: + id: c8ca129d5d94 + last_write_checksum: sha1:596d2ebfb99e4136fc44e44a1510defa64306b29 + pristine_git_object: fb295e4d7b0a1aeb5bb38a9c62e184b5fe646f57 + docs/models/userreferencedefinition.md: + id: d3a3e2ecb24c + last_write_checksum: sha1:e7dc7b5f647061d00077ab48e5988068a2033b86 + pristine_git_object: b65d1028ad77effabb6af26688ce6ca20d0023d9 + docs/models/userrole.md: + id: 63aa1e945a21 + last_write_checksum: sha1:ad2368f4372f98ec6bb84dfb27e8fedb06810268 + pristine_git_object: f74d5aba55621cb07d692eee7166e749c65eb428 + docs/models/userrolespecification.md: + id: 9b017501aae6 + last_write_checksum: sha1:04a2724b1e60ed87c3f111614afc9e792d4de7f7 + pristine_git_object: 11222134a86dca0f66890716625d52c7a51a6f8c + docs/models/userstatusresponse.md: + id: 6d8d1b5052f1 + last_write_checksum: sha1:99dca5405e32066b25e497b2447ad055260e4b9f + pristine_git_object: 75491e82e24207f23bfe9bc47eca00d44341379e + docs/models/userviewinfo.md: + id: 0be361ca85af + last_write_checksum: sha1:efa324ec21eeb52e30bed1a38ef3f3c1a664a42f + pristine_git_object: 3d1b98a0c5baaa3601bdcc583dac438ceb612635 + docs/models/utils/retryconfig.md: + id: 4343ac43161c + last_write_checksum: sha1:562c0f21e308ad10c27f85f75704c15592c6929d + pristine_git_object: 69dd549ec7f5f885101d08dd502e25748183aebf + docs/models/value.md: + id: 1d69c8103b96 + last_write_checksum: sha1:19c379a691827229a9d18f7c292a4b1e1fccbc2f + pristine_git_object: b710372e8662f53c9ef670cd8326e380cd11184d + docs/models/verification.md: + id: 6f78ad619fcc + last_write_checksum: sha1:3e4fb1666a64427beb9b1fa733b9f07db2cbc2f7 + pristine_git_object: bb6ebcc99d83896dafcbbb79a9753fe680a350ea + docs/models/verificationfeed.md: + id: a4aa7c3deecb + last_write_checksum: sha1:580ba1c3c691dd67cf8e9b4b92e3e5ea78529711 + pristine_git_object: 8b615651be6a3d83ef6476d6350a4ab14f5f6662 + docs/models/verificationmetadata.md: + id: 7c563995a09e + last_write_checksum: sha1:fefeb57f8390d15c84655a66e36c172828ccec56 + pristine_git_object: dc7eb46babf05127ecdc237a0eefcc334828a883 + docs/models/verifyrequest.md: + id: 125ae557feeb + last_write_checksum: sha1:e453252bf1e6073db8b5b181c961bb160d768fdd + pristine_git_object: a6f11ec43188eb67372972dbb50aa5252021c4e5 + docs/models/verifyrequestaction.md: + id: 27ae6bec5143 + last_write_checksum: sha1:0857e0d94ea445b78fcc9490e4a911bde61f570c + pristine_git_object: e711cbe91d212255db8e32d3fcb0f3260b42ca3f + docs/models/verifyrequestrequest.md: + id: 881201e9e321 + last_write_checksum: sha1:4a0de4594e64cfeb0c141ca242c3f8c26e028883 + pristine_git_object: 8f87704c8059174c4b82314e393da7476d80b6a1 + docs/models/viewerinfo.md: + id: ac723e0773ae + last_write_checksum: sha1:1124c51f4946d09c751638c54eba5c4d90dd9ee0 + pristine_git_object: 13f5dde99980decbd4182124f1f033f58308d933 + docs/models/warningtype.md: + id: 0b9df591f487 + last_write_checksum: sha1:d13bf7d08b648f318befe58fcedb3628001d67fb + pristine_git_object: 2935dbc78cc448dca3501e7c8b7ab16a414752f1 + docs/models/workflow.md: + id: a782201b7327 + last_write_checksum: sha1:2e8276e9bb71060d32adfe8cdfb0531e24695561 + pristine_git_object: 43bae12b66ac6f882ce7c52da816af9f57ceee33 + docs/models/workflowfeedbackinfo.md: + id: 948da0823637 + last_write_checksum: sha1:990a1ec15bbf0af52f024a36e2538ded62bc2adb + pristine_git_object: a89e9d79c08bbef75e9ce179b8b926e59ffbae0d + docs/models/workflowfeedbackinfosource.md: + id: 76d13d36f56c + last_write_checksum: sha1:dc0b4584f7a50f28ec32ad448e0200682982d67b + pristine_git_object: 57ce7f1c4b7bd8f2c4ee31b53037c41b077f463f + docs/models/workflowresult.md: + id: 8409c730a266 + last_write_checksum: sha1:1ad28bc9bfeeaaf43266e4ca8926bedd231c768f + pristine_git_object: 2dab93d0f6f61f18dc9786e86bdc26ec24988b5e + docs/models/writeactionparameter.md: + id: 4c371a3087e1 + last_write_checksum: sha1:66318af8e921bb82eb45309af28be1adc5b8e9ec + pristine_git_object: b39290561c61d2866b50a503ea54d05a57277a90 + docs/models/writeactionparametertype.md: + id: aff45ecb60ef + last_write_checksum: sha1:54da6bf2d72450ae22fb8886dbec8a7ca901559a + pristine_git_object: 50cd2a8911f81a07496e325aab0ea3f2cd698d5c + docs/models/writeactiontype.md: + id: eb923b8f9910 + 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:f78cc3314d4fdb3c52fcf5b49e01706bc2832bde + pristine_git_object: b929a12d5df1c8a99533448d6c5e6d60f4e17fc0 + docs/sdks/announcements/README.md: + id: 3d2e130a217c + last_write_checksum: sha1:ecfa655bb27dee6890656542cfafda0aa6ed1ab9 + pristine_git_object: 6ce0ff139c5632014bea9e058cd99976050e4b14 + docs/sdks/answers/README.md: + id: d1b7559999eb + last_write_checksum: sha1:9bb496400435a160bbef383369eb1c2ae233b671 + pristine_git_object: 85153af7ec594c2dbd1e4a8c2eba5ce713796265 + docs/sdks/authentication/README.md: + id: 45be241adfc3 + last_write_checksum: sha1:00dd796467da75767a02a401a28f0c4e282e0579 + pristine_git_object: d7fef01020971bbf42365f7218d9bb530f4347e1 + docs/sdks/chatsdk/README.md: + id: 83b4ee321663 + last_write_checksum: sha1:4e587ad3ecaec2f074df8232845407d4079aee74 + pristine_git_object: 27dea5744fd3191c52f0d5faee23ac6c8cf736ae + docs/sdks/clientactivity/README.md: + id: a309613986a5 + last_write_checksum: sha1:d9737458d891593ba2fb3372ab6e60ea728fe9a5 + pristine_git_object: 456e90e3a787c1e62f09a17d297f1cf756c94d49 + docs/sdks/clientagents/README.md: + id: 8e00e6d6b64e + last_write_checksum: sha1:f4fd02ccef64c791d216a40e1c9fcd4dfa43bd2e + pristine_git_object: 2856eeeb88599fe960b4060271977966c0650d39 + docs/sdks/clientauthentication/README.md: + id: 463bffe80b61 + last_write_checksum: sha1:24f8785b3ba9eae2d84617403789c00a250e2835 + pristine_git_object: b9a4856d52e9c48fb4917c0052bf86be2ad9cd0e + docs/sdks/clientchat/README.md: + id: baf998e3d238 + last_write_checksum: sha1:7d9f149eab77f7899dc1bd478066922f2cfe6ac3 + pristine_git_object: 09a859f98f62b2d16516f5792c5afc1ca60f9fe6 + docs/sdks/clientdocuments/README.md: + id: e0c074acef4e + last_write_checksum: sha1:ef34fa1517c866b9ae0fdb50847031421f26ea0b + pristine_git_object: 8b6d7b29eae189fd1b74792cbba6265840487b61 + docs/sdks/cliententities/README.md: + id: d087d30c9006 + last_write_checksum: sha1:c5955573d5570bc98bb911311860abf4c85d19ac + pristine_git_object: 0ac68e93afbd65e5cff4a3c8cd5a91527446a41c + docs/sdks/clientshortcuts/README.md: + id: d5a9d841b61c + last_write_checksum: sha1:e6bd4eb4d27ae7b07f9488113b782c4aa8fa40e7 + pristine_git_object: 9d7f63e9d3f13055deba1775689fa797701858b5 + docs/sdks/clienttools/README.md: + id: 6c303a9741bd + last_write_checksum: sha1:34a5cb54ce4f6836462bea95bd5a3ce3d8080395 + pristine_git_object: 5dd8efc1387c74693e62d8af1394cbc698785a15 + docs/sdks/clientverification/README.md: + id: e8d533f9d15b + last_write_checksum: sha1:7daee0f15f8ef38b45bf6209d24edf237a7ef281 + pristine_git_object: 63fa8d6cdd4a228402f5e6670422f8adf4613081 + docs/sdks/collections/README.md: + id: 7985e64efccf + last_write_checksum: sha1:cac778e2d5673e128cb98ec858b9403c2f073d3c + pristine_git_object: f311071e89056a0df703b15f5ebdd17de75e9488 + docs/sdks/custommetadata/README.md: + id: b95d224c9f1d + last_write_checksum: sha1:44527b6677330e2c517e290497b8dbe037826c83 + pristine_git_object: adac51700d9683a41dffb2f5c20ee18008a9e135 + docs/sdks/datasources/README.md: + id: 024d3ed36945 + last_write_checksum: sha1:b5a9941e97b277f44d9dadbc615fabe0a3ecd750 + pristine_git_object: 15b97d59f6166a84e986bbd7466e40c665612424 + docs/sdks/entities/README.md: + id: a140ac5181b9 + last_write_checksum: sha1:b52a97b059e94d3f522a429c9d64ce0a2f7d8b64 + pristine_git_object: dce02213bdb60ae95a2a5c845ac2e0f7952367f6 + docs/sdks/governance/README.md: + id: 87817eb7bf48 + last_write_checksum: sha1:43e1f885a19db073f545980c51b23c82d3ec0389 + pristine_git_object: 8708b51c2c40d9f2d5556b71b2d5af8ff6c3f463 + docs/sdks/indexingauthentication/README.md: + id: 3d8b5fccff24 + last_write_checksum: sha1:db7a93bc9a6bad6ef56063825b85e78a032df1f5 + pristine_git_object: 4dd9ebe7439af304d7e2b49caec3166c853591f2 + docs/sdks/indexingdatasource/README.md: + 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:497e12866259c8c648985afd3f610d0ec1cf53ac + pristine_git_object: 184a39035ab589e6cecab631f18eca2521a5fd47 + docs/sdks/indexingpermissions/README.md: + id: f13d7f2a062c + last_write_checksum: sha1:06ef4e2ff054e62867b2c6add2e90abcc7d0ea5e + pristine_git_object: a2231eb1cba2a1753012ea00667e6a51601b888a + docs/sdks/indexingshortcuts/README.md: + id: 5cf29bd168af + last_write_checksum: sha1:a5e8c40acb0c02d2f37e2595aab1170492a126bf + pristine_git_object: 6d8cda7ab4483ef459462bbd02a38ff90befddd9 + docs/sdks/insights/README.md: + id: cc2be3db9032 + last_write_checksum: sha1:b728f8f8b440f3d0f096af71b3e0c1b8066e0336 + pristine_git_object: 9dbe20451c96b5bd47aaf8740af5850fa0368286 + docs/sdks/messages/README.md: + id: 3f1f6d38fc33 + last_write_checksum: sha1:6d327bcc514b9cc83209ec389e0f034ba9b9ebe8 + pristine_git_object: 0aa193b38d7d95cd3301469f9a6ad1260a1b1b51 + docs/sdks/people/README.md: + id: ff7b3ee21c2b + last_write_checksum: sha1:044b490ba98c61f47dd97cc055d0347449398fef + pristine_git_object: 7976d51e738b54167c1233ddc7a20585b3d89b8d + docs/sdks/pins/README.md: + id: e887aca9ba0f + last_write_checksum: sha1:c11aea840d911395a606a528575fe224c8a6b86a + pristine_git_object: 3a4952c34995f080649e326e0deca557b6b9fa9f + docs/sdks/policies/README.md: + id: 636269b04e57 + last_write_checksum: sha1:aba178ecf4b69bad99532d1b7493d64161109cfc + pristine_git_object: ade2483c76b4e6c0066719a29467e2ce84457299 + docs/sdks/reports/README.md: + id: 66bfd66f1efc + last_write_checksum: sha1:36b7f3df686ebb55fea4c9b07fdece5d99cefc57 + pristine_git_object: 5dd26e03b79389a3e71e90f9a3ce29b7fa384dd9 + docs/sdks/search/README.md: + id: 5c534716244c + last_write_checksum: sha1:b26db4e2c274af856d3c7c601edabd6d61b697e3 + pristine_git_object: 7e640dd65cd3039f7f10640480b9f23097cf13b0 + docs/sdks/tools/README.md: + id: 044286549bac + last_write_checksum: sha1:3bed19adb923aaf72f16e374527211f38a93fc74 + pristine_git_object: efef9a0f224746f0adf08ffa9f6cd568baef9114 + docs/sdks/troubleshooting/README.md: + id: 0c78de25ee92 + last_write_checksum: sha1:7f0b57600ca78c3071f0f542aa8229d37c30f4f5 + pristine_git_object: 528524fcc5c80d5bfe863fbc13fef117f448146e + docs/sdks/visibilityoverrides/README.md: + id: c7d003d6a68f + last_write_checksum: sha1:738c52c3b0964cfb441542710e10c51ca226f177 + pristine_git_object: 049688db4fc3ea7f96261f459b61d5620bb16bbe + poetry.toml: + id: a81ade82122a + last_write_checksum: sha1:2242305e29dc6921bdf5b200aea5d4bf67830230 + pristine_git_object: cd3492ac9dc870fdcf23dbd94fd1d40cc753cc8e + py.typed: + id: 258c3ed47ae4 + last_write_checksum: sha1:8efc425ffe830805ffcc0f3055871bdcdc542c60 + pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544 + pylintrc: + id: 7ce8b9f946e6 + last_write_checksum: sha1:ee07364348af69926e8abf84cae493c8d329e78c + pristine_git_object: 79e388be87446ab6a4064b372bad0e8376d0cb5e + pyproject.toml: + id: 5d07e7d72637 + last_write_checksum: sha1:a3a7799c7cc183344491cfa36f7a0b3c7aba85ff + pristine_git_object: f34dd6a5342bf6af6b1000135c5f479020c0c39b + scripts/prepare_readme.py: + id: e0c5957a6035 + last_write_checksum: sha1:c2c83f71dea61eb50c9e05da83b16d18b4da8794 + pristine_git_object: ed1ce40552f9ccc0a4c018083f8f23e9297ea4c2 + scripts/publish.sh: + id: fe273b08f514 + last_write_checksum: sha1:b31bafc19c15ab5ea925fdf8d5d4adce2b115a63 + pristine_git_object: 2a3ead70ccc6228cbae1c5c8a319b1399f3804ea + src/glean/api_client/__init__.py: + id: 707b9a6600cc + last_write_checksum: sha1:da077c0bdfcef64a4a5aea91a17292f72fa2b088 + pristine_git_object: 833c68cd526fe34aab2b7e7c45f974f7f4b9e120 + src/glean/api_client/_hooks/__init__.py: + id: 38ceb5b0ec98 + last_write_checksum: sha1:e3111289afd28ad557c21d9e2f918caabfb7037d + pristine_git_object: 2ee66cdd592fe41731c24ddd407c8ca31c50aec1 + src/glean/api_client/_hooks/sdkhooks.py: + id: ea0c4bd9c2f2 + last_write_checksum: sha1:b41e6ceb7ede4c9d1b1bbea3d204161321cd883b + pristine_git_object: 198de6078dd08c0ed6216d6582a8f45c4e547404 + src/glean/api_client/_hooks/types.py: + id: d927c12282ca + last_write_checksum: sha1:dc3d5c4202e6b51da6d06c1f817a5eb443247900 + pristine_git_object: 58c4d70ac1797b86ff5c4237cafbc344c42d8f64 + src/glean/api_client/_version.py: + id: 0ce22b26136b + last_write_checksum: sha1:ea55ade5532c483da10f1cfec9b6ceccde7522d6 + pristine_git_object: 8d9da6a0d3001f2f5448cc7fb89443c4d02ba5ad + src/glean/api_client/agents.py: + id: b925701a9217 + last_write_checksum: sha1:c90940a6d28847540858c932148d29ef50cac7ec + pristine_git_object: 99f5f6604807830add51abbd79fa0fc82572a11c + src/glean/api_client/announcements.py: + id: 452f3d593912 + last_write_checksum: sha1:0767c840c29bba9e3c95bbbd714df374f2907b00 + pristine_git_object: 33123a0a80e55c210fcfb07e47dc9c7cac7e15d9 + src/glean/api_client/answers.py: + id: 184a18f8be7e + last_write_checksum: sha1:b839b0e5abf3b11790a98fe100f84f5a3b3254e9 + pristine_git_object: 0757b71f8300ccbd72db4c292ffdf03b03f93231 + src/glean/api_client/authentication.py: + id: 84ebb3cfd339 + last_write_checksum: sha1:9274054daf1c09ba374849588b20349b079088ea + pristine_git_object: 092f1fb0bfa6b46ccfee4a70a22ee48b74278773 + src/glean/api_client/basesdk.py: + id: a9eeecf7fa49 + last_write_checksum: sha1:fb3d2fafa4944b79b38e8ba30e92e0d42079688c + pristine_git_object: bf7b1b3b25ce6530403b0dd9f60599d236c780ce + src/glean/api_client/chat_sdk.py: + id: f2f30e13ca42 + last_write_checksum: sha1:aba2731380e3d68d792cc2f4fd42b21f5bb76a4f + pristine_git_object: 11e082d61440f5d917e177ba8c578126a3ba1a5b + src/glean/api_client/client.py: + id: c0c188098f10 + last_write_checksum: sha1:86fca49d07766b3c5e387256a0a308044632ee77 + pristine_git_object: 122be2b984e54e47078c9b37e5722f1aa78b6e28 + src/glean/api_client/client_activity.py: + id: 8227dd95d034 + last_write_checksum: sha1:7c9fa340b6f5fde6a298fe96f5631cf0b65c7cf0 + pristine_git_object: 0fc1ce18d5ce25d5a371abf17dc974932bb603a8 + src/glean/api_client/client_agents.py: + id: 61b53ccd2b3b + last_write_checksum: sha1:6d12ed745ef6012f59c318195e84c3099e96b081 + pristine_git_object: 6e1ff0f49e8924942f90c22977e38af3d6fb865d + src/glean/api_client/client_authentication.py: + id: 0b237b7c1b11 + last_write_checksum: sha1:534efe91d637ae41aa5791b672b2ef91a3fbb81b + pristine_git_object: b2e67417be8b3c4927603fb275831447988e9de6 + src/glean/api_client/client_chat.py: + id: 42cbb9b5acf3 + last_write_checksum: sha1:75b70a975b72b0a748a33fbea4c2e951c89265ca + pristine_git_object: f1e89630d067883690a6fe35687b58a8d2db627e + src/glean/api_client/client_documents.py: + id: dac599de515c + last_write_checksum: sha1:7a41dae11c9e0c58be6e2e8fe07be6f78d8f24bb + pristine_git_object: c270bf21a93e6b5f3befa10e8975635f18ae2fe9 + src/glean/api_client/client_entities.py: + id: 5a17ae87ac6c + last_write_checksum: sha1:ca58f63deb474cbf31b3da3229e5cc6842631c21 + pristine_git_object: 67fbc0db4c5234d05613f9f37fcf7c382316ecc1 + src/glean/api_client/client_governance.py: + id: 106860f10ce0 + last_write_checksum: sha1:ebe769873505002b9f00342174c7fd2508af52b6 + pristine_git_object: 6011411d2ab08645047358a30c0a87aec61555bc + src/glean/api_client/client_shortcuts.py: + id: 5ef5dacbcba9 + last_write_checksum: sha1:6bfa420d42f76ed01b60f93abf77ef404d8fa631 + pristine_git_object: a4db274d2b324b9b24a9aa2e5673b229f44d45f1 + src/glean/api_client/client_tools.py: + id: df600583b558 + last_write_checksum: sha1:5309a9ee24043c49e41c757f575c3d2af899dca3 + pristine_git_object: 14d9f68cc6a74ea72988f7d041dfeb4bffa61921 + src/glean/api_client/client_verification.py: + id: 211199afa506 + last_write_checksum: sha1:468067c52776c584837bccef6db419ea5b339d79 + pristine_git_object: 69a3abb71a49fc4cbdb64523f90877d308d1f886 + src/glean/api_client/collections.py: + id: df34f0fd10dd + last_write_checksum: sha1:f974525cf6b9db9f6be2085224b34653adb9894a + pristine_git_object: f93e472ce543b8e4e46e53c013c680b4f0f031ed + src/glean/api_client/custommetadata.py: + id: d5621a2ad56e + last_write_checksum: sha1:f50c4d35b769079359d852c2f31bcf7237422e38 + pristine_git_object: da51ad9d6751b4fc689538f37db09201189ccb6d + src/glean/api_client/data.py: + id: 21cf13413429 + last_write_checksum: sha1:f03b31e07a912efca080d9298fbb45e16590702c + pristine_git_object: 756e122c3e258805290344aa6d978b351bcbfbf5 + src/glean/api_client/datasources.py: + id: 22aad0060f38 + last_write_checksum: sha1:a0b330a447ad966cada161f386964063e9fbf129 + pristine_git_object: e4eba5ec25fc89a9dc39f071cd304ae81c82b503 + src/glean/api_client/entities.py: + id: 38ebbab2f8a0 + last_write_checksum: sha1:bb60eaffdd06d905103dda28c4cf0d6265ca0a42 + pristine_git_object: 6f3f666e5284eb947398edaa84f17b53e1782fc7 + src/glean/api_client/errors/__init__.py: + id: 88bbd5450191 + last_write_checksum: sha1:d5663156287bccab87e321f0a3b9b1ae802adaa9 + pristine_git_object: 2a3a78db7ee32645930973d16d09fa5aa4fc1806 + src/glean/api_client/errors/collectionerror.py: + id: c0932ce3ae9f + last_write_checksum: sha1:0b5f08e5372726fe70cd721719c386d0e21d0dcc + pristine_git_object: aa03a80dd8295663dfa6b12558de485cd17f3c1d + src/glean/api_client/errors/errorinforesponse.py: + id: dcd1a5746124 + last_write_checksum: sha1:1693e1f2dc88b890ee1d903d00290143879837de + pristine_git_object: 22c95a5465bbfd37ccfcd393aae7ce777da7d5d6 + 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:d9db844614059154744d99927a7468306de298c2 + pristine_git_object: 754c85de70a38e982ea6368b9c4f922883a9a040 + src/glean/api_client/errors/gleanerror.py: + id: 9f1d85652f59 + last_write_checksum: sha1:a7a2bc1335123c6bd8c9f945a9c653f061e14167 + pristine_git_object: ace7a9436ec232985dc487af1bb5a47ac2ea0a08 + src/glean/api_client/errors/no_response_error.py: + id: 3983f72729a9 + last_write_checksum: sha1:7f326424a7d5ae1bcd5c89a0d6b3dbda9138942f + pristine_git_object: 1deab64bc43e1e65bf3c412d326a4032ce342366 + src/glean/api_client/errors/responsevalidationerror.py: + id: 70cd17f93ab7 + last_write_checksum: sha1:56b679b1845b634fad48074398e87e164af0fd70 + pristine_git_object: 3e029c12197bb87be06e01323afbc495968a6eaa + src/glean/api_client/governance.py: + id: e30db8f06e58 + last_write_checksum: sha1:0104a09486062677211230ce8fe2c3dab32a1da1 + pristine_git_object: fd67e05d451590fe3337ad8c8728141035d62294 + src/glean/api_client/governance_documents.py: + id: e5ab033181fd + last_write_checksum: sha1:761beada29ea72f570c55e6377706671d3b8fcbd + pristine_git_object: 58c8f7bbd7e92921cafcfa5b4370650bc668ee40 + src/glean/api_client/httpclient.py: + id: 572c488b6290 + last_write_checksum: sha1:5e55338d6ee9f01ab648cad4380201a8a3da7dd7 + pristine_git_object: 89560b566073785535643e694c112bedbd3db13d + src/glean/api_client/indexing.py: + id: 46c62151847b + last_write_checksum: sha1:1e946a287c665af92c1141f8ef5a1db17e8452d7 + pristine_git_object: e4cc2c5282fc5c96a34819cab6309b69b709c432 + src/glean/api_client/indexing_authentication.py: + id: ab6b40ef5aa5 + last_write_checksum: sha1:bac27b292440f3bba94ba23f8932220f7f26adb2 + pristine_git_object: 2195782fb2a27120bae3d0f3e2d3458d1cf80658 + src/glean/api_client/indexing_datasource.py: + id: 97727f0727c1 + last_write_checksum: sha1:e0e70e97cfb18e4cb928c3ba7bc4c05a77d93a17 + pristine_git_object: 0bb158571a104fc4434c1e37680aeb6b7c361e38 + src/glean/api_client/indexing_datasources.py: + id: 9520e2db8686 + last_write_checksum: sha1:3ac36de64f6216aae0dd69f046bb235dc8bbb8b4 + pristine_git_object: b8b091e823c403c72782ec71db1015aaa6e1cfd9 + src/glean/api_client/indexing_documents.py: + id: b5c2b64ee1fa + last_write_checksum: sha1:488660c9bc6160d20012c5e5ab7904c56c276b34 + pristine_git_object: 9817af75d822b6cc1e9eab2ba736819507b0a887 + src/glean/api_client/indexing_permissions.py: + id: 86fd3f14396c + last_write_checksum: sha1:3e0cb356c1ecc74b3c4fe356b81a3f9e71abe602 + pristine_git_object: c41d5c914dde853dc5403675c3fe0a6108c8db21 + src/glean/api_client/indexing_shortcuts.py: + id: e833440cda56 + last_write_checksum: sha1:0dda65c83c173524f8ab4574b8c2b17c3ec884f1 + pristine_git_object: bdfdec85c7d5d5b2cd2cbd09fe5578a78b83c6aa + src/glean/api_client/insights.py: + id: 4c5708d15234 + last_write_checksum: sha1:28398156138e38f0cb8d185bacd54b5aa2cc3ce2 + pristine_git_object: 388b8a37421a1f9acc18012aa8f65b8b94051134 + src/glean/api_client/messages.py: + id: 3751db64257b + last_write_checksum: sha1:f6c67c8ec112c9dbebb9e053c0e05868bbde14fa + pristine_git_object: fd580d9a1b7770b488fc424b5f8735d8b9bf681e + src/glean/api_client/models/__init__.py: + id: d5f6ea5efcbe + last_write_checksum: sha1:5d16cf04d5ea346a12e547e4bfb5ec60f2a656a9 + pristine_git_object: 101111712c9ec0750a3b5599790b4acbf5c9b0e7 + src/glean/api_client/models/actionauthtype.py: + id: c7402f35092d + last_write_checksum: sha1:7aaa5d1c11b105d0d7265e2a83cb005aafa89645 + pristine_git_object: 6a60ecd07772abc6b7ca0ffe4759f00d8765b1d0 + src/glean/api_client/models/actionpackauthstatus.py: + id: e4555a085d90 + last_write_checksum: sha1:e9178600a5338efa0366c75b30c23d405eb05320 + pristine_git_object: c2507aaaaf94384113f6431906d7c0ce90aa9110 + src/glean/api_client/models/actionpackauthstatusresponse.py: + id: ebe853584e07 + last_write_checksum: sha1:8a47e278fb43b3b87e16b7c2550dd8d6d518c365 + pristine_git_object: 512b9f6f3489b6a7a6fd936e145beb7fead6a840 + src/glean/api_client/models/actionsummary.py: + id: 34ccdf9f1526 + 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:8ca663ccf2ef6fa2b20b1983ac1bd71799d6c594 + pristine_git_object: 4f6bc8f3f3dcc86be5395566c7363e7951ef273e + src/glean/api_client/models/activityeventparams.py: + id: f6c9399e1ae1 + last_write_checksum: sha1:46cc6bcdfe08d88c42c885dec74b11fb9b0c0ab7 + pristine_git_object: b084d4af9c37f9360038acba8620f6a928c8b3e0 + src/glean/api_client/models/addcollectionitemserror.py: + id: 331e64597a08 + last_write_checksum: sha1:d0b29d465ddf93d455e701a30f72ff9ae4d5b46e + pristine_git_object: 8f738ea36bf445ab6ccd08d111e6d64804c63bfe + src/glean/api_client/models/addcollectionitemsop.py: + id: b74e2acd56ce + last_write_checksum: sha1:9fcffec0959386f010452d2f7b086a130b6ca0fd + pristine_git_object: 2cd893c637bb8b92fe77b5a2f20c0e9a08cd4f0f + src/glean/api_client/models/addcollectionitemsrequest.py: + id: c17a58ee4169 + last_write_checksum: sha1:39bdc6f03c053fb55adcbcb2209d8e2ecc9a4988 + pristine_git_object: b440c09be3cde09466a4d70231a5552a056aec44 + src/glean/api_client/models/addcollectionitemsresponse.py: + id: 692242e4f85c + last_write_checksum: sha1:ffaa821257699b0ba311f1bbf832eaeb8d2a77a9 + pristine_git_object: 80294bce5a22bd4bde89abc607fdd453e1c23541 + src/glean/api_client/models/additionalfielddefinition.py: + id: bbb5186e656e + last_write_checksum: sha1:62f14ca1273b7c784c38c46f853862d81a298e3d + pristine_git_object: 75e99935bb393ea10f44d384ff629e6445dae2f9 + src/glean/api_client/models/addverificationreminderop.py: + id: 333d8f0e3e72 + last_write_checksum: sha1:3385d15b62664b2816a9c1671158de067dff21df + pristine_git_object: b6b9c1a245a6092084d14c4842cfde2696b8c477 + src/glean/api_client/models/adminsearchop.py: + id: 3008f93ed424 + last_write_checksum: sha1:1320bfee596c5f9ba009617da324a6b32c51883c + pristine_git_object: 6578e5e3116dec2bf0f6d7a138668e614fbfa4e9 + src/glean/api_client/models/agent.py: + id: f8192dae32b0 + last_write_checksum: sha1:3ed08dc2b92d12b407c7e9f7d4ecb5308a6ed3f9 + pristine_git_object: ce46c0888ed7f928eacc8c3f6ea4d8bc03521a54 + src/glean/api_client/models/agentconfig.py: + id: 6bc960f78847 + last_write_checksum: sha1:58b2ce5dbc8527ddd55997535408fd1100780b2b + pristine_git_object: 2a7bb3d113f4379cc94a8299f64b98ac3b52c90c + src/glean/api_client/models/agentexecutionstatus.py: + id: ab4f2c2f8eed + last_write_checksum: sha1:d3bb768f118d7474a4fae0a7685922c6405d0f90 + pristine_git_object: b93cae26675bab7b692af5f97f005040faff7958 + src/glean/api_client/models/agentrun.py: + id: b808ffdaa4d9 + last_write_checksum: sha1:152bc21e131ae652cb409cb64934d30c82d538dc + pristine_git_object: 0439dfdf5688b4cadb00dbbf24a97436e55530c1 + src/glean/api_client/models/agentruncreate.py: + id: e987c7a76285 + last_write_checksum: sha1:463bed5e1b5259ba5ad2521a1c022a7cc778d6b6 + pristine_git_object: 407bbcb8c3da61750d7b2de36281851dcf836595 + src/glean/api_client/models/agentrunwaitresponse.py: + id: 063b87daf535 + last_write_checksum: sha1:6a4a302684707e649a91c32c45192b6d2e06650e + pristine_git_object: e09e51eb6c09dbb2493276a6e99dbfd43503f18d + src/glean/api_client/models/agentschemas.py: + id: db15c1840e94 + last_write_checksum: sha1:d401bc6e8c268f7181850a0eeacce99c32dfa07f + pristine_git_object: f69f31564d278cd6d06e5ed963930d0ff6889988 + src/glean/api_client/models/agentsinsightsv2request.py: + id: 754887d301a3 + last_write_checksum: sha1:e147acd1ee591ad2cf0f465ca1ea9d7a51f95ec4 + pristine_git_object: 13a2eea4ef93e17d15c5544eb72bf137563dd817 + src/glean/api_client/models/agentsinsightsv2response.py: + id: 2bb9ea2bc70e + last_write_checksum: sha1:611e126409f9670e1c5598a9c4e7b33b02a37ec3 + pristine_git_object: ae50b9b4074f162313733eb3893d4d1f2b7adfe2 + src/glean/api_client/models/agentstimesavedinsight.py: + id: a0f77b3b907e + last_write_checksum: sha1:ade060149f91b527306789ab799f7aa5174416f5 + pristine_git_object: 25a613c6e515b61c98f37ae345c340b725593aed + src/glean/api_client/models/agentsusagebydepartmentinsight.py: + id: 50317bf09cb6 + last_write_checksum: sha1:6ee545d0cdd6246b7b743870984e71276ab7dfd6 + pristine_git_object: bcfd9c3071b5b45fcc0e64f404eb8e8f83e51cbe + src/glean/api_client/models/agentusecaseinsight.py: + id: 80df217107c6 + last_write_checksum: sha1:3885677fc8a2c8ca926e9186337a3265d0d99afc + pristine_git_object: 4841a4ed05f1d52a81306cec477439e716591ca8 + src/glean/api_client/models/agentusersinsight.py: + id: f40366a65563 + last_write_checksum: sha1:8190b560df9c90f0728f4d752c68eea4c1834399 + pristine_git_object: 13ed679e9400d9033694cfe6c511fb29cbb6932c + src/glean/api_client/models/allowlistoptions.py: + id: 956eeade455c + last_write_checksum: sha1:a561950c840b4f1e53361dd3bea159fc618f659b + pristine_git_object: 123b345c647c7b305de2915ba7534f9c550eadc5 + src/glean/api_client/models/announcement.py: + id: acb78a04f33a + last_write_checksum: sha1:1ba73ff9151920215ac9c19081b549ab7b32188f + pristine_git_object: 30144805409c3de09f3759b757e33ac171b0930e + src/glean/api_client/models/anonymousevent.py: + id: 6b288f5ca26b + last_write_checksum: sha1:d7e0c848973745ff65222d74f7c2f278bdada0cb + pristine_git_object: 96c2e34b459baaef343e118b8f4177ceb5532b99 + src/glean/api_client/models/answer.py: + id: f7b69d1846ba + last_write_checksum: sha1:9a375e318477b7796c5750d27d00b21e063f9071 + pristine_git_object: c0835860c49dc37dd0356b0d0cd7a92b1318a085 + src/glean/api_client/models/answercreationdata.py: + id: 85c82aca1720 + last_write_checksum: sha1:9c49bd902b00bfe8f10ffb92e71f89db99e5d89e + pristine_git_object: 2e5aee70dae8c703444e5665f4518516ce3d9edb + src/glean/api_client/models/answerlike.py: + id: 9425fe88486f + 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:48ad2f8af38bda7503bb566d6fc3e00408faf618 + pristine_git_object: 1e3f2a0c795ec4603981101f7f21cd69c7220e1d + src/glean/api_client/models/appresult.py: + id: 90f48896fb46 + last_write_checksum: sha1:3c4b307b7a965ff51f2f8b9c0d8d558563b397b7 + pristine_git_object: 2105b7fe8cacbb74eab2c4d13bee7fe20af2c855 + src/glean/api_client/models/assistantinsightsresponse.py: + id: ce7387f28d84 + last_write_checksum: sha1:9b1c7809e56d14ec0441969ed7a7f2d39aa8d1bb + pristine_git_object: 47e9bf2fa2edbe605d30359bca3dbfebda8ed27b + src/glean/api_client/models/authconfig.py: + id: 9e88a246ee36 + last_write_checksum: sha1:e25f69a5ddae03308bdbc2391ce3449de236b4ed + pristine_git_object: f01e07f8513fdb529c333b6bccf6d5114ee80cc0 + src/glean/api_client/models/authorizeactionpackop.py: + id: 8cdd6426922e + last_write_checksum: sha1:318527d68494b4fc6c65d9235486feb54e8bec52 + pristine_git_object: fb2d32056f6bd88145e618c8b1f985e54dd14f7d + src/glean/api_client/models/authorizeactionpackrequest.py: + id: 95453cd9cd22 + last_write_checksum: sha1:f6097ead01c6a2b1e29c91e2243e33ebf1b3acb4 + pristine_git_object: 92a3a3f571f8030636b522801446e81fcdc132f2 + src/glean/api_client/models/authorizeactionpackresponse.py: + id: e685f2ce2a71 + last_write_checksum: sha1:d75d59513a8b813a24ce41889f62390633bfba8e + pristine_git_object: 7d8a75da5e934e205215da3df9dff20a224c8a82 + src/glean/api_client/models/authstatus.py: + id: 75167e3b3ad0 + last_write_checksum: sha1:4cdc7988894d6c50dbc42d0613bc22dbe6a29666 + pristine_git_object: ea66e4544c221d502b224d8c6479cc5e3adb9872 + src/glean/api_client/models/authtoken.py: + id: 32cff6c3af95 + last_write_checksum: sha1:0ecd2db30ec7f1e00e4809b57d3300e82c90438a + pristine_git_object: 7551c7f655fadd39b5469074d0bc14b1a5bf7a01 + src/glean/api_client/models/autocompleteop.py: + id: 64525dda05ca + last_write_checksum: sha1:712542e009a8dfae0df4658487b58eac2c799238 + pristine_git_object: 97d2bf4e337f24d11d53d15916bd5c59b9942b66 + src/glean/api_client/models/autocompleterequest.py: + id: 23b29c9e7dcf + last_write_checksum: sha1:6ec652c62c839121a1cd8cb85ce40fd512ad9005 + pristine_git_object: c57ae464c54fd02c6be6ef63489be48df01ef855 + src/glean/api_client/models/autocompleteresponse.py: + id: 860297c9ef84 + last_write_checksum: sha1:7972aeb2f5bd1c56df96bbd708088add6d5f04fd + pristine_git_object: cca14924a08bed4d2ca091fcbd03ce88d602fae7 + src/glean/api_client/models/autocompleteresult.py: + id: e88abde43844 + last_write_checksum: sha1:6dc42389dd4578ac166fb84fc85143d71c940c52 + pristine_git_object: 7b4d801078a8deb7bd0ebc803d0e2a32372888ed + src/glean/api_client/models/autocompleteresultgroup.py: + id: 10a91a57b6a0 + last_write_checksum: sha1:018ee99331256ffcb4b17c746bc880f0d289bdf5 + pristine_git_object: 09788d2bc5092a529eac8404546d46baf43189ec + src/glean/api_client/models/badge.py: + id: 81bb71933ec7 + last_write_checksum: sha1:102e5350c47971627eab93b6839c66b959a1dc7c + pristine_git_object: d5675152919e152bd5aaec27e96f623722de3da0 + src/glean/api_client/models/bulkindexdocumentsrequest.py: + id: 5c7c3ed649f7 + last_write_checksum: sha1:1bafb9a88332bf0f11978fa7e65b4c32e1769e45 + pristine_git_object: db14fe54b9d48ef247e86f79a05b483924f89007 + src/glean/api_client/models/bulkindexemployeesrequest.py: + id: 8c5302b89bc9 + last_write_checksum: sha1:83a188739492734fc0df01b9e00238825cb452e7 + pristine_git_object: 43014e311dab71ae1067e8de7ba83d161670d02b + src/glean/api_client/models/bulkindexgroupsrequest.py: + id: 5a112a41efa1 + last_write_checksum: sha1:679a7ee4740eea591466c0a6e1a407614988afa8 + pristine_git_object: 99f12d8b8314866e18dc08f7332baa43ac88c2ce + src/glean/api_client/models/bulkindexmembershipsrequest.py: + id: dd713fbaef52 + last_write_checksum: sha1:53f4bfe3b8aebdf2c4bd03b13c4c9e24ef2507ae + pristine_git_object: 81740610a725a531e9b2f956a02457299b7cb7fe + src/glean/api_client/models/bulkindexshortcutsrequest.py: + id: 1bb21d370a7c + last_write_checksum: sha1:65d752cc0af955d44cd26281c6bf09ab5abdbd84 + pristine_git_object: 3aae4c0386d42c07cfe1c538e6eb3867456b33f9 + src/glean/api_client/models/bulkindexteamsrequest.py: + id: 663f4c5a52ca + last_write_checksum: sha1:d98f49c6a7e9f6ebe150a5d31ce71b498e871925 + pristine_git_object: 0fd38bfa3271f6c478078e2d44192b1442dc2766 + src/glean/api_client/models/bulkindexusersrequest.py: + id: 25684d0e6ae6 + last_write_checksum: sha1:f3cf6fbaab6f08e3b63f7442001bd56e3293f6e1 + pristine_git_object: bfbff92f09bf17a68f920d2c17ed2891ce33536b + src/glean/api_client/models/bulkuploadhistoryevent.py: + id: e0fc56b32d01 + last_write_checksum: sha1:ede0ec6c53bb1b18e920fa8de1fffdcb19476bf4 + pristine_git_object: b1daac94dcc8d49e2d6f0782f7e9963e3c2e0ad1 + src/glean/api_client/models/calendarattendee.py: + id: f061e829600d + last_write_checksum: sha1:6fb65213e2d42e6e76c67862f3ca52d3af73e6c7 + pristine_git_object: bc67f962fe6fd6e4bf605922ddac1b85a14d775a + src/glean/api_client/models/calendarattendees.py: + id: dd3d8d18619f + last_write_checksum: sha1:164b0511757d1c19d472b65e3d1d513091d09781 + pristine_git_object: 40d5ce80074cfd76645b910df1f5fdc0c0014405 + src/glean/api_client/models/calendarevent.py: + id: 1b4d4993373e + last_write_checksum: sha1:1a2fd8d18b4e5b73dabfb0e91a895ababb232644 + pristine_git_object: c954de14ea1cf3d55b4f0c647efab056a8df3d79 + src/glean/api_client/models/canonicalizingregextype.py: + id: b2cd5b9de633 + last_write_checksum: sha1:63eb44ad7f15925c9d47460f997a2ec8271d7a88 + pristine_git_object: 33218a642269f788bc33a1c1347b2f094f02e61c + src/glean/api_client/models/channelinviteinfo.py: + id: 71173b2b0492 + last_write_checksum: sha1:b3d6d14d7f1ff53a4fa61bbba741d30b7dabfa4f + pristine_git_object: a97c2ccda77238b4eb4198887e879a4505e94171 + src/glean/api_client/models/chat.py: + id: 5566eef6a9a3 + last_write_checksum: sha1:c3c1a2655b64e0203c0ef2d11204be23a2f5ee81 + pristine_git_object: 2c89193d682e1258a9d5e072c05546b30d21c66e + src/glean/api_client/models/chatfile.py: + id: 58a4c45c2027 + last_write_checksum: sha1:3c40dc0bc96e493132f0b40ca73a10e7bd1a53e4 + pristine_git_object: cf7a5a7ab3f014d3a292949f84dee01b17f0e36e + src/glean/api_client/models/chatfilefailurereason.py: + id: c60997a33e36 + last_write_checksum: sha1:5f85f87d571be1ed3f67e3563720fa1e02e2ef1e + pristine_git_object: cb81e15e55a5889f6503eefe8103c320df460e0a + src/glean/api_client/models/chatfilemetadata.py: + id: b8648f87910e + last_write_checksum: sha1:ba4dff8262465c5c878c12a84f82829c64cd0618 + pristine_git_object: b4cb6dc4f77e767d75cc0c4ce8402236536907c6 + src/glean/api_client/models/chatfilestatus.py: + id: 0e6c1c7a372c + last_write_checksum: sha1:2e48fd50170faf7835ed7ab1a1609cd8cf69f0d6 + pristine_git_object: 8ae7bacc6529f41eb3aa272c575ca1553f481040 + src/glean/api_client/models/chatmessage.py: + id: d1d93cc94501 + last_write_checksum: sha1:5b0d3c530b2c6c9f34e4f54c2b670b85abed7627 + pristine_git_object: 5c636cbb81c9c203f4b12047eec4d7c54fe8e6f2 + src/glean/api_client/models/chatmessagecitation.py: + id: dae0d568e81c + last_write_checksum: sha1:a785f5a671ee22a96be5feaf53f745ec571e3415 + pristine_git_object: e1e0b0b463b7dfdfeb2bd765cd67d0b57ea7caf8 + src/glean/api_client/models/chatmessagefragment.py: + id: 86344b2c1c3d + last_write_checksum: sha1:2392b86cce1778d331813a1355430f2665ab9ab2 + pristine_git_object: a7d3bf333c791320d449d7b49eaa850a0134aade + src/glean/api_client/models/chatmetadata.py: + id: 0469e4eebd69 + last_write_checksum: sha1:6665183f9ae42b7258ed3b47d8bedbad19c5c7f7 + pristine_git_object: 81530650eaea827b2f252692a69160808e3b2143 + src/glean/api_client/models/chatmetadataresult.py: + id: 560168f894a8 + last_write_checksum: sha1:199c99f194397c58aa9f615198e6289a11326cc6 + pristine_git_object: 53e0ef9787b0ea167b78aceb773fef1b9d28882b + src/glean/api_client/models/chatop.py: + id: 324d679cb5db + last_write_checksum: sha1:1c73e74f9797932c4474c5459aa28694a997c0c0 + pristine_git_object: d14b8817de80260f39a0c79a07e5cd806c02e179 + src/glean/api_client/models/chatrequest.py: + id: df889fc72055 + last_write_checksum: sha1:1789889c241b2613c24b26d7966e1182210652ae + pristine_git_object: ca0d3695d12775e30120b5f1b6a69167c4ee7bb9 + src/glean/api_client/models/chatresponse.py: + id: 9ae42b3bd99f + last_write_checksum: sha1:b45cb5611c3f2ae0d38933b9bfb1be1902a65b99 + pristine_git_object: aa3afabf04c8187ea2bd5b5e98b03acb2f1278aa + src/glean/api_client/models/chatrestrictionfilters.py: + id: 634c14f688c1 + last_write_checksum: sha1:5a289b25d5437cee31503eb48db72b6bcf4c5d37 + pristine_git_object: 51db943bb852f5bbd6dad0212aa87ee03e44e830 + src/glean/api_client/models/chatresult.py: + id: f449bc617fb6 + last_write_checksum: sha1:b0cd2f69fd271a5993007c401324af975310ac9f + pristine_git_object: 8058b2bbcadc2eec393752b623d65d41487f40b9 + src/glean/api_client/models/chatstreamop.py: + id: efb7f50ff6d0 + last_write_checksum: sha1:b81b04aa413db5f339f318e85bb57ff7b6883bb1 + pristine_git_object: 6ce3ce9bca35b6fee469e40b1b99a1e8a54fa733 + src/glean/api_client/models/chatsuggestion.py: + id: d1672ba5a41f + last_write_checksum: sha1:86ffbd3413a5d8ed6b631d10d8f888f617b99ac9 + pristine_git_object: 8d24fdad03c32156f977ad28ba870e31ca40ef0b + src/glean/api_client/models/chatzerostatesuggestionoptions.py: + id: c2b8ed9c9949 + last_write_checksum: sha1:2d1b44dcd4d7b15343829548833a2e257b3106e2 + pristine_git_object: 75527af1ac3173d43991fbfba5265a832d9bf41c + src/glean/api_client/models/checkdatasourceauthresponse.py: + id: 4b92648bff66 + last_write_checksum: sha1:383e77b55a1ef1d8a4014954daacecefabb594e1 + pristine_git_object: 23a67c29ffa76ce2ab3a08554fd16045f5325512 + src/glean/api_client/models/checkdocumentaccessrequest.py: + id: 8ae1352111ea + last_write_checksum: sha1:5c9a03c342cc40cf9618527f4802af3d9a4a49cd + pristine_git_object: e5985de81b6d3d8de11cc0d9a0e33db4b25bbb14 + src/glean/api_client/models/checkdocumentaccessresponse.py: + id: 493311f0935d + last_write_checksum: sha1:5c989b057b2e656267e785ecff45e6b9535d2b50 + pristine_git_object: 373b93887dc03fee309a02ca7efd3a674081def0 + src/glean/api_client/models/clustergroup.py: + id: f84bec5b82fe + last_write_checksum: sha1:be8057f49d12a16cc4effc809f1aab20f520304a + pristine_git_object: 9805a2fa98454cc3c517a168b47e1d630fafe178 + src/glean/api_client/models/clustertypeenum.py: + id: 0ddd45a5d0d9 + last_write_checksum: sha1:1f63c4b39dde561b3339908f8a9a35a6bf0f7257 + pristine_git_object: d599d8ac677a258ec0041ffc08142138b410fc2b + src/glean/api_client/models/code.py: + id: 11b08e43c314 + last_write_checksum: sha1:64058aa3ea083da1c1a9da5f7d6cdfa937e06ee4 + pristine_git_object: 140e792f4f3fbb381c998a268ddb63b214c3cd64 + src/glean/api_client/models/codeline.py: + id: 564bd44a480c + last_write_checksum: sha1:f5090a720f6119223b2a62a2d9d7acff35e77c75 + pristine_git_object: 70e471cce63e5391e096b6039c539a0cabd45592 + src/glean/api_client/models/collection.py: + id: 1c8d82c8f456 + last_write_checksum: sha1:718bfa1ca8335e7a82b226fc210b8a9a99863d5d + pristine_git_object: 8fb2e2c57dd08b923ae5213bbacf3a3afd6da522 + src/glean/api_client/models/collectionerror.py: + id: 12c5118f6fba + last_write_checksum: sha1:cf7a03f5a1bd25339fdc3b1e8c5f32c8220b7f68 + pristine_git_object: 408d04c7efb648abee3688da44dd3488d75c6a9a + src/glean/api_client/models/collectionitem.py: + id: 42e837b333ec + last_write_checksum: sha1:0ed5cb53712a6475a259437a0f8e6c3684d87303 + pristine_git_object: 0cbe6492422c383011f3f964c79271e6bfd5b90f + src/glean/api_client/models/collectionitemdescriptor.py: + id: 8211e595e120 + 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:db649f26c3107b6497a9ba6cfda8a495cd35d00c + pristine_git_object: 55c467b9b6e46f86e9d82f9f86273f6215eaaece + src/glean/api_client/models/collectionpinnabletargets.py: + id: e4d5f87c0adc + last_write_checksum: sha1:65c20e406a0bbc95cc4d69702e71bbd8cb8c8faa + pristine_git_object: c440d47330824d6e174617b25ee22c54055f6a7e + src/glean/api_client/models/collectionpinnedmetadata.py: + id: 20fcaec70c41 + last_write_checksum: sha1:be7edb98638bc572edbbe0874467e0640d50534d + pristine_git_object: 2e54e6a4236658c73900fd253a11f87476212933 + src/glean/api_client/models/collectionpintarget.py: + id: 74c6f50fcb8b + last_write_checksum: sha1:e5004349241e75689545b525384e5fa74a32b01d + pristine_git_object: cd3f16f2cb0e21b872739e71eb928011a2db7174 + src/glean/api_client/models/commentdefinition.py: + id: 7a510d4ae16a + last_write_checksum: sha1:f271a75d2302080cfc3bb13f75d8b96d5aee3eab + pristine_git_object: 121b9722f9045ff05a67cffb43505721dc0d36ed + src/glean/api_client/models/communicationchannel.py: + id: 097ef2bc37d8 + last_write_checksum: sha1:9240b0a6b43557df8f3d2c0db453b484162271c8 + pristine_git_object: 36d9d830a9c46f6addc6a92f828ccdab8d18885f + src/glean/api_client/models/company.py: + id: 3fac904660c4 + last_write_checksum: sha1:def2aa60670960e10e8aa5c7565337c020134113 + pristine_git_object: acd9da9d2661cef93af2800856d5e4303b511fe9 + src/glean/api_client/models/conferencedata.py: + id: ca82aa4c03bd + 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:adbdd18a3d0dcab7c1a8fe9abdf49ce8a60eb8d6 + pristine_git_object: 8e99dab8e7283ea64e5dc2e7f770999ddcceaef8 + src/glean/api_client/models/contentdefinition.py: + id: be5d817e66bb + 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:5203cc6e6506bd574e163b2b18d879c4b19c8a99 + pristine_git_object: 83d1aa3b243827c0f27678d94a209aac0a4417b3 + src/glean/api_client/models/createannouncementop.py: + id: bf2cd073d77d + last_write_checksum: sha1:a636cc5aa94d72878446b69b6ca0e3e91482de2c + pristine_git_object: f07a4fec86ab542f0ffbbb15bbff78c713d8642e + src/glean/api_client/models/createannouncementrequest.py: + id: 00c8eebb1b76 + last_write_checksum: sha1:115327b63baea457b53722ceed3ced22ec3faa10 + pristine_git_object: b7cbb6c5f423e129af176c18fb43bc9ccf26645f + src/glean/api_client/models/createanswerop.py: + id: b638c379e2fc + last_write_checksum: sha1:58f9ce98eaced362195574b76b2e07d15a94399e + pristine_git_object: 6e7cc76309ae26967744adc2cf0f2a872e541e3c + src/glean/api_client/models/createanswerrequest.py: + id: 80adf1814683 + last_write_checksum: sha1:b59b546cbb77e7d99b7bc76f1785105ccba73cbd + pristine_git_object: 498a9a16b34713ad68db2c58eb0e014f57c57ed9 + src/glean/api_client/models/createauthtokenresponse.py: + id: 50eda9e002d3 + last_write_checksum: sha1:1114f5c11e278059442538402515bcba37b8ba0a + pristine_git_object: df588893beddadf98a24dce5a51a3d411650a937 + src/glean/api_client/models/createcollectionop.py: + id: 3610855a3415 + last_write_checksum: sha1:d9956fdca945a40dd4c1bed5c63135a40667dfd3 + pristine_git_object: 3b504b1b99dfc8ce348317d6a57e69105625095c + src/glean/api_client/models/createcollectionrequest.py: + id: e39b15f0ef35 + last_write_checksum: sha1:560db966fd538b24ebf2b840232227a5fd3f8eff + pristine_git_object: 8ed97b034d81f04d3bbbedfd3fc16220ae260e6b + src/glean/api_client/models/createdlpreportrequest.py: + id: ead547f06612 + last_write_checksum: sha1:210a43e865c34e1d7924981e78f839759c1b403e + pristine_git_object: 9de15343384fb845d5fb9899558aacc78ae87285 + src/glean/api_client/models/createdlpreportresponse.py: + id: 12ae9b936795 + last_write_checksum: sha1:05354e5f55b3b4f1ca7b4d02c193923c92229316 + pristine_git_object: 2fecf5afae99509ff096862662ce44755ca93042 + src/glean/api_client/models/createshortcutop.py: + id: 3f448216dcfa + 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:285ec74a6e451aa0a6698d663cf501dbd0a24bd6 + pristine_git_object: 7fd2e6eb90ed6027e2647312ca3550abc0292b74 + src/glean/api_client/models/currentactiveusers.py: + id: 0a092cf79074 + last_write_checksum: sha1:989717f16473a1c661194af34f9940eb00a26e01 + pristine_git_object: 1236b65335edafb09cc59136ce8049c614a1a289 + src/glean/api_client/models/customdatasourceconfig.py: + id: fb9b6a1441c1 + last_write_checksum: sha1:61fd17497a8f0eb3a2eeccd8eec68a2a30cc548a + pristine_git_object: 635c888a5958270b094a87b594bc345964b09f20 + src/glean/api_client/models/customdatavalue.py: + id: 956eba94ae1a + last_write_checksum: sha1:76c80857d8b125cc75d3da0da1d2f489dc9847e4 + pristine_git_object: a07d2e8123855a0e7ee36cde832f24a5b3ce0b52 + src/glean/api_client/models/customentity.py: + id: 3c7bd33b38bd + last_write_checksum: sha1:9f9097039509e6ee5cfc81dbe56e4c6353eadd72 + pristine_git_object: 6cb844ccdf3c17c7ded504794f429fa55d0a2c2c + src/glean/api_client/models/customentitymetadata.py: + id: dcf591f96aae + last_write_checksum: sha1:8bbcd0ea720d666c10f9ef03c786e367cc8814f0 + pristine_git_object: 45958c271f08ae88e33e9c29f99d8a686609ff61 + src/glean/api_client/models/customer.py: + id: 1fef6bc6efb8 + last_write_checksum: sha1:e89622df4b4eebfcf6d695ecd8e4bb1323df2caf + pristine_git_object: 7154cf22a51ade828a632372eef3943187a2def8 + src/glean/api_client/models/customermetadata.py: + id: c2d608b51a0e + last_write_checksum: sha1:59b2c20c2f543014a1f621828edb52fed77ea5f1 + pristine_git_object: 35adf587037b0c451cb4f860d6b47641738df086 + src/glean/api_client/models/customfielddata.py: + id: 0fad2537d170 + 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:d8b517f05e2f6b20273606618057177d7baf276a + pristine_git_object: 44931d1280ca6b9a49d158a78efdd0b5f1c2b3df + src/glean/api_client/models/customfieldvalueperson.py: + id: 3a124f20f649 + last_write_checksum: sha1:2c9d0778dbb0f85662e8a390171128f28908718b + pristine_git_object: cb264f2b46ead516ead3d08277dfbccb85fc0790 + src/glean/api_client/models/customfieldvaluestr.py: + id: a3569fe0d790 + last_write_checksum: sha1:7b22ca993cde9d540e85b97f71afcbb1b3dcb0e1 + pristine_git_object: 68f0fa1e9afe47831a8611971f0c59435631f08e + src/glean/api_client/models/custommetadatapropertydefinition.py: + id: d18ced34a833 + last_write_checksum: sha1:8d7e752f324e5dfc065eb0cf721bf797044a6d84 + pristine_git_object: 26d09515c3d1f43a197c4b499d24bb5b4a085a66 + src/glean/api_client/models/custommetadataputrequest.py: + id: 72509bb43d50 + last_write_checksum: sha1:57c69961ff4b06e1b4bfc2fb2a87e20ece451415 + pristine_git_object: aaa5152c6c59e7e88adc69ec96c793bdfee06846 + src/glean/api_client/models/custommetadataschema.py: + id: 7dd85a399c88 + last_write_checksum: sha1:3e149a06bfe3d6f6bf828b850fe5d88e28eb1f86 + pristine_git_object: 13576c2be6dbdb1bd7e93acd7f34b31dd4c0a99e + src/glean/api_client/models/customproperty.py: + id: 86c08b8668b7 + last_write_checksum: sha1:291c2842c21527001b15d0178110e67609b638c2 + pristine_git_object: 74cc710e0b93d3579db37ebb3e787d5a03a6210a + src/glean/api_client/models/customsensitiveexpression.py: + id: 2268022ee406 + last_write_checksum: sha1:14109c3cfd41d0683caccb867ef4ff7c562931b1 + pristine_git_object: 4d5258721ff717ef3e4aa8fb2f78869a1edba5c4 + src/glean/api_client/models/customsensitiverule.py: + id: 80d2ba78e110 + last_write_checksum: sha1:ff15cdd2af8454e5232b1b86b0313a85cc3e5c1f + pristine_git_object: c767e33d6eeb7ae8b29d69789002319a9a3d8931 + src/glean/api_client/models/customsensitiveruletype.py: + id: fbea8b8f6a75 + last_write_checksum: sha1:ddbdf0eb4821466cfe7d82ae3116a42da0b8f8af + pristine_git_object: b273ac9824d6a273765462dfd73483c75c4c46c8 + src/glean/api_client/models/datasourcebulkmembershipdefinition.py: + id: 8e48908cf200 + 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/datasourcecredentialstatus.py: + id: 696bcc7a5acd + last_write_checksum: sha1:9d043a2c2388221d1dc855b49073921f21679026 + pristine_git_object: aa0eff706ec10f1be7de240201bf023fbb9ef20a + src/glean/api_client/models/datasourcecredentialstatusresponse.py: + id: 074326c64a8e + last_write_checksum: sha1:a1ad12bdaf0facaabae021755bb9890ecd06c2a4 + pristine_git_object: 150f1a4855d49f84282f7227f6e5c5b4c59a0ce1 + 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:55c4d00beb916ccf371479414929d8dee2a77259 + pristine_git_object: 4243bb1bdfbb0129f30faa1db9a9cfb39ad707b8 + src/glean/api_client/models/datasourceobjecttypedocumentcountentry.py: + id: 783986f380cb + last_write_checksum: sha1:87b6cdf3e69948aab8760e557f97f3a7f89db641 + pristine_git_object: 306d5d5b95306ee95732096d976082188de779fd + src/glean/api_client/models/datasourceprofile.py: + id: 456012f17305 + last_write_checksum: sha1:69eb65b9262dd4540d6d17454ec8ae20c5a1c5ec + pristine_git_object: 4a54a6d305e50cd12350ed991fcba1b7e7d17197 + src/glean/api_client/models/datasourceuserdefinition.py: + id: 38b5026bf17b + last_write_checksum: sha1:e47a04958803e2eaea2bc54aa060dbf29911e969 + pristine_git_object: af754d51335f0f6779d01dd8b9da81f01cd0d32d + src/glean/api_client/models/debugdatasourcestatusidentityresponsecomponent.py: + id: 8d269f54a53b + last_write_checksum: sha1:70298c03c6c7b789198a722a022cdb99c7ed91e1 + pristine_git_object: a027cc7e75d3e2813ea488dd3d22fb06e10ff922 + src/glean/api_client/models/debugdatasourcestatusresponse.py: + id: 706c4bfc6802 + last_write_checksum: sha1:8f8a32dc749ea17fc47279bb015a94bdc7d844df + pristine_git_object: b77b38550bef6b1680c89edfc693fb20a17c362a + src/glean/api_client/models/debugdocumentlifecyclerequest.py: + id: 1d3a8e2b78cc + last_write_checksum: sha1:389a78814a604290be72f3706fc04d2453cbe9d0 + pristine_git_object: 97b74290423c23c0708d6f16e0b22cf97e866fb3 + src/glean/api_client/models/debugdocumentlifecycleresponse.py: + id: 4f994adda409 + last_write_checksum: sha1:c0d188e5c8c6f084fe4e1bf3095904ae8c70fbad + pristine_git_object: 5e6ded73b7c3b1cf03aba21d479d2e5c35f0a914 + 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: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:dbbb300623addbc206e7e0f9c85b56e1fe0753bf + pristine_git_object: 54513fca6b64242dddb8c3e49cfd2bbadba05d93 + src/glean/api_client/models/debugdocumentsresponseitem.py: + id: f81e17f56601 + 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:39d67bf5c67156a043f75be97f2f9596d07e5f1d + pristine_git_object: 43e28fa95ff536027859954f4d65b33962eeca23 + src/glean/api_client/models/delete_rest_api_index_custom_metadata_schema_groupname_op.py: + id: 9f7d08808230 + last_write_checksum: sha1:a8d7e01378c2343beedb515b67bb21487b24c543 + pristine_git_object: ca9f8dc1e07be3500fd37cc7cbe100015244de9b + src/glean/api_client/models/delete_rest_api_index_document_docid_custom_metadata_groupname_op.py: + id: 363936a32051 + last_write_checksum: sha1:1706770f4b5d2a9b3eb12af99a9d1e156907df5a + pristine_git_object: 74b5dd9e6a820b6230218d335277e1f270e3bf4a + src/glean/api_client/models/deleteallchatsop.py: + id: 70e1ea929ffb + last_write_checksum: sha1:369fc0d61a4954709a19de273ca7af3b5609ed79 + pristine_git_object: cac2a62d4d9eb0a34282cec2352d0aeb9ada2114 + src/glean/api_client/models/deleteannouncementop.py: + id: 85d058f754cf + 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:4598916a9173b30bbc23e3d6c046f14778eb0539 + pristine_git_object: af7a16d7d1101d14496145832afa36bc989dbc4b + src/glean/api_client/models/deleteanswerrequest.py: + id: 2cacee52b8bf + last_write_checksum: sha1:f320c2a6b1551d50b75345ee71387bc8017a1668 + pristine_git_object: 5c83ec3e53e6de8d808f7ac6d380233fab5e1f5c + src/glean/api_client/models/deletechatfilesop.py: + id: 2e2bebfda978 + 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: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:122d02a8d5ad93e3702a824bfd0a6ec31de8e13f + pristine_git_object: 10966910072d0ff5d174f2fc0dc21e58ef7cbb49 + src/glean/api_client/models/deletecollectionitemrequest.py: + id: 396cb5c63bc1 + last_write_checksum: sha1:297e26618b55c0f5602109411590c82e45532643 + pristine_git_object: ac801e8c995b381b772c42bde8b569ed2eef17d7 + src/glean/api_client/models/deletecollectionitemresponse.py: + id: 719afcdd05e1 + last_write_checksum: sha1:b7b33418baac21d35ac06e818972e16dddb70736 + pristine_git_object: eb2315c4a6bb510cdd4fbd6ee3ca9d652f201cd8 + src/glean/api_client/models/deletecollectionop.py: + id: 1fbb23e9ab7f + last_write_checksum: sha1:fc1f5117883bd14396e4ff16f4f7f1a7ce5db3b1 + pristine_git_object: 8721ecb5719d57c1c5290dd4351eb3155c2c8db9 + src/glean/api_client/models/deletecollectionrequest.py: + id: 92b4c2c55a81 + last_write_checksum: sha1:18b903cd96816d11ae375241231d9f0853039104 + pristine_git_object: cf68ff3b3686a0e659dd9d527b967ad79cf96297 + src/glean/api_client/models/deletedocumentrequest.py: + id: 30a742ac49fd + last_write_checksum: sha1:a052b03bfb19b35a12dc707c11d21cfadc26573b + pristine_git_object: 3fb67bc981932021022fba62d26bc33e884f66f4 + src/glean/api_client/models/deleteemployeerequest.py: + id: c26f5e141c8e + 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:3839469d5974ae53924f5a60a5d523009670a44d + pristine_git_object: 651551f3c1131a18e4599e822f75acc5042f8630 + src/glean/api_client/models/deletemembershiprequest.py: + id: 506e49c72483 + last_write_checksum: sha1:8d41a4313c653936ce3dd23d10ac4129d5515def + pristine_git_object: 60f59a29f726fb7c70fb5494553b6c183c9d089a + src/glean/api_client/models/deleteshortcutop.py: + id: 48c5f989a2b4 + last_write_checksum: sha1:d40c8bec32037531625e20f6b377424f7c05da8d + pristine_git_object: 5862db4795db83a0e2ac2a163c63b16dbbfa6baf + src/glean/api_client/models/deleteshortcutrequest.py: + id: aa4724c9617e + last_write_checksum: sha1:8187e9166aab564f906ca74323a65e89956244d5 + pristine_git_object: d6f5b60024259d32bbf170053f8e8ad1b9c7328a + src/glean/api_client/models/deleteteamrequest.py: + id: 94970d15a458 + last_write_checksum: sha1:5c52a805c9a65fc30be1b6929abd570aebd64a7e + pristine_git_object: d8150a4165d730c9a1ef335adc9459a0eb625a90 + src/glean/api_client/models/deleteuserrequest.py: + id: f32055902e5d + last_write_checksum: sha1:db790fffc0ba0e89bf3885f0cd62670233b8da34 + pristine_git_object: a8dd578b52a5f43839472aa334e1a4078c068b80 + src/glean/api_client/models/digest.py: + id: 4fac29d7abb0 + last_write_checksum: sha1:db26bf2c5feec4127083fc67bfbd2a00fd7058a5 + pristine_git_object: 432716a8c77136901868139929fe3bed31c7891f + src/glean/api_client/models/digestsection.py: + id: 35356f6b6146 + last_write_checksum: sha1:02e35c9aac817d24447212c13a7af801da601775 + pristine_git_object: 17ac661e03911171207909c19f543d07bf8317f0 + src/glean/api_client/models/digestupdate.py: + id: 604c4e51476b + last_write_checksum: sha1:62e0cba5f2cd591fa2cb864650785c4b5dc9e528 + pristine_git_object: be8228945bccff16c400c65e856b3e7d57fe3be5 + src/glean/api_client/models/disambiguation.py: + id: 7223d97bb07c + last_write_checksum: sha1:e0aa82a2c527386c86012464bb62533065c4b9fa + pristine_git_object: 68a5514fdfd10149d39bd7255cf9550fde9159ef + src/glean/api_client/models/displayablelistitemuiconfig.py: + id: 93c058182294 + last_write_checksum: sha1:dbd7adee8f83eb2473c9142738129106f599c627 + pristine_git_object: 3e0031b797c3153b0f85b2d219b553fb6f259cf1 + src/glean/api_client/models/dlpconfig.py: + id: 5012b123f4c3 + last_write_checksum: sha1:ece6188f60c80ab57d3cf8b84c78dcfc2b9420d7 + pristine_git_object: f68bba2b791930a7eff5708502c833d255211f18 + src/glean/api_client/models/dlpexportfindingsrequest.py: + id: 8776242985ea + last_write_checksum: sha1:12a9bc4ffea8f15dbedc67be21158106a56d6ea1 + pristine_git_object: 44fedb771abc99c4cebd9768d49051f9a9d5ce30 + src/glean/api_client/models/dlpfindingfilter.py: + id: 6ef2e5304df7 + last_write_checksum: sha1:504b384e6f9de3dbc8d4ba7622cf1bf543a1ec97 + pristine_git_object: eacf79f0dbf0983d25200c4e4d478805ca9d421f + src/glean/api_client/models/dlpfrequency.py: + id: f6f484c2d7a4 + last_write_checksum: sha1:487ce5e7651214ea7906d0d4e74371544cc436f8 + pristine_git_object: 334f894fe2a36391f40ff6831cfdc5aeecddbf21 + src/glean/api_client/models/dlpissuefilter.py: + id: a52d7e96ee6d + last_write_checksum: sha1:b754d99c89be127d516be7b3dde33a9badb27ef8 + pristine_git_object: ac7f76b7a6a188349267d04952d4216494578af8 + src/glean/api_client/models/dlpissuestatus.py: + id: ef4c7e63fafc + last_write_checksum: sha1:f09d760baab7e130d011d8e27adeffdf8f4ac6bf + pristine_git_object: ee6c7d53a606382c02245c5f5e7359759e18ce80 + src/glean/api_client/models/dlpperson.py: + id: 15e2ffa25e1a + last_write_checksum: sha1:27cbf3c12e4030b22aa288dee8fe7e64c5bd3a5f + pristine_git_object: ee020352948bddad54865a2ec2a07319e050c97e + src/glean/api_client/models/dlppersonmetadata.py: + id: 3ead76577617 + last_write_checksum: sha1:cd0b82e98251470d360c1f48b82709eaabd26b2a + pristine_git_object: b3d764a642d07433b4682663b864d93d0436be6b + src/glean/api_client/models/dlpreport.py: + id: 6a534cac7e31 + last_write_checksum: sha1:38adf9732c5e7b0893042e971b2d6527a539c62f + pristine_git_object: ff433f126aea8fc5ad18c336f9e9370175059827 + src/glean/api_client/models/dlpreportstatus.py: + id: 4b288f23576f + last_write_checksum: sha1:9e9bbab7ec6b06d3034ea61f19208cf15be3a98b + pristine_git_object: c7768ce7bd50c02cbd7a212ab45e721e81002e54 + src/glean/api_client/models/dlpseverity.py: + id: 3c14229136ab + last_write_checksum: sha1:f61afbc43794f1cd3fe453fdd7bbc2a6386c9343 + pristine_git_object: bd785981c594353dada51425cefe60b44d806ea5 + src/glean/api_client/models/dlpsimpleresult.py: + id: b50c9a50553f + last_write_checksum: sha1:fdf7ae261c37a65ec7354426e7003934325f9efb + pristine_git_object: 212efae1a21283c3d96458029e9b64886d2100ae + src/glean/api_client/models/document.py: + id: f62889df4380 + last_write_checksum: sha1:a73296a815249b9e3fde674ed033d8dd56a2873e + pristine_git_object: cb56b4f3f3663839963a70c0f70b427e5fbc9933 + src/glean/api_client/models/documentcontent.py: + id: 5002c1dea323 + last_write_checksum: sha1:7e6e56c2b204cf60eaa660ed7097aecfe3e11f76 + pristine_git_object: 7a6ea0bf0feb7bb6f13045ca67007c9b73da4dd5 + src/glean/api_client/models/documentdefinition.py: + id: a1d959d6d441 + last_write_checksum: sha1:5a0df41c3a76aca7fc7683e9ad65ea7ccb1f73d6 + pristine_git_object: 1fa367c9949a6866dfdc4af3e9bbfbb88e308338 + src/glean/api_client/models/documentinteractions.py: + id: 1cbd7f0ca8c2 + last_write_checksum: sha1:1c43b48bba2be30ba492015b1ae3cbdd1ecba059 + pristine_git_object: 84214adbac5b07697d99ab6f0d84fde8acd6321a + src/glean/api_client/models/documentinteractionsdefinition.py: + id: 08e2b97a68ab + last_write_checksum: sha1:6ab5f0352e6cfcd6a1a6cb5f6a77998c7ba387e6 + pristine_git_object: 2dd25c44d762268701ebc58dff904235d05ee7a0 + src/glean/api_client/models/documentmetadata.py: + id: 203606bfdd41 + 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:b2793a322c6b31579a2f02366338392515238a2c + pristine_git_object: fd87de54c048ebef28c2b9679aa08b8b0b131937 + src/glean/api_client/models/documentsection.py: + id: 860858e3da34 + last_write_checksum: sha1:d66f0bb43d34d05166ac4e1cf24c5999951dfb96 + pristine_git_object: 6825bbb05b8da91f0aca07bf2520d9862afff2c9 + src/glean/api_client/models/documentspec_union.py: + id: 9b7e01401389 + last_write_checksum: sha1:f5c1033883dda0be3207cf6d09cd72f5ed02b2a1 + pristine_git_object: 82e3e53590ac4cb4047a89dc85e04656bc5280ed + src/glean/api_client/models/documentstatusresponse.py: + id: 03c5597a3ee0 + last_write_checksum: sha1:6fa0c35f03862802e908f0ff16c1b93d09b42286 + pristine_git_object: 41cc9ad2da11dd704f76ae2539a7215adb6f54c5 + src/glean/api_client/models/documentvisibility.py: + id: de44fa8f48da + last_write_checksum: sha1:985c869e95a61595826842cb225d63dc3d8c4d29 + pristine_git_object: 59bfc0522f5c880450dca0184b601a0c4c6617f2 + src/glean/api_client/models/documentvisibilityoverride.py: + id: d5c36989b68a + last_write_checksum: sha1:807f300f1b55dcaa2792e36be0769b81ec3b8e4d + pristine_git_object: e5d6ad033ea29dd1347c5d944ceef5c3ac35e8a8 + src/glean/api_client/models/documentvisibilityupdateresult.py: + id: 499e53f55b75 + last_write_checksum: sha1:201bec37f9d6deb5c2184787c189f9b69caa306d + pristine_git_object: c48a36b1b1287dbea4c6311e849a38528c5c419a + src/glean/api_client/models/downloadfindingsexportop.py: + id: 2694d3597292 + last_write_checksum: sha1:272810d856c01cc1fe68b55286be0092fd5ddc06 + pristine_git_object: ba0204a8b0a35bb89821ffebd3548e17cb1c5643 + src/glean/api_client/models/downloadpolicycsvop.py: + id: 3048ae12beba + last_write_checksum: sha1:361e6df540a951d205c6ac3314cca9064f10ba81 + pristine_git_object: 76743c954138720a30e05e2590fe514c4a725e9a + src/glean/api_client/models/downloadreportcsvop.py: + id: d5bf581bbb4d + last_write_checksum: sha1:89e5828b1007a5fe600c74a50af1228298573a4d + pristine_git_object: d6059a8fa23d3cc41298d1cfb331d266d793b53c + src/glean/api_client/models/editagentop.py: + id: d7e933668f76 + last_write_checksum: sha1:b578b8b9652f10f3f6f042436b512a7b2f255f24 + pristine_git_object: 5d66503e891f7a708186245ca0d5b901890ca013 + src/glean/api_client/models/editanswerop.py: + id: 7236676e3bd0 + last_write_checksum: sha1:a8358d6fdf546ffc6e39b043feb9d5cb37af5106 + pristine_git_object: 8aef450a39d487fb49ec3cb7ae7d75d6b995e584 + src/glean/api_client/models/editanswerrequest.py: + id: fe09a7824140 + last_write_checksum: sha1:9d7fca50a693408e520274948d466e03ddb5cdb9 + pristine_git_object: 42fbf75e12622697133e2299821da9d17883e6f2 + src/glean/api_client/models/editcollectionitemop.py: + id: 1384524a3498 + last_write_checksum: sha1:865dfe05a5b6c8ed22163f74d6eee818174b3a1a + pristine_git_object: ec47c58541a4e621037751f5dacce3bbaad8f13d + src/glean/api_client/models/editcollectionitemrequest.py: + id: bc22cf6084f5 + last_write_checksum: sha1:ef0c68dff9f30c0267ad153f86280b89df7b5e23 + pristine_git_object: d263fa2ebee6e474dcf4a69f004c075ece4d491f + src/glean/api_client/models/editcollectionitemresponse.py: + id: 1932a6ee55dc + last_write_checksum: sha1:35202968456ac47ec2d53903bcf930dad879aa6f + pristine_git_object: 0803aa97a25fb8fef4fee326f9e774bd8700389e + src/glean/api_client/models/editcollectionop.py: + id: 6bbb39f451cb + last_write_checksum: sha1:4e26166deda0974b97350d77d0cf0f0a6f11ef45 + pristine_git_object: 89876fc83292098da540fe0a4593ebcd22bc0776 + src/glean/api_client/models/editcollectionrequest.py: + id: fb314a816369 + last_write_checksum: sha1:e0873a34e4ea4e5b86c942f40b7a6416caaddb9e + pristine_git_object: 7a4edd70390dec12ae19ebdd044da70cc945f836 + src/glean/api_client/models/editcollectionresponse.py: + id: d5021e1e02ea + last_write_checksum: sha1:a5312c409386dd0526f82d01ed7d77a64ade6380 + pristine_git_object: 734b299b08a25acb8528800f45c1e5919d9b7ed6 + src/glean/api_client/models/editpinop.py: + id: ccf2c7c31a0e + last_write_checksum: sha1:4283c5ec511a7e85a96bfab308fc38974421eade + pristine_git_object: 608f79b9fafda26b5330d562955b6e971d8f2aff + src/glean/api_client/models/editpinrequest.py: + id: 394a855b5f16 + last_write_checksum: sha1:2ab581efcb31ece5d80adac97fdba88727fc9da5 + pristine_git_object: d19c91a1f64bbbed70c05885945ea5a5d95146e7 + src/glean/api_client/models/editworkflowrequest.py: + id: b4e7d6c2b721 + last_write_checksum: sha1:af89744481a4a1b07c0a2b1e56267647d7f9a84a + pristine_git_object: 5d3ba4f1039c79d087bc34f8a2e85f979060c290 + src/glean/api_client/models/employeeinfodefinition.py: + id: e16fd44a957b + last_write_checksum: sha1:18735a28300d55395d99334d622495f4e70897c8 + pristine_git_object: 0dff10f097d92e57d2e962895aab04d58ee9371a + src/glean/api_client/models/employeeteaminfo.py: + id: f50b29739646 + last_write_checksum: sha1:c5c1a5c9397fc297e5b724a203ec7eedd43d9dad + pristine_git_object: 91d78b8d4a7c6b7298689c189a03963746dae920 + src/glean/api_client/models/entitiessortorder.py: + id: cd626c042435 + 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:b091bec335fef2262c725afa624f188a92ba4b10 + pristine_git_object: af479617f97e668b22634dd88373471ceea7c7a6 + src/glean/api_client/models/errormessage.py: + id: b2d0a949c567 + last_write_checksum: sha1:333dcf5a80490f22926497048e1ff8c19423375e + pristine_git_object: 5979617bcbe5d35a2b952ec6ffb10c23455987e7 + src/glean/api_client/models/eventclassification.py: + id: 6430165e5712 + 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:f359da6c05742c564e50b84faba2ea0652cd59a1 + pristine_git_object: 2fc0a34fb83cf361d4167e22685f67eaa1cd269c + src/glean/api_client/models/exportinfo.py: + id: 7039fdf82b53 + last_write_checksum: sha1:ac8f1a1b597ec1a6dd301410f4a8012d63d9c860 + pristine_git_object: 859689a25f6322e75e7acaa50dbed2843bd885dc + src/glean/api_client/models/externalsharingoptions.py: + id: 0df611382e60 + last_write_checksum: sha1:ff79f9f97203c88bc89c051e73e9082c3861b6c5 + pristine_git_object: 0a42520db5f584280bc1edaabec655c38be65c4d + src/glean/api_client/models/externalshortcut.py: + id: b9c91219a7e1 + last_write_checksum: sha1:2f36eb751587c541581934c644e77bd08d922392 + pristine_git_object: 33344b4108708a0eaab4a47d04bb9f9923efa29d + src/glean/api_client/models/extractedqna.py: + id: e4498c224e1e + last_write_checksum: sha1:02c76af5edabda94ce2f4d95914cefec7f050f53 + pristine_git_object: 6a255674fde15bd601bdd6ef074de6187971410a + src/glean/api_client/models/facetbucket.py: + id: 3dabbd5bcfb4 + last_write_checksum: sha1:af84cbf7988dca4f7d998bafbdd41eae2ee90e36 + pristine_git_object: f8d356f73ba7ab657d3955f6435a94a6b700981f + src/glean/api_client/models/facetbucketfilter.py: + id: d1e4435eff08 + last_write_checksum: sha1:3fd7e6b2f08b1c29c9999eab2d12406c156012d2 + pristine_git_object: 19df5a17e69c63bd0355021b687b4598189172d8 + src/glean/api_client/models/facetfilter.py: + id: 0092f5488ed7 + last_write_checksum: sha1:71945c896dd40a6072a619d0226ff79b626e5e41 + pristine_git_object: d882c35ba28f7be55ddc5b5f4a47bee27f01fb01 + src/glean/api_client/models/facetfilterset.py: + id: 24a068134424 + last_write_checksum: sha1:cac7cc417665fe2d95c4a9de2a4b7095d0abb0a5 + pristine_git_object: b1f689e7cbe160b1191780f88c1b66db4666fcf4 + src/glean/api_client/models/facetfiltervalue.py: + id: 2538d6322ce2 + last_write_checksum: sha1:c794c9a21b0d1154d00df89d4808c7b7739e3d02 + pristine_git_object: 3df021969492d908928d8f3680a60b4261a65c39 + src/glean/api_client/models/facetresult.py: + id: 0b08040192a1 + last_write_checksum: sha1:9c5b4fff2ca3c99cfc7921b95cd40fdecace8192 + pristine_git_object: 6cea2b89790635cadb5afbe94e4b6a409933dbb6 + src/glean/api_client/models/facetvalue.py: + id: 37b332e83210 + last_write_checksum: sha1:4dd701b69d4079c4f068d692e02cd4a87903f7f4 + pristine_git_object: fdf378c8dc7f45bf2e638cd1e4900f4464d5d938 + src/glean/api_client/models/favoriteinfo.py: + id: c8966a607f00 + last_write_checksum: sha1:6c5eed7096282ad3c4444bd15a43bd7c55ab5d68 + pristine_git_object: 17359e01fa84c77c0074e5d321ae7ac50451a48d + src/glean/api_client/models/feedback.py: + id: 511140b14aff + last_write_checksum: sha1:6b121c6d4b112fe8271598735390319195558228 + pristine_git_object: 1dfc5693f596424df85a279938470af2da752f1d + src/glean/api_client/models/feedbackchatexchange.py: + id: 8a8e469394a1 + last_write_checksum: sha1:fd19bb89b532bb5ee4c798e352a83af00e03d118 + pristine_git_object: 291794c5d27686fed3c85ef0f9212fde461cf0a2 + src/glean/api_client/models/feedbackop.py: + id: d74abf6b0a42 + last_write_checksum: sha1:fa5e1e58653c2ab36c5f6c50cfe32541eaf65a3b + pristine_git_object: 44041cb376d89949c815ea1e7813505940605855 + src/glean/api_client/models/feedentry.py: + id: 023eb6c10ae1 + last_write_checksum: sha1:93e85da47116a61d8c9db59ad3bacb954060fce3 + pristine_git_object: eb60f1bdba8b60701958ac591d618e7a0ba5bbc9 + src/glean/api_client/models/feedop.py: + id: b8067ac0a127 + last_write_checksum: sha1:c58cb0a3a01925eb14d84176c5c6e9d8f4d84cf1 + pristine_git_object: f39626285f84630e5a9233736d652914b759d44b + src/glean/api_client/models/feedrequest.py: + id: 33496b6a5bab + last_write_checksum: sha1:5c9e71cf8fa61ba2664083654567dfa83035110f + pristine_git_object: 22ab9c4e3a119478466611c6d1b62847f312a20f + src/glean/api_client/models/feedrequestoptions.py: + id: b99003fbf522 + last_write_checksum: sha1:d5ffee29242075cbe6d2dd5ec916b0c3d40acf54 + pristine_git_object: b0d65380ac5f1bbfcc8b3bdcf8b44bd22b760a31 + src/glean/api_client/models/feedresponse.py: + id: 4a48e189e0c4 + last_write_checksum: sha1:84c63b88f2f6fea64ea6f15d41e776bd57e95181 + pristine_git_object: 683438c837601f483526ec18756fadc7222edb24 + src/glean/api_client/models/feedresult.py: + id: ae187332b37a + last_write_checksum: sha1:c9d4daf7c06053ce4a52c93acedc8dba5e144f52 + pristine_git_object: c3ee3e987de032926291cf44340b32b3d3678a52 + src/glean/api_client/models/followupaction.py: + id: e2de5c4c8524 + last_write_checksum: sha1:49e1a826449081fecfcd828c940604db949a8533 + pristine_git_object: 5a44621581bf4944e7e56a5964a655d7bc081d5c + src/glean/api_client/models/generatedattachment.py: + id: 257c5ef9996e + last_write_checksum: sha1:8e29bc6b5a6ef39fc90852c801e10bda5e2ef8cf + pristine_git_object: f431eeded29a29c46d37e0f6977f8aca5e3d1261 + src/glean/api_client/models/generatedattachmentcontent.py: + id: cd6ddc3356e2 + last_write_checksum: sha1:121cd44820c25f12d1e8290dc9c195661e7f25ad + pristine_git_object: cc022b56eeb282ea4f508c9cd87f28f81b0f51fe + src/glean/api_client/models/generatedqna.py: + id: c505fd0d1ece + last_write_checksum: sha1:977cfe47cea6e8bba465d0a96897d7ca2b964286 + pristine_git_object: f1fbf6355ef61a62a6b005133879be71fb3a775f + src/glean/api_client/models/get_rest_api_index_custom_metadata_schema_groupname_op.py: + id: cee009e61198 + last_write_checksum: sha1:892d386f5c31ce84be5656afa0e9c78b47128b71 + pristine_git_object: af2ec64b10156b7098dc0c21b7d63d0cae1cc64a + src/glean/api_client/models/get_rest_api_v1_tools_listop.py: + id: 34cf81e82af3 + last_write_checksum: sha1:4f84149547bee459f0a7f05a9b37c7d9d256af7e + pristine_git_object: b5265a6086412a71445036330b444d889e033cf7 + src/glean/api_client/models/getactionpackauthstatusop.py: + id: 3901c2d16ed0 + last_write_checksum: sha1:af917b3d2da7081a76dc5225a11ca3ce033aff5b + pristine_git_object: 596234eab9affb498754b9606ead92d7a006fe98 + src/glean/api_client/models/getagentop.py: + id: 40981170ded0 + last_write_checksum: sha1:69acb6eb3a47aa7033c5661c241c8467e9f806a7 + pristine_git_object: 9cb3838322708bd13002d26f6970c663fb989105 + src/glean/api_client/models/getagentschemasop.py: + id: 21bfced8e2bc + last_write_checksum: sha1:c6c9064deb5103dad3bbb21e008ee089ec7ac0d6 + pristine_git_object: c381cdaea97ca53818651803a51a2dd133e4f9dd + src/glean/api_client/models/getanswererror.py: + id: 7d4df3bf2bfc + last_write_checksum: sha1:e8dd4317871d0643b9156c5110f0757113e2f820 + pristine_git_object: 102fadd9bf967b99a1fee20027e4be5ed6902943 + src/glean/api_client/models/getanswerop.py: + id: d02c69702982 + last_write_checksum: sha1:169959016e00ee8aab88f0378e3e6ced394575ad + pristine_git_object: 3a64977851c11a39ff5f3ca5f82b3eaf71f922fe + src/glean/api_client/models/getanswerrequest.py: + id: 51b52ca6bdd1 + last_write_checksum: sha1:49ba892a13c8c344e0ec4417a8793461db0ac6d3 + pristine_git_object: 5a1648a161b019200d53e5aea51c2f9504fec1bb + src/glean/api_client/models/getanswerresponse.py: + id: 29a80a8d4d70 + last_write_checksum: sha1:5ddb79ddd6acd5b78f2ae5d761e5eda34949ef65 + pristine_git_object: 6bb54cef2ccde6c095fd17214c783da77dbd6037 + src/glean/api_client/models/getchatapplicationop.py: + id: 320af39d31c3 + 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:513e7c852c94bc4f2e2009825fc0c5c72190daf0 + pristine_git_object: c4b388714d4ecbfbb9476a055d4c950128c72007 + src/glean/api_client/models/getchatfileop.py: + id: 6dc641c60a78 + last_write_checksum: sha1:0a8a9755c7ed12d7cc8f4a1844d8619ed8d08ded + pristine_git_object: 60bbf3271ae420b5b5b6f0ed44419242aeafdf93 + src/glean/api_client/models/getchatfilesop.py: + id: 48b9a5c63e2c + 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:f28d5c86c08e69aad88cd5c1d10ca499e4324395 + pristine_git_object: c3d8e2e9a736ecbd9edf70d415e8a2ee79263d21 + src/glean/api_client/models/getchatop.py: + id: 2b157d86e810 + 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:c26dfa56429195e39101c679451ec27039318052 + pristine_git_object: 7dfadab71ab57286727d953366b23b7a78e4d476 + src/glean/api_client/models/getcollectionop.py: + id: e46c77b755f4 + last_write_checksum: sha1:6f9ac4feda4a8d879faaaf64ce7dabb47c3d73c6 + pristine_git_object: 92fdcda500ba4cce82ccf9ecff86bacf17f717b1 + src/glean/api_client/models/getcollectionrequest.py: + id: e133223930a2 + last_write_checksum: sha1:d1747dcafee4b85381dd7652232d618a0d3be960 + pristine_git_object: 36d10443a188e97aff3ba27f54a4481805e21c56 + src/glean/api_client/models/getcollectionresponse.py: + id: 458c44d7b658 + last_write_checksum: sha1:cb8b6a2bd5ae9230bfde9537cfdd7e2ef178a3d8 + pristine_git_object: 10123b3a3b0f987d0f603afcf374fa3e27a815c4 + src/glean/api_client/models/getdatasourceconfigrequest.py: + id: 42b2eeea0fdc + last_write_checksum: sha1:72e44bdd713ea77abbd991bd01e7f433cd2443ea + pristine_git_object: 0fa42a25ca61cb0ca2430b59780801adc55c754b + src/glean/api_client/models/getdatasourcecredentialstatusop.py: + id: 64da1ac902da + last_write_checksum: sha1:a7cfa1bf95b035c19e26f4625a554b56245135bc + pristine_git_object: d693ed5408ae3fe6182b1f7aaa640d40e33439ca + 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:0f3a4d3aad6cfe33e17c54e2c39175007354df39 + pristine_git_object: 7af2ec3d8f6dfcb26f20db7f043345ca83fb1069 + src/glean/api_client/models/getdocpermissionsop.py: + id: 085293ca24a4 + last_write_checksum: sha1:84df043245e69ed11b0e459e814df92f1f6d48b7 + pristine_git_object: bc562e4133d5f22e83ff3724de9846808e3bf7f7 + src/glean/api_client/models/getdocpermissionsrequest.py: + id: 9e472fc389dd + last_write_checksum: sha1:ca6532cef63e26ebe9c30c6c5014a738853c9b63 + pristine_git_object: 4c4a4e5b966c56189c9e4deee8230829ab67329c + src/glean/api_client/models/getdocpermissionsresponse.py: + id: 44cd7997b6a0 + 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:f8e81b4b74396f7942acd3b0c6f4e90c68c1ed7d + pristine_git_object: c3400b20d46c97ec22f85c21e187fed51e2d1834 + src/glean/api_client/models/getdocumentsbyfacetsop.py: + id: ca5343a63eff + last_write_checksum: sha1:1ba5ede62829dd92ba085fad3bb369b1a91d1e16 + pristine_git_object: a6bd1531c8e9cb22cd78f1cd81f3ab1ff0a48027 + src/glean/api_client/models/getdocumentsbyfacetsrequest.py: + id: 095fa51d67ed + last_write_checksum: sha1:35e96ab17f29008bf4200233dc35bcfc6b13395f + pristine_git_object: fe741831ac78eff9313f2a4d2429d234a6cb05af + src/glean/api_client/models/getdocumentsbyfacetsresponse.py: + id: ffcd52e8e229 + last_write_checksum: sha1:fcd96ad7ac48bbdf88f97599f6de011034fb4cdf + pristine_git_object: e7e0337a8366b17eb417470ccd229183be4d6181 + src/glean/api_client/models/getdocumentsop.py: + id: 957b85b955b7 + last_write_checksum: sha1:0b3377188c15091c04de3190bc0f4dd76e60435d + pristine_git_object: fd29b3ef55a3ab4fa940ccd8a5bf93bfae99568f + src/glean/api_client/models/getdocumentsrequest.py: + id: 35b06c70131e + last_write_checksum: sha1:62bb272f1ca7b3b9a6cff8a8bcb5d0e58cb817aa + pristine_git_object: 8e64be35de3202a3d86992ed79c006b294c04deb + src/glean/api_client/models/getdocumentsresponse.py: + id: b2062b96f07c + 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:e1437df5bd1e3b8d165e95a75bee4761f6a16ab7 + pristine_git_object: 5bd4fd926abe4057a27fb4bcc0c74f1da0c67e48 + src/glean/api_client/models/getdocumentvisibilityoverridesresponse.py: + id: 4fcb987e34c9 + last_write_checksum: sha1:7960ab3d4485c54864c3eee76fd2192f01156b54 + pristine_git_object: cd81ecd7cd1918e4c482cd012a9806640b160fee + src/glean/api_client/models/getdocvisibilityop.py: + id: 0f3847de9013 + last_write_checksum: sha1:e424ef68054082c29c96f19f973babe17c62009c + pristine_git_object: 198ee640c908f13a53a84f7939e6ca704c99e684 + src/glean/api_client/models/getpersonphotoop.py: + id: 52871feebe6b + last_write_checksum: sha1:10e6a543cab6b99a77ad87c794d36f0c977e6e92 + pristine_git_object: 7d3d9948d1d527f27b88441934301a449aca639f + src/glean/api_client/models/getpinop.py: + id: ead822eb0da7 + last_write_checksum: sha1:7f09359a7f5bf28b8713a604d99fd867e20ef8c4 + pristine_git_object: 7c1467b483924b32030847362d876c06d9392d73 + src/glean/api_client/models/getpinrequest.py: + id: cd845a071792 + last_write_checksum: sha1:abdf087dcbb9eb9d07653a621ede460ffc6da8a2 + pristine_git_object: c11fbc5cec96be3d49fef79a8c781ee1c5537adb + src/glean/api_client/models/getpinresponse.py: + id: bceff8932b22 + last_write_checksum: sha1:e041099339214bbb075517d340bff8a631821a80 + pristine_git_object: a45629314fc8a15640430e588e61d92b6953fdfd + src/glean/api_client/models/getpolicyop.py: + id: 58d603f46a48 + 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: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: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:1df6f1867005284d418a4f3e1e833424e41cd4b8 + pristine_git_object: 9a042fa5adc978c6210d795e56e6b1ba576c2b05 + src/glean/api_client/models/gleanassistinsightsresponse.py: + id: 10a2648cbcf1 + last_write_checksum: sha1:ed5864db022cd7c00d2f1f97961eeb575e79c599 + pristine_git_object: e6c29553c9be312eb50df7f0035c8c1485494891 + src/glean/api_client/models/gleandataerror.py: + id: 86e8dc6c1eb5 + last_write_checksum: sha1:43fa5675b38cc9bd175f8fd22e9d39756025bc5b + pristine_git_object: 7672589b96aa71f8d3a290a4e5770f9a2b104683 + src/glean/api_client/models/grantpermission.py: + id: 0cfd67112b08 + 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:4fc88663c2502f55e2d742818c0c11864d089781 + pristine_git_object: f1b4a7e932c2605014da90f15aca4546c4f0a68d + src/glean/api_client/models/grouptype.py: + id: 64925e34480c + last_write_checksum: sha1:c8119cbb1f44d407b78c99228be80c65cdcdbcf9 + pristine_git_object: c94336ed992ffa187193a41ac0a1b2e072d25338 + src/glean/api_client/models/hotword.py: + id: 0a4b0a179e14 + last_write_checksum: sha1:8852104f422c25d298bbc9d2975e820ef744a5a2 + pristine_git_object: 51dcb03045ca4ab19de12896f64de549c895b168 + src/glean/api_client/models/hotwordproximity.py: + id: c4440dabacaf + last_write_checksum: sha1:dcf5fd4dfecef6347eefe3e5b7fe26b7a6e9cc10 + pristine_git_object: ebc0ed38777b6f9204728ae0966181514d98815e + src/glean/api_client/models/iconconfig.py: + id: fec761319e41 + last_write_checksum: sha1:40a570ee41fa86918ceb63a79b5b358d70ce07f8 + pristine_git_object: b7109f6b54dd975c977f0a13e3221c036c9c4cdf + src/glean/api_client/models/indexdocumentrequest.py: + id: 39de79505ed8 + last_write_checksum: sha1:f1e607bb1939b44c99540a787ca0d10fec8d62b6 + pristine_git_object: e49af0a9479f0c90dd6291525fea63063a9e7f27 + src/glean/api_client/models/indexdocumentsrequest.py: + id: 937c4ecc3c74 + last_write_checksum: sha1:044953c271e765a9d5658589877ab6d2ebb79f33 + pristine_git_object: df0dc41e64413f34c866522afce394c1d68e2f91 + src/glean/api_client/models/indexemployeerequest.py: + id: 3d41098a24df + last_write_checksum: sha1:09b003dd744dd993e99f3abf4e03ed0c42cefa0a + pristine_git_object: c37c66ac44a15692b83c7bc8fde36d4646a140c2 + src/glean/api_client/models/indexgrouprequest.py: + id: 46b3cc16858a + last_write_checksum: sha1:1e1a7f0953a25540b46850a1f0add8f5b62ae717 + pristine_git_object: f0b242fdb93194ecfc77237eea3d106b4218af15 + src/glean/api_client/models/indexingshortcut.py: + id: b2089569a74d + last_write_checksum: sha1:dce40fe8a0919c9cf65c41f6326309cfa414b834 + pristine_git_object: 82edda463beb607dba65ef99a478f35282652e00 + src/glean/api_client/models/indexmembershiprequest.py: + id: d3abc4681996 + last_write_checksum: sha1:7c5ee232a8646b4c930561a7f74106dea63ddb66 + pristine_git_object: 471ea84bd5fa471cc2e36fa9ab03469145f2726f + src/glean/api_client/models/indexstatus.py: + id: 1b79f41f207a + last_write_checksum: sha1:28ac8a8e2040156b23c3e72aad289c63afc8ebe1 + pristine_git_object: 51863783f2e02d6e1d3bacf72285c04ac742119f + src/glean/api_client/models/indexteamrequest.py: + id: 7b27fe5b6d69 + last_write_checksum: sha1:1eb31cbb1f1626a5c3cc0b64e8c69156449b628a + pristine_git_object: e524f95153e6223216a49dced56da167c4c33560 + src/glean/api_client/models/indexuserrequest.py: + id: ff0180ed9f7a + last_write_checksum: sha1:703d8aba1460cf9a2a1a6cdc392aa8015e2871f8 + pristine_git_object: 7acd43d1583cc67dc4f370b9a3b981aea698b75a + src/glean/api_client/models/inputoptions.py: + id: 29608097f74b + last_write_checksum: sha1:bbf99f7a5e44866c614da7679d0a259e5b722a05 + pristine_git_object: 63d2569b2da5fe7881df3f25db4db70425c6e7c4 + src/glean/api_client/models/insightsassistantrequest.py: + id: ff69cec68e31 + last_write_checksum: sha1:e6f74c316007cb309c2de8050630a85b3918d138 + pristine_git_object: 806dc671c0e0d8855ff39c17451507b63a178217 + src/glean/api_client/models/insightschatsummary.py: + id: 06b2f68e597d + last_write_checksum: sha1:8373f3ae3e4e5397c33dd77dd4217cd7995f5a13 + pristine_git_object: 44b76c5ac9d5a612baa304d4cae9fbb08f0afece + src/glean/api_client/models/insightsop.py: + id: ded0a3337a07 + last_write_checksum: sha1:c88dc9426f3a524eab216f55c273173413447622 + pristine_git_object: c0de2bef0cfda6986cec13f9a02557f3b3bf02fb + src/glean/api_client/models/insightsoverviewrequest.py: + id: ba00a51c6496 + last_write_checksum: sha1:5194f1bd25326c6e1535697851930c6761961311 + pristine_git_object: eda4a606dd0a29d6d5e253e0b35a8bfacfb582ee + src/glean/api_client/models/insightsoverviewresponse.py: + id: 9f278319d18c + last_write_checksum: sha1:ce3633f5ef738321cd368553bf78c0787e5191c4 + pristine_git_object: 27313ce1cfa024efa9fcbe79cf77ef99914bf1cc + src/glean/api_client/models/insightsrequest.py: + id: 72fbc9d1c47b + last_write_checksum: sha1:215c400cd29d4cdf97e01d582822c241495eb8d3 + pristine_git_object: 8ec76f9c1748a93cd4156cea8a388bd8c8f5e6f9 + src/glean/api_client/models/insightsresponse.py: + id: 8d5ce8feb796 + last_write_checksum: sha1:0ef2da23ce302022e5f8b6f2dab73c034f369431 + pristine_git_object: aa95f0f43936336805f02b14adac648bc2a9e5b4 + src/glean/api_client/models/insightssearchsummary.py: + id: 876b12a69ab5 + last_write_checksum: sha1:9cdac95b786fa9bbca712524e7b7c90a2f09d9ea + pristine_git_object: 481ba43c8129461b1795345febf811541a8827ec + src/glean/api_client/models/invalidoperatorvalueerror.py: + id: 92783a6d0aff + last_write_checksum: sha1:5903d231e24afb30c1bdf5c7dcdece23271b23e0 + pristine_git_object: e9e0ee2bfce4031bf643d9ce963b10b03b435ca2 + src/glean/api_client/models/inviteinfo.py: + id: ba829cd6990e + last_write_checksum: sha1:856c72279e4df25f89c2d438af2e958a2f576ccc + pristine_git_object: 34094c53eae9098b7a5795cd13f4fde67b409072 + src/glean/api_client/models/labeledcountinfo.py: + id: 35eebfd45449 + last_write_checksum: sha1:a4ac8cd329658fd70eb890b21fb7f9cd16c9077d + pristine_git_object: c123fd88245ed5d782c2ae83e275530c3d85add2 + src/glean/api_client/models/lifecycleevent.py: + id: cf06bd7d4f19 + last_write_checksum: sha1:486a3d0e056296ea0f81144afffdf05f007e2c8e + pristine_git_object: d30704e647640863576d70025f28fd4a1f28ef0e + src/glean/api_client/models/listanswersop.py: + id: 6df22dfa5611 + last_write_checksum: sha1:b7bc88a7995081c1a37c2bb1588037c25f050fd8 + pristine_git_object: eb99f4463abf15d7c14b276968b9df9c18d3d6b5 + src/glean/api_client/models/listanswersrequest.py: + id: 182308b967ae + 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:23b209b16d154e0f3bd78f85c33f7239c85eddf1 + pristine_git_object: cdd71758afcdf9af89db81c0028d65538d2f5f14 + src/glean/api_client/models/listchatsresponse.py: + id: 50a66bb0b05c + last_write_checksum: sha1:eb129db5e5cf7b921fdac6359b9143b7808b0791 + pristine_git_object: 4c33ac6b11e411093153cfcdf04054b59352979e + src/glean/api_client/models/listcollectionsop.py: + id: e09e0878038d + last_write_checksum: sha1:342b62a14338d35b99b933f0002ce823b29ea17b + pristine_git_object: ad00f15cbffb1933b2dbec0fe497ff4a1062e956 + src/glean/api_client/models/listcollectionsrequest.py: + id: 1a996c119c07 + 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:d878c47568278cf5ed0b549f846c07d6e0c88b1b + pristine_git_object: 4920345fcc4ad3a006dd32b032d713c61926f46f + src/glean/api_client/models/listdlpreportsresponse.py: + id: c300fd0a9a6c + last_write_checksum: sha1:1ca2655030b725401fc82df4bf6d131294f5424d + pristine_git_object: df22a92d646bca5d72ca874462ef4e46cd245f43 + src/glean/api_client/models/listentitiesop.py: + id: 06a2c7e16783 + last_write_checksum: sha1:f0940efc625659323ca06e0c1bbfa2a6649237b0 + pristine_git_object: c64939c3d9029fbd5ef6d06a1fd63341cbbc3e37 + src/glean/api_client/models/listentitiesrequest.py: + id: 80b3dc9dfe99 + last_write_checksum: sha1:96f5c285b5972f0bed1ceb952d15983df1d3ade6 + pristine_git_object: 699e39c20ce0f71475c7664f3609ce771143db33 + src/glean/api_client/models/listentitiesresponse.py: + id: 8cbc0b717442 + last_write_checksum: sha1:5e7e8d4251e63106adcdf4bf256d55ed7b9d8ecb + pristine_git_object: 6f8be48a370fceec00ce87133f9e6d286e70bae1 + src/glean/api_client/models/listpinsop.py: + id: 3d0b32b3a1ef + 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:4ec9c87f64d63c1eb4e28855d516beca829af78e + pristine_git_object: d0b1cc73635af1b6d993cf26841329f04dbb852f + src/glean/api_client/models/listshortcutsop.py: + id: 299c0fa933c2 + last_write_checksum: sha1:cade0e2fc55c9774df6c3af1ca083ad252a8d655 + pristine_git_object: 8b99ab97753c080ce3ae1d09b38a9f932d138dff + src/glean/api_client/models/listshortcutspaginatedrequest.py: + id: 4a13f02487cd + last_write_checksum: sha1:62f506af550b18168f473a2a4df79f6ec39cd97f + pristine_git_object: 30b1e2d7c8bb25c1ff0b8ef87fb5705e32433de4 + src/glean/api_client/models/listshortcutspaginatedresponse.py: + id: 5ea70beb7323 + last_write_checksum: sha1:15867a78d0e32fa85137acd522e541d4e9fe0f07 + pristine_git_object: d8359a2f30439e9e813bbc38d6406177f5f50260 + src/glean/api_client/models/listverificationsop.py: + id: c0fd4141bc31 + last_write_checksum: sha1:e31b71c4265848b8af683a87062c10034cf6c7dc + pristine_git_object: 16e9645ac5ecfebe78e1d640f885c2ac6ed0c8e3 + src/glean/api_client/models/manualfeedbackinfo.py: + id: b7e93f70592f + last_write_checksum: sha1:da567fbb693ae1e791a2fb159fc68a7a7f92fd00 + pristine_git_object: dc8463af968402f19d118edd7425df56261f5fef + src/glean/api_client/models/manualfeedbacksidebysideinfo.py: + id: 5cd6cc3b46ca + last_write_checksum: sha1:b2717bc4112725c29f9d41376e51fc1212ab844f + pristine_git_object: f0f511048d7e6766eddca8222503bfa475ae120a + src/glean/api_client/models/mcpbreakdowninsightsrequest.py: + id: 332e57fe91b4 + last_write_checksum: sha1:1b302a4ab4ac5f6c4d7f23aa00c213984b44e340 + pristine_git_object: 2893dadf9907c3784a93a86adbff8918aebf62e6 + src/glean/api_client/models/mcpbreakdowninsightsresponse.py: + id: 8d4c4b79318f + last_write_checksum: sha1:4fecec20445ede1663c33a02bbbf199f8abb71f5 + pristine_git_object: 5afd6a5c6f4462d2e2dc8fdd3500253fb820c54a + src/glean/api_client/models/mcphostapplicationbreakdown.py: + id: 1781ca7f416c + last_write_checksum: sha1:d745fe25cc993a40ccee8fad5b7f754c4f839ddc + pristine_git_object: 687302acb43204b46a446bb96d39e413e6bd674f + src/glean/api_client/models/mcpinsightsrequest.py: + id: f0987b48f7ad + last_write_checksum: sha1:d19e1383c5440b23f73e25309f41b76a648d0520 + pristine_git_object: 270fed0d6feb6dea41904c37fd9fb7ff32e2f668 + src/glean/api_client/models/mcpinsightsresponse.py: + id: bc582556e2e6 + last_write_checksum: sha1:08ba2360e6cc0330ced4adeb4198a12dbbd9f2fb + pristine_git_object: e4dd8004941b749d595393ac80f7b0e281482f5a + src/glean/api_client/models/mcpserverbreakdown.py: + id: e18a24a43b3b + last_write_checksum: sha1:128cb65d763be38b59449381cb8dc0f56d80d5a3 + pristine_git_object: aad32563131a8847abe584ca301725dbd6b99253 + src/glean/api_client/models/mcptoolbreakdown.py: + id: c4d0cf268469 + last_write_checksum: sha1:79418ead682d099a3e535fd7c5f9ccccc0ce27ba + pristine_git_object: 5fcb1924ca16d5dad4fe73daaf5465584387fd9b + src/glean/api_client/models/mcpuserbreakdown.py: + id: 1dab2bbf7d27 + last_write_checksum: sha1:d10980a038d4d7e3384c46d0ddbaf2b6b1a0e93c + pristine_git_object: ec4587ff6a16cb153f3de2a43edc1bf9ee7eec53 + src/glean/api_client/models/meeting.py: + id: 0b1f0fdee050 + last_write_checksum: sha1:d727361f35d0138e09cfd1bc1e8480afd0996795 + pristine_git_object: c3c75325b3963366f30722e868b0a315df3f6557 + src/glean/api_client/models/message.py: + id: d2e44a188d40 + last_write_checksum: sha1:2e4eb38d13b95be09550527ce132fa4fac53a8af + pristine_git_object: 9af1fc143591bce1f25e5bb02c8987d0c28f43f1 + src/glean/api_client/models/messagesop.py: + id: 60537c3f3449 + last_write_checksum: sha1:0c6da7e005f1115eb21821ae94fad6fbc1bdc2ab + pristine_git_object: 8e1735a0ecd72434644c9fd7025a168acfc735b7 + src/glean/api_client/models/messagesrequest.py: + id: 5664726a791d + last_write_checksum: sha1:8c056897df7ee00748de5c8e7f580e77a620afe8 + pristine_git_object: 2076bc4f4b990f248b210ed495f793bee5be8ca0 + src/glean/api_client/models/messagesresponse.py: + id: 1c7a6e4dd845 + last_write_checksum: sha1:1d0fcd8f638347b2c5a09b544ae9b350bab23416 + pristine_git_object: d68228bc28c443824b2b73ff1c899053769a56b9 + src/glean/api_client/models/objectdefinition.py: + id: 96d425234754 + last_write_checksum: sha1:bbf4d288df6ccc0bed076dbbc0f6a0ee6dba9d3f + pristine_git_object: f9c359d3f7be386a2e9b6a7d9af5fed1613c4c1a + src/glean/api_client/models/objectpermissions.py: + id: 6a2561118579 + last_write_checksum: sha1:e3d51c6afdf467afe6559222130ac627a2331625 + pristine_git_object: efe9cecc59c9206139c445c77a279b2f711d3e81 + src/glean/api_client/models/operatormetadata.py: + id: 820aa2772189 + last_write_checksum: sha1:b172fe562b7c47bd30f87b81549863fe7740c2b2 + pristine_git_object: 09ba687a03f46086f068df7e719aaa2ba202cf74 + src/glean/api_client/models/operatorscope.py: + id: 143660b5a54b + last_write_checksum: sha1:6848b985c4fb11d0cddf528125d95e3bb26014a0 + pristine_git_object: ebb5f578619d9698b2afab352bd015fb1192fe44 + src/glean/api_client/models/peopleop.py: + id: 0701e843e962 + last_write_checksum: sha1:b75a218c54e4ac93510c44f19dc99fa5803447b7 + pristine_git_object: ab286401ed0296450b2ba4751cdb51ccff6f5a5c + src/glean/api_client/models/peoplerequest.py: + id: a7dcc3001149 + last_write_checksum: sha1:3d45a0ac68de0c33d9e040aa3e263653808803bf + pristine_git_object: 520c04d8b03a50d6c062827eb9dde4f67057f46a + src/glean/api_client/models/peopleresponse.py: + id: 85f4d95884f9 + last_write_checksum: sha1:ed99cd7a6f88c2b90a020d44ca984544e9693cb6 + pristine_git_object: d882d545defeaa06530c915d56890293ccef94c7 + src/glean/api_client/models/peragentinsight.py: + id: 4b4b57287b69 + last_write_checksum: sha1:0fd438e75024952d04620122ce331e0d86aaf383 + pristine_git_object: 6b711e39954fbda467c3b1197903b777398676c6 + src/glean/api_client/models/period.py: + id: 41a45b1daeb1 + last_write_checksum: sha1:a90f23fbb4cd6574f0e53b39f28653fa796d7140 + pristine_git_object: 5e03da4d0ebb1324cbb67b470e6b2884abee7efd + src/glean/api_client/models/permissions.py: + id: f123070d7860 + last_write_checksum: sha1:3b0334bad215f8d510541690dd14c118146547a6 + pristine_git_object: 51f12fd45d92bddf1e7324b8ad76136fbbe8e440 + src/glean/api_client/models/permissionsgroupintersectiondefinition.py: + id: bd15f722101b + last_write_checksum: sha1:d70645b20533b35240e169281bfc04361c8942ab + pristine_git_object: 52b20386d1215ca9d5ddf1510c569954ae510c38 + src/glean/api_client/models/person.py: + id: 486c8c3db123 + 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: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:6e79f1a13d0e41ac17f90d0647cee212fb566d93 + pristine_git_object: f0b080d9fb622465ea1e63cb9a7df477f74525ad + src/glean/api_client/models/persontoteamrelationship.py: + id: d81f4d7f9bd8 + last_write_checksum: sha1:c1dba4b3a689988ff60346d0e29e9217aeeed6e5 + pristine_git_object: e2f3055250a808a9ae22bf8732b7027c7a9c36b6 + src/glean/api_client/models/peruserassistantinsight.py: + id: aad2213c6217 + last_write_checksum: sha1:d873cd304aa0cbe532deb0d41142b61cf993dff3 + pristine_git_object: a24e6f5d004a03a816e2e4eb13594aa3229f20bc + src/glean/api_client/models/peruserinsight.py: + id: a243b1a405fc + last_write_checksum: sha1:c36aa68a3c7ff2ba978814cec4e8b52506b21a54 + pristine_git_object: 37af149f5746dce29d909a3fb5d65b40348ed10f + src/glean/api_client/models/pindocument.py: + id: 77cd94d61387 + last_write_checksum: sha1:e10a59eb835492e79ee1c22148cba76e4eb0477d + pristine_git_object: 7d438a35fc7f1d9bd3f98a4412ae47851d20f130 + src/glean/api_client/models/pinop.py: + id: 9bccdd6255f1 + last_write_checksum: sha1:d3fdbceeda27177a9c8f8b5bcffe8857a07ac1f6 + pristine_git_object: fb63cdf7183848a077fec7d668b6b4cfc544e796 + src/glean/api_client/models/pinrequest.py: + id: 5b14b683421a + last_write_checksum: sha1:73484002a7a37df4baaf05fd282bf904acf54cc9 + pristine_git_object: 1e291af2ba4ec81b33d9b03faad6cb8365c8ab55 + src/glean/api_client/models/possiblevalue.py: + id: 6046129b9c7d + last_write_checksum: sha1:4495a1288f312de877f9bcaa547f35178119ca59 + pristine_git_object: 1881d2039a7b9e4f08c6af33c908a78f051033c1 + src/glean/api_client/models/post_api_index_v1_debug_datasource_document_eventsop.py: + id: abd99421d713 + last_write_checksum: sha1:4f1a7e19b1e2f176074443316570065706fe7cbe + pristine_git_object: e9d136d3d5ad8d8b3ab9b40b9e9761577fc2023b + src/glean/api_client/models/post_api_index_v1_debug_datasource_documentop.py: + id: 9259c6838b6c + last_write_checksum: sha1:dbf680ef7ef2bd63047e7c641dada0fbaeedb4a3 + pristine_git_object: 5ef9dd02cd61c06d41b15895bcd79daa421a2d5e + src/glean/api_client/models/post_api_index_v1_debug_datasource_documentsop.py: + id: 921ceadd0b12 + last_write_checksum: sha1:fe9bb4bbc9b7d211b38a3b2aea9e5d77bf3e210d + pristine_git_object: 12ca7d0e6dca43d78c257faf2a8a6827afbb1191 + src/glean/api_client/models/post_api_index_v1_debug_datasource_statusop.py: + id: 48fb986058c6 + last_write_checksum: sha1:04cbafd3a0132990860a67c577429cc150e96fcc + pristine_git_object: ed9f1cdd8df47d5fe5fb0a093d2327eb21cac1bb + src/glean/api_client/models/post_api_index_v1_debug_datasource_userop.py: + id: cca19ec9ccbc + last_write_checksum: sha1:162556173141c864ffe20c43d34fa1f359f4f646 + pristine_git_object: 79c5a3b12381321be26a7d703e00aec02583a2e3 + src/glean/api_client/models/processalldocumentsrequest.py: + id: eca970f6b17d + last_write_checksum: sha1:1f8d977cd86106f1205fccbd6f7c8898a6276217 + pristine_git_object: aa29557c7b29a299b1d195dbd21d60b60672f2e4 + src/glean/api_client/models/processallmembershipsrequest.py: + id: 237c53ded9e1 + last_write_checksum: sha1:1d520decc6fa8c1bc8960a6b3443fa4d8c33232e + pristine_git_object: f1bba49df88d0d730d9ecf83257dff950d6acf8e + src/glean/api_client/models/processinghistoryevent.py: + id: 87811e111132 + last_write_checksum: sha1:c7dd17b990ab3f56b5f817e397e672f639ad5920 + pristine_git_object: 61b4c04786eee4c0f2e8a864f6eae2564444236c + src/glean/api_client/models/prompttemplate.py: + id: 349206a29c89 + last_write_checksum: sha1:2845d4ff5af26c13353fcbd8060e37bfca043195 + pristine_git_object: 90327467d4d0d687879f460836a2a714abf3f071 + src/glean/api_client/models/prompttemplateresult.py: + id: f4c9cc06db98 + last_write_checksum: sha1:f177b5c594718d1f96f33c8dc4b38f6ead291ff9 + pristine_git_object: efd9ff4700d2bcf26b3593bb40b1d34f6ce6e4fb + src/glean/api_client/models/propertydefinition.py: + id: a5640d2ddbc8 + last_write_checksum: sha1:670a6b36041422f5f8223026c11d665dd3b838eb + pristine_git_object: 6ec503a239bc42d07faceb158b6b8fc2dd665a70 + src/glean/api_client/models/propertygroup.py: + id: f592edab23dd + last_write_checksum: sha1:7a2c704e758bd2703ea9dab202cb663e2784429f + pristine_git_object: f3ed0cfdf6036135f807e6a2d882b2aace08cbde + src/glean/api_client/models/put_rest_api_index_custom_metadata_schema_groupname_op.py: + id: 0a4f9b623706 + last_write_checksum: sha1:651bddf0bd127dbcf32ef23fe556ccb9fa4c8820 + pristine_git_object: 8f79bfe0d3fdb950317b227ebb5384b92487c236 + src/glean/api_client/models/put_rest_api_index_document_docid_custom_metadata_groupname_op.py: + id: 17d516f20862 + last_write_checksum: sha1:fe372f873fcdeb87af1acaebeb499c0d204f1eb5 + pristine_git_object: b8da6cec25c11e6b49e475e53fce749418710563 + src/glean/api_client/models/querysuggestion.py: + id: d999a3a9d983 + last_write_checksum: sha1:d43fb0420b33b016822529d740992d7a5d8274be + pristine_git_object: 39b6d5e513142fa23df9103d52e52a1b2df3632b + src/glean/api_client/models/querysuggestionlist.py: + id: a0b2d6cd9e8d + last_write_checksum: sha1:9579a516d26837e13e185e9e996391d9f8e8ed55 + pristine_git_object: 8723c878c36f42f2c72654b5c752c0b366b5b50e + src/glean/api_client/models/quicklink.py: + id: 0304461c2f90 + last_write_checksum: sha1:80359422d1067bb6718c30c71c371929cb2d85b9 + pristine_git_object: 75045a1ff55daf62bf893cbbb5a52a4287942806 + src/glean/api_client/models/reaction.py: + id: 076b69450df3 + last_write_checksum: sha1:d4a5a1c380a3b4caf64ad3377817376a21071ef6 + pristine_git_object: 40dd0af419479f13e301768f57172ba163037a49 + src/glean/api_client/models/readpermission.py: + id: 13410259df92 + last_write_checksum: sha1:0f5edfe09499050d43d1e50357025eb98516e251 + pristine_git_object: b82781fdc48bac49fc6adcede9a821d4d0874a59 + src/glean/api_client/models/recommendationsop.py: + id: ee5dd14cd496 + last_write_checksum: sha1:4bb0c267213c83cd9fbe74dd460ff03d1373a3d7 + pristine_git_object: 02f83b74189ebfdf73c92a7f45ad619b87cb4df8 + src/glean/api_client/models/recommendationsrequest.py: + id: a520b92b656f + last_write_checksum: sha1:d6d5b9faae629d5a6112b9e3da7cd4d6552d7953 + pristine_git_object: 507d92fa93023593dca8dc8bd3bfe3796f20af5d + src/glean/api_client/models/recommendationsrequestoptions.py: + id: f4240d7e4353 + last_write_checksum: sha1:ac1ad1caf79117cb8c5b742731a05bd185711c11 + pristine_git_object: 162c9f7685718a17f9aa40e0bcd289551b34750d + src/glean/api_client/models/referencerange.py: + id: 99d8cc67073d + last_write_checksum: sha1:51fe4767defc867fcce553a39cccef816a6e0e0a + pristine_git_object: 851c90fafd1ed4ceda5edc31cb61157608a4ebd1 + src/glean/api_client/models/relateddocuments.py: + id: "956195080413" + last_write_checksum: sha1:6b452cc2d10c4c7981a46c4c398a84dd08d12bc7 + pristine_git_object: dd59157988a53eb0383142ced28ee17d30ec78a9 + src/glean/api_client/models/relatedobject.py: + id: c8937c435039 + last_write_checksum: sha1:af8f0e69f54b6dae715a0ec62eb1faf21f931856 + pristine_git_object: 94a1515c39e6ab1ff3120dab4576195df637d2cb + src/glean/api_client/models/relatedobjectedge.py: + id: 73ab27238170 + last_write_checksum: sha1:4291bddffff01dd38c0509314714fd6b483fe935 + pristine_git_object: 6a5b09725efd25c6ca0684b4db6b962790d12d74 + src/glean/api_client/models/relatedquestion.py: + id: 7a4bcc49206c + last_write_checksum: sha1:46f1235014e4f384daaefeb1b398c572ade0f00a + pristine_git_object: 0bd513ec01b8dd34acdf5d6c82baab1e7150edde + src/glean/api_client/models/reminder.py: + id: fa39219753da + last_write_checksum: sha1:9c771e2bf1f3187443201deb26161e3ce30f42b6 + pristine_git_object: 8a084dd759778243af1f96f3980d9c46fa228a0e + src/glean/api_client/models/reminderrequest.py: + id: b74a3f389e9a + last_write_checksum: sha1:fd9a85afc919d58e42c3a0dabb32c75f13a56576 + pristine_git_object: 5f4e8c646b852f53287e854716e5ddf76e60f7e0 + src/glean/api_client/models/reportstatusresponse.py: + id: 772284b8ed0e + last_write_checksum: sha1:6bbd579bf04952878b62702c53ac089940b09314 + pristine_git_object: ea27cecbdfb8bf2dff2b4062579aa3fd70d9c580 + src/glean/api_client/models/restrictionfilters.py: + id: 2fb7b9c3c114 + last_write_checksum: sha1:0c2fb811b3872765eb43b50354d5134c63d31bda + pristine_git_object: 2e649d73bb1a3382337ae1f2f0be2ca96cabe839 + src/glean/api_client/models/resultsdescription.py: + id: 15c668146af5 + last_write_checksum: sha1:9b06335149d9880a28c945e60ebecf497b3e78d3 + pristine_git_object: 7c8140e5c18542cb5b7b13c7f4cf734013d13ac5 + src/glean/api_client/models/resultsresponse.py: + id: 64338eec2f88 + last_write_checksum: sha1:9de171e1987517e200acfb2f98d957ddbe939631 + pristine_git_object: b6ea890230d3c9255ca137b3e671f70f07c672d4 + src/glean/api_client/models/resulttab.py: + id: ab5996a4e338 + last_write_checksum: sha1:47e64ce6b2f42edcd5e311218791fb375f9752e8 + pristine_git_object: 3683f422ddd5b3065454a5a14ccb9639d96dbc9e + src/glean/api_client/models/rotatedatasourcecredentialsop.py: + id: 52c9d892f054 + last_write_checksum: sha1:73f9c6365b506b3c22a7c1c46765a950c7481abc + pristine_git_object: cb55450183516763266b676d597abbd729355f15 + src/glean/api_client/models/rotatedatasourcecredentialsrequest.py: + id: a574c4265375 + last_write_checksum: sha1:62d98c94a9e66f4b4bcd6f3ba2e6b7ef0e5b553a + pristine_git_object: e9dfdd442b5dd8e6a0caecf9079dfaecf1f05d2e + src/glean/api_client/models/rotatetokenresponse.py: + id: 77a67fdbdad9 + last_write_checksum: sha1:70fa60be71c4eb8e04999ca6d84b9e72cea19540 + pristine_git_object: 723b5b9c9e2e7ba03737eee2f019a3547385f027 + src/glean/api_client/models/scopetype.py: + id: 2f48507a9410 + last_write_checksum: sha1:4245fb548034949fad3ffea8f6afa5ddea1ffde0 + pristine_git_object: e45814ba47a94bde527ff4fe6f216224211eb3af + src/glean/api_client/models/searchagentsrequest.py: + id: e4777828bb53 + last_write_checksum: sha1:49a2951cc53859434c49bfd408bfb8f20be732a3 + pristine_git_object: a66f7d033ec65907f16edeafe241698a99ef93f9 + src/glean/api_client/models/searchagentsresponse.py: + id: ab538c03a9e7 + last_write_checksum: sha1:966d23f457caf948ccb9c3146c896cec9aeee922 + pristine_git_object: 9e6b9852b797e99e0b0fdacddc14e29c0a9b733c + src/glean/api_client/models/searchop.py: + id: bf0e9fa90f9f + last_write_checksum: sha1:ceb0ac07f9ef9da3f864de222967630d84295626 + pristine_git_object: d1dd1a5c5cd0cbdbfec3d1b71a11e1c5172eef20 + src/glean/api_client/models/searchproviderinfo.py: + id: b68ee1b0b172 + last_write_checksum: sha1:7eb4317de4570eac02a377fcd3f6d15533390667 + pristine_git_object: 84921983d237d16b44dd1746590d7a78dafc818a + src/glean/api_client/models/searchrequest.py: + id: 719f98a441ea + last_write_checksum: sha1:0b58de889fe0fa092d1457860a54e3a377ab22c5 + pristine_git_object: 535df87596e62767f1f8499a01547f754786078f + src/glean/api_client/models/searchrequestinputdetails.py: + id: f9016fc47ba7 + last_write_checksum: sha1:9590af880bb1d81811808c2f319899523e12fabd + pristine_git_object: 900e4ff23c51d2f7b4182a92cf04782761914c3d + src/glean/api_client/models/searchrequestoptions.py: + id: c7963bd59328 + last_write_checksum: sha1:fc025a6e49aaef42f90f7287592799e53d479ab1 + pristine_git_object: f5006c08f5f60180cb4c99ef4c37855f4d4a0893 + src/glean/api_client/models/searchresponse.py: + id: d705ad40d03c + last_write_checksum: sha1:6cc100f27205541e4ed49ea7046c303fe13b2963 + pristine_git_object: 0135246be23f25b95e11d3d167095e9707730cf1 + src/glean/api_client/models/searchresponsemetadata.py: + id: a10bad5e36b4 + last_write_checksum: sha1:ee67e32b1b616e61867bcc09e81346be64296054 + pristine_git_object: 0d4c2a385af0f5da372d8a647d591ccb6e9468a2 + src/glean/api_client/models/searchresult.py: + id: 80390a0977b7 + last_write_checksum: sha1:8ef2dd214f3e8c975ae28bfd7432e871f2b6d449 + pristine_git_object: 9bcd86392b024ba6a7c5b4727cc5b88198fe860d + src/glean/api_client/models/searchresultprominenceenum.py: + id: 611302793a36 + last_write_checksum: sha1:75da9f35ae33d71515f58654134b6d614f453ecf + pristine_git_object: 27ef471f64a9f280f3142d2f9b825c0058b2c365 + src/glean/api_client/models/searchresultsnippet.py: + id: 70ba81075b57 + last_write_checksum: sha1:cc85a1cd95b1f93826fc1d45d0e6f555ca17ecb2 + pristine_git_object: aff7d94f9b899037827b4af40b273915ca8c99ce + src/glean/api_client/models/searchwarning.py: + id: c2eca228f00f + last_write_checksum: sha1:0a2bcceeceee257d807202e5def6d83dfc85e05e + pristine_git_object: 79a0826de8a9db054081f8b9cdcc3831b1735dbb + src/glean/api_client/models/sectiontype.py: + id: 9b5de392015d + last_write_checksum: sha1:130b8a1f543787e1f3f63915036bcf448ec52ceb + pristine_git_object: 59fe1bb6ae5db2711599be0bb64971a8a8aa4c9f + src/glean/api_client/models/security.py: + id: 79159407101e + last_write_checksum: sha1:8969db847e8b331204e2b1eaf5e1bc16c54048bc + pristine_git_object: c248ffd0c4139a8d90f3d9e90af34490f940f7c7 + src/glean/api_client/models/seenfeedbackinfo.py: + id: 6a7a196ed797 + last_write_checksum: sha1:31b5cbaf866e30162e40c35ec7701fb8e0045e5c + pristine_git_object: a5ebcfaa179fba1405e7aad53f24fcf9acb58110 + src/glean/api_client/models/sensitivecontentoptions.py: + id: 156ff45324dc + last_write_checksum: sha1:54cefb7a0c7833fe1047b9f2dd1320ed3dc059f5 + pristine_git_object: 9c337af1b714eb5f38a87ab7f67baa8cbfd3edd9 + src/glean/api_client/models/sensitiveexpression.py: + id: f2d93e2a2977 + last_write_checksum: sha1:8b4146543b62a90884a429e0b8c1fab6f04b2b11 + pristine_git_object: 4f4970c317e5e47b92aecb2b35e6d6976807a2d4 + src/glean/api_client/models/sensitiveinfotype.py: + id: 6d9d1a461507 + last_write_checksum: sha1:46bfc2535d5d097c56a89af5e3c7e966d4760d45 + pristine_git_object: 61ec44733bdc5ae0deb7b9c710f42b67246990d8 + src/glean/api_client/models/sessioninfo.py: + id: 4127a11bdfbc + last_write_checksum: sha1:109e98c476f5bf747e35b7051e2702961c518167 + pristine_git_object: 0a0ab5212d819022274b18bbd66874850c679af3 + src/glean/api_client/models/share.py: + id: 39287bae7e7f + last_write_checksum: sha1:7baf7314be3c109a90756455cd32f420ca2ea823 + pristine_git_object: 3356d1fb50d14a4d11fe4f7495add5cd422cf7ea + src/glean/api_client/models/sharingoptions.py: + id: c757da755d4e + last_write_checksum: sha1:83b965766c7df4a7b84c3eb9a535bae2c7207819 + pristine_git_object: c6ffe6942fcc6f6cbb8aaaa146c5871f8f4d7ddf + src/glean/api_client/models/shortcut.py: + id: b40331355c7b + last_write_checksum: sha1:0759fa9909cb34e0aa5d8c50aeecb99826288c62 + pristine_git_object: 3b086609585b1ebf364f32dcd7ddd217ff0d5a01 + src/glean/api_client/models/shortcuterror.py: + id: 2f86c1d02a49 + last_write_checksum: sha1:9fe0fd6f8ccde62c2d2eb8eb01e0c56cbfe5a1df + pristine_git_object: b4922a4c5c1d6f564bab4ecdf3ff0823225aafd3 + src/glean/api_client/models/shortcutmutableproperties.py: + id: 16671c35b7ba + last_write_checksum: sha1:2fd1fe7e2d31469e380ae47fd7fc62213c9e24de + pristine_git_object: a70757ead51012662c34111b312c65df755b7990 + src/glean/api_client/models/shortcutspaginationmetadata.py: + id: 84d3ffe2fd5f + last_write_checksum: sha1:ec6b065434c14409bfab5041e0ab7b062f672b17 + pristine_git_object: dd14f76d91c1c9ae65d19d617726b5f2fc4837a8 + src/glean/api_client/models/sidebysideimplementation.py: + id: 76cfd351a2aa + last_write_checksum: sha1:f829edc84b796610597ed5497f7b670517ee9f0e + pristine_git_object: 2df5ff06886601073ff704d1af1176ab8bb8d9a3 + src/glean/api_client/models/socialnetwork.py: + id: 7d186cb460af + last_write_checksum: sha1:009db644209b7aa50fce2b7b061442d74364d0d8 + pristine_git_object: 6540572a0892130ab3ef3210d038663d93f68000 + src/glean/api_client/models/socialnetworkdefinition.py: + id: ff972e9d65be + last_write_checksum: sha1:7b593b4870d2aeb2536629e1be9b750b8f7db385 + pristine_git_object: be8259cd81a246b9a1bbc371d1b0eb6c6682ba3b + src/glean/api_client/models/sortoptions.py: + id: 7e730ebbc35c + last_write_checksum: sha1:7a69b99ac2d064cb8364579fbf2ab7eefb7d591c + pristine_git_object: b47e3975573c6b4fa41b97a1ee74c06d76040a2e + src/glean/api_client/models/structuredlink.py: + id: d619bb983c4a + last_write_checksum: sha1:253c8b08c395c4d5354d84dd4303a6a7cf6f4df8 + pristine_git_object: 64e4e5b9503c69a7fab950d8e05d25dfab543be4 + src/glean/api_client/models/structuredlocation.py: + id: c0c11256d82f + last_write_checksum: sha1:7d0283180442f7c282f013b05df46aade77b1381 + pristine_git_object: 8fc2a7f5653b37df6ce2250dfcaec28d14ec6f89 + src/glean/api_client/models/structuredresult.py: + id: 1777b707d24b + last_write_checksum: sha1:f25435006d961e8157f1788d55b019ac2e98798a + pristine_git_object: ead2bdf1a52968bce716d6fce3519b69fde650d9 + src/glean/api_client/models/structuredtext.py: + id: 5a5980e70744 + last_write_checksum: sha1:cc017d001d800043a1069074138676d128fa6814 + pristine_git_object: dcf058b2fde6c92bd6f0b8ab893e4d53c137da3e + src/glean/api_client/models/structuredtextitem.py: + id: 283dcc948aaf + 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/successresponse.py: + id: ccb94bace869 + last_write_checksum: sha1:526d0e027fa8a066081c0ad2950b0161724c5c18 + pristine_git_object: c48ec8644af3efd5bb4e17a0d7b421499f0f879e + src/glean/api_client/models/summarizeop.py: + id: 2b87b3e6aa4c + last_write_checksum: sha1:47eb38ea7bdfd516866d08dc9214bbc215022f94 + pristine_git_object: 1211d870deb4159e03665024bdd728e40f3adf81 + src/glean/api_client/models/summarizerequest.py: + id: 368175eae49b + last_write_checksum: sha1:860fbd11f01580645fbfa605f8e522b121be9eb2 + pristine_git_object: 2ee5dfa9b22efeb68b34df86294dc9e0bc03c7c4 + src/glean/api_client/models/summarizeresponse.py: + id: f49fb35062e3 + last_write_checksum: sha1:6095fad01602ee9d8810920aafee22caead3b35a + pristine_git_object: ca5dc1b69bd269c493e2a3ee40f1a151b2a3056a + src/glean/api_client/models/summary.py: + id: ec310b5768ac + last_write_checksum: sha1:2512e7b07e429ee63d5066edb6b30ad7209f11fc + pristine_git_object: 35573db75a59c75e36529c5d7885760cd0b68390 + src/glean/api_client/models/team.py: + id: 8899a02080f7 + last_write_checksum: sha1:87f9abc7173690f5eab49c3668e542f4f07aefcb + pristine_git_object: 7fa4e16213e567c637369a357d9f87e34d2f59d6 + src/glean/api_client/models/teamemail.py: + id: e0dd0042405b + last_write_checksum: sha1:42e472b5890b4b0c1c0ae31c078a4b4d9e0f5f7b + pristine_git_object: 73f5b4cdd89f726432ee186f5ab19098daff70ae + src/glean/api_client/models/teaminfodefinition.py: + id: eba67dbd2ba5 + last_write_checksum: sha1:15ffb877c242c1cc3402afde5609e763242d5491 + pristine_git_object: d5e57583e32aab947759344d5f9689d108c4b462 + src/glean/api_client/models/teammember.py: + id: 6c0e36f8a165 + last_write_checksum: sha1:a2881555a6e38ef335aae7523962b4310e028609 + pristine_git_object: 9b534f8c969ecea239d10d528cd1c85de8284151 + src/glean/api_client/models/textrange.py: + id: fd0971fbe1a2 + last_write_checksum: sha1:0d1f2487aa4c25d5511e9028e63aad0ef356ac93 + pristine_git_object: 9cd52eba35b4e1580aae1f49c905fd22dd493267 + src/glean/api_client/models/thumbnail.py: + id: f1c4780867a9 + 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:c20944d39d4f0e62eb1026c6763c1851d91735db + pristine_git_object: 64b09feaa92b4b0829e9c5a27567ae7936f98c49 + src/glean/api_client/models/timerange.py: + id: 781aa895d3c7 + last_write_checksum: sha1:01b81d6451d3f463730d7e5bd2ffaa9c4abb08f8 + pristine_git_object: 7ac2cf3c5844baaccbf4a8aabdc54289a653c46e + src/glean/api_client/models/timerangefilter.py: + id: 0eead7612909 + last_write_checksum: sha1:ba3eb8497c8bd60817be9067eda04a28caff34cf + pristine_git_object: b8ad317806ded0ecdc42bd4d923de199881e4922 + src/glean/api_client/models/tool.py: + id: acaa76f0ab87 + last_write_checksum: sha1:d6eefafc0dbe06ada923be3af630ca6c40cbd45d + pristine_git_object: 86839d1b3a9942ee9890d1bbcb29d4326ea63685 + src/glean/api_client/models/toolinfo.py: + id: f210c6276023 + last_write_checksum: sha1:0fb5a9601b9e8ecd9cd71c2f82624fbac8a592f7 + pristine_git_object: 9bbfdf3278d0a840ffbd7de03fa1cd3927bee8b6 + src/glean/api_client/models/toolmetadata.py: + id: 7ed199e1f217 + last_write_checksum: sha1:93f394a1653533d3c9c4515dd9b94b5c4a2aaa70 + pristine_git_object: a87122b41ef7ae14ff56b4f5e18bfc59e2763957 + src/glean/api_client/models/toolparameter.py: + id: 630b822ac98b + last_write_checksum: sha1:f74e8f9a8b2c6b6e33f203a47ce22b726956b4b4 + pristine_git_object: 2e00547de68060483eb4c0bd03776f98448ad333 + src/glean/api_client/models/toolscallparameter.py: + id: 983b41ea115b + 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:cfbece61e77a75264b9969fe7197135393087b29 + pristine_git_object: 9949402b2ffc01f5070ca7153d7269151ea1e3b2 + src/glean/api_client/models/toolsets.py: + id: 72b778695427 + last_write_checksum: sha1:769b67c2c1f91052572476e4815eb7c86df25703 + pristine_git_object: c1ecb2c2d2fc66f7f60a63730124c56fae49ce95 + src/glean/api_client/models/toolslistresponse.py: + id: 80ee602f49c0 + last_write_checksum: sha1:fcb7dcb2d397e61affaee277952ad255b1f3a947 + pristine_git_object: 8b5a32ccf25fcfb0fb904e8046bf1b36110a3880 + src/glean/api_client/models/ugctype.py: + id: 9afda9fb9dd7 + last_write_checksum: sha1:de5bd700977491b8c70af26d6ecd89a46a19944c + pristine_git_object: 7775bf5a69464558210caaf38fe31633c8a7d134 + src/glean/api_client/models/unauthorizeddatasourceinstance.py: + id: d3507c78b8df + last_write_checksum: sha1:e86e33256eecf3766c2cc9fedeab56e34e0f129c + pristine_git_object: 526f77245423fa7bdea4fd79611568ce7d1ab604 + src/glean/api_client/models/unpin.py: + id: fd3f7ecf7a4f + last_write_checksum: sha1:4a6c085a7adc9e096bf94eaa44c10385f1b67e17 + pristine_git_object: 406ddefe413ec39dd66dd60c2a85e87be9343881 + src/glean/api_client/models/unpinop.py: + id: 37bd03782f09 + last_write_checksum: sha1:c5e5144c2a07f606228a79f9cbc582b8d0c98477 + pristine_git_object: 788b1fdb04944cb32b07461c5a0ecdc5a9f24e16 + src/glean/api_client/models/updateannouncementop.py: + id: d409429a77e2 + last_write_checksum: sha1:ade4910fc7b004a312259f9c4b6aa7fd036fd292 + pristine_git_object: 8ccce4d02d629fff50652a4174c6f54999946173 + src/glean/api_client/models/updateannouncementrequest.py: + id: 4e395ad26b24 + 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:a7e3e3ac77f9d12bf18f4ae19eff7efe1cea597d + pristine_git_object: dfa51cedbbfd90f614d4081984c46e7a1f3784ac + src/glean/api_client/models/updatedlpconfigresponse.py: + id: ebdba2bf5b4f + last_write_checksum: sha1:90fd4a8d4128ea8868bffa008e820edf789f7187 + pristine_git_object: 216e80d9c8139898c93a80490dba41386e952ad5 + src/glean/api_client/models/updatedlpreportrequest.py: + id: 955dc0f697ca + last_write_checksum: sha1:fee504071f3fdd7137f1f6a48ff4d02a5a1a0c60 + pristine_git_object: 8fdd3dd17dcf39232d8ca3d595cbcfd3289f95ef + src/glean/api_client/models/updatedlpreportresponse.py: + id: 4d603da790ea + last_write_checksum: sha1:4721c153bcb2ffaabfa9586d5277567d7a48029a + pristine_git_object: ecb9e43f2342345855f4ae68c761086209ce119d + src/glean/api_client/models/updatedocumentvisibilityoverridesrequest.py: + id: 90d244edbd6e + last_write_checksum: sha1:2bbfff791dcfbb383b15a1988cc33a2d634cb895 + pristine_git_object: 94e18dacb0a992d93450e5ac41d11a16ba0af086 + src/glean/api_client/models/updatedocumentvisibilityoverridesresponse.py: + id: dbb7fcf4b9d4 + last_write_checksum: sha1:b9a064834b34f180499be5782d836c94fce64cb0 + pristine_git_object: 480787419c72aada57f0bdaa35c13910392d5af7 + src/glean/api_client/models/updatepermissionsrequest.py: + id: ba573c50cb8e + 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:212766f3c8400107ec76808b0ad9c696949e4100 + pristine_git_object: f047f8ac73141a5daf60adffa1a7b02556747d57 + src/glean/api_client/models/updateshortcutrequest.py: + id: b8914e398f61 + last_write_checksum: sha1:e150c110b1a22d17f7d3890f7641b9259c105fe4 + pristine_git_object: 4b89b63afb6be07639b415aa1e966e25fb0a649c + src/glean/api_client/models/updateshortcutresponse.py: + id: 0080d0c4a831 + last_write_checksum: sha1:d663c9a98c3a61ec5d1c5cfc7e91d5463c9a4938 + pristine_git_object: 9c51a9a413af75272894448766fac05e234923d5 + src/glean/api_client/models/updatetype.py: + id: bdade91a9b2b + last_write_checksum: sha1:7b185f14a24c29e8b53ce58533971828af23f4ef + pristine_git_object: 6a51a4bbf41b92eae18eeca9df409b52522ab70d + src/glean/api_client/models/uploadchatfilesop.py: + id: 29eaccdd7727 + last_write_checksum: sha1:49c7eecd495fafef3262c61a38cca3ca16c057ef + pristine_git_object: 4aafc91088fbdc1fe88f61ea577e131b6bbea769 + src/glean/api_client/models/uploadchatfilesrequest.py: + id: c648ec79e147 + last_write_checksum: sha1:30d482b8435697b94c62f72ae38a235ea9e1f2e6 + pristine_git_object: 8e8d01c07cc98fb2347ea8e94b0ecc3d1a10ee0b + src/glean/api_client/models/uploadchatfilesresponse.py: + id: 73c5f35b8280 + last_write_checksum: sha1:8876a4b054e7099e4ab7be02969b945f19618a92 + pristine_git_object: a707d722e5da141e451a2c017a9e56ce292f01ef + src/glean/api_client/models/uploadshortcutsrequest.py: + id: 4f829de3d1cc + last_write_checksum: sha1:fd127151466f2fb034ed5039fdfb9a2ccd0440d0 + pristine_git_object: e73b9c17d98242d041111ad18c5d0c8a9b35d4dd + src/glean/api_client/models/uploadstatusenum.py: + id: a93d3718abcc + last_write_checksum: sha1:3de738be3c16545f46bc3a05ba903e5cab17a216 + pristine_git_object: 950f6a404fa4ea4f8667a58817fd471f0b000b7a + src/glean/api_client/models/user.py: + id: 4a3ebe791009 + last_write_checksum: sha1:6d89823e90d4e93add8c251f1acb02b62a032963 + pristine_git_object: 3a8ab795961f4f19f29a41c1dfc4572fef3613d1 + src/glean/api_client/models/useractivity.py: + id: 7ed02b8eeead + last_write_checksum: sha1:d66376c26f1c30cbaf8accd738bb678b53687ac3 + pristine_git_object: 17d6333ec93d40cdc66a0c34905b8448fa950298 + src/glean/api_client/models/useractivityinsight.py: + id: 07ac5bf2e903 + last_write_checksum: sha1:98d6ae5191726e765f8eb4f39fdcebf3fa9ae5be + pristine_git_object: 692a10352b2b48ca8c2f24a65fd5b18b35a2abac + src/glean/api_client/models/usergeneratedcontentid.py: + id: e51bf3d3e0b3 + last_write_checksum: sha1:70c041ff5c91f2778fd6e516cea33e04dfe684ac + pristine_git_object: cd30606c9a481635c29b032b245e8759d82516f9 + src/glean/api_client/models/userreferencedefinition.py: + id: b094f30ebd7e + last_write_checksum: sha1:21b47a5c10ca61f02a14f58ab0c8c23ea5da1fc9 + pristine_git_object: ae7ab2967f8de4d7dac2cf03053d528a91bee43e + src/glean/api_client/models/userrole.py: + id: 63599e4c3216 + last_write_checksum: sha1:4ec82f0c733b59d7b8de27a5d655e8edba17e88b + pristine_git_object: 2768603fd77e16d9f82da184d9e236a9e2a8fde2 + src/glean/api_client/models/userrolespecification.py: + id: c746dd831aa4 + last_write_checksum: sha1:63e66be2502d6fc53e1ef2000c81f727c7c7be93 + pristine_git_object: 485de693b31d4e66a0f97fdb883c71695deddce2 + src/glean/api_client/models/userstatusresponse.py: + id: 30477cf9a61f + last_write_checksum: sha1:96b0eba205dac7e1729d80f36b1ec83445f6e391 + pristine_git_object: 0ee6f353859f22c0772d82b3d187779a9bc05e88 + src/glean/api_client/models/userviewinfo.py: + id: d03415292af5 + last_write_checksum: sha1:48f8ae7205dbb6bf549d0ca7d0ac646c7ce92b9e + pristine_git_object: 9dfde209095574f6bdd7f8a580635fd06971ddde + src/glean/api_client/models/verification.py: + id: f20b858aacfe + last_write_checksum: sha1:3255ba06f7cc4851886e5849ecb08c8974b7d8ff + pristine_git_object: 014203d0d0fc8e884c28db44fb6b8aa0f4887213 + src/glean/api_client/models/verificationfeed.py: + id: a4d305725b8f + last_write_checksum: sha1:9113b50bf3349d304e489ce838fdd6f98d2ed8e7 + pristine_git_object: 46752ed82d3dd5a89347be26cfe8fd15c3defca1 + src/glean/api_client/models/verificationmetadata.py: + id: 16a575323484 + last_write_checksum: sha1:9188962a6d01167cb9a043929edcd73117d6f7f6 + pristine_git_object: a04d6ea398204a7d84b37756759e24ffb100a5e1 + src/glean/api_client/models/verifyop.py: + id: 99ea97ea1819 + last_write_checksum: sha1:fd1ab5a3d7882ed9a2a08bb88621d918eaae7c9e + pristine_git_object: c4c3e68112f54b31a11cbb442f021fdbedc0a29c + src/glean/api_client/models/verifyrequest.py: + id: 7a0d65d316c5 + last_write_checksum: sha1:3ecb78e68f8c63b8dd9211638062de15a91b69fa + pristine_git_object: 7c93b46f83ad101dd6862f42f7bda2e7e8e12399 + src/glean/api_client/models/viewerinfo.py: + id: dc44fac102b9 + last_write_checksum: sha1:894263c20c3dd83f12fee778e389ff8b363d91a3 + pristine_git_object: c85d80b8e9da0b2f99777352408e26947e014e7a + src/glean/api_client/models/workflow.py: + id: e59e0fe5f663 + last_write_checksum: sha1:3a4398a5c544a363a9b8cbb3b858cffd0ee46186 + pristine_git_object: defc45e2a51bad2adf4c51a5e65000aef94ea9cd + src/glean/api_client/models/workflowfeedbackinfo.py: + id: 720e747620b1 + 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:3df741b5e9c69a1889b8135b1c7baaf7a2131ca6 + pristine_git_object: 65b3d94cc5cf6a65bc909386d5c5ffaea6e3092a + src/glean/api_client/models/writepermission.py: + id: e15ed09cb123 + last_write_checksum: sha1:fe32a275a30e01eeb69c059cbdbbb9d7318c71ad + pristine_git_object: 85e816dc7cea2c95b4e067d756e428be2696d0a4 + src/glean/api_client/people.py: + id: e32c03723ded + last_write_checksum: sha1:5e61d51a667fef9cab9fc6f597a17fcff6df1f79 + pristine_git_object: 8f853d2a543d89ce7553b9e67dd3cf6bfc64c2b7 + src/glean/api_client/pins.py: + id: 4a37ead65f8a + last_write_checksum: sha1:064a62119d9345a93c5b14a465e70e88df97e591 + pristine_git_object: 0127c0074ca0c944349830ab3806d893f1c4ba4e + src/glean/api_client/policies.py: + id: 680f941e0620 + last_write_checksum: sha1:b2509e090e4e63b42c01a0592bcdf857122b7c02 + pristine_git_object: 91b7c01d3b49ac3b7aa396e316c81a3d1134e48f + src/glean/api_client/py.typed: + id: 85a37d5088f9 + last_write_checksum: sha1:8efc425ffe830805ffcc0f3055871bdcdc542c60 + pristine_git_object: 3e38f1a929f7d6b1d6de74604aa87e3d8f010544 + src/glean/api_client/reports.py: + id: 5e6fdf55dd93 + last_write_checksum: sha1:92b1240cbb407520682cfad15978ffbacfdb7e4d + pristine_git_object: 1a11b2534c1e9dd6dfcebefd5058cb2a2c0a9413 + src/glean/api_client/sdk.py: + id: e2de37b3ce92 + last_write_checksum: sha1:c65cc4e430c4ae9413a32c5feabd21b4bd54bc78 + pristine_git_object: 7f06495060eff52aa801307514beaad5fbc2bf38 + src/glean/api_client/sdkconfiguration.py: + id: f356ce00b5b7 + last_write_checksum: sha1:1ae43e08ae57ae277b3ab5e66b52d020149ebe00 + pristine_git_object: 22e0a4eab0ef8e54dcfd986084d01c14a56f47a6 + src/glean/api_client/search.py: + id: a3b404a8b402 + last_write_checksum: sha1:69ed4e3adb9f484f5b83d601aa6c7cce686b2055 + pristine_git_object: 2274683221d56688636689111335be70ddf62a99 + src/glean/api_client/tools.py: + id: 3ea40147c1cc + last_write_checksum: sha1:c9b1636b2cde77d5a505ce01225171a4305e36d9 + pristine_git_object: 42b0a0c4dad22b0fabd8714732ee2baeaa5b2120 + src/glean/api_client/troubleshooting.py: + id: 39ea2644e031 + last_write_checksum: sha1:1d5af9d5cd6ccca46c2107190757f7d9e45ccb5d + pristine_git_object: 5f427234201abf2b8eaa43a518b6370ad67b7710 + src/glean/api_client/types/__init__.py: + id: f63c790831ee + last_write_checksum: sha1:f9ad14217f832e74f594285960125add50324be9 + pristine_git_object: faa268137bc01c9d08cfadc4797017db48747a96 + src/glean/api_client/types/base64fileinput.py: + id: 83c3e0b80185 + last_write_checksum: sha1:4780e893d3853b5a6e28d9a6ca3ee102ce0f502d + pristine_git_object: 25fc53989ed497649363f983219fc58705c8bf87 + src/glean/api_client/types/basemodel.py: + id: 436a12e02484 + last_write_checksum: sha1:10d84aedeb9d35edfdadf2c3020caa1d24d8b584 + pristine_git_object: a9a640a1a7048736383f96c67c6290c86bf536ee + src/glean/api_client/utils/__init__.py: + id: d681dc4f06b3 + last_write_checksum: sha1:0f93d821f9cb3e061ea125d881bb6f61166738dd + pristine_git_object: aded7597c2bbc4e3fa7f555755d894671ac57741 + src/glean/api_client/utils/annotations.py: + id: 8431a3a9fc4f + last_write_checksum: sha1:a4824ad65f730303e4e1e3ec1febf87b4eb46dbc + pristine_git_object: 12e0aa4f1151bb52474cc02e88397329b90703f6 + src/glean/api_client/utils/datetimes.py: + id: cc5f732df6a7 + last_write_checksum: sha1:c721e4123000e7dc61ec52b28a739439d9e17341 + pristine_git_object: a6c52cd61bbe2d459046c940ce5e8c469f2f0664 + src/glean/api_client/utils/dynamic_imports.py: + id: cc87d9ea2304 + last_write_checksum: sha1:a1940c63feb8eddfd8026de53384baf5056d5dcc + pristine_git_object: 673edf82a97d0fea7295625d3e092ea369a36b79 + src/glean/api_client/utils/enums.py: + id: f52630e8819a + last_write_checksum: sha1:bc8c3c1285ae09ba8a094ee5c3d9c7f41fa1284d + pristine_git_object: 3324e1bc2668c54c4d5f5a1a845675319757a828 + src/glean/api_client/utils/eventstreaming.py: + id: fdc3230ebb0e + last_write_checksum: sha1:620d78a8b4e3b854e08d136e02e40a01a786bd70 + pristine_git_object: 3bdcd6d3d4fc772cb7f5fca8685dcdc8c85e13e8 + src/glean/api_client/utils/forms.py: + id: 00f73e14b0f0 + last_write_checksum: sha1:0ca31459b99f761fcc6d0557a0a38daac4ad50f4 + pristine_git_object: 1e550bd5c2c35d977ddc10f49d77c23cb12c158d + src/glean/api_client/utils/headers.py: + id: 1510f7a21a4e + last_write_checksum: sha1:7c6df233ee006332b566a8afa9ce9a245941d935 + pristine_git_object: 37864cbbbc40d1a47112bbfdd3ba79568fc8818a + src/glean/api_client/utils/logger.py: + id: 52ecb57df27f + last_write_checksum: sha1:2845dd30062a5b85273ff4ae1b43431af9e4d500 + pristine_git_object: 6a16fe3e1046ea9ed0ddd098f8d67cd5084f5bb0 + src/glean/api_client/utils/metadata.py: + id: 3fc71f405e83 + last_write_checksum: sha1:e703e5cbb5255144aacf86898d1420529afaaff8 + pristine_git_object: 5abddd588837ac297050ca3b543627faadb350a9 + src/glean/api_client/utils/queryparams.py: + id: 481cbc2ea6b0 + last_write_checksum: sha1:b94c3f314fd3da0d1d215afc2731f48748e2aa59 + pristine_git_object: c04e0db82b68eca041f2cb2614d748fbac80fd41 + src/glean/api_client/utils/requestbodies.py: + id: 2191ba4efe4a + last_write_checksum: sha1:e1fef575283b7fe7fe2ad392dbbb3fb105309124 + pristine_git_object: 591415af8e64baa410627b507d2740afb5387d13 + src/glean/api_client/utils/retries.py: + id: 36d4cce6fbf6 + last_write_checksum: sha1:471372f5c5d1dd5583239c9cf3c75f1b636e5d87 + pristine_git_object: af07d4e941007af4213c5ec9047ef8a2fca04e5e + src/glean/api_client/utils/security.py: + id: 5c4255995c2c + last_write_checksum: sha1:355ba142fd72ec019e46b9aadb1da7172c17a312 + pristine_git_object: 4a272f16c2af33f6364bd9aec9cdc33b91f228d2 + src/glean/api_client/utils/serializers.py: + id: c499367f56e9 + last_write_checksum: sha1:61009f2e4ef6613a1a5af813fe020373dae5a492 + pristine_git_object: d2149f8b909cb96628db140ac3cddb1b1e981367 + src/glean/api_client/utils/unmarshal_json_response.py: + id: 10872f2f336a + last_write_checksum: sha1:8bea26e2247cd1c5b8dc60c70725ad0aed487c6d + pristine_git_object: d65a9662fbd980da32b4a2af7066036450a09c01 + src/glean/api_client/utils/url.py: + id: 1e37881af992 + last_write_checksum: sha1:6479961baa90432ca25626f8e40a7bbc32e73b41 + pristine_git_object: c78ccbae426ce6d385709d97ce0b1c2813ea2418 + src/glean/api_client/utils/values.py: + id: 3c2d5aa49b0e + last_write_checksum: sha1:acaa178a7c41ddd000f58cc691e4632d925b2553 + pristine_git_object: dae01a44384ac3bc13ae07453a053bf6c898ebe3 + src/glean/api_client/visibilityoverrides.py: + id: 85e53a1c5de5 + last_write_checksum: sha1:2476bd662c4f99ea96f9f9199e9c0c5402ef2274 + pristine_git_object: ecbc256b43054dcabb7346c9adcd309320f10a93 + tests/__init__.py: + id: 8e911f6351f3 + last_write_checksum: sha1:cffdfca8e87b9acc39f414eddf64d233ba5fe450 + pristine_git_object: 368144a74354ed71268d935bfe85efcba8c388ed + tests/conftest.py: + id: 626af34e8204 + last_write_checksum: sha1:491c49c033b7c43cb406e4c5b1ffffebb41713f3 + pristine_git_object: 8929d317282b341546a6dd5d78365aa062ff41f9 + tests/mockserver/.gitignore: + id: 7705eb663274 + last_write_checksum: sha1:228e1b05712a973948fd771323a2140a3b355ff4 + pristine_git_object: 9544318b09f3a2a6b6ac2a9d7830a08d850fac0e + tests/mockserver/Dockerfile: + id: 509a8fa60119 + last_write_checksum: sha1:72b74bf83cc79b4436ffe1a33211198ea447f06a + pristine_git_object: efdea18c5a25f2e1aef374286c28bc8df9f31c5d + tests/mockserver/Makefile: + id: 87b9a2076cc9 + last_write_checksum: sha1:f2619d7634d211c3c01dd68668635b0ebdbfc1ea + pristine_git_object: 2ae6a36c4542ec0511c8959bdaed46fa5c8c8603 + tests/mockserver/README.md: + id: 0f381af25776 + last_write_checksum: sha1:aa2bb9124570a1c12a3c81d728100c305a59220c + pristine_git_object: c8424fd3262b8c686a698dd14b9c4accd4024f43 + tests/mockserver/go.mod: + id: 3c047699246d + last_write_checksum: sha1:e60cd88b747c397c0032d108a4e099e8b365721e + pristine_git_object: 8b92440779e9983727f1affaa2135e2da12aba28 + tests/mockserver/go.sum: + id: ae54f5148e56 + last_write_checksum: sha1:cdeb52f5f4c63d07ba612730867a95b0ddb14b2d + pristine_git_object: 37327eda789a77df465ab478074ffcb1fc3729cf + tests/mockserver/internal/handler/assert/contenttype.go: + id: bacbdd6bf4df + last_write_checksum: sha1:2d059a68e53e70b269ddf897f8c6017f94434e18 + pristine_git_object: 42afbd06ec813272247c6ed3850eb09c86c4d0ae + tests/mockserver/internal/handler/assert/header.go: + id: 21ca515afb79 + last_write_checksum: sha1:a0866dfd740d218b5b94741ac92db4cdf5a2acd9 + pristine_git_object: 50f910d96ab053137ef54de0499d859863e7d171 + tests/mockserver/internal/handler/assert/parameter.go: + id: efc035843170 + last_write_checksum: sha1:0df39c0981a929c99ae767201b628d8c9e31f288 + pristine_git_object: f8a5e45a1de19f1d21d4cda5183c0113b7519e2a + tests/mockserver/internal/handler/assert/pointer.go: + id: 068d29151cd4 + last_write_checksum: sha1:48714196fb47649be28e8df031761038a9e10ee6 + pristine_git_object: fa03e4c854a3c4669e610805250cff96cb8cc583 + tests/mockserver/internal/handler/assert/security.go: + id: 63140ec08b9c + last_write_checksum: sha1:3cee6e3d2babea02486fd2df08eb00840f5ddea9 + pristine_git_object: 7d0a714a691ec21201de23089cfea85bf89ca017 + tests/mockserver/internal/handler/doc.go: + id: 0b5fbf2792c6 + last_write_checksum: sha1:a49b83f9fc775d3cc6f558b0f52b2fc9cf04f863 + pristine_git_object: a4e60c89d0f5fda085e691f8a5670b1ecb4d1dd1 + tests/mockserver/internal/handler/generated_handler.go: + id: a30122c36456 + last_write_checksum: sha1:32101ddff940c59f43a805af303cf645a2bcca0d + pristine_git_object: 929558ef2e1165f7e09da6d0a64f016c90971655 + tests/mockserver/internal/handler/generated_handlers.go: + id: 61ac4f7cce9e + last_write_checksum: sha1:1efa96a429f9879c5cdb7bd064661b396b568d31 + pristine_git_object: 6400b090e0a8e321f6348ef79d2b14fb83571f7b + tests/mockserver/internal/handler/pathdeleterestapiindexcustommetadataschemagroupname.go: + id: 979e4583765b + last_write_checksum: sha1:b1d4edb259d907c7a88b634bf16f0cf152321693 + pristine_git_object: 1aa2e9f6cdcad19be818e7f01506b118689691c7 + tests/mockserver/internal/handler/pathdeleterestapiindexdocumentdocidcustommetadatagroupname.go: + id: 502db61f4b70 + last_write_checksum: sha1:4ac03fda8cf26645eda1638b75f8c187ae7cf500 + pristine_git_object: ff7097f855b75a46f88c437dfba247c1a1c17e52 + tests/mockserver/internal/handler/pathgetrestapiindexcustommetadataschemagroupname.go: + id: a14a30d0e377 + last_write_checksum: sha1:83a992c70c3b7d010928d89a52f70db1042dd186 + pristine_git_object: 2c4b02fd1ef40990278fb1a2cd2173744cc508bc + tests/mockserver/internal/handler/pathgetrestapiv1actionsactionpackactionpackidauth.go: + id: 8af939b81cf6 + last_write_checksum: sha1:29914fc3785eaf9980aad75324ebece95ad62e10 + pristine_git_object: 97d3b63e28c6523d51222993ac6fa150cbd77000 + tests/mockserver/internal/handler/pathgetrestapiv1agentsagentid.go: + id: d72b20162abe + last_write_checksum: sha1:5210b43a5c1c7157ff57f7140449d82dc622931f + pristine_git_object: 416153625af26f14e98df5957fabb0f2c73eb900 + tests/mockserver/internal/handler/pathgetrestapiv1agentsagentidschemas.go: + id: 82bfcf01432b + last_write_checksum: sha1:a70fc628d284a0c11701c7d69a5d22dfdf118706 + pristine_git_object: c10d567f7e22ee3757b5b705e10f768ef5cb3bbd + tests/mockserver/internal/handler/pathgetrestapiv1chatfilesfileid.go: + id: a8a397bcd6b6 + last_write_checksum: sha1:887b475c2bb4766471ef5c168ed08b9333d8cad9 + pristine_git_object: 17e141f6577ca042122915970e39e001fa3b81e9 + tests/mockserver/internal/handler/pathgetrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go: + id: 89346cda44eb + last_write_checksum: sha1:be1ef6d303273236aa6b9797453a04bb778cdd62 + pristine_git_object: 9344b896fbe47d98a67ce164d994224352a161df + tests/mockserver/internal/handler/pathgetrestapiv1datasourcedatasourceinstanceidcredentialstatus.go: + id: 9c56c022fa2e + last_write_checksum: sha1:6738c2aab3e1125b511f4eed18ac16c51be2c001 + pristine_git_object: 92d8c1fa857c6776020144e37a705d298ff9859e + tests/mockserver/internal/handler/pathgetrestapiv1governancedatafindingsexports.go: + id: b566408e9207 + last_write_checksum: sha1:06b13f04c06621c32cd5d4664612a3804ffc49c2 + pristine_git_object: 777d476b2ef6d21b27ebfd13d2103319f5bcb831 + tests/mockserver/internal/handler/pathgetrestapiv1governancedatapolicies.go: + id: a870b49b06e8 + last_write_checksum: sha1:6089d4b8e771bd03d202691f0be1c3a7ed9fb6e8 + pristine_git_object: bbf888e6be13ab7f94b85fb9c1189ca2fc2854ee + tests/mockserver/internal/handler/pathgetrestapiv1governancedatapoliciesid.go: + id: 783f8a29cf35 + last_write_checksum: sha1:08b8057f91f2a800304987937336f033580406df + pristine_git_object: 102ff17bf163cfc31891f3d944eaefea89f84009 + tests/mockserver/internal/handler/pathgetrestapiv1peoplepersonidphoto.go: + id: ab4b35f72782 + last_write_checksum: sha1:086d9b020ab7cd0e78ed6d28933e95c09b82e498 + pristine_git_object: 253b4d87e6614dac4673d9387be09f0bd3258062 + tests/mockserver/internal/handler/pathgetrestapiv1toolslist.go: + id: 1598fa297cf6 + last_write_checksum: sha1:8b0d26cd221009e78396ed0c573e78c0ac719e36 + pristine_git_object: 163466cb44aa1a16439b3bd65ab52f00aeeff427 + tests/mockserver/internal/handler/pathpatchrestapiv1configuredatasourcesdatasourceidinstancesinstanceid.go: + id: 24dd79d2c474 + last_write_checksum: sha1:14d3e93a3f37b61145188a9e6544398fcfc200e4 + pristine_git_object: 40105d8daeb4ec2dd77c36244a4db0e63b847ee1 + tests/mockserver/internal/handler/pathpostapiindexv1adddatasource.go: + id: 549adf61c832 + last_write_checksum: sha1:f1c92a8b8e4db16ee9334d7e28f8abec8c52d50e + pristine_git_object: 34e56c051a1de4db54b39cd3ff8f53fa892721b9 + tests/mockserver/internal/handler/pathpostapiindexv1betausers.go: + id: d357c89e97da + last_write_checksum: sha1:a651d2172a1cc47aea2feb8f9b4af37fa0d6fb67 + pristine_git_object: 3df89e08d36a4a79a3f5af39e494f5167012402f + tests/mockserver/internal/handler/pathpostapiindexv1bulkindexdocuments.go: + id: 29888ed04ce3 + last_write_checksum: sha1:68ea2acc41ce39cfd8b11aed122ca17d75575736 + pristine_git_object: 8801ff3b4ee68d9d8ecffcc8ea0c760f80c743c4 + tests/mockserver/internal/handler/pathpostapiindexv1bulkindexgroups.go: + id: 2928641ed522 + last_write_checksum: sha1:ecaf8d8097a13ad901c096ec276d3644085e01f4 + pristine_git_object: 8d3011e37966e045fae5bff361fb3e1b91868b20 + tests/mockserver/internal/handler/pathpostapiindexv1bulkindexmemberships.go: + id: 407a33d1a94d + last_write_checksum: sha1:9f735c241cf4ba6a0bbad18729573318ac18d414 + pristine_git_object: 5ba85f7408347e41b1abf3f0016b60260484f17d + tests/mockserver/internal/handler/pathpostapiindexv1bulkindexusers.go: + id: 7ccba88b3749 + last_write_checksum: sha1:c546b06949f735701f4c6c106c39edb947a63d4b + pristine_git_object: 7839fcf32fa3f8fdec15a1316b71ad0043e762aa + tests/mockserver/internal/handler/pathpostapiindexv1checkdocumentaccess.go: + id: f5c15e5c9550 + last_write_checksum: sha1:083cc0fd184fe85e11732efeaf655a94766e485e + pristine_git_object: 694a298e6520dec7101952083a840cd6433ae820 + tests/mockserver/internal/handler/pathpostapiindexv1deletedocument.go: + id: fae713eb6713 + last_write_checksum: sha1:f89b4868c7de24296485b340a550c1bccfe2d2b8 + pristine_git_object: 34beba465288c142d7363ab0e91372b410f6a9bc + tests/mockserver/internal/handler/pathpostapiindexv1deletegroup.go: + id: bee02d25ba83 + last_write_checksum: sha1:9d5ad5647139a434081c0288ff0c577d961a5016 + pristine_git_object: b4ae2858a87d53266a4eec24db61403c0b5678f5 + tests/mockserver/internal/handler/pathpostapiindexv1deletemembership.go: + id: 906e9d03cf68 + last_write_checksum: sha1:200533ffaaba0dd8ca43b72a78b98473d4e52b47 + pristine_git_object: 99968cf2a4f0428a16886cd8ae25de76c0f9f470 + tests/mockserver/internal/handler/pathpostapiindexv1deleteuser.go: + id: cc66dc7cd1c0 + last_write_checksum: sha1:4583198cf9e535af6d0c3decd7e87675b34e48a0 + pristine_git_object: c837223790f5b1a796925e9d0c722b105e951327 + tests/mockserver/internal/handler/pathpostapiindexv1getdatasourceconfig.go: + id: 74a829f18d1e + last_write_checksum: sha1:d7ec1d3a2b07ee43932e477ab1df5670c941a06e + pristine_git_object: c7b4ab25e8ac6a0e502986dedd345fcd8798872f + tests/mockserver/internal/handler/pathpostapiindexv1getdocumentcount.go: + id: 1c90ed77e53b + last_write_checksum: sha1:f0a6f49cd1d5a9d3a6f3f9e1f7bc2629c62f4d24 + pristine_git_object: dbc8be6a27700c61d94f81db39f3c4c585a48313 + tests/mockserver/internal/handler/pathpostapiindexv1getdocumentstatus.go: + id: f04ef794dc36 + last_write_checksum: sha1:49b89d80eb4cc689c91f4b36d08788a314d34003 + pristine_git_object: d7afbcdcb696d3645d32eabd90bbf755bf0f857d + tests/mockserver/internal/handler/pathpostapiindexv1getusercount.go: + id: 6a5569fa5a39 + last_write_checksum: sha1:2dda97b8d3e7eb8fb02166b9a4183af3fe721431 + pristine_git_object: 4fcb5e77d62799c2018aaa8a4307bfcdb60a36ce + tests/mockserver/internal/handler/pathpostapiindexv1indexdocument.go: + id: 537d442278e6 + last_write_checksum: sha1:d2ab55b61378b69cdd3ae5a619034378ea038b89 + pristine_git_object: e6d4878ce926851b8ff65307416b705e238c3056 + tests/mockserver/internal/handler/pathpostapiindexv1indexdocuments.go: + id: 88802c915022 + last_write_checksum: sha1:45f34e554558420d01149ba1f56d95c3b05744e1 + pristine_git_object: d51b3b79352601fd095ae96029381ac9302b309d + tests/mockserver/internal/handler/pathpostapiindexv1indexgroup.go: + id: 8e574ae53170 + last_write_checksum: sha1:5f7421344266fc96b5f30ef499d1fedcc0c1f77b + pristine_git_object: f95be6a83f65c4da9ae68eaa452de7a62d3d3798 + tests/mockserver/internal/handler/pathpostapiindexv1indexmembership.go: + id: 1020ff976b95 + last_write_checksum: sha1:42fa2cd16d6c616d8fc02e3a176a21fde19a1276 + pristine_git_object: 237c6ab1b29b3b1cd07be944f3dc0225bd66f060 + tests/mockserver/internal/handler/pathpostapiindexv1indexuser.go: + id: 929289f76625 + last_write_checksum: sha1:9818d8db1eaf622c005e454c0052ea1ca9078499 + pristine_git_object: 995587c332f9a5673d64c5acc91e8d252a4faddb + tests/mockserver/internal/handler/pathpostapiindexv1processalldocuments.go: + id: 694303e0877b + last_write_checksum: sha1:2731a2099c9b5ad896decddca98532ca04bc373c + pristine_git_object: 11e345683da87e333758efb62b980838b6b1ba4f + tests/mockserver/internal/handler/pathpostapiindexv1processallemployeesandteams.go: + id: 575b91627278 + last_write_checksum: sha1:2cb1a359ebac44a0638a7fb82eb4a1872a961416 + pristine_git_object: 8bc7960b8f39936032eaddf652121ebe599bd137 + tests/mockserver/internal/handler/pathpostapiindexv1processallmemberships.go: + id: 3ffe78dd3270 + last_write_checksum: sha1:342df3a7c0a13211e8341964ec70e8d5f8d02d2c + pristine_git_object: dfe7762d3eb3a25cf25207eef13c7125629cb8da + tests/mockserver/internal/handler/pathpostapiindexv1rotatetoken.go: + id: 1d31bb22a359 + last_write_checksum: sha1:d663a6564269f2894bb75a0b7bb0a98421d25d07 + pristine_git_object: 23d1db7adf0f606fc4aaeed427d3abf4ecc1b19e + tests/mockserver/internal/handler/pathpostapiindexv1updatepermissions.go: + id: 3a513f7feb0f + last_write_checksum: sha1:30d3d3c8d634fa56d0510224f26e4538ba76dc89 + pristine_git_object: 9bb5d5769dfb3a4e78676950e8a2706f119bfc5c + tests/mockserver/internal/handler/pathpostrestapiv1actionsactionpackactionpackidauth.go: + id: 9aaa5b8c2f43 + last_write_checksum: sha1:6e74488c94c9f19f95861e6b5940457c55078190 + pristine_git_object: 5ae4ea1285a00a2343bb5b79a02b827b62230fe9 + tests/mockserver/internal/handler/pathpostrestapiv1activity.go: + id: fc2da8a2438e + last_write_checksum: sha1:740b590218da942539e85a585bec78c0777ae934 + pristine_git_object: cf821af601b02d653278f9f079fad38eadb37b78 + tests/mockserver/internal/handler/pathpostrestapiv1addcollectionitems.go: + id: 453597f808da + last_write_checksum: sha1:bd9aa6512282c2641b398d1166dc17d7dc3576ab + pristine_git_object: 363e98968712d8ac0d1eeb6c924ba685f5d2690e + tests/mockserver/internal/handler/pathpostrestapiv1addverificationreminder.go: + id: d6f7902f9883 + last_write_checksum: sha1:2a7596e25accc1641c76ae54ab8cfa440d7418ab + pristine_git_object: 238a63f7607f10826012443f447ef4ebc579661d + tests/mockserver/internal/handler/pathpostrestapiv1adminsearch.go: + id: 3c3d5555c20b + last_write_checksum: sha1:8ef1b12ee725ee32fb6a0a1e0e812594df97e06f + pristine_git_object: 26fdfdd7e2d2fdffa6ecc736b7a70d6eb1aa5327 + tests/mockserver/internal/handler/pathpostrestapiv1autocomplete.go: + id: 9830ef01b25b + last_write_checksum: sha1:094d64ddc73a91d38e64e3be18690ebb9d4ef3d3 + pristine_git_object: f5022d6d984936d775ac67f58351dd65db04bc02 + tests/mockserver/internal/handler/pathpostrestapiv1chat.go: + id: 72aaa913f0bb + last_write_checksum: sha1:0e62b904cb8354c1da5300d5f5b5b5a996c31716 + pristine_git_object: 24ba560b8daa0e125d418a139c2e851403be2845 + tests/mockserver/internal/handler/pathpostrestapiv1checkdatasourceauth.go: + id: a2799924e03d + last_write_checksum: sha1:bfd126dda7eb1a68c0edd1403c89770a4907aec9 + pristine_git_object: 41731f5cf158d0388c5652735c6f2623d545e8ba + tests/mockserver/internal/handler/pathpostrestapiv1createannouncement.go: + id: f799135d9b38 + last_write_checksum: sha1:0b93fd5d83fbe115c126538e632ea7a1710d8c9b + pristine_git_object: 1efad5a31faf0e65b8f3d2a5ffce23cc5529e7f3 + tests/mockserver/internal/handler/pathpostrestapiv1createanswer.go: + id: c48b6ed78315 + last_write_checksum: sha1:34a049bd08ca459694f08c0aef6c69105e48fdd0 + pristine_git_object: 31b8c1ca314968a815709c8fc4271c4876c247de + tests/mockserver/internal/handler/pathpostrestapiv1createauthtoken.go: + id: c8a479263c3b + last_write_checksum: sha1:6ce83ba03066acb436796c018d19715615f548c1 + pristine_git_object: ab9263d43404e8e6f07af222a3e785aca2fbf35f + tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go: + id: 3fb93a419933 + last_write_checksum: sha1:14b4a1d98dd55ce2b487ae1aaab4a7dece08df25 + pristine_git_object: 371b90231fcd7bd77fd6d9566156605af1712d9a + tests/mockserver/internal/handler/pathpostrestapiv1createshortcut.go: + id: 8d9d3abb0c34 + last_write_checksum: sha1:dcdf684a85e20db1aee571db9a54a3ee259d71d5 + pristine_git_object: 8056ecc1f96b383b689aee9fb2b78b1ff76973da + tests/mockserver/internal/handler/pathpostrestapiv1datasourcedatasourceinstanceidcredentials.go: + id: e53dab9ae3bf + last_write_checksum: sha1:d037020783a24705c0efd9f83310746517d032d5 + pristine_git_object: af37421f2eaf45b5f98807f2e69a2ff0a0425068 + tests/mockserver/internal/handler/pathpostrestapiv1deleteallchats.go: + id: 659965a5beb5 + last_write_checksum: sha1:7342efa7a55bf0d83da3680c9504c5b582c738e4 + pristine_git_object: a83262028ac84a63cc872bdae96fc1303f60285c + tests/mockserver/internal/handler/pathpostrestapiv1deleteannouncement.go: + id: 24a74b4ebdda + last_write_checksum: sha1:6f931416507ed9d9875143f82bc50d3beac8b1da + pristine_git_object: 8a58ed5cea74767acb351f1993239f7036550a6a + tests/mockserver/internal/handler/pathpostrestapiv1deleteanswer.go: + id: 14209d0ab8eb + last_write_checksum: sha1:690b91bbf6f0618bad729b9111942523912b86a4 + pristine_git_object: 0b853e55c1552291ef7f12f9f0872b84daeefb33 + tests/mockserver/internal/handler/pathpostrestapiv1deletechatfiles.go: + id: 2eac25b5e397 + last_write_checksum: sha1:5a426cea74ad83810db60ec7042dd306590e0662 + pristine_git_object: 9e26a1a0122e09ce76fe1911c3143515119adfb3 + tests/mockserver/internal/handler/pathpostrestapiv1deletechats.go: + id: e43f12506f8e + last_write_checksum: sha1:640bd99cdfc344506387c7ab716d5294ef7111bb + pristine_git_object: d1b1369304389a79e475cab6cf1afb3af0b0fb2a + tests/mockserver/internal/handler/pathpostrestapiv1deletecollection.go: + id: a8d711f41054 + last_write_checksum: sha1:9c5945878376ea9aa9a5131b1b84a3fbb767fbd8 + pristine_git_object: 1089baf05a0161fc1353240b9e267d2bb046f5f7 + tests/mockserver/internal/handler/pathpostrestapiv1deletecollectionitem.go: + id: c44ca720f6d9 + last_write_checksum: sha1:251679b6e156fcc46098b00632d785b836b4e9ed + pristine_git_object: 592a00dfecab35c044aa40540280d8b7aca7f693 + tests/mockserver/internal/handler/pathpostrestapiv1deleteshortcut.go: + id: 215198be2cae + last_write_checksum: sha1:7a7a40095e3b2fd22ecc7652e63ce0e298543f96 + pristine_git_object: 0c4dc328740204a54634c0f01fb0f6f5f0b8c0ce + tests/mockserver/internal/handler/pathpostrestapiv1editanswer.go: + id: ac78c5f77070 + last_write_checksum: sha1:a900ffe60028d458e86eee644a23eac954fea183 + pristine_git_object: c4e632d1fd4f90de42752e1a4facb697d210b4ac + tests/mockserver/internal/handler/pathpostrestapiv1editcollection.go: + id: 2f60cb88f757 + last_write_checksum: sha1:c1fde968092c33335e16fe7358978e581301163e + pristine_git_object: 85052c8d4fd14189668bc138777030d7839fd1ee + tests/mockserver/internal/handler/pathpostrestapiv1editcollectionitem.go: + id: 0a3149ca9f75 + last_write_checksum: sha1:bccda39ad0b6d11e247c2723b67cbf40fe3f4d7e + pristine_git_object: 54ec38a45e130fa42e1f149ae35726237f687c05 + tests/mockserver/internal/handler/pathpostrestapiv1editpin.go: + id: 785ac52f9271 + last_write_checksum: sha1:331563c80356e895a84ab898df7c359da3c70b45 + pristine_git_object: b127949568b5ba821846489ce317747562100576 + tests/mockserver/internal/handler/pathpostrestapiv1feed.go: + id: 7e1246bc65e0 + last_write_checksum: sha1:c102414f84ee6adb3c314425a2c6d051c4501b2e + pristine_git_object: 950ad3db61530ae01f94aee133c5e9e2d35e4151 + tests/mockserver/internal/handler/pathpostrestapiv1feedback.go: + id: 9c6e064091bf + last_write_checksum: sha1:2ba56c655e63e01a5c46fbd7beb087077a6deaea + pristine_git_object: 372a01f2bf460eaba695400be33a14f2608eb917 + tests/mockserver/internal/handler/pathpostrestapiv1getanswer.go: + id: 6dad542fc9ef + last_write_checksum: sha1:80bc08894cebfd78f82d3d80f93fd85a11b55d45 + pristine_git_object: abb763ddc8504b28c0cb6fdf8d25237d46e21bab + tests/mockserver/internal/handler/pathpostrestapiv1getchat.go: + id: a0ec7bafa599 + last_write_checksum: sha1:2267292ba8173cf8df70ddbc6ac02ff3439cb879 + pristine_git_object: 8740195860b6c08e036caae19aab8e7374350960 + tests/mockserver/internal/handler/pathpostrestapiv1getchatapplication.go: + id: 7d101c69d4bc + last_write_checksum: sha1:7b81898137fdb3a89b4dcfa318b9b5b92e8860c0 + pristine_git_object: c7983c60d6269f825a8dbd2577015ecb24064f72 + tests/mockserver/internal/handler/pathpostrestapiv1getchatfiles.go: + id: 21d7f14a966a + last_write_checksum: sha1:3ce17b01cd64de13a1b737a3326c320ad3603b1a + pristine_git_object: 73feb6db8e282c99b859fb6545e5d463eaab3585 + tests/mockserver/internal/handler/pathpostrestapiv1getcollection.go: + id: 952d7b6f017e + last_write_checksum: sha1:da0e722fbe604ac4d80e9796901ef5783c793911 + pristine_git_object: 5d34142ea27af523b9182d6cbc16d5a9c837dd30 + tests/mockserver/internal/handler/pathpostrestapiv1getdocpermissions.go: + id: 1387c9e44fb5 + last_write_checksum: sha1:b2d67531e58089109953dc3ed416bd6b4e7a8373 + pristine_git_object: 3d7e842f17e249c5dd61f1923956c9363920e3ff + tests/mockserver/internal/handler/pathpostrestapiv1getdocuments.go: + id: 303c4f3228c9 + last_write_checksum: sha1:7225fe43412ee32fe701c5fa9ed76440f693d649 + pristine_git_object: 453834abe2c46ad73d0797646d3f2c506fc2b10f + tests/mockserver/internal/handler/pathpostrestapiv1getdocumentsbyfacets.go: + id: 9913813e1577 + last_write_checksum: sha1:eeeef0766d261c473bfa892639abdade30da9dfa + pristine_git_object: 4952b77e999cbfe41c254e19ac5db0e407a9c7f0 + tests/mockserver/internal/handler/pathpostrestapiv1getpin.go: + id: 729d046e63ac + last_write_checksum: sha1:4d9561275f57cf77b9f52b99bc21b1d27712a38c + pristine_git_object: fe2aa28374123d8171c7954a1f739a6e0ab4f2c8 + tests/mockserver/internal/handler/pathpostrestapiv1getshortcut.go: + id: ce5afc1f1e34 + last_write_checksum: sha1:327c7d7c4e53607f8912156c8997b1713d7590d2 + pristine_git_object: 97cd66fe5f67a990226817321a4b5bfec272e774 + tests/mockserver/internal/handler/pathpostrestapiv1insights.go: + id: 97eddeabde4c + last_write_checksum: sha1:4648f4b752507c33020b12f301dd5a48aa95e839 + pristine_git_object: 6e9737ca0402981a793c79c1174dfb99a89e517e + tests/mockserver/internal/handler/pathpostrestapiv1listanswers.go: + id: 37b954838893 + last_write_checksum: sha1:b31b0eb64b63a103d3bf4b682bd865a185698054 + pristine_git_object: ca9c40ec604aa643c9d3bfbb09f205d553bc1e0e + tests/mockserver/internal/handler/pathpostrestapiv1listchats.go: + id: 7ae5e49d6dce + last_write_checksum: sha1:b6ffb2a9c5fc46d1737657cefc57b8a4804ee92d + pristine_git_object: 572a0c4e92545114d397aaf99426e00bfe632bdb + tests/mockserver/internal/handler/pathpostrestapiv1listcollections.go: + id: 02663724888e + last_write_checksum: sha1:501f7d4bd03e2c28aa7a7d12a78ff6eec0efcc24 + pristine_git_object: bf011d223ec0d63207e791edd7415143a7a2016b + tests/mockserver/internal/handler/pathpostrestapiv1listentities.go: + id: 9052f7de943d + last_write_checksum: sha1:950062481cce0b74dd0d936947eba20fd7168ace + pristine_git_object: 1c5901748048d94fdc03dbc0d7111cd883927d80 + tests/mockserver/internal/handler/pathpostrestapiv1listpins.go: + id: 77d7cb841d0e + last_write_checksum: sha1:647bbd8e35c0b3ec4b2aae304c6eb1fd2a6aa7ea + pristine_git_object: b23d7ae8fe5e0db17568b327a58d1c558f709fb6 + tests/mockserver/internal/handler/pathpostrestapiv1listshortcuts.go: + id: 5ea10fed652c + last_write_checksum: sha1:23ba4c891bdf622f8520cfcb2982eb8033051c4f + pristine_git_object: 6591d82abf632a39abd6e928ed98ff7858c63d5f + tests/mockserver/internal/handler/pathpostrestapiv1listverifications.go: + id: f60e29570dbb + last_write_checksum: sha1:572e81aac862f264f9c369e33e439493e3a9a9f1 + pristine_git_object: 243e4b83d639ceaa4b7f6e4741e52fd5d05b68cc + tests/mockserver/internal/handler/pathpostrestapiv1messages.go: + id: 9b8c904cf45e + last_write_checksum: sha1:9d687b6f21535528f0a4157fa4900a14d8cd84d7 + pristine_git_object: bbd8a470d311307afff9eb485159964e09fc44a2 + tests/mockserver/internal/handler/pathpostrestapiv1people.go: + id: 18588f42240a + last_write_checksum: sha1:e5404d64a70fa90dee7adde105d617b6f6ffc15b + pristine_git_object: ac833cc810acb5754e38144842d583fce8d64483 + tests/mockserver/internal/handler/pathpostrestapiv1pin.go: + id: 827778f37a66 + last_write_checksum: sha1:478cbba00e1b9fdce1c7293f77ae45c61fe6afab + pristine_git_object: b137a0a80189806f9e937b0ad89559ad899728b3 + tests/mockserver/internal/handler/pathpostrestapiv1recommendations.go: + id: 14a4083134b7 + last_write_checksum: sha1:86179e1f769213b4d293746b68dea637e9bf50e2 + pristine_git_object: e9f511ab3dda56dfd8cdb500c7206ca944c4aeca + tests/mockserver/internal/handler/pathpostrestapiv1search.go: + id: ee7df329ebee + last_write_checksum: sha1:a71a7f68fe9c25edd70364a49d4631f60999af67 + pristine_git_object: f3b2ae98bce24a1391b2191cd38d1294cccdeddc + tests/mockserver/internal/handler/pathpostrestapiv1summarize.go: + id: 4ffce09060b0 + last_write_checksum: sha1:eafbc420f54c1395f41af4735d74af6105c8d50d + pristine_git_object: 2184efd63a6f3d7f1b570e5ebdbbcffe1330e0a2 + tests/mockserver/internal/handler/pathpostrestapiv1toolscall.go: + id: ad6776df2ba3 + last_write_checksum: sha1:97d094dbdeba08fc395322c0048c259ecf0035fc + pristine_git_object: 1676df61ea2406ad36a967ea58ff4022922d133c + tests/mockserver/internal/handler/pathpostrestapiv1unpin.go: + id: 08da240877b4 + last_write_checksum: sha1:4ad6d409b1f7c8e66b8e3ec423016f5bc7e94605 + pristine_git_object: c1a7228b3369bb431ed24857ed794a7ab48339d8 + tests/mockserver/internal/handler/pathpostrestapiv1updateannouncement.go: + id: faea247d7d6b + last_write_checksum: sha1:3758a38536ab57e88e20157a7d92d9c88575ce66 + pristine_git_object: 883465118636d7e72243c0425829427b6eafebba + tests/mockserver/internal/handler/pathpostrestapiv1updateshortcut.go: + id: 4b673857b971 + last_write_checksum: sha1:a77e29c3d560d8c77687dea16a48c82d18d16746 + pristine_git_object: caf44acba206d965ae722994b355c01d8dec5708 + tests/mockserver/internal/handler/pathpostrestapiv1verify.go: + id: 39d1104b87dd + last_write_checksum: sha1:81e23075ee7fa39fa4c5feaf617483fe4b366b1c + pristine_git_object: ab0824f9439225877f223f1ad2ddbbf29e6dcfcd + tests/mockserver/internal/handler/pathputrestapiindexcustommetadataschemagroupname.go: + id: 308cdf6fc94d + last_write_checksum: sha1:e451ed556d221180f382198554cb9c48ebe6cdc9 + pristine_git_object: b9aa8f5d68454a0d480303e51d36f835bad5c264 + tests/mockserver/internal/handler/pathputrestapiindexdocumentdocidcustommetadatagroupname.go: + id: 1c1bf391d8e3 + last_write_checksum: sha1:149f22f18bc46e075c2b0d8e78c45fcb850d57af + pristine_git_object: acee8819ecca0e48cb7988a724f28207f06fee7b + tests/mockserver/internal/handler/values/files.go: + id: b4edaa743a70 + last_write_checksum: sha1:e1e9d78c165e2a35d165f120bd8dcd7b42c33a33 + pristine_git_object: 6eca8858dac804123836663005d937372686b708 + tests/mockserver/internal/logging/doc.go: + id: aed3c4840e49 + last_write_checksum: sha1:63a119620f179826356304b8205756248caa370e + pristine_git_object: 8835f1cc9cf31b2610c56ec385a1b477f80052ba + tests/mockserver/internal/logging/formats.go: + id: 40d173aa5b43 + last_write_checksum: sha1:e84e84e6e62a4dc3b9ad3a7f2a95eb77374f2fcd + pristine_git_object: d6ab53c8fb08198c51bbb732ee4bfa66af181044 + tests/mockserver/internal/logging/http_file.go: + id: 3a9caf78d317 + last_write_checksum: sha1:e948142b98821c23bd21c128e007e79a193114a2 + pristine_git_object: d690d9153a532ecb2a6e798f7fd12734c7ecc167 + tests/mockserver/internal/logging/http_logger.go: + id: 18e34362bb8f + last_write_checksum: sha1:7a2267a61cb1282405ed7f406f9bd95fbf796b5b + pristine_git_object: fdd5d058aaacbe840a9d687f1e385a84d2b5f066 + tests/mockserver/internal/logging/levels.go: + id: 38a926bd953a + last_write_checksum: sha1:164f3aee47030d3534e4ef2df31192304e9ea97b + pristine_git_object: d2a8e93c3ddc5c06285f791a4d1cfcafa2affbaf + tests/mockserver/internal/logging/logger.go: + id: 0a6ab6e2cc12 + last_write_checksum: sha1:92027a7d11dd84831bc444aa2d018cbb7195542f + pristine_git_object: bfd6dc786676c296f36c8dedc6cd443b3f317c5b + tests/mockserver/internal/logging/oas_operation.go: + id: ac7b824c59a6 + last_write_checksum: sha1:af9187f31972ef308fb4bc82de73d6dd71b9fb64 + pristine_git_object: d4f2af7b4d2df6aa2821ead488033f3fbbc38f2c + tests/mockserver/internal/logging/oas_operation_call.go: + id: f49866e79383 + last_write_checksum: sha1:1ec2244b5fc171dfe7e4e339420b2b17f0df48c9 + pristine_git_object: beb05908cf58a7b8b46d739ee51a5aba54c5bf7c + tests/mockserver/internal/sdk/models/components/actionauthtype.go: + id: 4ff9feaab0f7 + last_write_checksum: sha1:bd904943895ea34005f594e13f12481f96c11286 + pristine_git_object: 4547fc36c08113276fbd2e9834bc6db93efa2052 + tests/mockserver/internal/sdk/models/components/actionpackauthstatus.go: + id: 0635e409814b + last_write_checksum: sha1:3782e2b34ee497143dea41e1cfee8e516f2a80eb + pristine_git_object: fb8e700a43a37a5f1d843ae8adbb19f0b3a050ca + tests/mockserver/internal/sdk/models/components/actionpackauthstatusresponse.go: + id: ad34672435c4 + last_write_checksum: sha1:578df01f6d9f140122c63b6b9b2b01cda1ad6280 + pristine_git_object: b5d719827a698757158580e277482bb8a7a00238 + tests/mockserver/internal/sdk/models/components/actionsummary.go: + id: f7930cfbea89 + last_write_checksum: sha1:32cfaf32c20b96fe223b11c6150435d39c9be8da + pristine_git_object: b2ab488484bf36734dd6f5be8f788a99661703b2 + tests/mockserver/internal/sdk/models/components/activity.go: + id: e9c217cc89fa + last_write_checksum: sha1:62ed2988de11a8af0b36342f9e557621d32cb6d4 + pristine_git_object: 495599c840e3398493df081d442af08d180b63fa + tests/mockserver/internal/sdk/models/components/activityevent.go: + id: fd3bb2702950 + last_write_checksum: sha1:4fd0a03c36baba07da9afae72a0e274bc4aaa667 + pristine_git_object: 59aa0168bff831a106905d72c682c0223c7f0bbf + tests/mockserver/internal/sdk/models/components/activityeventparams.go: + id: ec855a8460ee + last_write_checksum: sha1:a1b15541d7959aede9843cb777a2fd8b610e70bb + pristine_git_object: eae5f03e3a5104e4b448d8b4b9e4d74b18ffedbc + tests/mockserver/internal/sdk/models/components/addcollectionitemserror.go: + id: c07d22145d90 + last_write_checksum: sha1:869fdf5cca8dcac2989f9dae882b9e8d7da3c4f3 + pristine_git_object: 43f9319597e845325caaa9346a4a378a27350cc7 + tests/mockserver/internal/sdk/models/components/addcollectionitemsrequest.go: + id: 23643ed3a8a3 + last_write_checksum: sha1:072fa8f9fcb499a52eaa1eedabe52790b255d7cf + pristine_git_object: 3a1ab6f65dcc6f6d76f9899ac76628888664498c + tests/mockserver/internal/sdk/models/components/addcollectionitemsresponse.go: + id: a357e82e1ce0 + last_write_checksum: sha1:4c7925c730e3b306c78aaed58d475a893e9aefcb + pristine_git_object: dcb6950379fbd3e9d8c6d9d34430ba79451429af + tests/mockserver/internal/sdk/models/components/additionalfielddefinition.go: + id: 129f9e10d0b0 + last_write_checksum: sha1:e5275ce8bd7d05723612608eff87821ab738ccec + pristine_git_object: 65166a2a869e41b15da2c28e471da628d815d1a4 + tests/mockserver/internal/sdk/models/components/agent.go: + id: 272d30f7db71 + last_write_checksum: sha1:a2976ece5b814f553cd7d724369dbdf054b10d70 + pristine_git_object: f7b3b13119f56eb58b399290ea4fa65e83b3e490 + tests/mockserver/internal/sdk/models/components/agentconfig.go: + id: fa742da941da + last_write_checksum: sha1:cd839d5368cb6f41495a5fc8ef333ab5d4f102cb + pristine_git_object: 679f7f3270226aee52d4ade229b20b723d13c29a + tests/mockserver/internal/sdk/models/components/agentexecutionstatus.go: + id: eb0b8cff2bf6 + last_write_checksum: sha1:ef904e3fd25fd902d355e88115d0721dfecab4f8 + pristine_git_object: 7a8ba8400503c9144b4ea819c434e2f03eaa2085 + tests/mockserver/internal/sdk/models/components/agentrun.go: + id: 7c661247b7d0 + last_write_checksum: sha1:a69cc58ceadc947b1e9dd587f9d936ef9aa266eb + pristine_git_object: dcff6d12e0c3def31984e4a134c46ed1d4704c53 + tests/mockserver/internal/sdk/models/components/agentruncreate.go: + id: 68e7aadd2c7f + last_write_checksum: sha1:b6d18d560f9137f1603b59692f73da586eaed80d + pristine_git_object: e0f2b034406b69f6beecc2328c713102dc9fb013 + tests/mockserver/internal/sdk/models/components/agentrunwaitresponse.go: + id: 8e31e5609691 + last_write_checksum: sha1:75b0a516ab1c183abeeb9e27abc8a00f265f32ad + pristine_git_object: b5aa1e8ebde878a05eee8afb6a57b4b8d74ba24f + tests/mockserver/internal/sdk/models/components/agentschemas.go: + id: 4925ad5cac23 + last_write_checksum: sha1:d0cbb79eee354dff93838a2d6525538d440b7ffc + pristine_git_object: 262d88134ce4f17c1bce1fa4a0f4da159142720d + tests/mockserver/internal/sdk/models/components/agentsinsightsv2request.go: + id: 18948a1145bd + last_write_checksum: sha1:7759601379c524537409b44daa7a7a3f36c142b6 + pristine_git_object: 83467d6a3b1944a4e49d1fc7af5097d9d7d88b95 + tests/mockserver/internal/sdk/models/components/agentsinsightsv2response.go: + id: 8313bd7d3a39 + last_write_checksum: sha1:2bf27d5c4fa4ed8db97d93e983abede54affd688 + pristine_git_object: 25139a603d57f983770a80e5d0b7ab62117a63b2 + tests/mockserver/internal/sdk/models/components/agentstimesavedinsight.go: + id: eeb8af7ff015 + last_write_checksum: sha1:1c07a7a8e8de690de25bddba511878bc5d40a515 + pristine_git_object: 2a8e31d94b9f2f9fe7a6b72dfadcd9cd6223c040 + tests/mockserver/internal/sdk/models/components/agentsusagebydepartmentinsight.go: + id: 46e77cf33a2f + last_write_checksum: sha1:21c46d3f5363b157c2e4ee70451c7d0b3e8d77df + pristine_git_object: 2433dfc6f017b03604afc1438bf606a1b57099d1 + tests/mockserver/internal/sdk/models/components/agentusecaseinsight.go: + id: 7532f3f4e4be + last_write_checksum: sha1:e7d3ef7ff9b2b85433c788603548074ca5d6233a + pristine_git_object: 3caa18364e54985cab452cf0f731d220e691585c + tests/mockserver/internal/sdk/models/components/agentusersinsight.go: + id: 25bd2b7b006e + last_write_checksum: sha1:2f737cbf66693fdffffc4d9f30a3f26b09d35eb6 + pristine_git_object: edfaaac094589522ad1ad4094131887b43780c92 + tests/mockserver/internal/sdk/models/components/allowlistoptions.go: + id: 5dd666458357 + last_write_checksum: sha1:db278a11846646ca8794392f2846087d1fba114f + pristine_git_object: cf238c9e67d94abd0f7de713e0922be55618dc75 + tests/mockserver/internal/sdk/models/components/announcement.go: + id: 657490dccd71 + last_write_checksum: sha1:038cda5de3f5d66db97e95c8a838f3c1a14bf265 + pristine_git_object: c2e1c39946b4da085347a33ff3e24f953fe364f3 + tests/mockserver/internal/sdk/models/components/anonymousevent.go: + id: cdc4fbaaf2eb + last_write_checksum: sha1:0b48a4942a454618f0b0f16047396d8354b1b90e + pristine_git_object: 9486c7b30408660fdff7359ada116c45c62256ae + tests/mockserver/internal/sdk/models/components/answer.go: + id: a2bc6a3d2f9f + last_write_checksum: sha1:5bde5e290cf6af6e0f9d82d0ba053f0f2bd35e7e + pristine_git_object: 69609f521939bcdf1d9e81a14324f606d2b32f2f + tests/mockserver/internal/sdk/models/components/answercreationdata.go: + id: 442ad470f93f + last_write_checksum: sha1:249e06425fd059c0b7d11078f1fabb9a66fe0e8c + pristine_git_object: 529ec6128232479fefd685a271b44801065d1490 + tests/mockserver/internal/sdk/models/components/answerlike.go: + id: d9d13b8d402b + last_write_checksum: sha1:1859e2a2f2f8960cd83ad3d83fe4e1d0207189d5 + pristine_git_object: b6fe5246846a5ae91cd64c704bba117cd284c9f6 + tests/mockserver/internal/sdk/models/components/answerlikes.go: + id: 961c94d04f32 + last_write_checksum: sha1:512d5f73f8d017b70e9f799a9aaafabf5e40bf1c + pristine_git_object: 7adddc86acd77e7a08909d504826871e269ea1c2 + tests/mockserver/internal/sdk/models/components/answerresult.go: + id: 6a4c238bbef0 + last_write_checksum: sha1:3b909c9aaa8337bfa3d5397d17d8f0e4305d4a2a + pristine_git_object: ffd9c3fc323450e6d5840d6bf6b72d92018b0a35 + tests/mockserver/internal/sdk/models/components/appresult.go: + id: f5c8280eeff5 + last_write_checksum: sha1:5d7841e6270918e5e1b59873c394d8a0b2eb1bc9 + pristine_git_object: 13c623198b89959d69b58e6ccc7c73a0a022d4d0 + tests/mockserver/internal/sdk/models/components/assistantinsightsresponse.go: + id: 8ca7fffccbde + last_write_checksum: sha1:cf4bf37d272fba27bfe92b0f3e39f073550a4fb0 + pristine_git_object: 34f0d2d2c20aafadf823810520d67558e3ccb386 + tests/mockserver/internal/sdk/models/components/authconfig.go: + id: 450c27df20a3 + last_write_checksum: sha1:e9e386e4a0c3ea918f1a2b332f91a129d77ac307 + pristine_git_object: 483958ea708faa6e36081ef83b4c528441313815 + tests/mockserver/internal/sdk/models/components/authorizeactionpackrequest.go: + id: 6aa135032c9b + last_write_checksum: sha1:4c85e9cc50180f07d2857be440bae9f465f5f468 + pristine_git_object: dc682969903da4b847141f46f54443a7b19fb41a + tests/mockserver/internal/sdk/models/components/authorizeactionpackresponse.go: + id: 84cdf6495063 + last_write_checksum: sha1:2a458d0fb35074c83cd5dc41543c300942f5b7e5 + pristine_git_object: de205e6fb6d56ead5c64014571a336b54f0136d5 + tests/mockserver/internal/sdk/models/components/authstatus.go: + id: c12f2870beb7 + last_write_checksum: sha1:ca2727d0dcddf2ee072f3b26529d2952d7e72a21 + pristine_git_object: ea2c6627ed46ab3635fdfc37459aab9d71c5ff1c + tests/mockserver/internal/sdk/models/components/authtoken.go: + id: 5e4c97e8520c + last_write_checksum: sha1:5537829634cde892a99188915beb38e460d2f2ad + pristine_git_object: 774930f21f6761e703d10082d6fd42bd5d7c5c32 + tests/mockserver/internal/sdk/models/components/autocompleterequest.go: + id: 56aa024b9118 + last_write_checksum: sha1:1afcc6580c049f904d96944dcbf6f96dc9ba0b5a + pristine_git_object: dd9b56771c608f8f4e98215078d3df63096c0419 + tests/mockserver/internal/sdk/models/components/autocompleteresponse.go: + id: 66cd6764f2df + last_write_checksum: sha1:ac7d26f25b2828f520494f4fbe7cd7c2beb9f44a + pristine_git_object: b5b93358134162c354cd17b7f02d3c268ed1ee8d + tests/mockserver/internal/sdk/models/components/autocompleteresult.go: + id: b9d35c1302fa + last_write_checksum: sha1:8438ff71f398ed3de8208f2f2c8b2d63819c83f2 + pristine_git_object: 01edf62659432bd750f8c109f6773c05adede9b2 + tests/mockserver/internal/sdk/models/components/autocompleteresultgroup.go: + id: 37b04686e61d + last_write_checksum: sha1:7ef163b02d59c2889529b21e4eaf2c8c03ae08c4 + pristine_git_object: fbf4682f006106d667bb523a85bcc1c987bd00f2 + tests/mockserver/internal/sdk/models/components/badge.go: + id: 7210b2a9bdfc + last_write_checksum: sha1:b210638bdb4f72e82ad7076cb06c283e389485d4 + pristine_git_object: 5069934040fcdacd6dc7ea018aca5dc3da2962a5 + tests/mockserver/internal/sdk/models/components/bulkindexdocumentsrequest.go: + id: 8a98ef1eee61 + last_write_checksum: sha1:9e2ba7d86e5be43918c7fa13fa21d0848e43d516 + pristine_git_object: 66aa01e55e2d2670757c2a15a9e829ff49ee593a + tests/mockserver/internal/sdk/models/components/bulkindexemployeesrequest.go: + id: 1007fb479f97 + last_write_checksum: sha1:9b18ad1444da55e2120fe3a81c3cf72d00af7c7c + pristine_git_object: 84b2d85ae3e90cf898fcc31c4d7e3fdce301a57a + tests/mockserver/internal/sdk/models/components/bulkindexgroupsrequest.go: + id: 94d4e7786c14 + last_write_checksum: sha1:24099f2918f9f9c049ba036acf49fe3031f61f1a + pristine_git_object: b528cd39010d8b0d6be48af7c28c17b7c606496c + tests/mockserver/internal/sdk/models/components/bulkindexmembershipsrequest.go: + id: 8e97edd3a3bf + last_write_checksum: sha1:120d02e4046058bdfa31ad1ae1efa6b0e6b77063 + pristine_git_object: 3132cb23717e77246626dc3a66f317b129b59271 + tests/mockserver/internal/sdk/models/components/bulkindexshortcutsrequest.go: + id: a72173fcee69 + last_write_checksum: sha1:5cfc33803792ab9d3f4f76b7e88fa6c900f6b6ef + pristine_git_object: 6a4ab205116cc62ade0890d39cc7f8cc9fe3e181 + tests/mockserver/internal/sdk/models/components/bulkindexteamsrequest.go: + id: 098519f4f669 + last_write_checksum: sha1:bb0791cb7986875b32b1c03f66f24d8d39f92a12 + pristine_git_object: 0acb6475b615c19bf20a699464be8683ac6c4a0b + tests/mockserver/internal/sdk/models/components/bulkindexusersrequest.go: + id: 6c7aa436364b + last_write_checksum: sha1:8bca357333604be0a5c1143ae8c7e045ab0c7757 + pristine_git_object: c94ddd90d3d259926876fd5b85d9d6a7139fd1fb + tests/mockserver/internal/sdk/models/components/bulkuploadhistoryevent.go: + id: 047a8bcc6473 + last_write_checksum: sha1:bcb154f82745d343ced1b76b1e5dd0c86945f3d4 + pristine_git_object: 9f7711f3552b3b033ca5c7f5d4169c2e68bf73ed + tests/mockserver/internal/sdk/models/components/calendarattendee.go: + id: d816e3b2f971 + last_write_checksum: sha1:9397890775c4933a7b93831aa77935edb65188a5 + pristine_git_object: 4ecffd3595bc8f8a4f8c6b8afdf6f3c1a40dcf6e + tests/mockserver/internal/sdk/models/components/calendarattendees.go: + id: 1e747016ded6 + last_write_checksum: sha1:7aada62955593beddf450e320b31d1ce56495862 + pristine_git_object: c237f6fdfc76002db00450dcc1c0f833ab83d8e8 + tests/mockserver/internal/sdk/models/components/calendarevent.go: + id: 8266e43a77b2 + last_write_checksum: sha1:8b37f864d04425db3f5370c63a2a01c3e9e66e94 + pristine_git_object: 33ac7433919695239120f18f62fb966c05d0e831 + tests/mockserver/internal/sdk/models/components/canonicalizingregextype.go: + id: 7df117f09631 + last_write_checksum: sha1:2d0c192b2b7d99262441a1ee0cbd670bf7970746 + pristine_git_object: 76692d3833374687b3dda368de9aa7178ff91c11 + tests/mockserver/internal/sdk/models/components/channelinviteinfo.go: + id: 8bd7a1767410 + last_write_checksum: sha1:6687d3c4cc24f62e6ed37cc8abc1835ff31f3f11 + pristine_git_object: 9e3252d41a35c178e2559eef1789d335d5296805 + tests/mockserver/internal/sdk/models/components/chat.go: + id: 267212a046da + last_write_checksum: sha1:5f73994939b88d70f6d9a6cd56c6a5c701ed2712 + pristine_git_object: 6d99873d506d21d2ffed0e6f51675d82be9e8e7d + tests/mockserver/internal/sdk/models/components/chatfile.go: + id: ad0d00764036 + last_write_checksum: sha1:2d220b166f37523e64aa0965e237872532f4ccfe + pristine_git_object: 7ea76ec3fb4a8f4e9052efb80db4c0b452ddac88 + tests/mockserver/internal/sdk/models/components/chatfilefailurereason.go: + id: be1b1d0332ca + last_write_checksum: sha1:21b914bf1323b19bede96d1e8a4e56494c2f7a4f + pristine_git_object: b77365d9d37845c84bffb31d4b5820ea5cb804f0 + tests/mockserver/internal/sdk/models/components/chatfilemetadata.go: + id: f4269e82a2a4 + last_write_checksum: sha1:4e608b0813ad32b7a981f73a511952b6459979e0 + pristine_git_object: 55c746ecdb0de1f37ffcf3bd21cefca8472f6cdf + tests/mockserver/internal/sdk/models/components/chatfilestatus.go: + id: e34ec1fe6a71 + last_write_checksum: sha1:382dc2973696c71b36481555cc1eeed0379b3f2a + pristine_git_object: 95c737865f29c05a823d2782d5a6f0d3560e7565 + tests/mockserver/internal/sdk/models/components/chatmessage.go: + id: 8b35dd6dfbfc + last_write_checksum: sha1:b813b4301b77532bbbc60fa85f3b44e21d7a740d + pristine_git_object: 3ab0cd3981476b7446d064b432537eb1f996e87b + tests/mockserver/internal/sdk/models/components/chatmessagecitation.go: + id: 3986d745a603 + last_write_checksum: sha1:f5b371efdd863a1d6d2f83041371ceb7601bc07f + pristine_git_object: ba07ad7ae4afd9e658815a526e41aefbb9f854f0 + tests/mockserver/internal/sdk/models/components/chatmessagefragment.go: + id: 8d14e05d6934 + last_write_checksum: sha1:1834d9a43544e8cca44d147a1e2f99e120fb09ae + pristine_git_object: 4a0507c9eec0ef8e77fe81e62b063f85250c3704 + tests/mockserver/internal/sdk/models/components/chatmetadata.go: + id: 53881e1500d3 + last_write_checksum: sha1:2069155b9191362259f87a10f5eb7426b3bad1b8 + pristine_git_object: 9bba09a9f3a7cd53ffdaf5d1a07c5eb2e430373f + tests/mockserver/internal/sdk/models/components/chatmetadataresult.go: + id: 0829f3ffdd80 + last_write_checksum: sha1:caa7890f13d410e4bde2bcb9f3e3db1f5b0d6c90 + pristine_git_object: 74a433050f298fa6c1151cfc1d7bb324dc9c4e0c + tests/mockserver/internal/sdk/models/components/chatrequest.go: + id: 7667ebf5d58e + last_write_checksum: sha1:7d090933c080d356c3716f23a13b2b92cdc93ee9 + pristine_git_object: af53448a653ee9067d01dbaa06b0826dd2d4a68e + tests/mockserver/internal/sdk/models/components/chatresponse.go: + id: 2d1971ebf0c2 + last_write_checksum: sha1:404f52f589a51a5a29671be352af2f5c41f0f844 + pristine_git_object: 2638334db56253d15c97c9df05eca730739b0e94 + tests/mockserver/internal/sdk/models/components/chatrestrictionfilters.go: + id: 9f5f5c6569a9 + last_write_checksum: sha1:528172b6e5a087f2f516ee7e192a7772bc1ee373 + pristine_git_object: 0be4fc510f4693a6202720bc55de76a176a593a6 + tests/mockserver/internal/sdk/models/components/chatresult.go: + id: 5e9dc490a355 + last_write_checksum: sha1:cd9517ac3d8399698a36005329f2cb4c8ecda78e + pristine_git_object: ca043f8a6dc214fcee2eb1cec662a41e27cdd0c8 + tests/mockserver/internal/sdk/models/components/chatsuggestion.go: + id: 33e4338b5b24 + last_write_checksum: sha1:40e54396ba6c59a5a6e92c49fd2c1a62af9d0dab + pristine_git_object: b8269ceb3de0ce38bec7ff3626ae677546e8a646 + tests/mockserver/internal/sdk/models/components/chatzerostatesuggestionoptions.go: + id: a6d088eab1c2 + last_write_checksum: sha1:da633547681ec1c8ef5df79cc1d2919fb3714d13 + pristine_git_object: 9c7c788a8643ed61315385b444e8f5200b632f3f + tests/mockserver/internal/sdk/models/components/checkdatasourceauthresponse.go: + id: 7a4d99d005e1 + last_write_checksum: sha1:e99e71069a2dee200904ebf2457ee9853b1777b4 + pristine_git_object: 978854e6f7530f628cb97471e6cde30675401c63 + tests/mockserver/internal/sdk/models/components/checkdocumentaccessrequest.go: + id: 532b92facd89 + last_write_checksum: sha1:4b403181de5f24bde26d022703e625a832f685c8 + pristine_git_object: 29131d83ee4a8ab4dc52b4fc0b3d936fd5a4b01c + tests/mockserver/internal/sdk/models/components/checkdocumentaccessresponse.go: + id: 89f79b5dd2bf + last_write_checksum: sha1:6b8aa79da2987f2e8ff4d09c2c2647956ac0f4b2 + pristine_git_object: 26a4aa74414e18df34dc540015a2492a2cded98f + tests/mockserver/internal/sdk/models/components/clustergroup.go: + id: 7cf5f354c622 + last_write_checksum: sha1:06d2784d37baeed45c6390b1cad197153b506116 + pristine_git_object: 4cde0d620188eb0e497ce77807a3520935472de3 + tests/mockserver/internal/sdk/models/components/clustertypeenum.go: + id: 035250b9a0bc + last_write_checksum: sha1:254aa5e22c9f858de509b66967c78653593c44a4 + pristine_git_object: 49fd9e3b920e05a879ffc3eb4a732932be3263bf + tests/mockserver/internal/sdk/models/components/code.go: + id: c8b96967ba12 + last_write_checksum: sha1:755fe66d01ea2646e3678dc99e7ce4bec00c09cc + pristine_git_object: d15f7dee56df18a1abf79a2146d0f87ba8256579 + tests/mockserver/internal/sdk/models/components/codeline.go: + id: 6d84b2fc80a8 + last_write_checksum: sha1:408c1ae5131cd47cd23e5d000f09b6e5abb37490 + pristine_git_object: a21a60f1d8bbd6b82dc6f023d78c475b163ce7f7 + tests/mockserver/internal/sdk/models/components/collection.go: + id: 1b1300b634cc + last_write_checksum: sha1:160595e0533f3727c86ea12c1dc5a40390d96096 + pristine_git_object: 7455407b4497fb92de164a445e236d0a16718428 + tests/mockserver/internal/sdk/models/components/collectionerror.go: + id: bf4ad8f69294 + last_write_checksum: sha1:af5d0f2a4ae7be15beee13a00917ea8b5fd616a9 + pristine_git_object: 2524a204688b2b3fa446f154b424e7fbb9390e8c + tests/mockserver/internal/sdk/models/components/collectionitem.go: + id: 7ddb4d0b95be + last_write_checksum: sha1:ad1782147347847dd4703268d9bcaeb3c2aa201b + pristine_git_object: 311aac3451af2b29814c75f090e680150d6c35ca + tests/mockserver/internal/sdk/models/components/collectionitemdescriptor.go: + id: 1677e27783cc + last_write_checksum: sha1:071207a5430ae8b60998225695bc4a54ac05c3dd + pristine_git_object: c52451d3b28d60ecca9151929af87f23db5facd0 + tests/mockserver/internal/sdk/models/components/collectionpinmetadata.go: + id: 75a7a4577e28 + last_write_checksum: sha1:f95a93c2781532a37bdd213ebbe7f302edb38355 + pristine_git_object: fee1304d55cd8ee7cd10130a706ce3faae9ff208 + tests/mockserver/internal/sdk/models/components/collectionpinnablecategories.go: + id: 2a222ac31adf + last_write_checksum: sha1:4f4fc15297b64b04e8fa6a7c984902054237c6b8 + pristine_git_object: 8679fde6c21c45a5196da755dc0e6dc3444663e2 + tests/mockserver/internal/sdk/models/components/collectionpinnabletargets.go: + id: 02d3fcda5993 + last_write_checksum: sha1:06199cde57dd43710af6ef3d23473117314ae5d6 + pristine_git_object: fdcec773b29c4a1a83936f6ac197247a2461994b + tests/mockserver/internal/sdk/models/components/collectionpinnedmetadata.go: + id: aa32fb7f9c88 + last_write_checksum: sha1:d120afe983d971a3c9c2199986b4b6a48298ecd0 + pristine_git_object: d0857718ac21a959b81ff1344dd562d81feac333 + tests/mockserver/internal/sdk/models/components/collectionpintarget.go: + id: 56c4e501e812 + last_write_checksum: sha1:54e89fe8018191f4b48fc8e248ee6f9d48575464 + pristine_git_object: 64ea09b2076af1a9dcd7eba9dab8f28d4d2d1df9 + tests/mockserver/internal/sdk/models/components/commentdefinition.go: + id: 5b28603a7cad + last_write_checksum: sha1:1895affb14094181113f6173464f503a3006e16c + pristine_git_object: ecdc8f1174807da65da269647e9e73a69d92ee4b + tests/mockserver/internal/sdk/models/components/communicationchannel.go: + id: 3fead5e5913f + last_write_checksum: sha1:fcf60c80b7a302d78a21b2c797e08dd885662f37 + pristine_git_object: 63f9dfdbba12767fa4096d2caef156ff621aabf3 + tests/mockserver/internal/sdk/models/components/company.go: + id: 759814b2e499 + last_write_checksum: sha1:26417a78d66849ecd21f05bf40899c5db373f39b + pristine_git_object: e92400cbaca3e7af5a183eaedb10e999abb110ff + tests/mockserver/internal/sdk/models/components/conferencedata.go: + id: df397d5194fa + last_write_checksum: sha1:64eabce460dc274803c7fb0b7bb45cc9d58d8463 + pristine_git_object: 04b08de564ea565f50fd0aaad778fb6f5a1e1641 + tests/mockserver/internal/sdk/models/components/configurationvalue.go: + id: c907711eef41 + last_write_checksum: sha1:ddbf742f0df37badaee68310779ed24a2895bc72 + pristine_git_object: f6fc21610a06a17c2db181cd32c964a2f03e1187 + tests/mockserver/internal/sdk/models/components/connectortype.go: + id: aeaa1bfc3438 + last_write_checksum: sha1:0e2f6006ffa974b582362f1d259dd55fdb02a00e + pristine_git_object: fcf165bb2e976e13dfa2a64900f180424434b71c + tests/mockserver/internal/sdk/models/components/contentdefinition.go: + id: 38de4a2547dc + last_write_checksum: sha1:b4cf0765dff149db135c123778042f2822932378 + pristine_git_object: 7be15567dbb075493369acc7d2cacfd37b28edff + tests/mockserver/internal/sdk/models/components/contenttype.go: + id: 83191d8bcf2e + last_write_checksum: sha1:5fd634f52b3a914081b6b39d49c5709929478756 + pristine_git_object: 6740b4e6a0daddf336ddb71a68b2cd807e7eb01a + tests/mockserver/internal/sdk/models/components/countinfo.go: + id: 01d4967bffb2 + last_write_checksum: sha1:3dabc59f84a7edffd5bf4b481899abeb78efeeca + pristine_git_object: 6126f60c54c9613e4ef499ac93bd2c650a719363 + tests/mockserver/internal/sdk/models/components/createannouncementrequest.go: + id: e5560c1c1599 + last_write_checksum: sha1:2859bd34551c6d5e8efd00bf0ea1062690be2ebb + pristine_git_object: 9a67d030bb1e376a691598e6036e5e4c9418d24c + tests/mockserver/internal/sdk/models/components/createanswerrequest.go: + id: 2ae6ea7b98cc + last_write_checksum: sha1:ab4f51f3c137475087c01287585f4d03eb7c7eba + pristine_git_object: e15c5837ad4f71851a1a9742036b3e50c8804bf3 + tests/mockserver/internal/sdk/models/components/createauthtokenresponse.go: + id: 1bb66a64b1c5 + last_write_checksum: sha1:50f97365c2a9ab267159c30868eda3212598b5f9 + pristine_git_object: eaf8d51531020f55857430e3b7c4dbd04d493411 + tests/mockserver/internal/sdk/models/components/createcollectionrequest.go: + id: 3a15c1e5e019 + last_write_checksum: sha1:b92eb02bc04b00980c0f7799ff0835195e1fb00b + pristine_git_object: 0c58401fe1d9f7581bf4d905c38ce43baf1565cb + tests/mockserver/internal/sdk/models/components/createdlpreportrequest.go: + id: 79eb26e6c495 + last_write_checksum: sha1:64659489dc959f338a10df80fb4966da0381b424 + pristine_git_object: 099d075e513d86ce811554264934669a1e51af92 + tests/mockserver/internal/sdk/models/components/createdlpreportresponse.go: + id: 543d819c0148 + last_write_checksum: sha1:37877a931cdf5d2b22dc4f914cc8ac9716839d0c + pristine_git_object: 9c9030bd69e578e72387502c2b7716129a30e51a + tests/mockserver/internal/sdk/models/components/createshortcutrequest.go: + id: fa906172acbe + last_write_checksum: sha1:b81c127e964cd3ce74ec7476fb1878d931b0d6a0 + pristine_git_object: f2502a18105f6e786c77c476c7324e42d4041f24 + tests/mockserver/internal/sdk/models/components/createshortcutresponse.go: + id: c5f526844132 + last_write_checksum: sha1:aa8fbfc7682edb55f79cd9e241d9795d4c8579ea + pristine_git_object: df363e8a9dfca1f872da7b286ab2cf7505b2c127 + tests/mockserver/internal/sdk/models/components/currentactiveusers.go: + id: 220e7dbe04c9 + last_write_checksum: sha1:4c876d24b835be3c5975308c132a4599bc11a71a + pristine_git_object: c1398b9642555e881ef73a4fa8fe66d01ee9e8d1 + tests/mockserver/internal/sdk/models/components/customdatasourceconfig.go: + id: 67f505cc5524 + last_write_checksum: sha1:5cb7123d955c9782fec8f8c70570d77a0712d08d + pristine_git_object: 070e9e3590a58bb245c0569f512f2298abbbcf3b + tests/mockserver/internal/sdk/models/components/customdatavalue.go: + id: 37ac657fead8 + last_write_checksum: sha1:e2d63d9372dd1858f8d3524ca247d0f5a0e5db3a + pristine_git_object: a039a04fce7826be26bb8143271951f99d086cbd + tests/mockserver/internal/sdk/models/components/customentity.go: + id: 4b03dc0cff05 + last_write_checksum: sha1:499a0c73a5c262932eada0fb7c60abf73cac687b + pristine_git_object: d00954498ba73ab0eac0e6eca751a18314d93caa + tests/mockserver/internal/sdk/models/components/customentitymetadata.go: + id: ffff7ea871a7 + last_write_checksum: sha1:ceb02c640cd307663bc79a01b108d1e33cd3f29d + pristine_git_object: 53b7e48ff3c2a40780ff58ce844b3fc2d90eb2f6 + tests/mockserver/internal/sdk/models/components/customer.go: + id: d4aa6b2db080 + last_write_checksum: sha1:e48ee4737748b1230ad8fbc0a1b36dc1db76e3b9 + pristine_git_object: ddea90efc53c7a52a0f396f308d19ab9f9c7776e + tests/mockserver/internal/sdk/models/components/customermetadata.go: + id: d199f493ee26 + last_write_checksum: sha1:27aa354f35ce6797db356e6ba931a34ddedb4781 + pristine_git_object: 3171f8597a5c442ee45f1e336d3d6c4b8b8dba7c + tests/mockserver/internal/sdk/models/components/customfielddata.go: + id: 87f84ee03b71 + last_write_checksum: sha1:25a88f6fa490d962e517f0a7a50aa8a9a470ea33 + pristine_git_object: af92ce305dd8f77f21877bfa25e20b510a2acd2b + tests/mockserver/internal/sdk/models/components/customfieldvalue.go: + id: 07e22f6b469b + last_write_checksum: sha1:f3b6f65886342a9aa6971cf45aafd41af422c67a + pristine_git_object: cd2510188a282e92cc23c2f5c778210535bf03d7 + tests/mockserver/internal/sdk/models/components/customfieldvaluehyperlink.go: + id: bcf2b4c82672 + last_write_checksum: sha1:2fd1a6c172c9a0d1b594f5d52b80d1ceeda4cf0e + pristine_git_object: 4771e963d4385bedce6f2c568c5204e3e9729f90 + tests/mockserver/internal/sdk/models/components/customfieldvalueperson.go: + id: 24f564ba1987 + last_write_checksum: sha1:9475ac764cdc23a26e5f09fce60819f6700c7bae + pristine_git_object: c912739ad80e333f413aaace2e54f4de73298684 + tests/mockserver/internal/sdk/models/components/customfieldvaluestr.go: + id: 72fb56c52b3c + last_write_checksum: sha1:53652361319d7950efb17524252d2d0957b89df3 + pristine_git_object: e0b1416d7c363f6e26b66a75ba9fdd3a2daeefbf + tests/mockserver/internal/sdk/models/components/custommetadatapropertydefinition.go: + id: 5e8ce6fa4f47 + last_write_checksum: sha1:f88145b696024611226270dfa7026a131cc0ddf6 + pristine_git_object: e3351e45d1850b96d18ba207c081e4402e19bca7 + tests/mockserver/internal/sdk/models/components/custommetadataputrequest.go: + id: 4b064e1090fe + last_write_checksum: sha1:5b768bcc8098fc7f9f69d4ce4cf2824bdf37aa86 + pristine_git_object: fe2262c3cf4cc95fcb3211bb9651a62afd8177ed + tests/mockserver/internal/sdk/models/components/custommetadataschema.go: + id: a6e98862dea4 + last_write_checksum: sha1:44d00740a66c2203dc68a2ea3db77b0dfd1a6725 + pristine_git_object: 8f4e09bf8da911f878d402f5d818a3a5c3c5f273 + tests/mockserver/internal/sdk/models/components/customproperty.go: + id: af162b871d27 + last_write_checksum: sha1:09684d83735ed8c795769dd865450587db945d16 + pristine_git_object: 8dc67a970cd3e12982c85b394d6c5f3fe435ed8e + tests/mockserver/internal/sdk/models/components/customsensitiveexpression.go: + id: 865e0e546bf2 + last_write_checksum: sha1:734702e350fe5a9a0eccf1ebe23fe5ba88de3de5 + pristine_git_object: 4dd1f11ec826133df3c7d2a18583540d3f70b9a0 + tests/mockserver/internal/sdk/models/components/customsensitiverule.go: + id: ce1826be09a6 + last_write_checksum: sha1:8853db853b0b17cbdc765b9e5c6130237667d0a7 + pristine_git_object: 56e26f158a315cbf0ff505a7c914a8655cc1e1d0 + tests/mockserver/internal/sdk/models/components/customsensitiveruletype.go: + id: 9296c83ea02c + last_write_checksum: sha1:f30c464c189f3ca3bd09a64e0949add64287ed40 + pristine_git_object: 12b37ae02264735a29b707343536959f84043662 + tests/mockserver/internal/sdk/models/components/datasourcebulkmembershipdefinition.go: + id: 8d1de8f26388 + last_write_checksum: sha1:7461564626030cdc092d351d101243469e0cf16a + pristine_git_object: e7ccc6fd1f5d1afbe3d367ef657786490a1f204a + tests/mockserver/internal/sdk/models/components/datasourceconfigurationresponse.go: + id: 03f72b0a23c9 + last_write_checksum: sha1:0e571c4aab6d7ed0f03e2d834369353cdf4b82d3 + pristine_git_object: 0453f9ea105cf6b736d08ab4e539174518b43cc1 + tests/mockserver/internal/sdk/models/components/datasourcecredentialstatus.go: + id: 8a23c92b3ca3 + last_write_checksum: sha1:90d1b895e332bd5c6ff3c7b40ac56cb3a8bba56f + pristine_git_object: 1a8b125a7da3635da348a34669fb82232dcd10a2 + tests/mockserver/internal/sdk/models/components/datasourcecredentialstatusresponse.go: + id: f01ed4088747 + last_write_checksum: sha1:b1a2021160824873379267afaf77f2b1097e9b6f + pristine_git_object: 3195e113cabed1233cc5b0a129b2fffee959c6fd + tests/mockserver/internal/sdk/models/components/datasourcegroupdefinition.go: + id: acffcce16c96 + last_write_checksum: sha1:7901f25f2a1b52801631df10246ed50357d37837 + pristine_git_object: cb959e6ef61ff760efe16faf967122e1e0b6a0d6 + tests/mockserver/internal/sdk/models/components/datasourceinstanceconfiguration.go: + id: f5040e556af3 + last_write_checksum: sha1:f4022b1e8bf17fcaeaaf52f4cdcf1763749389c3 + pristine_git_object: 695fba51aa7dbfe6a93c78b7a72eb67c191d8c0e + tests/mockserver/internal/sdk/models/components/datasourcemembershipdefinition.go: + id: b1380adbc1ca + last_write_checksum: sha1:b2671c4d71318bb6c61f5c7a8b374ef7a5c3f544 + pristine_git_object: 9965fe61a0694d682f775d7a043617aa2589baf1 + tests/mockserver/internal/sdk/models/components/datasourceobjecttypedocumentcountentry.go: + id: 18eea71253a5 + last_write_checksum: sha1:97d644e8e267d30f40635a3f456b2d991a7f0a8a + pristine_git_object: 19bdf977e7fb5cacceba6735ce41b4c0472257e9 + tests/mockserver/internal/sdk/models/components/datasourceprofile.go: + id: 9466e5b7e6a1 + last_write_checksum: sha1:b5ec47931823ed13cf1dfc00ca0ace94f6830c9c + pristine_git_object: bbc72cbc1aff922b3ca175fed0636da5de38431b + tests/mockserver/internal/sdk/models/components/datasourceuserdefinition.go: + id: cd2548564bad + last_write_checksum: sha1:b78b44709c03e35ac0448926c417f7c8c90cf296 + pristine_git_object: d1431db74efa331f93ce3418f183389383647efb + tests/mockserver/internal/sdk/models/components/debugdatasourcestatusidentityresponsecomponent.go: + id: 9f9758373d27 + last_write_checksum: sha1:f6f3c52b7b1a6be8ee1c0ca86ebd6f97ba4f136a + pristine_git_object: 1eeda8b600613d729201021a64796aec9d5f0a24 + tests/mockserver/internal/sdk/models/components/debugdatasourcestatusresponse.go: + id: 970f8d3b95cf + last_write_checksum: sha1:0a49cda4545fbe83a365f0d35e47fe3f4aa86247 + pristine_git_object: 2b4c0aa4018697a3f857c54865e6ba06bdd195b1 + tests/mockserver/internal/sdk/models/components/debugdocumentlifecyclerequest.go: + id: 4c80e9a2ff60 + last_write_checksum: sha1:af5b062925d5b00f4e54c32f3634b4ba2ac8cb47 + pristine_git_object: 93255bb0197267ec61bf7f6ed588b916cb47f1a5 + tests/mockserver/internal/sdk/models/components/debugdocumentlifecycleresponse.go: + id: f7f756c77570 + last_write_checksum: sha1:d8c90e229ff15d6e0f26890d80d2cb40473405ba + pristine_git_object: 343802ed97f96c5a9fa42fcfa821ba61e9bb2b22 + tests/mockserver/internal/sdk/models/components/debugdocumentrequest.go: + id: 5243523a710f + last_write_checksum: sha1:5b299213bc4d94dcdbc7d20bd106eeb11b127f4c + pristine_git_object: 2ccad29a3009ff00fe777702a23f2bcb4dd741db + tests/mockserver/internal/sdk/models/components/debugdocumentresponse.go: + id: 9cbbd1e75275 + last_write_checksum: sha1:b3ad2fc81ba9ef47cc599d712303cbe5de9621df + pristine_git_object: 12fcd5cdfb498bb75347c15abf40c475df45580a + tests/mockserver/internal/sdk/models/components/debugdocumentsrequest.go: + id: 9f03c01931e0 + last_write_checksum: sha1:f92ee30ec11e9f29fe19aa01171073d6c5225432 + pristine_git_object: 545ba853cb059a86b232eb086313d9c8723ecabf + tests/mockserver/internal/sdk/models/components/debugdocumentsresponse.go: + id: 9b471d742907 + last_write_checksum: sha1:37d96de42a3f2af807904681b821314ddf4190d5 + pristine_git_object: b813fdd33ec1ab2b8e7d674242ff4321995a6301 + tests/mockserver/internal/sdk/models/components/debugdocumentsresponseitem.go: + id: 3ca87f52b128 + last_write_checksum: sha1:4c666925801fd3dd3eade7ff1675dd86196aeb82 + pristine_git_object: 47e26f9436ae958efb835fd6f68e117c14552369 + tests/mockserver/internal/sdk/models/components/debuguserrequest.go: + id: 4ff83091dcc0 + last_write_checksum: sha1:32c6a165ab1ad3c737e57375269f5bd3d079b30c + pristine_git_object: fe3f914ae8536ee75cf5aa278bb5c5ec59bf05fe + tests/mockserver/internal/sdk/models/components/debuguserresponse.go: + id: e9fb6a371a9b + last_write_checksum: sha1:148dfbed73ee981236cebddd846a191673c8d5ee + pristine_git_object: 3f6cca7c29ac6af60e41557ea5ae07e232b46011 + tests/mockserver/internal/sdk/models/components/deleteannouncementrequest.go: + id: 94d40088dd66 + last_write_checksum: sha1:780ce18a53f1e123f357f4fda539b61a3cb61c81 + pristine_git_object: 15d931ea8ce07d1914deda58341e7757be9a662d + tests/mockserver/internal/sdk/models/components/deleteanswerrequest.go: + id: c92b38c5cefd + last_write_checksum: sha1:d267f3c4d58569da713281590ace9c15eab05908 + pristine_git_object: 0ee5ee6974273a03ca41e2c5fe9fa8b9ebaaac93 + tests/mockserver/internal/sdk/models/components/deletechatfilesrequest.go: + id: 05c4630ca547 + last_write_checksum: sha1:59d57ebef07b958df322dfeb409555a8c5d6b858 + pristine_git_object: e955ca766573eb94195c825b3651df2820646e52 + tests/mockserver/internal/sdk/models/components/deletechatsrequest.go: + id: 66e1afc7de8e + last_write_checksum: sha1:ebf1d94f5a7e6a346b76b411cc9090126a83393e + pristine_git_object: 2f0acbf368b1bf40507e4bda5d65593c94527576 + tests/mockserver/internal/sdk/models/components/deletecollectionitemrequest.go: + id: 95c2d2b7083d + last_write_checksum: sha1:16ddeb870f9e59d4d5c216278f91ea2971972eea + pristine_git_object: 768919fce01a41c1f8c59f421b3fee98acea0969 + tests/mockserver/internal/sdk/models/components/deletecollectionitemresponse.go: + id: 7aff6cfc2256 + last_write_checksum: sha1:2718796251b9a64d8d5895cb081845779e2a6499 + pristine_git_object: 94f10397eb0eb50c17e543dceacfd4f81a7e8d9c + tests/mockserver/internal/sdk/models/components/deletecollectionrequest.go: + id: f76b1b052276 + last_write_checksum: sha1:f840c7f00fae799c649f55e4a073f3885ad26901 + pristine_git_object: a3460a0a36e32f31d504be8526c17626b5183bbb + tests/mockserver/internal/sdk/models/components/deletedocumentrequest.go: + id: ef0eddb1a111 + last_write_checksum: sha1:9fde9bd0cc1f039ef4cab2c8273c8b912f1ea7ad + pristine_git_object: e103c1c4fbff5fbfd025a66060fecdf8c8bb66a1 + tests/mockserver/internal/sdk/models/components/deleteemployeerequest.go: + id: cfb52607f421 + last_write_checksum: sha1:21b362c6000f63ed78141fe5dc1035dc68ab523d + pristine_git_object: 0e582507ce3fb06ce271d16341b1c37fb1c7ec7c + tests/mockserver/internal/sdk/models/components/deletegrouprequest.go: + id: 5f48bf9b3d13 + last_write_checksum: sha1:8dffc9e1d3a59e33856045fb9ce650c1a359122f + pristine_git_object: 4c6a7310becb5642c05df582f973232cbbe0aa68 + tests/mockserver/internal/sdk/models/components/deletemembershiprequest.go: + id: f3d6f38c28e0 + last_write_checksum: sha1:002e68995698fc4147692d600f273595bbe6f841 + pristine_git_object: ed2ab708baf4353a4dd20e09e9480dcd4a3ed559 + tests/mockserver/internal/sdk/models/components/deleteshortcutrequest.go: + id: e0573a376193 + last_write_checksum: sha1:fe08c76f01ddb8054bd31265f326b82e58900719 + pristine_git_object: 440f2958119871590f4efa655587a4a8ec9e3a25 + tests/mockserver/internal/sdk/models/components/deleteteamrequest.go: + id: a6592ec6c53b + last_write_checksum: sha1:ea149687e6cee100c4463ef1ec50f89433d86027 + pristine_git_object: 7d877567a2c98532e94985e2d64cf9977e6c34f5 + tests/mockserver/internal/sdk/models/components/deleteuserrequest.go: + id: e2d5f97616cb + last_write_checksum: sha1:f3b9191bee3cc9e8ccf5aca3058e6426213977a7 + pristine_git_object: 9e4340136b3e13590d96409a5269184a8f53c428 + tests/mockserver/internal/sdk/models/components/digest.go: + id: b99e7835ab47 + last_write_checksum: sha1:db77f02c205817d89f694b94d89a9073dac79f05 + pristine_git_object: 5cbcb5608dabeee367814be9fa33dab8a4ae6353 + tests/mockserver/internal/sdk/models/components/digestsection.go: + id: e5f6a11004bf + last_write_checksum: sha1:96eb31c72cfd99fd7523e299e18106f6c94aaa01 + pristine_git_object: e316597e5b965518444082654dd2607cfc825d0c + tests/mockserver/internal/sdk/models/components/digestupdate.go: + id: ec8318cb77ed + last_write_checksum: sha1:3191c55acf305d1eb99495b4bab2cf041ed9ab18 + pristine_git_object: e024d4cf4184a36421b50c3d56c2def72739bb66 + tests/mockserver/internal/sdk/models/components/disambiguation.go: + id: 4bcd8b12a7f9 + last_write_checksum: sha1:f7e4592e67d8f64c9ce48bc9b05114e4a7132acf + pristine_git_object: 200e9abb61c1b43627985387fb01a24d9c47613d + tests/mockserver/internal/sdk/models/components/displayablelistitemuiconfig.go: + id: 15ca976c04d7 + last_write_checksum: sha1:5baf3601041f5f2983878313b65994996440f4e5 + pristine_git_object: a0e605281d1c6bfa56c6ee88f2dfceff7b144e93 + tests/mockserver/internal/sdk/models/components/dlpconfig.go: + id: dd310c689385 + last_write_checksum: sha1:d7f7202ea98f70853dbe57afbbf046a63a59f8d0 + pristine_git_object: 04c23aebfc11d653007748a5653bfe742e2fe962 + tests/mockserver/internal/sdk/models/components/dlpexportfindingsrequest.go: + id: 5edd4787e726 + last_write_checksum: sha1:a6fa9927945d74ba513e8299c8102f5f4545c2ab + pristine_git_object: 77fdbe9636ede5978c6c82e5a54e2d0c062a99b0 + tests/mockserver/internal/sdk/models/components/dlpfindingfilter.go: + id: a7d6016908e6 + last_write_checksum: sha1:3a7776befd51d54ad43802b3e808bed01f7ceb31 + pristine_git_object: f04989270a40d3385eafd74542aef8a5ab2dd3d0 + tests/mockserver/internal/sdk/models/components/dlpfrequency.go: + id: 0e58077c7ce5 + last_write_checksum: sha1:a43530a5536fc8d7e9e059f9256acb659e57f636 + pristine_git_object: 7c8f72b35ad02260a6a8740db8595cd4cf69edaf + tests/mockserver/internal/sdk/models/components/dlpissuefilter.go: + id: 8533f64d6a9f + last_write_checksum: sha1:f36da04b86943e0b5b381b30ad96a3169a5be43d + pristine_git_object: 484c2a99fe68b47faaf7677c3d67a4eeb7723910 + tests/mockserver/internal/sdk/models/components/dlpissuestatus.go: + id: 2ebd743825ad + last_write_checksum: sha1:f1df49753a10f9d160ba746f973a2b37f0c32dc6 + pristine_git_object: 24c291ec230b006ece1d2c28db85b31d68d5f2e6 + tests/mockserver/internal/sdk/models/components/dlpperson.go: + id: 9cebf9b832af + last_write_checksum: sha1:1785c4783dc2b945ce8e03dc64650e7b69a7ea89 + pristine_git_object: 1bcd022f985b4ab84666d9638ca7357bddc3aa34 + tests/mockserver/internal/sdk/models/components/dlppersonmetadata.go: + id: f736630cd4eb + last_write_checksum: sha1:f095e27f42403ff319f5a83f6a65e7ae723d54a9 + pristine_git_object: 5baf03bbbb6411c516eccbbe02e432f19d72ba65 + tests/mockserver/internal/sdk/models/components/dlpreport.go: + id: 09072c04f05d + last_write_checksum: sha1:5d99fcf5ed5cc0d0dd50f166c2a5b80d52c70b12 + pristine_git_object: 8e6ccffcb89a4d48defc5d68d6a8f6f74dcc0a1d + tests/mockserver/internal/sdk/models/components/dlpreportstatus.go: + id: 637580c9d3b7 + last_write_checksum: sha1:e6d909d5c50c95004c7068caaef92554c2976af9 + pristine_git_object: 6c4ea46f5822a3783a2349fc90b37b0659a0a647 + tests/mockserver/internal/sdk/models/components/dlpseverity.go: + id: 6226aa236cbd + last_write_checksum: sha1:e04497e3bb7699f8686daee91fd4a37f9a646ceb + pristine_git_object: a0c021992d357a7e1b9573aa6f497cf6ce27a497 + tests/mockserver/internal/sdk/models/components/dlpsimpleresult.go: + id: 9c8ef716150c + last_write_checksum: sha1:7e58ca80e00935371b714da76574b40b5502660e + pristine_git_object: f75e74547d443e3935bcad1e400597e917c6b226 + tests/mockserver/internal/sdk/models/components/document.go: + id: c26c1064cced + last_write_checksum: sha1:68f52179e0510e8cdb6430b6acb085daf861c066 + pristine_git_object: e72ffed1aa466689e27a59293a3c7094482d2832 + tests/mockserver/internal/sdk/models/components/documentcontent.go: + id: 9717a5e42d61 + last_write_checksum: sha1:17906e5b05e5396940805846f250c7c4b91a1bb9 + pristine_git_object: e2a735c94c6155d8c70c8f5cdc5ee02bfe2c1bc5 + tests/mockserver/internal/sdk/models/components/documentdefinition.go: + id: 04583e985c05 + last_write_checksum: sha1:93c3d873dc6abfe6635cc10f544126aa75ff5a27 + pristine_git_object: 41db731fbfef55fd7064754a57bd6bc881e20e5b + tests/mockserver/internal/sdk/models/components/documentinteractions.go: + id: c30c722fc3f1 + last_write_checksum: sha1:5e29169410c2971f57b96b24ea4fad8b6437b79e + pristine_git_object: 5b5e215d349d0d0df694f960e610949227d1a38b + tests/mockserver/internal/sdk/models/components/documentinteractionsdefinition.go: + id: fb72ffa96d85 + last_write_checksum: sha1:b34825743a5a76d8b6a521b6bcbaf37a5ef18d44 + pristine_git_object: f49af72287011fb4cd8b775715db47c8b564c45a + tests/mockserver/internal/sdk/models/components/documentmetadata.go: + id: 1b351424b44f + last_write_checksum: sha1:9a87a468e565ac6e140a2ea62ba94c64f3f9189e + pristine_git_object: b4e0fd2e5c2a0dd356332522e93ff7c47b18cfef + tests/mockserver/internal/sdk/models/components/documentorerrorunion.go: + id: 0e42a8f964b2 + last_write_checksum: sha1:77be00f650cba6ffe9e11fcefc1d260a1c8abad9 + pristine_git_object: 55824d3df8134b04451a4b85898a6f3ac4e5c9a6 + tests/mockserver/internal/sdk/models/components/documentpermissionsdefinition.go: + id: d6093d2a21d0 + last_write_checksum: sha1:a13ae34b46d3968eab57cb6bba41b5423dbef5ff + pristine_git_object: 75459197a5cf5b0a8c1f4b6e8aee1ec00a104327 + tests/mockserver/internal/sdk/models/components/documentsection.go: + id: c27979e0fb9a + last_write_checksum: sha1:a783c3824736e1d092b4d05621470c1c9b19c115 + pristine_git_object: ef97fcb46524355a764ed6fe1df8c25361505bb2 + tests/mockserver/internal/sdk/models/components/documentspecunion.go: + id: 398b265d077e + last_write_checksum: sha1:9133128f54aef85e913a9a4dfd2b49d8630b9b3b + pristine_git_object: 87e6ac591c9b1de998437a0ed0f68c29e7c201b6 + tests/mockserver/internal/sdk/models/components/documentstatusresponse.go: + id: 6fd1515e4332 + last_write_checksum: sha1:a2ff6be811eb7e72cf0b690192d94472f4d6a6ca + pristine_git_object: 72007844b6da5c9ac63e9c313e161120346112e8 + tests/mockserver/internal/sdk/models/components/documentvisibility.go: + id: ddacde028f51 + last_write_checksum: sha1:e23271efe678e0cedec27c3525d6bfa8239a83d2 + pristine_git_object: 3d7e72b7ce0dfaebe14616a9c4ec5fd130031bef + tests/mockserver/internal/sdk/models/components/documentvisibilityoverride.go: + id: b75ca408e895 + last_write_checksum: sha1:d0bfe777b8bc55ce52eeb52b3837339b853635d1 + pristine_git_object: 5d424357f8bf8349f48612ebefb3158f501306e5 + tests/mockserver/internal/sdk/models/components/documentvisibilityupdateresult.go: + id: 617a9e11c523 + last_write_checksum: sha1:07c2a1b865161fa6e8ab0766f1c71096c4de3c31 + pristine_git_object: 5b76ae892935453375a5e85e9169f0ab334e45b7 + tests/mockserver/internal/sdk/models/components/editanswerrequest.go: + id: ef593ce11a15 + last_write_checksum: sha1:ac6f489fb01360867c1dbd9f23094c9727d4e8b6 + pristine_git_object: c11ee20339dc1ced7050fb7de4400050630f7660 + tests/mockserver/internal/sdk/models/components/editcollectionitemrequest.go: + id: 89566231dc02 + last_write_checksum: sha1:2e8f54fc9dab1089b7ee8d2187650e7ff143e655 + pristine_git_object: d43b56a759b7d1d4d2cfb99fec4eade71651f60c + tests/mockserver/internal/sdk/models/components/editcollectionitemresponse.go: + id: a14bd3096b96 + last_write_checksum: sha1:66e4c98106692f44edaaeb3d012613bb3f47edef + pristine_git_object: 2d6a42bf1ee333a7799ce9d436bd45d1816264f6 + tests/mockserver/internal/sdk/models/components/editcollectionrequest.go: + id: 52b22058e8b8 + last_write_checksum: sha1:f201e2c36501bd5765225de622e8be83bb73296a + pristine_git_object: ed60e37353a7e55eaf3e7bfb124f7221a9f575e3 + tests/mockserver/internal/sdk/models/components/editcollectionresponse.go: + id: e293dec7d21e + last_write_checksum: sha1:1b50a116c74acbe6f304f4541d3741669923d707 + pristine_git_object: 63c1ab5a6f4562f4c54d69851e409c3f3955d215 + tests/mockserver/internal/sdk/models/components/editpinrequest.go: + id: ea4364f07630 + last_write_checksum: sha1:fb86074a6869523e05e6e3ac02f08da3ee21dc5b + pristine_git_object: ab648e15b9b9ee0d2128b090ea0df231034513ba + tests/mockserver/internal/sdk/models/components/editworkflowrequest.go: + id: 881495edddc9 + last_write_checksum: sha1:619a1ec45aaf5de635c7e5b8c5afe3feb50c1940 + pristine_git_object: 4c803a250c6e5a5afaa139ebc5b1b8fd37daadde + tests/mockserver/internal/sdk/models/components/employeeinfodefinition.go: + id: fbaa8ee8c119 + last_write_checksum: sha1:f1eeb77d277fe939ed396f91341bed042c3e07e5 + pristine_git_object: 7af253a72c82f5a320d0f61ff1615e202f10f335 + tests/mockserver/internal/sdk/models/components/employeeteaminfo.go: + id: 2fe19184bfda + last_write_checksum: sha1:acbee379004f40aa60888bc81edc9d416d1baffe + pristine_git_object: dd50fe0e6a560db563544364a64dc1325074c092 + tests/mockserver/internal/sdk/models/components/entitiessortorder.go: + id: 2eeebdbe620a + last_write_checksum: sha1:990a1f3c9b87bc94767226bc60439e53358cebf3 + pristine_git_object: 6888c12957210c824f5c21f88054d5645000dea9 + tests/mockserver/internal/sdk/models/components/entityrelationship.go: + id: 4de4ac65359b + last_write_checksum: sha1:ee82d5742816958c738513bbbcd1423f90bdfb48 + pristine_git_object: fee77670a8402d718faabd3017b5ecb9fa1715b7 + tests/mockserver/internal/sdk/models/components/entitytype.go: + id: 9060f3b7caa7 + last_write_checksum: sha1:35d9e50d9e3ae6cc0606336c4111ee2069841b16 + pristine_git_object: 18fae8c8580fd0dd5275dcc236f4785a789eed48 + tests/mockserver/internal/sdk/models/components/errormessage.go: + id: 7022277f8964 + last_write_checksum: sha1:90a517fa4644b2e21c6e6988f8b0f8b9bb1258ad + pristine_git_object: 053c085ddb70d9c44eb0aa6eaa858cf664ce1929 + tests/mockserver/internal/sdk/models/components/eventclassification.go: + id: 8e1096478966 + last_write_checksum: sha1:e6ca7a7dc493bd2aff48e5bea5a7c6b05f7b8d72 + pristine_git_object: 99367087743943272c027c05175f8bfb7dfda1f7 + tests/mockserver/internal/sdk/models/components/eventclassificationname.go: + id: 7c7fe93fd5c3 + last_write_checksum: sha1:d633b455eeec4ce27e9768cd2359bfea86c9ca54 + pristine_git_object: 2971f669bfe49be78d840c3582918fcfd1800ae9 + tests/mockserver/internal/sdk/models/components/eventstrategyname.go: + id: 229a30571f27 + last_write_checksum: sha1:acecfa3fb469871561d21b30275631ced4a4a11c + pristine_git_object: fbbce772f49968e62aa68d8f08892b07ec562d09 + tests/mockserver/internal/sdk/models/components/exportinfo.go: + id: 51e766b5fff0 + last_write_checksum: sha1:aa247f4086aa7f07a7342a5478116adea95ad8a2 + pristine_git_object: 74fb0752d264528a1dc73a79aaae50c3aa1e4c1b + tests/mockserver/internal/sdk/models/components/externalsharingoptions.go: + id: f29dbf8904d7 + last_write_checksum: sha1:129d60a6464700de75963f0f71ce88c5cde095f2 + pristine_git_object: ef958664c532332d25e40edd6ca9268f7b17f9ac + tests/mockserver/internal/sdk/models/components/externalshortcut.go: + id: b57c5d5ada81 + last_write_checksum: sha1:27091d0f8a0eae838f932ebf44cd0d5eedf9acd2 + pristine_git_object: 24eee6191112929c5d7ef8e50177ca3890643791 + tests/mockserver/internal/sdk/models/components/extractedqna.go: + id: 63893d64b799 + last_write_checksum: sha1:97534c9bce555c42979be48fa92b7916dc9a35d9 + pristine_git_object: 6de2c2b322e5c71c4c039e2f2132470cbe3f2e84 + tests/mockserver/internal/sdk/models/components/facetbucket.go: + id: fd8945826f26 + last_write_checksum: sha1:587d68bdbb82adaafb7be60c18e65aa428f49818 + pristine_git_object: bc1861d260dd9f54864be0b29e2643c18809fe5a + tests/mockserver/internal/sdk/models/components/facetbucketfilter.go: + id: 4c63af1c98a7 + last_write_checksum: sha1:c2455048f1c574f6c33ba86110f78fbae7a11a7f + pristine_git_object: eafb07db80d0741afeb708ec66ab6f15544536f4 + tests/mockserver/internal/sdk/models/components/facetfilter.go: + id: 89bf8563aaa3 + last_write_checksum: sha1:b387ab4950abe21a246b5d4f36f126147fefa6bb + pristine_git_object: 2d9764bf2f8aaae39ac6728c220e423dfa63cca0 + tests/mockserver/internal/sdk/models/components/facetfilterset.go: + id: 4d4dcd36986a + last_write_checksum: sha1:6a7c1068dca4aa32c440398c5755f94834859c40 + pristine_git_object: d643343537ab5a63ba4ceeafebac55307c10af24 + tests/mockserver/internal/sdk/models/components/facetfiltervalue.go: + id: cdd19bf9c98f + last_write_checksum: sha1:d59e535246c7d9b5d43ef7542bfc9c599c9322d8 + pristine_git_object: 6fa0e3a32601787c6ed3abd7ada628f46b76b7d2 + tests/mockserver/internal/sdk/models/components/facetresult.go: + id: a68fb0fafcc4 + last_write_checksum: sha1:700eafec2b5b7a550913114c69dc43fa1acf6826 + pristine_git_object: a9ad79baf30d1b8133013a89dfe63cab292eb0bc + tests/mockserver/internal/sdk/models/components/facetvalue.go: + id: 3439da3de729 + last_write_checksum: sha1:80fefa2d8bf74a81c1fa8aadd8065a00784a169d + pristine_git_object: e720e4a745d910bac28dce39071eca3bbc0e4a82 + tests/mockserver/internal/sdk/models/components/favoriteinfo.go: + id: 30a0d7c34a6d + last_write_checksum: sha1:64a199091535bec155fa46cd3022c50574f8e329 + pristine_git_object: 7e46f018b963eb4d48c9aaa6e436be9e8468e90a + tests/mockserver/internal/sdk/models/components/feedback.go: + id: 2f1e4a5ed682 + last_write_checksum: sha1:eefb62b24dcb02a447ac81ccabafe6de3fbc6a94 + pristine_git_object: c89a1ce6d7def85a9ed928b5d2071ba568bc84f1 + tests/mockserver/internal/sdk/models/components/feedbackchatexchange.go: + id: ea5fdc1794cd + last_write_checksum: sha1:59418d4b2dc683c810308022eade51a8894ab3b0 + pristine_git_object: 04cc3a93272ac70933b0485bee31b335e05ab623 + tests/mockserver/internal/sdk/models/components/feedentry.go: + id: d25fd66fcf7a + last_write_checksum: sha1:802c3c827ceab5ea012ccb4cfdfb41c059a57533 + pristine_git_object: 1274083a6813ebf47b3f6bf587e397bf12b904ff + tests/mockserver/internal/sdk/models/components/feedrequest.go: + id: b06bc4cef0cf + last_write_checksum: sha1:e3e5205728c55eb2beef947db9c45670f2ef73af + pristine_git_object: 7c94e4641e1f167be444e87014e6f9de15b649f2 + tests/mockserver/internal/sdk/models/components/feedrequestoptions.go: + id: fd9245fe1bf2 + last_write_checksum: sha1:fa30b7fd6ee3e45896d7bbe36e33e7c0cb9000ba + pristine_git_object: 7a1d1f2e7259890e51d6b020d07b2e98f38603e0 + tests/mockserver/internal/sdk/models/components/feedresponse.go: + id: cebfff750545 + last_write_checksum: sha1:f6f77be921621cf1a133463043fc1871533e2e22 + pristine_git_object: 54f9d1a8997983156c84e69f888c59a80d06c2b1 + tests/mockserver/internal/sdk/models/components/feedresult.go: + id: 47411573e67a + last_write_checksum: sha1:dec3c7bf47204e5399fe5b1863ac96134a1a43ec + pristine_git_object: ddd4f095be90f403aac41127aa170c46c75cebd3 + tests/mockserver/internal/sdk/models/components/followupaction.go: + id: 38179fec19b1 + last_write_checksum: sha1:32a31f7af77a58ce6f3284e8550d01fcf0d3bddd + pristine_git_object: 4a4197d838d2696f9a9bba8bebc9908ce4337c52 + tests/mockserver/internal/sdk/models/components/generatedattachment.go: + id: 1971637f36e3 + last_write_checksum: sha1:1a1159642e757f0f2e8a6f40489e89c14ae6141c + pristine_git_object: 0e418f080d3e4abd217bdc17c0cc6da71e27a248 + tests/mockserver/internal/sdk/models/components/generatedattachmentcontent.go: + id: 509a7fb5ca9c + last_write_checksum: sha1:3ad2418dfb7350cb752aa63896e09bc48c937ab1 + pristine_git_object: 5b1366c1688c1522c68d9b64aa87af628def09e6 + tests/mockserver/internal/sdk/models/components/generatedqna.go: + id: ed97b38f710c + last_write_checksum: sha1:ac6036d26e9b7fd66fc656d8fc4fe3fa913166b9 + pristine_git_object: 4bcd892cff45c28f89e18cd226af12fe07badd1d + tests/mockserver/internal/sdk/models/components/getanswererror.go: + id: 7677c4d86aa2 + last_write_checksum: sha1:5ef22ec08b1354a87fe81543b108c02f5a8f4f08 + pristine_git_object: 76937f9b4ce2ffd77fb225fddf77e5ae9e16342c + tests/mockserver/internal/sdk/models/components/getanswerrequest.go: + id: b548a549496f + last_write_checksum: sha1:8348eb0e9bfaba8f2d28637c5ab21bb1367de135 + pristine_git_object: 2f1611b97e5651a8d1ffd669b4db59d756d40325 + tests/mockserver/internal/sdk/models/components/getanswerresponse.go: + id: e5966e71a445 + last_write_checksum: sha1:3e279bc55976d949c30dbf6fb095f5cc562532aa + pristine_git_object: 0272f33027192b3242d73e907505a32af6a39a09 + tests/mockserver/internal/sdk/models/components/getchatapplicationrequest.go: + id: 5428a97a4e4d + last_write_checksum: sha1:a9a46fca987ca8a0796a3523d51ef9096793bd57 + pristine_git_object: ed309bf7dcc9bddc982e5779b25423457f5e7dfd + tests/mockserver/internal/sdk/models/components/getchatapplicationresponse.go: + id: 584d1aa84068 + last_write_checksum: sha1:14be03943ee96d4fa38258e0992dec05e058becf + pristine_git_object: e55f9694f260f5fcd80751ebc807801b8ee77cf6 + tests/mockserver/internal/sdk/models/components/getchatfilesrequest.go: + id: b9cfe6efd9a0 + last_write_checksum: sha1:cf51f4d67c81a221512b968cd2d8c6d5b2034c89 + pristine_git_object: 01e36cf0e396d5817c067c63d5f57f92e6ac4d91 + tests/mockserver/internal/sdk/models/components/getchatfilesresponse.go: + id: 2b19d63b5462 + last_write_checksum: sha1:b3186c85a7348b4811a4fa4022285b04bfd72b09 + pristine_git_object: 1148537a6423a3e79803fb7696ff5ad6b3089a82 + tests/mockserver/internal/sdk/models/components/getchatrequest.go: + id: ea6a626275ff + last_write_checksum: sha1:f89489d8e44dffd154b58b147ef5d6c38b5a1995 + pristine_git_object: 82118136e30cef6f85142afba2d3761300bb837a + tests/mockserver/internal/sdk/models/components/getchatresponse.go: + id: 6d5eaf6d4f9f + last_write_checksum: sha1:0b1cbc001dbe7ed91d4ea00de86b6940fe7b8cf0 + pristine_git_object: 88ac7a9577cb5b685830b17b728883ee1ba1d31f + tests/mockserver/internal/sdk/models/components/getcollectionrequest.go: + id: 95dffbbabe20 + last_write_checksum: sha1:f4213443c174441aca4924c764bb5bdf9d500653 + pristine_git_object: 89a1e14b6a8072b21eaedfb6ea909740eada8b32 + tests/mockserver/internal/sdk/models/components/getcollectionresponse.go: + id: 8098a889e514 + last_write_checksum: sha1:a016fa2a8c1668cd2a9e37bd4b461e48cee61bf4 + pristine_git_object: e02580ca73b2dbbb980477c7f39d4c1cd40f74dd + tests/mockserver/internal/sdk/models/components/getdatasourceconfigrequest.go: + id: 290fa2e460f7 + last_write_checksum: sha1:8c4922eef911b0ac609b55bb3db3b20ad4dae298 + pristine_git_object: 61fa0d59951bd64d534b9c1d9d5efd7189d19b0d + tests/mockserver/internal/sdk/models/components/getdlpreportresponse.go: + id: 1b8fed52da90 + last_write_checksum: sha1:2295b89c5825b9bb77bd6a922658383856738f6a + pristine_git_object: 275dbf8c17bfe30f4b14f3dd08c5af2c23217aad + tests/mockserver/internal/sdk/models/components/getdocpermissionsrequest.go: + id: 1cc53e7f7fc2 + last_write_checksum: sha1:0bd25f29756a5492e4325aa9a6bde8d8ee00f125 + pristine_git_object: 05b37eac5639f9c6dffdf78d2a1d4221bd8729cf + tests/mockserver/internal/sdk/models/components/getdocpermissionsresponse.go: + id: c640bba5be3e + last_write_checksum: sha1:b8c67f3b9256322fbb744c09fdc46b5adece2c49 + pristine_git_object: 8e244e1423ceb5f38e76e451abd2655c3df1a18e + tests/mockserver/internal/sdk/models/components/getdocumentcountrequest.go: + id: b49deafc8e5b + last_write_checksum: sha1:1e9cef725ed386a02de9affbc9799e58dda94ddf + pristine_git_object: a0961331bf95b374fa301b0b497a4472df8513ac + tests/mockserver/internal/sdk/models/components/getdocumentcountresponse.go: + id: e577b13c2ac8 + last_write_checksum: sha1:7e63afe85b5865ddfa9a97662eca078ba5f62a25 + pristine_git_object: 1691776fa554378d6585588a5fe24da1a050537a + tests/mockserver/internal/sdk/models/components/getdocumentsbyfacetsrequest.go: + id: 976bab028e6c + last_write_checksum: sha1:8f36841ddbbbfea62c86ba29b2eb8d07a9e88c43 + pristine_git_object: 62e8ccc0f0ae9bd8ebe36b3c6910808b35d34971 + tests/mockserver/internal/sdk/models/components/getdocumentsbyfacetsresponse.go: + id: 84a22fd76dfc + last_write_checksum: sha1:14b5f51e476f1a1e61fb2bd26dec5c4b867d772a + pristine_git_object: 74a0f90f4843fcf597484c996d3c8448a647c5f8 + tests/mockserver/internal/sdk/models/components/getdocumentsrequest.go: + id: 4baa7e3fe63e + last_write_checksum: sha1:5f903088fa4591d857d3db75efec9b9366b79b9b + pristine_git_object: 6a2ecf4f0c462566b96b50e0f998dca94b94a377 + tests/mockserver/internal/sdk/models/components/getdocumentsresponse.go: + id: c20fade23f9f + last_write_checksum: sha1:e7ff263610b7a3ca1bc0c2830eaa015a9411bad9 + pristine_git_object: f19405631647564e74e1f5fde2f8de8a40745158 + tests/mockserver/internal/sdk/models/components/getdocumentstatusrequest.go: + id: b2b6abd734af + last_write_checksum: sha1:43fbfe4c484b2f7472a4551b8d5569b1e964473b + pristine_git_object: a16e6e7288d9679578e5deec888aa0c986249364 + tests/mockserver/internal/sdk/models/components/getdocumentstatusresponse.go: + id: 9c96dbcb4b1d + last_write_checksum: sha1:0c07570aeb2efd8d46349fba324e727a2335cb24 + pristine_git_object: b87bd528ea71c5e622fc7918668cbcdfbf2a9e22 + tests/mockserver/internal/sdk/models/components/getdocumentvisibilityoverridesresponse.go: + id: 0403e5dad2ce + last_write_checksum: sha1:9fdc2fece17abeefc931fa5addbac327e0e41563 + pristine_git_object: 5bd08e1472ed414258ed660cc95c34079356f545 + tests/mockserver/internal/sdk/models/components/getpinrequest.go: + id: f7d5082f4559 + last_write_checksum: sha1:2d34974baea66744068b6689e162664d334b73bd + pristine_git_object: f126af9cd8096ddfe866038a6164a06205745ed6 + tests/mockserver/internal/sdk/models/components/getpinresponse.go: + id: 741f324fb227 + last_write_checksum: sha1:8b89dbc0109895df7c98e39fb265632f229b7c03 + pristine_git_object: e6eb59d7b55b069863bb99fb343773253e7ad7d6 + tests/mockserver/internal/sdk/models/components/getshortcutrequestunion.go: + id: 859ee5742266 + last_write_checksum: sha1:49d8ffca440b15a9d2d9d71edb76f9600411af00 + pristine_git_object: cb0491ccf1682666779718e8ccf793331db59236 + tests/mockserver/internal/sdk/models/components/getshortcutresponse.go: + id: 8714342c1e85 + last_write_checksum: sha1:e43ee452f198284652e411a80c4d266f996e932f + pristine_git_object: 4e6db38c5a14355dfe3ba44005fc08511b5f0221 + tests/mockserver/internal/sdk/models/components/getusercountrequest.go: + id: ed5ddc2f4a27 + last_write_checksum: sha1:6722feed0a31a6b9a2c6066b7e194c24ebd61201 + pristine_git_object: c86badbe178a8349c1e8b413df9a822e9ee63c00 + tests/mockserver/internal/sdk/models/components/getusercountresponse.go: + id: ab7de2163097 + last_write_checksum: sha1:06f934d64d00650da28d814dd49645772dbe79e3 + pristine_git_object: 49761b93bf5fb960a974d114467524b7834c0bea + tests/mockserver/internal/sdk/models/components/gleanassistinsightsresponse.go: + id: 4f4987f9f125 + last_write_checksum: sha1:5b8a4fdefd05ed9e53cbee94c32b0a428175ad22 + pristine_git_object: 9bc58150c3098a1d5c6ec5fcd3495306311e264b + tests/mockserver/internal/sdk/models/components/gleandataerror.go: + id: 4b6d01166c72 + last_write_checksum: sha1:fa6d4a5917a90f72a97628ba20e31dd31b02af0c + pristine_git_object: d549ead5c8637ed5f551cf20c640c509d97e63dd + tests/mockserver/internal/sdk/models/components/grantpermission.go: + id: b919de0d2707 + last_write_checksum: sha1:83d69c5a502306994095bc1a515d6c52798fa696 + pristine_git_object: fb1c2a041580745f6604e00404812be8a130fd25 + tests/mockserver/internal/sdk/models/components/greenlistusersrequest.go: + id: d0652520da9b + last_write_checksum: sha1:e6390a90f5ed90fe5b70c4ee6df519625cde2a8e + pristine_git_object: 7cfe20c0a1ad1f73027b9625d6a0e4b09ccb5a53 + tests/mockserver/internal/sdk/models/components/group.go: + id: 94bdd0eb6533 + last_write_checksum: sha1:a888f767f31073e6b49d412485bcb8c839b2b4a4 + pristine_git_object: ecd7ddb6777546fb2061ed8d7fe99372430d28e3 + tests/mockserver/internal/sdk/models/components/grouptype.go: + id: 5537ed02d061 + last_write_checksum: sha1:0346c3bd888fdcfa6bdf470f76f7778f32b240dd + pristine_git_object: 3f25f70bef8fa2da5226a5ab4ab60295240ab984 + tests/mockserver/internal/sdk/models/components/hotword.go: + id: 541b48d27f83 + last_write_checksum: sha1:7aaa2279ba4032458f14d65c2dbd3def0078920d + pristine_git_object: ed23ff8d1bfebc257158abd13a0e9f67636b45a8 + tests/mockserver/internal/sdk/models/components/hotwordproximity.go: + id: 2802b5309b57 + last_write_checksum: sha1:806ab1ff7c35c34ccdd286a05c2a573621526d51 + pristine_git_object: 611b62d7686476b4c54deaa83ed8006519f0ebf6 + tests/mockserver/internal/sdk/models/components/httpmetadata.go: + id: f8e74e13e446 + last_write_checksum: sha1:9e4b58e3bb54db4360421109c2e169741499be16 + pristine_git_object: e18bdc060aad616636f0b92e38b08a03a5cc1e4b + tests/mockserver/internal/sdk/models/components/iconconfig.go: + id: 56fe47f5306f + last_write_checksum: sha1:61063c36128117a731eddf86d9f30666c22e7891 + pristine_git_object: 537d53a4d6235b3f67a08a6b3c08f88a6782f8ec + tests/mockserver/internal/sdk/models/components/indexdocumentrequest.go: + id: 3f357e41b670 + last_write_checksum: sha1:51488e52d8f6cae4ccb957ffa67b009f1620ce58 + pristine_git_object: 86a60a706a79d339af37973d48033b8e7880ad96 + tests/mockserver/internal/sdk/models/components/indexdocumentsrequest.go: + id: 9e5124ea734d + last_write_checksum: sha1:67980a2ec0301faf4d4e53068bfd9b67ef4315ca + pristine_git_object: 759eb8b774b53468bfc600c2ecb156f90d68784f + tests/mockserver/internal/sdk/models/components/indexemployeerequest.go: + id: 2801b9d91a2d + last_write_checksum: sha1:09df0bebfc24a18f9985aaf803053b3c8a008ebe + pristine_git_object: 8d08b0b794c55919f607780cb128368ffe06a871 + tests/mockserver/internal/sdk/models/components/indexgrouprequest.go: + id: 21ae28131157 + last_write_checksum: sha1:70b134584a76f8c28353dd0d0ed7841fbc92f96e + pristine_git_object: acd400f6a2b5ed468d837a8999cb3e3efb8a2ebd + tests/mockserver/internal/sdk/models/components/indexingshortcut.go: + id: 48d24d656fd8 + last_write_checksum: sha1:ed57a6397d9a42ea652edfb3077262f0b1d7ea6f + pristine_git_object: b7b7ca1585f6e58b7957a8e90145b74177c601ff + tests/mockserver/internal/sdk/models/components/indexmembershiprequest.go: + id: acacd39e17e6 + last_write_checksum: sha1:92ccb0c0887e93ce1b6a0828c0f678b35593ad30 + pristine_git_object: e7b2a46c60d004de5ead827a2a28a41363e24603 + tests/mockserver/internal/sdk/models/components/indexstatus.go: + id: 99a07ea21a13 + last_write_checksum: sha1:8f2e56c105e7601ebd5fcbd5b775dd71d672cf91 + pristine_git_object: f170444ac68a29100a121b3852f2d1a33f2e1570 + tests/mockserver/internal/sdk/models/components/indexteamrequest.go: + id: dc8a24d79966 + last_write_checksum: sha1:1a61a66d3bdc9d1c1402fd9178fcf3093a366969 + pristine_git_object: 64f2b3640aacd14ec1dae4dde9d555326fef02d0 + tests/mockserver/internal/sdk/models/components/indexuserrequest.go: + id: ed567e0d15f7 + last_write_checksum: sha1:06d1d86e560655f1b5c529f630fd757c12b5d0f4 + pristine_git_object: daf6de74ff55ccd54aed86e2e10ec7f6154ca3f5 + tests/mockserver/internal/sdk/models/components/inputoptions.go: + id: c5994340f415 + last_write_checksum: sha1:80d7508aa49da639f53def509fb1300d50b27a45 + pristine_git_object: 9ab2cc24643e9600bf2f31f09cfc178f930f905f + tests/mockserver/internal/sdk/models/components/insightsassistantrequest.go: + id: 1e686caf681a + last_write_checksum: sha1:e420017f2d5df6e11b16e57611253957ccf470dc + pristine_git_object: 29a882de1e9020023d8910a6f4ce933356542dd1 + tests/mockserver/internal/sdk/models/components/insightschatsummary.go: + id: a708c0854258 + last_write_checksum: sha1:40fe8e7f03b21f4f1790491c48a65dba9e3514bd + pristine_git_object: d5fe3dfced5431b6f5ce5fad8360e7f1e04afbac + tests/mockserver/internal/sdk/models/components/insightsoverviewrequest.go: + id: a4dad7d6aabd + last_write_checksum: sha1:1e607db283c6a0395011c9482508d3ad5544b44e + pristine_git_object: 5e903919f103f212820d2d4717e0e1e95d78846b + tests/mockserver/internal/sdk/models/components/insightsoverviewresponse.go: + id: 5643c3cf2f72 + last_write_checksum: sha1:16dad78e377ce9f351787544d31c03af558d1cfd + pristine_git_object: 2e8c2ec9b1055f925928b2179fea2bd7c9d31627 + tests/mockserver/internal/sdk/models/components/insightsrequest.go: + id: ce15dfb99343 + last_write_checksum: sha1:b9f1c9680014aa2b60161886dc0d5932ef0cab20 + pristine_git_object: 5d275bd5402042106a4059b3af5f1c808e500280 + tests/mockserver/internal/sdk/models/components/insightsresponse.go: + id: f99b405884d9 + last_write_checksum: sha1:5c9ec796ce094c19b4ee9eaa6d392278b07936ae + pristine_git_object: 9914a52e917e0dcdadda314f1649931bdb3ca825 + tests/mockserver/internal/sdk/models/components/insightssearchsummary.go: + id: 0db178e5510e + last_write_checksum: sha1:d8593121130c17b11118c88686aedf7a004503c3 + pristine_git_object: 408d84baa28719655de6ea3c763233f46847359d + tests/mockserver/internal/sdk/models/components/invalidoperatorvalueerror.go: + id: 3ff602216ef9 + last_write_checksum: sha1:6e8e407afa9e6caf4bc946a51054037a0b64100f + pristine_git_object: a59e010091e1f8ac5b86d4f111a5333ec1993165 + tests/mockserver/internal/sdk/models/components/inviteinfo.go: + id: 3dd69ef67f25 + last_write_checksum: sha1:a34f4007a255687f057ad9d07c76096ffc122a99 + pristine_git_object: 18cac8b3667eaeeefcd0a16793c0a724c982ea10 + tests/mockserver/internal/sdk/models/components/labeledcountinfo.go: + id: 9ab98ae1e4d9 + last_write_checksum: sha1:93763fcdc7d3a1e7b6ffc5cfc2e77fe7270e736d + pristine_git_object: 6ddd153cd951ad2e664d2f1a90ed99579258b4cc + tests/mockserver/internal/sdk/models/components/lifecycleevent.go: + id: 2e0a833df883 + last_write_checksum: sha1:a6c849e86ad63b7dfeff2752a28f5bbb40be1d06 + pristine_git_object: 0e3627a771a679384f7a79fad488867221b5d995 + tests/mockserver/internal/sdk/models/components/listanswersrequest.go: + id: 30123e5ac5fc + last_write_checksum: sha1:0a4be0587f8647a1c4f6702a256e8b6849a1234b + pristine_git_object: 04f62de323984f2e8d3eead984b538ff4e1164f8 + tests/mockserver/internal/sdk/models/components/listanswersresponse.go: + id: 0128f48e6445 + last_write_checksum: sha1:e2ad7ae1bcf8e0d09fdff647ae2831019c8b23e5 + pristine_git_object: fe8dd2869445bb4d9a4745fee8df5e53eb2ea9cb + tests/mockserver/internal/sdk/models/components/listchatsresponse.go: + id: 7f4f004377b1 + last_write_checksum: sha1:97dd22a5070cf9f35b9aab05f606db34182e65e3 + pristine_git_object: 19ca70fc465ff370c50cda5799fe84aa77af361d + tests/mockserver/internal/sdk/models/components/listcollectionsrequest.go: + id: 33f923996b18 + last_write_checksum: sha1:e78e428237fc334a732d4a44e524e28a1e31e5c1 + pristine_git_object: 3dec95592d78066e1c23f9b20978ecd3d6eedb40 + tests/mockserver/internal/sdk/models/components/listcollectionsresponse.go: + id: 9c4f2262dbed + last_write_checksum: sha1:27ab5fefe97945d168a857925be7cb05dc0fdd82 + pristine_git_object: 77a9eafff4d1490d5b6ad782d641a1537c096649 + tests/mockserver/internal/sdk/models/components/listdlpfindingsexportsresponse.go: + id: 6b933e67f205 + last_write_checksum: sha1:508085e8ad2eb673bd53c61c522aef0b928c88d3 + pristine_git_object: 9e84daba07b14d706708d0d23d1487365317798e + tests/mockserver/internal/sdk/models/components/listdlpreportsresponse.go: + id: fab2d05e4972 + last_write_checksum: sha1:cefa10b1888bf6b537d3fe75e36bf359d14716e3 + pristine_git_object: 25f297b597a1dfa563907db00601e89cd55c39f1 + tests/mockserver/internal/sdk/models/components/listentitiesrequest.go: + id: 1dbbb5c24982 + last_write_checksum: sha1:c181794849c1e7b456fb3ed65c7714c84ebfe2d2 + pristine_git_object: 339c8ffc83e3566eedfa5189bd9c3a37c274b795 + tests/mockserver/internal/sdk/models/components/listentitiesresponse.go: + id: 55ea0386c2bc + last_write_checksum: sha1:a8a1457db48b2ff8d44cc065f02c66d69cff2ad5 + pristine_git_object: fdfcc5a46103beec70bb50c7f56572d5ec96c4af + tests/mockserver/internal/sdk/models/components/listpinsresponse.go: + id: 83082c0af29b + last_write_checksum: sha1:788783da18a1e0147bd6f7d2cdcfc1629f8781bd + pristine_git_object: cbf8b276879fab1ac54b44c642223972a11498ee + tests/mockserver/internal/sdk/models/components/listshortcutspaginatedrequest.go: + id: 46ffa4ee859a + last_write_checksum: sha1:0148fe62e21b94d4e9c2e2fc3aa9e1e8ee426157 + pristine_git_object: 40562b5b841c25efe4174ca87b5fa5ddd84ce9df + tests/mockserver/internal/sdk/models/components/listshortcutspaginatedresponse.go: + id: ad6c529f00de + last_write_checksum: sha1:839f408c6937505cfd768ed96aedc09e4ee95dd3 + pristine_git_object: 4994496601e911bc0d2894857d0a079f3e467a9e + tests/mockserver/internal/sdk/models/components/manualfeedbackinfo.go: + id: ec8878d0c324 + last_write_checksum: sha1:354a117e44a667479f91bd5969a6caa22a948e95 + pristine_git_object: ae25ff90cb7a8f879c626e05fc4ddd32dd6a40d4 + tests/mockserver/internal/sdk/models/components/manualfeedbacksidebysideinfo.go: + id: ca109f859575 + last_write_checksum: sha1:9c066d47590c5ee9823f57a51466268e2893a13b + pristine_git_object: 23fb1a7da94ab17bfa0b54a45e12eb0ec3f59562 + tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsrequest.go: + id: 9ffe49fd371c + last_write_checksum: sha1:70341128cd46d9472de34bd3d58ac377f37d2580 + pristine_git_object: ef9a081c408459b7ef665bc6b1e89ea05b242fcd + tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsresponse.go: + id: 1f8eda5070e3 + last_write_checksum: sha1:8ecbd57e51bbd9b0690f74d66880087074a626d5 + pristine_git_object: 8ae55f171cc531a1b7f9fea7670d103b08191d7c + tests/mockserver/internal/sdk/models/components/mcphostapplicationbreakdown.go: + id: a9ba91d64581 + last_write_checksum: sha1:ef6e565d96b5253d5970fd5dd608f87cbe2f1cbe + pristine_git_object: 5b57f57be40f67fa1d0ccbd59e1fe573b9ef685e + tests/mockserver/internal/sdk/models/components/mcpinsightsrequest.go: + id: 44ebf8073f73 + last_write_checksum: sha1:6ee7a134ff7ef911922d79f7552936cbc6687309 + pristine_git_object: 930b2a4e0d95b505061653df063d355901440fcc + tests/mockserver/internal/sdk/models/components/mcpinsightsresponse.go: + id: cdebbbd5d4cb + last_write_checksum: sha1:eaad28cbccc71e85d47f6a0dd7f723cfaa9dc4f5 + pristine_git_object: 2d1a08e0f1b9da899fdbbe089df47fde9b8c7467 + tests/mockserver/internal/sdk/models/components/mcpserverbreakdown.go: + id: 52d405a6680a + last_write_checksum: sha1:64c2730a63feea5ff3965df8ca2034afe2bec8d1 + pristine_git_object: 6559a26dddb1b00c9dde1567fc7676ab00f65745 + tests/mockserver/internal/sdk/models/components/mcptoolbreakdown.go: + id: 9aa21211df8d + last_write_checksum: sha1:f351cdec05b8f05caac7031ea98f17071cb7ccf6 + pristine_git_object: be104ab72b0dbd45c2b852529cbf96985258066a + tests/mockserver/internal/sdk/models/components/mcpuserbreakdown.go: + id: 3796e6d874c0 + last_write_checksum: sha1:115c39fb75461e557499b7aebaac070fcbcc5af4 + pristine_git_object: 73014b6f5dd71b9d05fe8935098102f1ca034101 + tests/mockserver/internal/sdk/models/components/meeting.go: + id: 104e13d174f0 + last_write_checksum: sha1:3cf5bc5fd2b5a40c545bfe1d9f768a98c3360d11 + pristine_git_object: 0c852dd3a7a2cf25798b15303e82ec7b5e8a59e6 + tests/mockserver/internal/sdk/models/components/message.go: + id: d96e45d4acde + last_write_checksum: sha1:e26e4e76e56ff85f2df34f754db3bddaf57b1475 + pristine_git_object: 5972aa332f648eba54a1c048c1819c058233db36 + tests/mockserver/internal/sdk/models/components/messagesrequest.go: + id: ad26cc127163 + last_write_checksum: sha1:91ec52d57dfd2e53150a39841b6eebf3bf8d1568 + pristine_git_object: a778dc51fec681f83e9e9b0b5f0801792fc00fa6 + tests/mockserver/internal/sdk/models/components/messagesresponse.go: + id: b2129871b3f8 + last_write_checksum: sha1:cd2a29d8a46d95037a32717f4cc91612a3a29cac + pristine_git_object: 6d8bb0637e98328c014db61a92fcb9f65f378d1c + tests/mockserver/internal/sdk/models/components/objectdefinition.go: + id: b31a249b0ab6 + last_write_checksum: sha1:bb870ed291515df1134057b714064b863884817f + pristine_git_object: 9a9c55c638ac132d7ebe9f06b13a49c80be29fd0 + tests/mockserver/internal/sdk/models/components/objectpermissions.go: + id: ccc6831e9a89 + last_write_checksum: sha1:a182302021d92910af1f940b60a5fd78f0288bac + pristine_git_object: da63b51aa54a7d5161a011d213289171987a247a + tests/mockserver/internal/sdk/models/components/operatormetadata.go: + id: 4ea52082a3ba + last_write_checksum: sha1:29e97747020e7c3c4dbece0ccab3ed608e450f00 + pristine_git_object: 01e632cd137afddcd9ba7e5b08f87e75aec06df9 + tests/mockserver/internal/sdk/models/components/operatorscope.go: + id: 84680c8d2dc1 + last_write_checksum: sha1:b82c705e6442e386a62f48285b5075e4adfd39ad + pristine_git_object: 1432e9ddd5212e0f1142ae4ceefbf7e75c7e5805 + tests/mockserver/internal/sdk/models/components/peoplerequest.go: + id: b9eb3293a335 + last_write_checksum: sha1:ed92d35b9ee73fab4f70e9aaab17f6ad7c9351cf + pristine_git_object: 1240c00e54f6f5c4493022e643470ffd9011b8ac + tests/mockserver/internal/sdk/models/components/peopleresponse.go: + id: e570c57343b4 + last_write_checksum: sha1:370070abc7236a46218b5d2eeb74f00a4a082aba + pristine_git_object: 452671486fc4d36b768a7889f851da9533e3755b + tests/mockserver/internal/sdk/models/components/peragentinsight.go: + id: ea141ba29ea4 + last_write_checksum: sha1:a2a967c60dd0334daa9cd8176282c81176887c6d + pristine_git_object: 8530b14c21b0de13337afca8d275ad96c8cc12a7 + tests/mockserver/internal/sdk/models/components/period.go: + id: c1a6be1de5fb + last_write_checksum: sha1:dd7b20879b387cbdb3a38113398daeee9f09c4ff + pristine_git_object: 8115421fc6bf9f0c50d006993df91c43de998116 + tests/mockserver/internal/sdk/models/components/permissions.go: + id: 758ded9c8cd6 + last_write_checksum: sha1:604bc9bec4a89d3f72cf808327489999ad5a4639 + pristine_git_object: c12f95f09aa18267484d5e1c11ca089a6bb35a03 + tests/mockserver/internal/sdk/models/components/permissionsgroupintersectiondefinition.go: + id: 1a18261a9010 + last_write_checksum: sha1:1d89ecd50e0f4bf8e7539e33d6f02a0e5b37afa1 + pristine_git_object: f9056e4fc9da37d708e834fc6731ba114ce05981 + tests/mockserver/internal/sdk/models/components/person.go: + id: 11bb88f6a505 + last_write_checksum: sha1:205cadebb2dd56343e3985b090b1532ace9838e0 + pristine_git_object: ab2c5f86c9d1327bfde1edcb7706392180b8b8fc + tests/mockserver/internal/sdk/models/components/persondistance.go: + id: 38ff917355bb + last_write_checksum: sha1:b1c7f853fd358135eeeeeebe8911abcefb0f646a + pristine_git_object: 234db0e2f35f0717bf6949b3d600dc1b5043f9ec + tests/mockserver/internal/sdk/models/components/personmetadata.go: + id: ae4a57f895bd + last_write_checksum: sha1:14372a801821a619f0523d898f933f55ac34cb19 + pristine_git_object: da09ade4c3e2dfe9de5529843ee44a8ce16b4208 + tests/mockserver/internal/sdk/models/components/personobject.go: + id: 793511d31751 + last_write_checksum: sha1:d7b6865c46ed5f590011f698163bb0c6d4fd3cb0 + pristine_git_object: cc4039529bc991beb283c22be167cc07c4c591ef + tests/mockserver/internal/sdk/models/components/personteam.go: + id: aab3428e64ad + last_write_checksum: sha1:d93eeb820d2b3d29e06915dca5c07e17d8fc2990 + pristine_git_object: e93471a504e98c35176105cdffb371f460790bfa + tests/mockserver/internal/sdk/models/components/persontoteamrelationship.go: + id: dc4286ebd099 + last_write_checksum: sha1:512bb60a765e1eae497c256364dd579db3458c9f + pristine_git_object: ab48edf1ca57a44ad65ed31902626c12d4091458 + tests/mockserver/internal/sdk/models/components/peruserassistantinsight.go: + id: b63c751dbc98 + last_write_checksum: sha1:79215291ad220a4cc52937f05f2703f787c1d2fb + pristine_git_object: 1432c2e402d16ede1dc88cb566a58858a998e308 + tests/mockserver/internal/sdk/models/components/peruserinsight.go: + id: 4b7102dcf8b5 + last_write_checksum: sha1:c2927daf6e2dd2fd6f88b69725c61a3a749ed751 + pristine_git_object: 0cda09fda06e6aa7bb5f181e816f2cf797279257 + tests/mockserver/internal/sdk/models/components/pindocument.go: + id: 8605d1ff21f6 + last_write_checksum: sha1:1eeaa9c17a1cd0208bbe00d221d0357efa63e707 + pristine_git_object: c2925503622c1beed20491aee1896b3970db7b41 + tests/mockserver/internal/sdk/models/components/pinrequest.go: + id: bae26829f4cc + last_write_checksum: sha1:b73fc92fa94ae8b4b090e9df2102b921e7634bd2 + pristine_git_object: 7ef8d8e65bd75fe35f59d6858df07c1f970c991c + tests/mockserver/internal/sdk/models/components/possiblevalue.go: + id: bf71542de5f4 + last_write_checksum: sha1:5c25db519b896499621e67c6245893d26afa30e4 + pristine_git_object: a2238c72e427496296d3dd4d409025ae961e78d3 + tests/mockserver/internal/sdk/models/components/processalldocumentsrequest.go: + id: 5e67fd31aa40 + last_write_checksum: sha1:ecbb989ae9b79a4f7f2bf1a0be611efc3be1afda + pristine_git_object: 3da693ea27916362771c0890106ef863ea1ebb6c + tests/mockserver/internal/sdk/models/components/processallmembershipsrequest.go: + id: 818dd3357d39 + last_write_checksum: sha1:6b293ca0f6edbf88ccc798c2cd3a9d416f082415 + pristine_git_object: baaa3e15efcd06ada5b7fd91519a3556f88b2a2b + tests/mockserver/internal/sdk/models/components/processinghistoryevent.go: + id: 1b23187bf46e + last_write_checksum: sha1:139d88be64782c4b81cd831a55062bf7c497492a + pristine_git_object: e808139c9bcca5cf9f2b9619b3caa87f850fc7a6 + tests/mockserver/internal/sdk/models/components/prompttemplate.go: + id: e91829a92d90 + last_write_checksum: sha1:0dda45b631b0179f17250c5db0cc96cc48390ac0 + pristine_git_object: ad65ceb65a0629a8dfb8327dda069c2244f27e5c + tests/mockserver/internal/sdk/models/components/prompttemplateresult.go: + id: 68586eff3a1e + last_write_checksum: sha1:24ea2871bc9e7dc1d7e186d1f030222f009e969d + pristine_git_object: 9ef3447d5242bd1324c14926c8c1ad1073d46e19 + tests/mockserver/internal/sdk/models/components/propertydefinition.go: + id: ac66a3926f16 + last_write_checksum: sha1:4102937b70876c9932fbfd7c7ace69d8455394c8 + pristine_git_object: e17d0096b71414f4f7d951587efdb080f47a34ac + tests/mockserver/internal/sdk/models/components/propertygroup.go: + id: c8fa9b3a9f8e + last_write_checksum: sha1:68058f9a81607adc088834a548fa26aa8e71a2b6 + pristine_git_object: 173332a524a5a6150bbb6daaf5db984e764358d8 + tests/mockserver/internal/sdk/models/components/querysuggestion.go: + id: 8eea13a856ec + last_write_checksum: sha1:333e772c98b3b0c488a4b0dad9c477475778bd65 + pristine_git_object: c9318394e0a3eb760aa51c809b13432f27b1f6dc + tests/mockserver/internal/sdk/models/components/querysuggestionlist.go: + id: 4696745f397f + last_write_checksum: sha1:bc14d652a453fa1f6e85110e9797724755a9cee7 + pristine_git_object: 08eda91ad7dd33d90a53cf35b7c95c0756ced500 + tests/mockserver/internal/sdk/models/components/quicklink.go: + id: c6758c22cadf + last_write_checksum: sha1:7f32f9b08a77159cab69189869bfa06b36f451f4 + pristine_git_object: 7387d9099dee1062569987528e1dee9439f7b9c5 + tests/mockserver/internal/sdk/models/components/reaction.go: + id: fe72a4e08de8 + last_write_checksum: sha1:1fec03571ad220af83da82ff0ddc28226843db1e + pristine_git_object: cdc2dd7ccac4ae5d77b132c5de003d70c20d871c + tests/mockserver/internal/sdk/models/components/readpermission.go: + id: 27b917f0c511 + last_write_checksum: sha1:8fd237486ded8e2383da7fdf30474e35c85e3b24 + pristine_git_object: 769b69aba360937566ad8e355af915ecbab71157 + tests/mockserver/internal/sdk/models/components/recommendationsrequest.go: + id: f69925e5e953 + last_write_checksum: sha1:b1923c5a9a57149c46160a4c3bc2eb424e5aa363 + pristine_git_object: 546f09dba0846c39781c0382ed0ac50d3602efbc + tests/mockserver/internal/sdk/models/components/recommendationsrequestoptions.go: + id: a3657d60f731 + last_write_checksum: sha1:3ed19bb28d50abf892843d98716d3a7ae0869fa6 + pristine_git_object: 15fd1bbda1895a164ec7fa883ad8c19c0c893859 + tests/mockserver/internal/sdk/models/components/referencerange.go: + id: 93711c7ae9c3 + last_write_checksum: sha1:cd2d934fbc80cc4ff9e23f37e573b9a33e8a7d8d + pristine_git_object: 7fe5e73aacfc2e85bd336a2fa98c56754f5b9217 + tests/mockserver/internal/sdk/models/components/relateddocuments.go: + id: 52691dda03e8 + last_write_checksum: sha1:eea27dba609f1624659fcbd0d15777c55eb703e0 + pristine_git_object: b7981fb285550e9262c20cbb499b27699df20d29 + tests/mockserver/internal/sdk/models/components/relatedobject.go: + id: 45c74af43a53 + last_write_checksum: sha1:643744c2a87fa946d97b54f20a7ee7e140cb703c + pristine_git_object: 4dc10d77c908ad7d7391e46062a13b4d540e8d0d + tests/mockserver/internal/sdk/models/components/relatedobjectedge.go: + id: d7fcbfc76081 + last_write_checksum: sha1:83cc59bf75b808a281598e4a8698a5207986d100 + pristine_git_object: aa001154f60987e709d4cdf5e0bd8991a535f495 + tests/mockserver/internal/sdk/models/components/relatedquestion.go: + id: 934c4d56a345 + last_write_checksum: sha1:cfca1adace3e86522f5c7fcfe982c01ec7eedef6 + pristine_git_object: 868ca518a7e7240cc1c46a0cd1b30451ed19ffbb + tests/mockserver/internal/sdk/models/components/reminder.go: + id: 106d77152103 + last_write_checksum: sha1:867cb2925fa54516862371f24f451451f4613fc0 + pristine_git_object: 5ea8bfcb2bf9dfbc1e5f119e255540e7311d3d77 + tests/mockserver/internal/sdk/models/components/reminderrequest.go: + id: df52737c1765 + last_write_checksum: sha1:1b589913958b7fc4c9718ec37e202108e779a57f + pristine_git_object: d501a75442ed82cde890158778d0917ec3697781 + tests/mockserver/internal/sdk/models/components/reportstatusresponse.go: + id: d63aa5c44265 + last_write_checksum: sha1:0a688b4f49c4d9e40abeb0302ff22037ea0c7a23 + pristine_git_object: e2603ee4d96338345c86220aeb99d8f12d4459a8 + tests/mockserver/internal/sdk/models/components/restrictionfilters.go: + id: 2f13938afdbd + last_write_checksum: sha1:01a457eeaddebfa048d02b4960af533294186ee5 + pristine_git_object: 616624fcba7f40b0eab7f4473d35398500672e7a + tests/mockserver/internal/sdk/models/components/resultsdescription.go: + id: 781720cc7572 + last_write_checksum: sha1:222d4cd162257aa1fa51a4618c5fe5878f620e51 + pristine_git_object: 4b6266633c78dbe3a7de382a5cddb4079dd17fec + tests/mockserver/internal/sdk/models/components/resultsresponse.go: + id: 9f71b2d148b9 + last_write_checksum: sha1:11f1bf56e8b41e71b3b458d39f4a18b9ad7ae0e3 + pristine_git_object: 6fd3dbe08a7f69712804e68845532af7169c7bd9 + tests/mockserver/internal/sdk/models/components/resulttab.go: + id: f74dbc8c646f + last_write_checksum: sha1:0c61e42fad9332219ca1e3642fb386c3cf9228ad + pristine_git_object: a8ccfb2ed064632fe0afed4c80bca8479936158c + tests/mockserver/internal/sdk/models/components/rotatedatasourcecredentialsrequest.go: + id: b13e96ea86bb + last_write_checksum: sha1:142794daff76893b8a56e02aa1a480e3257f4c3f + pristine_git_object: 3733a70792eb2440f4a315659792f352ab32b539 + tests/mockserver/internal/sdk/models/components/rotatetokenresponse.go: + id: 3823d2eff751 + last_write_checksum: sha1:669e30d5f7f5fb79cbae3f949a18347caaacfb2c + pristine_git_object: 7c751f2595d88c368db8393c08a108833554e37a + tests/mockserver/internal/sdk/models/components/scopetype.go: + id: 0e31d2a43ced + last_write_checksum: sha1:4c421c547071cbf1b0287e602fa55043a2183ff1 + pristine_git_object: b0f9c8a46029f8e1b9e025941186a1482767a5f5 + tests/mockserver/internal/sdk/models/components/searchagentsrequest.go: + id: 8634f5e44a9a + last_write_checksum: sha1:0dc1fc77eb97329652038c1ea807512599e97844 + pristine_git_object: 121e0c7b00d2a62d7fa3a3379fb92e807b1025fd + tests/mockserver/internal/sdk/models/components/searchagentsresponse.go: + id: 906d6f33d1b2 + last_write_checksum: sha1:f51f69ce784c7bb5bb3f5ba16af06fb2d57ede27 + pristine_git_object: 7c26e61471d861f4182a9213e93920d0214ae244 + tests/mockserver/internal/sdk/models/components/searchproviderinfo.go: + id: e3f93a07e870 + last_write_checksum: sha1:81c076f3cb625580354cebb26759f796157f034c + pristine_git_object: 2f42b9fbe95b26c9b1009cf7d77f28b5eb67e16b + tests/mockserver/internal/sdk/models/components/searchrequest.go: + id: eb0ff8fe9877 + last_write_checksum: sha1:fb876a08dac279d7755c1a455458ef4456d8e289 + pristine_git_object: 40507db50db5fbcb9059864be6ec40d0755c437a + tests/mockserver/internal/sdk/models/components/searchrequestinputdetails.go: + id: e0cf19d53328 + last_write_checksum: sha1:79a19cf32c26e938cfb20ca444f0375e6f270c40 + pristine_git_object: b35217f02d13149c5e15c32fabc50238df1904eb + tests/mockserver/internal/sdk/models/components/searchrequestoptions.go: + id: 3bb8cb6c87fb + last_write_checksum: sha1:17ee2976b192f2b65f9b431afb0e9056aae72278 + pristine_git_object: 0a74cf275e2b777b3716152cb44d6fe4bee82cd5 + tests/mockserver/internal/sdk/models/components/searchresponse.go: + id: 5828ee669deb + last_write_checksum: sha1:eb63c5279cb78ba8d445ec077a50a898af7f3cc4 + pristine_git_object: a9cdbe0ec3b66e2941596870dc36d72e374ff49c + tests/mockserver/internal/sdk/models/components/searchresponsemetadata.go: + id: 065ed51c3d81 + last_write_checksum: sha1:5ba373bccf0e7b975614650485d334c3099aa38a + pristine_git_object: d8c9a4fb4f52e8d5cfecbce6d434714572916727 + tests/mockserver/internal/sdk/models/components/searchresult.go: + id: 71ad9c528176 + last_write_checksum: sha1:ba319a872b4d9a471f094e41bc5f9e4a065ed3ca + pristine_git_object: 7327f8fd25c64b287d8698c665c97b8f3bd84fde + tests/mockserver/internal/sdk/models/components/searchresultprominenceenum.go: + id: 6ebcfacc7133 + last_write_checksum: sha1:81270b9cc68f366ac10358642bea75aa1cd1bc62 + pristine_git_object: 789b4f2705f661b1a35cad4ed5573df584d3cfd7 + tests/mockserver/internal/sdk/models/components/searchresultsnippet.go: + id: ee8a658aba84 + last_write_checksum: sha1:18cded48b53d0255192b20827ef35c4c4592de45 + pristine_git_object: b131c899e07f63919b3064918c7ad828f7ee9e5d + tests/mockserver/internal/sdk/models/components/searchwarning.go: + id: 7b7f62c4019a + last_write_checksum: sha1:66f8096972e691ecc07f13500d0dd65ec9a753ee + pristine_git_object: 131f65a7c0efcbe02e0becc771bbb7d188fdbcbe + tests/mockserver/internal/sdk/models/components/sectiontype.go: + id: d0937c1ce7a9 + last_write_checksum: sha1:df93de89435efeb2dc2adb0e18ec994348050181 + pristine_git_object: 395b5e465c6bf212b1e1af9721d86613ac964811 + tests/mockserver/internal/sdk/models/components/security.go: + id: fa6cb32e2c62 + last_write_checksum: sha1:87599ab7affbe8d9cc9650ee626776a499439a2e + pristine_git_object: bc7c195400fe896ff4df76ff641a639f8a4484b6 + tests/mockserver/internal/sdk/models/components/seenfeedbackinfo.go: + id: 8f93bbcb4a73 + last_write_checksum: sha1:0368976a1568c4e9db8888fd5769c906721ac604 + pristine_git_object: c1aa85e9b973cc24f396293eb1c08fb19d7313da + tests/mockserver/internal/sdk/models/components/sensitivecontentoptions.go: + id: c3fae78853dd + last_write_checksum: sha1:3c60d59437ff36fa449f7ad804fe7803af15ca07 + pristine_git_object: dc7c424ede5d8ddf96b358ce40f2be96734e81ee + tests/mockserver/internal/sdk/models/components/sensitiveexpression.go: + id: ae7015f11a98 + last_write_checksum: sha1:b4fbc845bc2db4f1bc0cc4401b990d697491fbf0 + pristine_git_object: a38113a300fc0e2b6d9ea3911c808f8211cb40c6 + tests/mockserver/internal/sdk/models/components/sensitiveinfotype.go: + id: b02d63c8519a + last_write_checksum: sha1:20f1d2089955876f297f6effc3667f6ae84c5108 + pristine_git_object: 207653771e5bb2ae5982853962b6318d8c83229f + tests/mockserver/internal/sdk/models/components/sessioninfo.go: + id: 23183e4b8fb8 + last_write_checksum: sha1:d0a7c3cb679745701743e6ec68c15cf72b3e0a2f + pristine_git_object: ef3481af18364657e6f775deb42f836dd4c53c0b + tests/mockserver/internal/sdk/models/components/share.go: + id: f20ebadb280a + last_write_checksum: sha1:08b6c55410e0d0960f69ee24294c009e4af90d9f + pristine_git_object: 82202845aeee21ff811ee18ca6a0690ec5428b5f + tests/mockserver/internal/sdk/models/components/sharingoptions.go: + id: bcf886b45d18 + last_write_checksum: sha1:4b1d902a86f9d461eae3527d9c7edb967ef13ff2 + pristine_git_object: 3b36812b9e1f8ebf1f391e1e13773cbe842016e9 + tests/mockserver/internal/sdk/models/components/shortcut.go: + id: c081dd6922ba + last_write_checksum: sha1:89fc93286c3a87e26d3c93179ff289d25c4abb5a + pristine_git_object: 63b419dec4a838af0b11cd579a08e4d681c84917 + tests/mockserver/internal/sdk/models/components/shortcuterror.go: + id: 933e10c284f0 + last_write_checksum: sha1:c2c12b0e5d2a4488c59ca8f9ba95fa50f031b8fb + pristine_git_object: 5ecd3e9e85897657077af9f1cba9e5b022bbc0b0 + tests/mockserver/internal/sdk/models/components/shortcutmutableproperties.go: + id: c418cbbe0c0d + last_write_checksum: sha1:b68137186eb03f324e4a7d83bf44f01ef9499712 + pristine_git_object: 00cb907cb5b8c16329c7285520996e45c20dadeb + tests/mockserver/internal/sdk/models/components/shortcutspaginationmetadata.go: + id: e60ddd715c16 + last_write_checksum: sha1:207b41cf581affaa2f6a184691154306765a0f01 + pristine_git_object: 6732831e9a0412cc3812abebbf7f2da148b2b68e + tests/mockserver/internal/sdk/models/components/sidebysideimplementation.go: + id: 45b12ef8a8c7 + last_write_checksum: sha1:955f1346a512097e839380835b7cf482c79b8e8c + pristine_git_object: f1cf399efacff9407efc6732c906142610025442 + tests/mockserver/internal/sdk/models/components/socialnetwork.go: + id: d7411f3f4c0c + last_write_checksum: sha1:7b5460e9689446a60ddd8660162e29ea58606be1 + pristine_git_object: acf04b4a208261d8df9ac31b280c01f8c27db58e + tests/mockserver/internal/sdk/models/components/socialnetworkdefinition.go: + id: 00d844819024 + last_write_checksum: sha1:df28ff5e6d99611a7b8a0edfdf6154325760ca85 + pristine_git_object: 668935e3421de5b9f55c082f5357052463b5afc2 + tests/mockserver/internal/sdk/models/components/sortoptions.go: + id: 3113dec09245 + last_write_checksum: sha1:587b0c63c9aeb4f1669bcd36d1a5a4fe6c8be3eb + pristine_git_object: 0f3949f13eaa0feab6c82f5429622900b2fa993d + tests/mockserver/internal/sdk/models/components/structuredlink.go: + id: 66fbbe32ee19 + last_write_checksum: sha1:c1b1a1a6db51fed14a0c0c604c36515ea16b7747 + pristine_git_object: 00f0362099a66acfb916e5c1ada28bbd8c9a7a60 + tests/mockserver/internal/sdk/models/components/structuredlocation.go: + id: 0e9d225cea1d + last_write_checksum: sha1:952c61d565a519770c1e1bd456dbe06a43527a1d + pristine_git_object: d10688529d742736c70cef3082ac9a4ebaf04f9d + tests/mockserver/internal/sdk/models/components/structuredresult.go: + id: 90ec3be3bc39 + last_write_checksum: sha1:09964d21fd594ac675fcc130aae8e7ea8a59a15c + pristine_git_object: 99a8991a4521f6d18edf718d599c779bb951d75b + tests/mockserver/internal/sdk/models/components/structuredtext.go: + id: 86b16fd56fe4 + last_write_checksum: sha1:355352f1325e5756bc262be00952f3a75b46de11 + pristine_git_object: 3c09f214c712b35a0dd716998e44a185a278a827 + tests/mockserver/internal/sdk/models/components/structuredtextitem.go: + id: 3dca73ff277f + last_write_checksum: sha1:1d31ba0ba1d9a20da78f3f407b667ecdadc08410 + pristine_git_object: 8fea354a041919b8a9edbcea2ad8b3c0b092cc5b + tests/mockserver/internal/sdk/models/components/structuredtextmutableproperties.go: + id: 8fa49e2be615 + last_write_checksum: sha1:7e3d70101d8e7e704b8b47a8fe47c7d15ff75641 + pristine_git_object: ab29bfc25c2eb615a2962531f2ef95760cbb352c + tests/mockserver/internal/sdk/models/components/successresponse.go: + id: b460fd4e1f9f + last_write_checksum: sha1:1a7b439d7e030fc7d44d33feced3358da73977e9 + pristine_git_object: f1aba12eb2698a626fd1ed8b18d0501187873387 + tests/mockserver/internal/sdk/models/components/summarizerequest.go: + id: cc37dad3b100 + last_write_checksum: sha1:a70506060ae64e1ba99958ac03e60a7349ea8b7a + pristine_git_object: 4fb506583734b993aef87205fbfbcc4a9b044456 + tests/mockserver/internal/sdk/models/components/summarizeresponse.go: + id: 41518d1a5883 + last_write_checksum: sha1:645e516e007cc50be2e6e5dd81b301d0a4298363 + pristine_git_object: b196ab2d0cd1cd96e33d85b2412c823d19349ac2 + tests/mockserver/internal/sdk/models/components/summary.go: + id: 53ea3054091b + last_write_checksum: sha1:92ff1330ff0a98019953ca073adf72f796f03a0d + pristine_git_object: 1e715524d5fe06b731b43ec7feb66591acdf8db3 + tests/mockserver/internal/sdk/models/components/team.go: + id: e630ccd84ae7 + last_write_checksum: sha1:4ba7528f4ef142ad874ab012825d2b3318e43b03 + pristine_git_object: 85e653f2eff7bd16aadf66b7e5df7afc3e2c6f94 + tests/mockserver/internal/sdk/models/components/teamemail.go: + id: 18f3f86ed7cf + last_write_checksum: sha1:8b4ee57362b382e2711b18729f92ebcba3315851 + pristine_git_object: cafd347117f694001a728542aec9c0c248617310 + tests/mockserver/internal/sdk/models/components/teaminfodefinition.go: + id: d726f522ce01 + last_write_checksum: sha1:275470eb886295589deee6d90a2309ff6adaf71d + pristine_git_object: 9dea6e19ecfbb558103ad0346fb8277e4af1a891 + tests/mockserver/internal/sdk/models/components/teammember.go: + id: 27c8ff56b2a2 + last_write_checksum: sha1:fc3eb4d5bbf18c83641603838e70b154429f2f51 + pristine_git_object: 121d5bb3f4fdfc8f3ce51533b500479ffe9667d3 + tests/mockserver/internal/sdk/models/components/textrange.go: + id: 4aac78e73924 + last_write_checksum: sha1:59ca0835f734d4bf268d38fb1ab0541c69e01607 + pristine_git_object: ebd99e4a1dd2fae017e6e5d7565884b2b2b1dba2 + tests/mockserver/internal/sdk/models/components/thumbnail.go: + id: 03d459002df2 + last_write_checksum: sha1:aa262ee8c5b91970d59d22e8b142a302320a71b7 + pristine_git_object: 11629380217508ad7879fa02046e3aa6e6a8c6a6 + tests/mockserver/internal/sdk/models/components/timeinterval.go: + id: 6c37b5ab3a56 + last_write_checksum: sha1:81705bb1ecaf99d821e06bab433ae8acb7f0a06f + pristine_git_object: cad1e0d2cc49c5eef7f0106722df9c5e1943873c + tests/mockserver/internal/sdk/models/components/timepoint.go: + id: 68564f8f50b0 + last_write_checksum: sha1:f8729435a86cb935d5af211ecbd5cf1f2ef9e28e + pristine_git_object: 3fc0938df6a4f9bb1488860673a4e01b8efa3371 + tests/mockserver/internal/sdk/models/components/timerange.go: + id: 492d7488222b + last_write_checksum: sha1:128b8dd617902f688dd9dec7a0c09ad9c2572415 + pristine_git_object: 2671083bf18f1a56d96b174d47a1ac6243b87ae5 + tests/mockserver/internal/sdk/models/components/timerangefilter.go: + id: 915351005b05 + last_write_checksum: sha1:8de0e503866460658beed077250e82e99327cea1 + pristine_git_object: df3ce29abaf3b5d9e31f36c3ff5a84c38180f947 + tests/mockserver/internal/sdk/models/components/tool.go: + id: 0c0984074ced + last_write_checksum: sha1:95ee27c43bc6e01b322d32330b2645ea53bb4f08 + pristine_git_object: ed0eadfe146a86176e07d217fac3e032b7a65d12 + tests/mockserver/internal/sdk/models/components/toolinfo.go: + id: e2175889a2bd + last_write_checksum: sha1:244266dd3f84d49224725ef35603df9fc80d14ef + pristine_git_object: dea3298b26e324de06316da296f7a4d899dd475d + tests/mockserver/internal/sdk/models/components/toolmetadata.go: + id: 2777b3aa0636 + last_write_checksum: sha1:4487cdc2b5b1dc1a2fa1a3ca7d46188bfc0e211c + pristine_git_object: 3c803a6d3c1c80f7f1e230a843a8c3f1c1186dfe + tests/mockserver/internal/sdk/models/components/toolparameter.go: + id: d02a0b83b357 + last_write_checksum: sha1:66a7a1e6154a3c42741d575291f358116f017c87 + pristine_git_object: fd0c3c73d6541d05f749b3e9199042f309d9fd33 + tests/mockserver/internal/sdk/models/components/toolscallparameter.go: + id: 4bf0d893d0eb + last_write_checksum: sha1:e405c512fef7a3702536cbecc97023daf43159ec + pristine_git_object: ddfbe5f9c74cff93c64431c35b3368f93e6903c3 + tests/mockserver/internal/sdk/models/components/toolscallrequest.go: + id: a216e2bb473d + last_write_checksum: sha1:8d07bfa85a5065a3b948ce2df571e0e2b7079548 + pristine_git_object: 4678acfcbf69be7863a832961ef4203867e70d3f + tests/mockserver/internal/sdk/models/components/toolscallresponse.go: + id: ce1add8ce3b1 + last_write_checksum: sha1:526fa5ff943d8fe623fbfbfb4e33bbfe9cf5e3ce + pristine_git_object: 03e9af73e5d69f93976218dea9bef90eaef0f02d + tests/mockserver/internal/sdk/models/components/toolsets.go: + id: 75b43b793fdd + last_write_checksum: sha1:d92cd83151d1a51109858e7ebbfae0b95c8f1e37 + pristine_git_object: 755f3654f83595cc9a2cc4db98b5fe4c09936247 + tests/mockserver/internal/sdk/models/components/toolslistresponse.go: + id: a80dcec8c375 + last_write_checksum: sha1:12c38931f0f2810e038e30a743845a97b876d03c + pristine_git_object: 7a6a89805e8b840aa2fae616ef6e49dc3d0e0851 + tests/mockserver/internal/sdk/models/components/ugctype.go: + id: 7b77277c1355 + last_write_checksum: sha1:c7e27d5ff56bd7ff24625189a85d766eca701e7f + pristine_git_object: bc085b15186b2dcd11f9f73d3dcbb7c090e2987d + tests/mockserver/internal/sdk/models/components/unauthorizeddatasourceinstance.go: + id: bc69d4c4bf6d + last_write_checksum: sha1:39fb84396b33bc645fb5e6ebcea36ab88b5db179 + pristine_git_object: 78d5650a464ded19cb8221db6ff1090c04f8f6ca + tests/mockserver/internal/sdk/models/components/unpin.go: + id: 4465740d0bfe + last_write_checksum: sha1:6bd1f6c9f451492810949a589b7cf0e07ede176d + pristine_git_object: c7d3431977763c17c326cd26951712fd92894bad + tests/mockserver/internal/sdk/models/components/updateannouncementrequest.go: + id: 97b13da95b8f + last_write_checksum: sha1:8b10184d480e07a4631098d08ef3c16bfbdfcc33 + pristine_git_object: 9a66e2cbf3742cbc4a68ed308f8671e9090c10e4 + tests/mockserver/internal/sdk/models/components/updatedatasourceconfigurationrequest.go: + id: 6f0c20164b49 + last_write_checksum: sha1:5710dfb763b96275a55fe0e6b16269cded3f9b9d + pristine_git_object: 07beb967689878b37dbefda0badd8f3b8b895df8 + tests/mockserver/internal/sdk/models/components/updatedlpconfigrequest.go: + id: 65adad0b9a06 + last_write_checksum: sha1:0612a19ee35705f71346a5d3b6ec4eaec4d9f029 + pristine_git_object: 676fbf0cab6c60d25b94dd60a79174735c289588 + tests/mockserver/internal/sdk/models/components/updatedlpconfigresponse.go: + id: 6d85daa19bfa + last_write_checksum: sha1:bfa625695134084b049ed67d2fe1257bef5420ed + pristine_git_object: 7f2dceec5bcca381a0a517d82baedcc7047a5ee5 + tests/mockserver/internal/sdk/models/components/updatedlpreportrequest.go: + id: 8bceeb9d9267 + last_write_checksum: sha1:37d54bad15f360ff3ca8a150a0ea3616420cf497 + pristine_git_object: 7b8e524e010cf879b3956a712ed21b040a8f2aca + tests/mockserver/internal/sdk/models/components/updatedlpreportresponse.go: + id: a1efb14c3714 + last_write_checksum: sha1:f2c27beb7eac6cf9549c29fc16d9f121c06345ff + pristine_git_object: beff94eb9a15814fcc518363091777d529427135 + tests/mockserver/internal/sdk/models/components/updatedocumentvisibilityoverridesrequest.go: + id: d28d6490aa5b + last_write_checksum: sha1:fa29de482d2b46d46ade8134932799cd678b20ec + pristine_git_object: e26ea504690cbf70b004aeca7e6951733a9aa963 + tests/mockserver/internal/sdk/models/components/updatedocumentvisibilityoverridesresponse.go: + id: 4519e62fb216 + last_write_checksum: sha1:45d635d096c8a8bf259172dc213fd7002662d1f9 + pristine_git_object: 638a1b975044806e077843015cc9d67e3bdaf430 + tests/mockserver/internal/sdk/models/components/updatepermissionsrequest.go: + id: 181b5737964e + last_write_checksum: sha1:43f31527bba5c28cdcd92182f67d8cd9347d33a0 + pristine_git_object: a2455c34bcee77a41ce781f5d91e2da7a3978341 + tests/mockserver/internal/sdk/models/components/updateshortcutrequest.go: + id: df13c5f6fa66 + last_write_checksum: sha1:042494404547b469509b7c2b1104bffd7d8da203 + pristine_git_object: e9e8dd98e2d6ce8fe61eb0bb3848def38d3c57c8 + tests/mockserver/internal/sdk/models/components/updateshortcutresponse.go: + id: a8016234d954 + last_write_checksum: sha1:c7ad561984d98ac8fe21a121a5b1131c0d2d977c + pristine_git_object: f4ab9bee73eaaf850f2962e7ac825315ddb396df + tests/mockserver/internal/sdk/models/components/updatetype.go: + id: 4b5f8cc7ba7c + last_write_checksum: sha1:e1ab594be688dd3fedb265c39338efd490f59f6f + pristine_git_object: 1d45f58700ba9b2af76c916b3a93ca9eeaaa1898 + tests/mockserver/internal/sdk/models/components/uploadchatfilesrequest.go: + id: 548e133a2571 + last_write_checksum: sha1:00e0f9e75e7158fcbab4881b4ce1151f0d889919 + pristine_git_object: 0a5cc028ac1f5c224ffca041d46ca6b9dea2a794 + tests/mockserver/internal/sdk/models/components/uploadchatfilesresponse.go: + id: 73997cc40782 + last_write_checksum: sha1:7879f60132d94f5788e6a855b4487ef69f491e86 + pristine_git_object: a10030cf565b9674366ea0b5a6287e7fa91c3cc9 + tests/mockserver/internal/sdk/models/components/uploadshortcutsrequest.go: + id: 4be5a6d6806d + last_write_checksum: sha1:e088e707939512ac98f0969de4c57e340dc45777 + pristine_git_object: 4549bec3eb7476246900d248d9c969d91fd73192 + tests/mockserver/internal/sdk/models/components/uploadstatusenum.go: + id: 2387e771c725 + last_write_checksum: sha1:756732c9fa8a7ecb858b1e904cf01e263c1a4bc9 + pristine_git_object: 90546c9d992bbf87e28ee8bd225719ca2c901377 + tests/mockserver/internal/sdk/models/components/user.go: + id: cd9bf653c7cd + last_write_checksum: sha1:9dc99e4dcfd7749102ea771b4d39517f19f40bb7 + pristine_git_object: c9309929dc319b58d3e06cd3ffbc7282be42b884 + tests/mockserver/internal/sdk/models/components/useractivity.go: + id: 63a73683766a + last_write_checksum: sha1:71a0cd2120cf0f1d014d16003e35a71ace54b9c5 + pristine_git_object: 686d11762b9fdb7644f72444352782af14c8f5e0 + tests/mockserver/internal/sdk/models/components/useractivityinsight.go: + id: dd9890941594 + last_write_checksum: sha1:e59f8c217005ea01e8a8d4271f5ab6502185cf74 + pristine_git_object: ef7cc8792f183d08ccf08b8bb00b8eaf87c40398 + tests/mockserver/internal/sdk/models/components/usergeneratedcontentid.go: + id: ae284ccc354d + last_write_checksum: sha1:2f2c56c39abc65c6ff52326baeca86444f64cae2 + pristine_git_object: 9fc1da086cd00e2db7ebc847042a77f03e6a5fa3 + tests/mockserver/internal/sdk/models/components/userreferencedefinition.go: + id: c56996250efd + last_write_checksum: sha1:149db1930e323d413f07a581e381cc61e1dd1ff2 + pristine_git_object: 29153dadd636db1dbe5e9945e41778529a9c7749 + tests/mockserver/internal/sdk/models/components/userrole.go: + id: 849f6755a65e + last_write_checksum: sha1:c06437b641b29e943ed6fa230589682890b7c6f8 + pristine_git_object: 7697e0b0dcf4c3acdb15e2d46b68c1df28defe8f + tests/mockserver/internal/sdk/models/components/userrolespecification.go: + id: 15d678a439c9 + last_write_checksum: sha1:95b432bee3a41397fba1148743099c9c6c1806b7 + pristine_git_object: 6e478462febc7db9c0b0557b766d715e50ed1705 + tests/mockserver/internal/sdk/models/components/userstatusresponse.go: + id: ac403ed26c68 + last_write_checksum: sha1:30fb2152829214a851333d127946bcfe9794336d + pristine_git_object: 7457001c43802466d88418c59419506b98ab67b7 + tests/mockserver/internal/sdk/models/components/userviewinfo.go: + id: 7168edb7cb3e + last_write_checksum: sha1:6efd1ccd0596cad2a52c836713d2078788ee7c97 + pristine_git_object: e256289a0d1f95c26a5a1c635bcc64a16da3b3b7 + tests/mockserver/internal/sdk/models/components/verification.go: + id: 2ba8bca07453 + last_write_checksum: sha1:6454d7a40baacc9b0695e91e7b019e9fa9fca832 + pristine_git_object: e5d1b407296643dbd45cb75c25a8b382d03f67c1 + tests/mockserver/internal/sdk/models/components/verificationfeed.go: + id: f06a54525d14 + last_write_checksum: sha1:75a4b4b8d5ac529d57e903f07319f058e9a90104 + pristine_git_object: 74a08b655fe20f22d9bacd8cfdd152f5a45cc85d + tests/mockserver/internal/sdk/models/components/verificationmetadata.go: + id: a8d01eb59acd + last_write_checksum: sha1:367dcd729051cf898c32b6602c4ce0c1b5ee9336 + pristine_git_object: 1d77b47c327b217ab75f54d0067607692a138bbd + tests/mockserver/internal/sdk/models/components/verifyrequest.go: + id: 0db56cb0f0c8 + last_write_checksum: sha1:b21b8e5f5f48355b6b3afd4be9229b08e78123d9 + pristine_git_object: 18059e0b87042c6a2796c4986159826588a3c7ce + tests/mockserver/internal/sdk/models/components/viewerinfo.go: + id: 35ffe4bbefe0 + last_write_checksum: sha1:bf5d4b48cfa2e68cc2b2b7c47d1f0668d18e1b56 + pristine_git_object: 5abdc47f9b8f109ea08ac7b1dc963379d880bef2 + tests/mockserver/internal/sdk/models/components/workflow.go: + id: 229cbc0e7f6f + last_write_checksum: sha1:9e63f3b61d31a98f5357f4be62804379f37cfec5 + pristine_git_object: dfe489b8d49bfad25fcd11bed21af8c75b34ea6f + tests/mockserver/internal/sdk/models/components/workflowfeedbackinfo.go: + id: 3350baa380bd + last_write_checksum: sha1:6723c2b80df391bab5e91b8ac23f9ca4938665f7 + pristine_git_object: e13579aca5b29a1fb515bc30d0f9eb886326df98 + tests/mockserver/internal/sdk/models/components/workflowresult.go: + id: ba8eda81dcec + last_write_checksum: sha1:0579e0100303b04427d820fb8a671cbac520950b + pristine_git_object: 6352973581225f68e2fbdd12a78b95857fa44edb + tests/mockserver/internal/sdk/models/components/writeactionparameter.go: + id: d04d4b2bf639 + last_write_checksum: sha1:b53c3217bbb92c123681b705dcddde49a8f79bb7 + pristine_git_object: de5e3bb38dd815bb8c363625ade4ae2ada0fa21b + tests/mockserver/internal/sdk/models/components/writepermission.go: + id: 5380d7650d5b + last_write_checksum: sha1:41ba3a8f6d2bd29dcb8e5b5005a30363e55673f7 + pristine_git_object: 66f1973b2538f8adef448c3d4a9f2eceef136c8a + tests/mockserver/internal/sdk/models/operations/activity.go: + id: bbf0076e613f + last_write_checksum: sha1:5957ce406e3a70449e7168b90a96ab29661834ed + pristine_git_object: fbeadfb6a9cce0b561c98531e8f40943cb519d53 + tests/mockserver/internal/sdk/models/operations/addcollectionitems.go: + id: 8810ea12a4e8 + last_write_checksum: sha1:6b24917028ee62ef0a79e353e689d11d1d5fd7f0 + pristine_git_object: 5402c0c301c66145e40753e919025f0ce1925816 + tests/mockserver/internal/sdk/models/operations/addverificationreminder.go: + id: 50456d5e8281 + last_write_checksum: sha1:cd6a0cbf098c64d2873723c6db34d4d104aafee4 + pristine_git_object: 5ac1bc76a1c2b2e08894a447b12c357fdae7215d + tests/mockserver/internal/sdk/models/operations/adminsearch.go: + id: 2798a847b072 + last_write_checksum: sha1:8349967c39c2200f8b798379f9d601234dd0ea08 + pristine_git_object: d3bcae611c12160cc42a6eaca51e379415c81741 + tests/mockserver/internal/sdk/models/operations/authorizeactionpack.go: + id: a0a71987d741 + last_write_checksum: sha1:c78c40c14e10717246e43461e2168240ccbb6a52 + pristine_git_object: 9c7fd68f3990aff22648a954f8883593d19f446e + tests/mockserver/internal/sdk/models/operations/autocomplete.go: + id: 15fbad3e639d + last_write_checksum: sha1:242f4ac0044ef328043fc3a5d0effdeccb7f291f + pristine_git_object: e056f2449485d454ff68beac9196be500b9e9f68 + tests/mockserver/internal/sdk/models/operations/chat.go: + id: 3b631354e272 + last_write_checksum: sha1:f2f55f4fecbef27cf1e00a589d3cea6d95982523 + pristine_git_object: 571a9b9d89dd7bcef39e99d713c854abffc24657 + tests/mockserver/internal/sdk/models/operations/chatstream.go: + id: 2d65fe2a6633 + last_write_checksum: sha1:b299a7da20b4ecf28e85b669de479778ed917ef1 + pristine_git_object: b97e7a447c60c32fab90accb4e2ef611a7df82a9 + tests/mockserver/internal/sdk/models/operations/checkdatasourceauth.go: + id: 89e5236173f5 + last_write_checksum: sha1:4ea8a844fedb81791dbff6fd5b45031943c118ed + pristine_git_object: 55046755b604159689bf327aa7174a0e080a970e + tests/mockserver/internal/sdk/models/operations/createandstreamrun.go: + id: e9a974b86a39 + last_write_checksum: sha1:ff0bc51a66cdb65f5d36415c82e92377fd0d2cff + pristine_git_object: 0dbe446c160fa31b5b7339b2d937f9928b05a596 + tests/mockserver/internal/sdk/models/operations/createandwaitrun.go: + id: 576c4f2f5bf8 + last_write_checksum: sha1:8d070245a42135fc34df714fce8d7d6df72edbd5 + pristine_git_object: 7286ef6415ee635de6071b5385a55431b5e92b55 + tests/mockserver/internal/sdk/models/operations/createannouncement.go: + id: 62efdfaba4d6 + last_write_checksum: sha1:a035aac91237a6d6285af28fb8d68545589655b9 + pristine_git_object: 420e51a0e38be6d394e8a75add07c6ceac26ad2c + tests/mockserver/internal/sdk/models/operations/createanswer.go: + id: 787e92e85d6b + last_write_checksum: sha1:7bac56604ac9dbbdd2c759c81acf67e873e4bd56 + pristine_git_object: 6ae4843d4f785577422409c79b499fc99e6fe071 + tests/mockserver/internal/sdk/models/operations/createauthtoken.go: + id: 689a60baeefe + last_write_checksum: sha1:38490a95b3433ee0a6ef325641981976e847c1af + pristine_git_object: be32a0f3caa3ccd70544064a3e45e561e3b6af42 + tests/mockserver/internal/sdk/models/operations/createcollection.go: + id: 325dfac7b050 + last_write_checksum: sha1:e0056a37231832f11558b9fe7d3b658bcfb900b9 + pristine_git_object: 3b62bee2d266f74bb6a8382fc647fba6582ac613 + tests/mockserver/internal/sdk/models/operations/createfindingsexport.go: + id: 3cf504b92665 + last_write_checksum: sha1:825e1e9c17e00b8f29056902188e711dbe285d48 + pristine_git_object: cffb09fcd4a1703e3ebee038c886c05f79932b3f + tests/mockserver/internal/sdk/models/operations/createpolicy.go: + id: a233bde7bbab + last_write_checksum: sha1:e3cfcfd8f254f6085a744e3585e29ad11fc4a0b3 + pristine_git_object: d0c5b8e1ca8c15aa0786689cc06a89c9f6b02e14 + tests/mockserver/internal/sdk/models/operations/createreport.go: + id: 2eb5ee7f6bd3 + last_write_checksum: sha1:b9c82a7632c995986f191d03c466420a345d0d42 + pristine_git_object: 7a9d07abe8598203d256e73a46a8b3d9b9b072a1 + tests/mockserver/internal/sdk/models/operations/createshortcut.go: + id: 2fe1a5065c46 + last_write_checksum: sha1:98ff02e8657bc6dcc49ef54c81fd322094b60d29 + pristine_git_object: 4dead6af49c03b4b02deeeb12e5a512ac6729ef5 + tests/mockserver/internal/sdk/models/operations/deleteallchats.go: + id: 20c90e0ef97a + last_write_checksum: sha1:a3e27dba3ff434ac40651d103f2585b541a3a061 + pristine_git_object: 9a61eac013fa7715cf6ef9b4198c9cddecf9ba97 + tests/mockserver/internal/sdk/models/operations/deleteannouncement.go: + id: 86b9b267fe32 + last_write_checksum: sha1:2a26722569463faa2b52c1642f1f5915ac0dae88 + pristine_git_object: 6df70f30d193cafb0d03097cfee76b461e4981b0 + tests/mockserver/internal/sdk/models/operations/deleteanswer.go: + id: 222fcb1c8af5 + last_write_checksum: sha1:345a8fd35229943057730308e473f44f134d1cd3 + pristine_git_object: c30ae2bbeaae180e2bbb0f8919f6d2bfe544743e + tests/mockserver/internal/sdk/models/operations/deletechatfiles.go: + id: 7df4e9fe9c42 + last_write_checksum: sha1:506173bfe099edeb1c4f0954762015bafca2dc18 + pristine_git_object: 132474f44a9c25bd795f2780c797b091f2144a74 + tests/mockserver/internal/sdk/models/operations/deletechats.go: + id: c746a9d73e64 + last_write_checksum: sha1:9c694319cc3e3b220d9fbabbac8060fe4377993f + pristine_git_object: 558b4262476fcdf8e8305b88c9b233ea85452598 + tests/mockserver/internal/sdk/models/operations/deletecollection.go: + id: ca1fd99cdc93 + last_write_checksum: sha1:eb724e5b7b71ff8b6b79e99b3a8e9bb88c12f1d5 + pristine_git_object: 29f0e83d6f823ab30caa8710606763278c60ceea + tests/mockserver/internal/sdk/models/operations/deletecollectionitem.go: + id: 15faa52e4b86 + last_write_checksum: sha1:ce58b49a61bb08f2a383f020137dfbeb682c7186 + pristine_git_object: ebc25f934cf49b5bf4895439374d5f432ba8e66e + tests/mockserver/internal/sdk/models/operations/deletefindingsexport.go: + id: cb1e282bcdb8 + last_write_checksum: sha1:75f0c5cb8e9465c8e248692de923523cdcba2761 + pristine_git_object: c7c8a18c716c39c6ff005fc6d7eccc7174195365 + tests/mockserver/internal/sdk/models/operations/deleterestapiindexcustommetadataschemagroupname.go: + id: 73f4210e3b29 + last_write_checksum: sha1:0fdd271c32c4163e095daf0de640cdafb007954e + pristine_git_object: 0d1f72024250b51d1cc6027173980db30155682e + tests/mockserver/internal/sdk/models/operations/deleterestapiindexdocumentdocidcustommetadatagroupname.go: + id: 9040d3cca806 + last_write_checksum: sha1:23a94ff1cfd1c43e26cda5fb8bd2158e050d210d + pristine_git_object: beb27fc30ba97f7b376098759bc3987f413c144e + tests/mockserver/internal/sdk/models/operations/deleteshortcut.go: + id: a4aa680e7b60 + last_write_checksum: sha1:843c8276cc4bf518266362585ea810b2e56c015e + pristine_git_object: 887e2fafb13934283d823efddd22ca93b13dee08 + tests/mockserver/internal/sdk/models/operations/downloadfindingsexport.go: + id: 754be8daf00a + last_write_checksum: sha1:32282301f13c2e740139de75b2efb2c0413ca8e9 + pristine_git_object: 2bfabd236f2307c857a0575e0cbd30d85955339e + tests/mockserver/internal/sdk/models/operations/downloadpolicycsv.go: + id: a219d4960a65 + last_write_checksum: sha1:f3ba004b4b770392d747b21d15fd09be91c096f0 + pristine_git_object: f11d56e26eea9f06ce6f2a2408ec5f2ec357f002 + tests/mockserver/internal/sdk/models/operations/downloadreportcsv.go: + id: 7fe39b85f03f + last_write_checksum: sha1:5be47a665f15ebd67c3ccb0be070936ac3f0a04b + pristine_git_object: 40814b93a732463ccd49f8d33f21b1e8511eadef + tests/mockserver/internal/sdk/models/operations/editagent.go: + id: 51fe73b9fe72 + last_write_checksum: sha1:399ba5ffdca374600a2e89d3613158fb8e050a48 + pristine_git_object: e65fa40646a4c11d61f92bd408c7298f589f5794 + tests/mockserver/internal/sdk/models/operations/editanswer.go: + id: 577bf726d76e + last_write_checksum: sha1:6319063f92d2532ab663554171253c25f7b0f865 + pristine_git_object: a012cd57bee710b93b9381c99f4fbb0ed322eaa2 + tests/mockserver/internal/sdk/models/operations/editcollection.go: + id: 32edb89189ba + last_write_checksum: sha1:f728d0af16fe57defc5a1e229a125e7fcab675b0 + pristine_git_object: 1009daa12283b083fe4cb1ad9c9de20ebf93fa7d + tests/mockserver/internal/sdk/models/operations/editcollectionitem.go: + id: 0843dc263b7e + last_write_checksum: sha1:d31194f3dd387014f598e8fa830af8809cf90e87 + pristine_git_object: 520900db55cbd000400d3814d255bccd173cc62a + tests/mockserver/internal/sdk/models/operations/editpin.go: + id: f5fbd074d724 + last_write_checksum: sha1:68f0bedad3f1292e88176f78c4a3feaaa72636a5 + pristine_git_object: 9105b3366f4444a3cc1e6a95033157ab2a07e4bf + tests/mockserver/internal/sdk/models/operations/feed.go: + id: 855294cff2a1 + last_write_checksum: sha1:5cc00b3895c2391dab6e7706a97903ed226c8f10 + pristine_git_object: 8f7a3aa040ddcd71393b9ed787d3afad195276c6 + tests/mockserver/internal/sdk/models/operations/feedback.go: + id: 47bfac25ebd7 + last_write_checksum: sha1:7d5a51aed8eacae15096b90250b2a35f647b45ac + pristine_git_object: 3f4ec58df553f094f9d21f67131761d268ae35c3 + tests/mockserver/internal/sdk/models/operations/getactionpackauthstatus.go: + id: f39b4bf02b51 + last_write_checksum: sha1:59f683b0141feca6a0db93cdbc99d977c0d0b481 + pristine_git_object: 9b7a1160364b1a13328a3e8e569f021bdbdf5134 + tests/mockserver/internal/sdk/models/operations/getagent.go: + id: 28bd59af7ef5 + last_write_checksum: sha1:97fa8b77eab495bb56cda7e91667fd77d8567faa + pristine_git_object: 6e79ed8b752b271f5134daad59d3c97292de8b4c + tests/mockserver/internal/sdk/models/operations/getagentschemas.go: + id: 93de0ffc7e0e + last_write_checksum: sha1:2c2ca4842ec6e43e2b0fe486c273600ea369c3e1 + pristine_git_object: 8b4bb0ad9560e03c49438fd0c95d7aed7bfb8d8c + tests/mockserver/internal/sdk/models/operations/getanswer.go: + id: 8c9e385fc676 + last_write_checksum: sha1:464649f75bf44047247059576b829e2fe409815d + pristine_git_object: 2f3d1ba57b8c1616b47adac8cbf51453d240ba47 + tests/mockserver/internal/sdk/models/operations/getchat.go: + id: d328205f0632 + last_write_checksum: sha1:830d4df2089c82c236e71784eb380eb58c1e2ec0 + pristine_git_object: 50686f3424c0b9b7dda573325cf0d4ceb231d6f7 + tests/mockserver/internal/sdk/models/operations/getchatapplication.go: + id: 09304151a94f + last_write_checksum: sha1:8f6f58e46b6e1ac9a5172dfdc09f28446335dd25 + pristine_git_object: 43b8a32f1b22bf89a3aa5074cb5c63fff6da31a6 + tests/mockserver/internal/sdk/models/operations/getchatfile.go: + id: a5bdc5d5f961 + last_write_checksum: sha1:1a218e7e0b4de008c5bb4947aa1ff1b6019b6589 + pristine_git_object: b2bd8aaccf04028dd6cd25c148f28fb5ec7dae24 + tests/mockserver/internal/sdk/models/operations/getchatfiles.go: + id: 53e6e6665403 + last_write_checksum: sha1:b9331fcb429d8bb22487234f7fa3627ee91b21f9 + pristine_git_object: 5ecbbe8d75c085d7199935e157ec9c1c4e7b5db0 + tests/mockserver/internal/sdk/models/operations/getcollection.go: + id: d301a6d10b96 + last_write_checksum: sha1:758de3276a51cb9ef5e2bc09d8e689a95ff4fc53 + pristine_git_object: 6b70b3c9c515c661e4de5444cc290aed950e95df + tests/mockserver/internal/sdk/models/operations/getdatasourcecredentialstatus.go: + id: 2d6cc31a82ca + last_write_checksum: sha1:2943041f083244fbccda983df0a06ee0d04031eb + pristine_git_object: bc0d1e27cda23a31ab6b3daa906b61aa31a4d1fb + tests/mockserver/internal/sdk/models/operations/getdatasourceinstanceconfiguration.go: + id: 44fbe990162d + last_write_checksum: sha1:1570d25442383d4a4d95f8e55ffc0f6c426f683e + pristine_git_object: 515b849ff469c67b595d20155f31dbdde1518f3b + tests/mockserver/internal/sdk/models/operations/getdocpermissions.go: + id: b101ee7f401c + last_write_checksum: sha1:dfd7bfff0ab9672ecfed72ca75845eeb6e1572b3 + pristine_git_object: e615fcc1b7600b1202ce6bf34c7f14e2fcdca2d9 + tests/mockserver/internal/sdk/models/operations/getdocuments.go: + id: 62cefe31da09 + last_write_checksum: sha1:d4f23739c982a434827c5e540cb10b8e4ad942a5 + pristine_git_object: 87367f5e414ed790369acda6f9dc97d4c8371fd3 + tests/mockserver/internal/sdk/models/operations/getdocumentsbyfacets.go: + id: a6bee4f91e05 + last_write_checksum: sha1:d4bf58f85d349c021ec670d2a7fc308e13c64a11 + pristine_git_object: 4c3deeb2950ad6025ef0f693d23c53be7a602487 + tests/mockserver/internal/sdk/models/operations/getdocvisibility.go: + id: b3dedaa9e1b8 + last_write_checksum: sha1:5402b1db287c42416c4f4aea7768be3d562f42c9 + pristine_git_object: 8fbe257571bb02b888a51cdef7ee27aab0481e82 + tests/mockserver/internal/sdk/models/operations/getpersonphoto.go: + id: 0a1a1a0fcabc + last_write_checksum: sha1:5d1aac3d1f32842d4855f0278d7602ac5723c3dd + pristine_git_object: 4d865674f0a8add42cb30ff13ec1b7c222c61c5d + tests/mockserver/internal/sdk/models/operations/getpin.go: + id: cabced4cbab9 + last_write_checksum: sha1:7bf799aefdcb8165fe3fe2d5a756a0fa7b2251dc + pristine_git_object: 0292ece88f50fdae6465f418bcf7a028e1048b1d + tests/mockserver/internal/sdk/models/operations/getpolicy.go: + id: 70a443c4bd2b + last_write_checksum: sha1:8d4c18ff0db3e28e0de5c1d04c0eddb5f02692e7 + pristine_git_object: 1cac9e52c42d40cf26ce5a7f940f16267f3d6719 + tests/mockserver/internal/sdk/models/operations/getreportstatus.go: + id: 348ac820aa32 + last_write_checksum: sha1:cbef3e3a77849d9e7865b0e104a51f36b213e211 + pristine_git_object: d83ce7267a1eb0ce6a506c9734b5c51ec8a65b79 + tests/mockserver/internal/sdk/models/operations/getrestapiindexcustommetadataschemagroupname.go: + id: d0483a26369d + last_write_checksum: sha1:b355db6de6aeb8df4fe66cbd88a1680d6e57fcfb + pristine_git_object: e38d331a0388b578682dcbb358d5d5ba79f16012 + tests/mockserver/internal/sdk/models/operations/getrestapiv1toolslist.go: + id: 3b09272b9a97 + last_write_checksum: sha1:4b333486980e930369ed4c804a7a82da12af3985 + pristine_git_object: 4d9d36df3c68953dee10bc12f6c53974a09b0a45 + tests/mockserver/internal/sdk/models/operations/getshortcut.go: + id: a3ff8d97b66f + last_write_checksum: sha1:9d3a3758b295b8ee5b1bcc3f433ab0fe9a663644 + pristine_git_object: feebc4377fd3e995e6e40a153536a25e5995332d + tests/mockserver/internal/sdk/models/operations/insights.go: + id: 9bf374c79662 + last_write_checksum: sha1:3091cfd7f0f9ad34caa7ba644bd79bfcbf009f6b + pristine_git_object: e644932e7ebc12607ec1e481d69776de25b4514d + tests/mockserver/internal/sdk/models/operations/listanswers.go: + id: a16ad30fca0d + last_write_checksum: sha1:4177467d63a522673e6fc55099bca7eb4485c888 + pristine_git_object: f001b00913f630156bc5fb4fae5f5de44d94dfbc + tests/mockserver/internal/sdk/models/operations/listchats.go: + id: b65185dc9532 + last_write_checksum: sha1:2c15c1ab202e82f06527529f4aed2ae981bcc18e + pristine_git_object: 404637d261bde5c37f51b66ab5a27589a959ed80 + tests/mockserver/internal/sdk/models/operations/listcollections.go: + id: 46aff684beca + last_write_checksum: sha1:d260f925936fb9de661a06ec411a5d875d59b97f + pristine_git_object: 423a2c497ec3f666f0c09629e514ac558321413e + tests/mockserver/internal/sdk/models/operations/listentities.go: + id: 7c267e82d329 + last_write_checksum: sha1:466d941106775a6674cca3ae6f07f0f1f41a9a77 + pristine_git_object: ee93a302225363d2bad4520914693ec85e5512c9 + tests/mockserver/internal/sdk/models/operations/listfindingsexports.go: + id: 9a66d38027b8 + last_write_checksum: sha1:bc380b07b5659cc6bb63d4d1c56da32ded5d5cfb + pristine_git_object: 3ac3652786270b36634fdb089b8964d190932dc4 + tests/mockserver/internal/sdk/models/operations/listpins.go: + id: afe8322b4bf5 + last_write_checksum: sha1:0f78c07c1ad4bce0694e9a460d054472a45d33f2 + pristine_git_object: ea87433ef383d4858c109e148ee406e1245c1dfa + tests/mockserver/internal/sdk/models/operations/listpolicies.go: + id: d5e1463752bb + last_write_checksum: sha1:873e036f6e3166351de3868799fda4c7e4e6f23b + pristine_git_object: 61d27e4fbbd341310e249fff22dc8ffe564d6791 + tests/mockserver/internal/sdk/models/operations/listshortcuts.go: + id: 9bcb31dc3b12 + last_write_checksum: sha1:b82eb9565758c5f1f4664c132869a41ff3b5c214 + pristine_git_object: 216616d5863e8f1cab292118ba7fc629618cc8b4 + tests/mockserver/internal/sdk/models/operations/listverifications.go: + id: cf364ff1d7a9 + last_write_checksum: sha1:4b7f74c8948528b2687a834a7ade6fdc629db31c + pristine_git_object: 9ca1324dd71e602d5d17839c5a7c851ffb660076 + tests/mockserver/internal/sdk/models/operations/messages.go: + id: 3a119d52ac1f + last_write_checksum: sha1:6f6eeb2807ea13c66d3600caf246e3ae6d2c1e99 + pristine_git_object: f978753b6e6ace4d1b8f194e81c5cdb62e4d5b25 + tests/mockserver/internal/sdk/models/operations/people.go: + id: 873c595bed7e + last_write_checksum: sha1:5c9b08af447b7e58258a9c20fdd02ccadaa54895 + pristine_git_object: bfd1b518e7f1abe38915cd870c70d869cfb38929 + tests/mockserver/internal/sdk/models/operations/pin.go: + id: b553eb9bdb35 + last_write_checksum: sha1:5248f738207e7e99637a538c31c57d93394a588c + pristine_git_object: d6f74b3f76e41314e5e33934c50f5bd0bda958de + tests/mockserver/internal/sdk/models/operations/postapiindexv1adddatasource.go: + id: 85e7185113c5 + last_write_checksum: sha1:2f82dc427027cdb45f8fcf8fa6454e28599233aa + pristine_git_object: ec4316c15cf80ce3eb067e5827af11fe4a520d25 + tests/mockserver/internal/sdk/models/operations/postapiindexv1betausers.go: + id: 04ccb45a6331 + last_write_checksum: sha1:a7948ad81eb4bf57409c43a788a114e1b0bf4a95 + pristine_git_object: eaab9c654f19c0709d930c2b988098c9d6c16ec6 + tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexdocuments.go: + id: a3e203754131 + last_write_checksum: sha1:b1c1d3a29a4b6fe050b1814373def790474b91e0 + pristine_git_object: 91856daa88bd132c6f43345745d73eb06b296f5d + tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexemployees.go: + id: d26cf727047e + last_write_checksum: sha1:d9392ff1cd5377c7b81b8441e2b3b52bf57d0d21 + pristine_git_object: 9db6475f01f3733b4b7908d85890dbd992927d11 + tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexgroups.go: + id: db95d0bdaf9b + last_write_checksum: sha1:b4cda132c0ef19b9d9894d45b635c72aa202d3e1 + pristine_git_object: 61a821cd645c3111ed82ccaf4239b6403406751e + tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexmemberships.go: + id: 7b3dd3260ea6 + last_write_checksum: sha1:de7f0116950be7357bef2b0cf54e2f6a338f9fed + pristine_git_object: e2f87c0dfde4d4895d089717df04b2e787077793 + tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexshortcuts.go: + id: 842d87215981 + last_write_checksum: sha1:5f4a29e02699c47a9f50fdd38a8f68fcd6e90e7e + pristine_git_object: 6348bbd6f1227de1d9c7e696ed0b29db8fda10b1 + tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexteams.go: + id: 0d098a2aaf9d + last_write_checksum: sha1:9dd2656fc4e99259359d28c314fce435bdf4dac5 + pristine_git_object: a6a54ca349370e987fee1b4ea385669412441f84 + tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexusers.go: + id: b5e3669d405b + last_write_checksum: sha1:1fb6af351766e122750be52afa2299c75b887e80 + pristine_git_object: eca83011c7b7f445306afc0a198c6cc037f8d8bf + tests/mockserver/internal/sdk/models/operations/postapiindexv1checkdocumentaccess.go: + id: beaff772bb5d + last_write_checksum: sha1:f00c6615010a5d00bbab9188dbdfea578bdedac5 + pristine_git_object: daa947b5d2e7e9df896bf4feff7b85ad81df7641 + tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcedocument.go: + id: 9386c4d7ec77 + last_write_checksum: sha1:3e6d9847f34b084afaa15e0358ca2f0fbd6f761a + pristine_git_object: 0030470cdbb8446c45318fb63d5ff131f0af5432 + tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcedocumentevents.go: + id: 6a566fb46abd + last_write_checksum: sha1:f989e66a6ee1143f9e068974ef6383c78e5fd01a + pristine_git_object: 33447581a47d1d267c454971e0b21cbc1acdb8f9 + tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcedocuments.go: + id: 19cf1c71b920 + last_write_checksum: sha1:32dcdcf2c32961719a7ebeba45c06291c31c5d3b + pristine_git_object: db365a703f2fe4fb22f56e775bec772f909cf510 + tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcestatus.go: + id: e6046df82ffe + last_write_checksum: sha1:6dda731df684acf5abb0531564e1d48e9e91f201 + pristine_git_object: e9913883805eebb8d5f9de919e011ffb3b26b456 + tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourceuser.go: + id: f1fb36eb58d1 + last_write_checksum: sha1:be15f8a3a14f6aefb0328d11f56f78e38f16bee9 + pristine_git_object: 4d642b8f0f09371a1a7c2393d95112feb0610659 + tests/mockserver/internal/sdk/models/operations/postapiindexv1deletedocument.go: + id: a94078f9ad88 + last_write_checksum: sha1:133d606d69c460aedcf6cc2c748b9889ef5b8d8d + pristine_git_object: cb9dcbeb0638c790fc4ac8171d673c51c65ce698 + tests/mockserver/internal/sdk/models/operations/postapiindexv1deleteemployee.go: + id: 57a55472cfe4 + last_write_checksum: sha1:76d2f815e9ed1cc1ea5622aabedbd37928ce78e2 + pristine_git_object: c2ff187ffd33e7f645cd8536f400b0a7122ed9a2 + tests/mockserver/internal/sdk/models/operations/postapiindexv1deletegroup.go: + id: b84a9782069a + last_write_checksum: sha1:4ea8e8c9d31e6ff8469f51a1b857b206dc9dbe05 + pristine_git_object: 51bf558891f3e003111cb17fe5ba5c4ef7e5e3c3 + tests/mockserver/internal/sdk/models/operations/postapiindexv1deletemembership.go: + id: 5f3d67a00395 + last_write_checksum: sha1:d4633a3027f1ae7f110a0a5976b513ae7157f5c7 + pristine_git_object: 0c2cf3c60dac30b6332484183bdcf2b8c731ba3a + tests/mockserver/internal/sdk/models/operations/postapiindexv1deleteteam.go: + id: 646d84637b89 + last_write_checksum: sha1:a92d30b0348623fbe6d0bcdf49c1fb3d1ce6b0e0 + pristine_git_object: 3e7591f4fb46945fa2b6ac537707d1b7a9d90fce + tests/mockserver/internal/sdk/models/operations/postapiindexv1deleteuser.go: + id: 3ac1da6974b7 + last_write_checksum: sha1:5fedaa14f75e19ec9d19ca4a3e99a4352bb47a2d + pristine_git_object: f283635984ba5b0f2c785bbca361e1619c9304b9 + tests/mockserver/internal/sdk/models/operations/postapiindexv1getdatasourceconfig.go: + id: 7fda817cb810 + last_write_checksum: sha1:1d91ec929b59c3eb28d55c4bcf733d22ba8ce429 + pristine_git_object: 87af103e121dcb3403ffbc3bce1c6c924a3f079d + tests/mockserver/internal/sdk/models/operations/postapiindexv1getdocumentcount.go: + id: 6433cbe23c23 + last_write_checksum: sha1:5117f2204b56a4fab8b78e1505afe4effefb89d2 + pristine_git_object: e834673897df62698a8acd84a25cf316e58d7a31 + tests/mockserver/internal/sdk/models/operations/postapiindexv1getdocumentstatus.go: + id: 0710b282ba21 + last_write_checksum: sha1:c7392d72ca0b952723c1138b999d2927f2cd36de + pristine_git_object: 23e6ce27a9299e9a183a35e123bec4c9a9250c89 + tests/mockserver/internal/sdk/models/operations/postapiindexv1getusercount.go: + id: 73d27c91bd1d + last_write_checksum: sha1:01f3825d72dc86dd0085273d1b8c72f340e76636 + pristine_git_object: d65e1df985ab3fa57cf7b826b6db663c262f2c6a + tests/mockserver/internal/sdk/models/operations/postapiindexv1indexdocument.go: + id: a208711c3554 + last_write_checksum: sha1:3efed5fae8df0d1a262ddef69189cc78070134c9 + pristine_git_object: 0dee9b590c9626171165eac64f6ede3ef1767350 + tests/mockserver/internal/sdk/models/operations/postapiindexv1indexdocuments.go: + id: 7153a6c3b857 + last_write_checksum: sha1:740474c41034fe84e2550e13643e9d7339780501 + pristine_git_object: dc8114aee9563ca706c2f5a6d10c5a238f2ac4dd + tests/mockserver/internal/sdk/models/operations/postapiindexv1indexemployee.go: + id: 4fb5c55c2847 + last_write_checksum: sha1:ea137b2359cdf0253992a98befcde0ef321eb4ec + pristine_git_object: 78fee1b1682e0bf269123264248540d26589d5d1 + tests/mockserver/internal/sdk/models/operations/postapiindexv1indexgroup.go: + id: 8724d89aa0ee + last_write_checksum: sha1:deaac8a99b80c144b09973f3165b3460629820d9 + pristine_git_object: 2376f01a646d7647335b193f8887313bee6b3a8a + tests/mockserver/internal/sdk/models/operations/postapiindexv1indexmembership.go: + id: 9bb69b2e8f8b + last_write_checksum: sha1:5e3890463d141971df363b7d2aabf485437ed65a + pristine_git_object: bc37981822806851a7ef236df0330bd45a06e92d + tests/mockserver/internal/sdk/models/operations/postapiindexv1indexteam.go: + id: 47ea300d1c72 + last_write_checksum: sha1:af338c162bdd05f170de7280332f0629d2881893 + pristine_git_object: e21ea660ad2f28ce21d6789aeb1e123cc28041ff + tests/mockserver/internal/sdk/models/operations/postapiindexv1indexuser.go: + id: 60183ac8063b + last_write_checksum: sha1:6af067cd2896b25ae230aba5c869dcd43e9599ee + pristine_git_object: 97d96c43227c664c03a0fc0e1a09bc85ff3c9c9e + tests/mockserver/internal/sdk/models/operations/postapiindexv1processalldocuments.go: + id: 936d4338ab5c + last_write_checksum: sha1:a5cb7dc7c1a090e13d6d0a892ca81fd939fa2cbb + pristine_git_object: 842e0b833c4d0d3ee76ade1257e91c378a0d3e45 + tests/mockserver/internal/sdk/models/operations/postapiindexv1processallemployeesandteams.go: + id: c1337f1c16fc + last_write_checksum: sha1:b0e9349d32b6f6e6bcfcf50795a3c9d01a8d579a + pristine_git_object: 6836e1b0547d29ab0b06a61483c1cf0a6d4dd41a + tests/mockserver/internal/sdk/models/operations/postapiindexv1processallmemberships.go: + id: de2279267e56 + last_write_checksum: sha1:dc15b4835d4c2419c41df90c732b551c0e47b4b6 + pristine_git_object: 7fda5903222b53179c889c5347166d3e306909c6 + tests/mockserver/internal/sdk/models/operations/postapiindexv1rotatetoken.go: + id: 770dc5e9fe7a + last_write_checksum: sha1:c7e443b0a9f994246b12f845cfe17a6faa9dd50c + pristine_git_object: d0333d02e471e38c949808fb72a415c1b58bcd95 + tests/mockserver/internal/sdk/models/operations/postapiindexv1updatepermissions.go: + id: 3003447c5df5 + last_write_checksum: sha1:efe733ad63d09cdafbd01f06870cad083c46fe86 + pristine_git_object: 677130bbedacaa7a7084ce137359aeb7bff7265b + tests/mockserver/internal/sdk/models/operations/postapiindexv1uploadshortcuts.go: + id: 050d90bfef03 + last_write_checksum: sha1:ed4651d4860935aaf0e344aeb9bbffb1365b8db7 + pristine_git_object: cc5dbf54dc3c27fb7c8deae58311079a11510827 + tests/mockserver/internal/sdk/models/operations/postrestapiv1toolscall.go: + id: 2cb295dd1782 + last_write_checksum: sha1:a598e25aef310bd7c8c7c37987899e6f88e918f9 + pristine_git_object: eb2eea470710ba5887a0340b934b602a63b486fc + tests/mockserver/internal/sdk/models/operations/putrestapiindexcustommetadataschemagroupname.go: + id: bbbcdd70f097 + last_write_checksum: sha1:a4b2a2546463defadda12f10c5d48cf3f978bed4 + pristine_git_object: 8aabd0646608b24242dd0685d3dba9d4a7fb50e0 + tests/mockserver/internal/sdk/models/operations/putrestapiindexdocumentdocidcustommetadatagroupname.go: + id: afac7770cd53 + last_write_checksum: sha1:8248f106ce4fd60e2de01ad997600bef0dd48dbe + pristine_git_object: 2722a184f1aaf9588ffea6874a4b0948bec19a7e + tests/mockserver/internal/sdk/models/operations/recommendations.go: + id: a185d6e70d36 + last_write_checksum: sha1:6ae07252753671a40f928d93b959ea0403154494 + pristine_git_object: 1a7d11cdea0461dacd357e652ceba5ad048ab2b4 + tests/mockserver/internal/sdk/models/operations/rotatedatasourcecredentials.go: + id: 4423e4f78c63 + last_write_checksum: sha1:e3ba704236a66ebc3e5c3d36865df95bae4620e9 + pristine_git_object: f5ac0b261c77d2df930fdbd5f24911627bb31221 + tests/mockserver/internal/sdk/models/operations/search.go: + id: 6db405372f56 + last_write_checksum: sha1:8ebd0389fc5b227f30ce9e4ff19b12516c4b5329 + pristine_git_object: 7467c541d0f39e1b2571785b48474cddd93e5d1e + tests/mockserver/internal/sdk/models/operations/searchagents.go: + id: 6f53dbe362ec + last_write_checksum: sha1:15a0051b4288ddfec731e7198c1561ceb4187faf + pristine_git_object: 0e9a07157966bee757b21e5c6fe08129385e0345 + tests/mockserver/internal/sdk/models/operations/setdocvisibility.go: + id: d4ab3d457210 + last_write_checksum: sha1:af755e76cbc165a8f9282ecbb67ba09d32ac9e22 + pristine_git_object: 3b077768a3c7b6925e2bf5ad45938527f197e1f3 + tests/mockserver/internal/sdk/models/operations/summarize.go: + id: 53e19d91ab53 + last_write_checksum: sha1:e23c22ddcc5ffa4d3201ff38dee77bf305c1b156 + pristine_git_object: 9bd6a38a71f87d63e10d146d772b43df55093ea3 + tests/mockserver/internal/sdk/models/operations/unpin.go: + id: 1c8ed2f7e0f0 + last_write_checksum: sha1:ebc6723ce70f20e4847d322b1f63ab297b7b4d39 + pristine_git_object: f6aeca75322cf729c455320aeb878665f81a037b + tests/mockserver/internal/sdk/models/operations/updateannouncement.go: + id: 667baa2231cd + last_write_checksum: sha1:219c6a8e147028e49185ebfe1488b8efe1e5f4a3 + pristine_git_object: 4cc872ff71d34060db600f0da799cd493bfeee3c + tests/mockserver/internal/sdk/models/operations/updatedatasourceinstanceconfiguration.go: + id: 646219724b69 + last_write_checksum: sha1:9138b5126887e93c98c8c5d936909af27faa6236 + pristine_git_object: b8568c6360c20c277dd89f45a8eba7cc9feacd3e + tests/mockserver/internal/sdk/models/operations/updatepolicy.go: + id: 77df97c41ed7 + last_write_checksum: sha1:555e1077b891a4d7a21f275bcffe983b7fff9120 + pristine_git_object: a355bbe91da6940f4c182d7da12592b0fe239d54 + tests/mockserver/internal/sdk/models/operations/updateshortcut.go: + id: 97d965cc3c6e + last_write_checksum: sha1:f9689073485924ff89de0d476d3bd0ea56b73501 + pristine_git_object: f16ddd5e3c04d237a6f3f3e29685ee3dff588915 + tests/mockserver/internal/sdk/models/operations/uploadchatfiles.go: + id: 23ab0825947d + last_write_checksum: sha1:f1c44bb376adee3854955832ceff513124324a3b + pristine_git_object: 24142696d0a73079faa1114b40dd5f35ca089648 + tests/mockserver/internal/sdk/models/operations/verify.go: + id: 3c481ba80f28 + last_write_checksum: sha1:f20f8fd1bbf3169e0e4516595d7971e5cae03951 + pristine_git_object: 502b190f8e59bcc4ebb0c0efdb317c641b845f93 + tests/mockserver/internal/sdk/models/sdkerrors/collectionerror.go: + id: 60537b88bdfe + last_write_checksum: sha1:a8ce08145cf00a84487714f875ba1d3a8d84be1d + pristine_git_object: 6eb492d877ba569e41405a84ed4eb539d2df1317 + tests/mockserver/internal/sdk/models/sdkerrors/errorinforesponse.go: + id: ff26c56caf3f + last_write_checksum: sha1:45ea1373ecbbade089e437790674efbffb72238d + pristine_git_object: 75ecfbc9fd1e451c19a4cf492569ba20f47c79ba + tests/mockserver/internal/sdk/models/sdkerrors/errorresponse.go: + id: 285d3b46954a + last_write_checksum: sha1:eecdd5dcfa17d3c57965b06f8d75065b5ccf243b + pristine_git_object: a3f04453bc6f90fb4be431387a87da90d3191212 + tests/mockserver/internal/sdk/models/sdkerrors/gleandataerror.go: + id: 6162be7fca7f + last_write_checksum: sha1:ee697c8e2807f2b86c3de73bcbc013bbaf4ee2e9 + pristine_git_object: 05af2574a03e26abac55345798ac1e965376ecd4 + tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go: + id: 49a8c2638f49 + last_write_checksum: sha1:aa5ff815f31a3657487ad5e0c3f023f573b1fcab + pristine_git_object: bdf1155c8c11ce1a1266e0e2e0fe24a1cefff196 + tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go: + id: 67aafc07794f + last_write_checksum: sha1:c0ca755fb35acd8f838567e22c2b5722592fe1c3 + pristine_git_object: 52fb11f9ecfbf5e83c2a2d406d39e9a58923ef27 + tests/mockserver/internal/sdk/types/bigint.go: + id: 87f867cb8679 + last_write_checksum: sha1:49b004005d0461fb04b846eca062b070b0360b31 + pristine_git_object: 9c6a086d51595888a6ff787ebcb8693559afee95 + tests/mockserver/internal/sdk/types/date.go: + id: f98ae21d85d5 + last_write_checksum: sha1:3036a2e1ed15a1d484c093367eba000c38f384d0 + pristine_git_object: 5b2782f219efe6bfbce46fc2dec68998eb759438 + tests/mockserver/internal/sdk/types/datetime.go: + id: aaa67b7338e2 + last_write_checksum: sha1:196d050af6450669214e9ae4fd28e56263ae2b5d + pristine_git_object: 3eff332daa04e34cec5ffb10add670bafd8ac454 + tests/mockserver/internal/sdk/types/decimal.go: + id: cdc9f41c716d + last_write_checksum: sha1:54f1f8c0d89d6ef048805121f97c6937404c5d51 + pristine_git_object: d8429bc6bda8a597610c4fac56b71c403dbadb2b + tests/mockserver/internal/sdk/types/jsonl/jsonl.go: + id: f059643f67b2 + last_write_checksum: sha1:15fb778e0fa6c7b4c228431af3d03b9819b8fd94 + pristine_git_object: 26df95cf42add9ff7286ab4cc191c9548b0ac16b + tests/mockserver/internal/sdk/types/pointers.go: + id: f880573cf1fb + last_write_checksum: sha1:fc2275ea006257ba9ba4ff6f2a2cdb6205371eef + pristine_git_object: 35c439d2661e08fcb6a854096fd7b9a8561b3938 + tests/mockserver/internal/sdk/utils/json.go: + id: b1ed67b63d16 + last_write_checksum: sha1:2c860aa8b53b7d38c20290854c880368ce4fe0ec + pristine_git_object: e5aafa7be41a6c5a754c4c500c13a1aabcc654d4 + tests/mockserver/internal/sdk/utils/reflect.go: + id: b024be29d61f + last_write_checksum: sha1:1e3a0ca0387685b6b21c0a6a75650b8611c76ee3 + pristine_git_object: c9ae9a7c41b87dac23a4e517213f840adbf116f7 + tests/mockserver/internal/sdk/utils/sort.go: + id: ee80b6668d52 + last_write_checksum: sha1:a9d390de086ad13841c7d154e97d314e6ae2d285 + pristine_git_object: 6b265be746b089d6a8c34e55d18839fec9c91f96 + tests/mockserver/internal/server/doc.go: + id: 54a531ed97c2 + last_write_checksum: sha1:71ca1bebc409ffcb7ed573f4bfc85f1d2cb76252 + pristine_git_object: 666dc10909c6fc1d8699cadd82e358b422e21842 + tests/mockserver/internal/server/generated_handlers.go: + id: d4345560d91e + last_write_checksum: sha1:dbaa2e7beedda2a3e0ef373939f0424577cb2666 + pristine_git_object: 1ea16355c8f0747d5c98f4233865c94fc61e6da0 + tests/mockserver/internal/server/internal_handlers.go: + id: 03ed5c3e8424 + last_write_checksum: sha1:1c79af9ee45c9bde435f5acc711bc48c9f66315e + pristine_git_object: 1c248615e9a35cab3b451f4696cd7d787e173041 + tests/mockserver/internal/server/server.go: + id: bc4818c1c5f8 + last_write_checksum: sha1:d97000314c64b937ff7a243cbc051c5591ab8722 + pristine_git_object: 12239611a68d9a0ca7522a55a18788829c5e67e8 + tests/mockserver/internal/server/server_option.go: + id: 8a815959caed + last_write_checksum: sha1:f787e17525cbaed4d6881d02562da66a1deda9c0 + pristine_git_object: ff85a678b6c19095ae99851ba6dfbba3813aae09 + tests/mockserver/internal/server/templates/log/index.html.tmpl: + id: 0cb9583d5972 + last_write_checksum: sha1:7c3fc6e6b03d80e05bc586ade52ddcb8adaee148 + pristine_git_object: 8b1124e5f9fb283a4effd9c891b94a011c9dc5f2 + tests/mockserver/internal/server/templates/log/operation.html.tmpl: + id: 60a6c6274bd7 + last_write_checksum: sha1:ab2894028c76b25dfe613d743a243bfd04fb279c + pristine_git_object: a54a2adce7e3701bc4e40584e1679193d08062fb + tests/mockserver/internal/server/templates/log/style.css.tmpl: + id: 38e1479659c5 + last_write_checksum: sha1:474c79a94fa7d2671135e078a71c51b11f38bfae + pristine_git_object: 5490930e568fac28e0f8d1a218bfb3cb261430b9 + tests/mockserver/internal/tracking/requesttracker.go: + id: 24598502491b + last_write_checksum: sha1:09963693aae5446c247cac171c284f2cdf7cfa4d + pristine_git_object: 1d9131d09f58db9a36c3032c08b043f08989f9e4 + tests/mockserver/main.go: + id: 2b32d316f0d2 + last_write_checksum: sha1:1267817b54decac7af35c5db3f4d865eb628547d + pristine_git_object: 2270443b07cb33114f54c654c6d4184fcfc1d68a + tests/test_activities.py: + id: 0511c9cc6a92 + last_write_checksum: sha1:e3ed9762b0d3969663ff8b18dcd9d55a0198b2bb + pristine_git_object: db4221c9f5953adc8f8219979060f1248ae5c342 + tests/test_agents.py: + id: 2eb70a860f3a + last_write_checksum: sha1:0c2472116b756d6985f893ff62edb5505e2a260d + pristine_git_object: 1d18b7662e493260672cbaabfcbc8461355ffeba + tests/test_announcements.py: + id: 720cc07fca06 + last_write_checksum: sha1:1d0dcab6446633bc6809bc67e14b6cc1755aa319 + pristine_git_object: 7e8f670e3efa5337381c0cb5066e0f5e83e3a44b + tests/test_answers.py: + id: 2a6f19947b0a + last_write_checksum: sha1:5d35f3a66ce3b29bbeae63214bdb11dce23e30de + pristine_git_object: 3b4390d4615a656819f3457afdffb823aac56cab + tests/test_authentication.py: + id: dc4a998a8261 + last_write_checksum: sha1:ce73311cbee01b7b6612a34c45daeb477eaf8e27 + pristine_git_object: 438848aa8e7cfbb61811d4b65a16af10b0a2e97e + tests/test_calendar.py: + id: 255e2a2c77ee + last_write_checksum: sha1:933ca9c7da1cfab204f0acc1005c29118b08162a + pristine_git_object: d2b02f269ac418b9a9240772f28ab1bd3cfa4997 + tests/test_chat_sdk.py: + id: d6e6d5c5a1b2 + last_write_checksum: sha1:ac54eafad3be7b69b51f8b1c2ef8d13235fe517b + pristine_git_object: f82975aab21af768fe9b39b6b85e0ec816d4a688 + tests/test_client.py: + id: 6b61d4b06ccc + last_write_checksum: sha1:df970d19cdb9f9e057722699dc73965b6f9b1758 + pristine_git_object: fb323a5bca29200e1b6e675e739273626c7b8204 + tests/test_client_activity.py: + id: 3754879096ea + last_write_checksum: sha1:657e6ccc2cc0d4b92b3feb1681d39796fa0e5889 + pristine_git_object: 200e3ceebf0fb52248b717e6cb20b105611c41ec + tests/test_client_authentication.py: + id: 7cf5a14528ec + last_write_checksum: sha1:0f967704460d2f4160f4afbfcb864a8524b83106 + pristine_git_object: 1ea7ec892d316489240c82ed6e3b5b99f8d657fd + tests/test_client_chat.py: + id: 6eb71db2a62a + last_write_checksum: sha1:9826e7ec5c3a757af9dfe000f879f5a105aa1939 + pristine_git_object: 6be5e6a77a5918ec1c069bd0b89b76c08ad7dfad + tests/test_client_documents.py: + id: e41c035a85b3 + last_write_checksum: sha1:d29128c0414195ef128ee8a28f192332ebccd46f + pristine_git_object: 96ebd8a4c7eb1f304df1ddcc9c3f8f61ef40445a + tests/test_client_shortcuts.py: + id: 9a1252d16102 + last_write_checksum: sha1:e079d1b8357780da423fe68f38a5c4d88724fafe + pristine_git_object: 1b3a5a00ba2162dc14a37110a6a2f3dd960a8c5c + tests/test_client_user.py: + id: d0d9efc1996d + last_write_checksum: sha1:8b01269dd6d5e482c28d14394f4745aae1be6c17 + pristine_git_object: 155d1c4ddee29b502a214c6f6a98df62180b2059 + tests/test_client_verification.py: + id: 34f24907402b + last_write_checksum: sha1:96ed2596956ef7475ce1f20c0475c18d2c47df00 + pristine_git_object: 8de1f3a8dd7342f3de8fb812612f62cd46aa6b37 + tests/test_collections.py: + id: 33710eb789fa + last_write_checksum: sha1:c6b81c29d18d880a42399a2fe526b0867fefb77f + pristine_git_object: 4e7e05cd255ebd497afde50b97fcfa63e4367e2a + tests/test_custommetadata.py: + id: d05cd1ca7d1d + last_write_checksum: sha1:e57a3f0a6d3d51855f525249f1f50af50f8251f8 + pristine_git_object: bf13266784d196fcb7420c35655f5e8c63a433ff + tests/test_datasources.py: + id: 0a9c5268286f + last_write_checksum: sha1:702248b4aa6fec68310d64b779af389bb98db4a2 + pristine_git_object: b36dd4080937a774fab1a14daf628e73b2e6d9df + tests/test_displayablelists.py: + id: aa656a7efeb2 + last_write_checksum: sha1:ad6e518e489b98d4f21c7e0ebab2f085f49be421 + pristine_git_object: acec822d761f40906a287eee92200d1223caec4d + tests/test_entities.py: + id: 9bdc6c717c71 + last_write_checksum: sha1:4887a1e7145a50e9fe1277fee1ecda181831c7ac + pristine_git_object: c6b986f4f1a1e6202a012ebb349a3af76c9c4f05 + tests/test_governance.py: + id: d9680b75ffff + last_write_checksum: sha1:c1eb83dbb3867d3c43fd55377c05039853af49e5 + pristine_git_object: 16b5840bb501d1ad7753aaf846630c0a34bdc119 + tests/test_indexing_authentication.py: + id: 466ee13c3372 + last_write_checksum: sha1:c96c8f13a7cca3cade8ca389857541596ee01fc5 + pristine_git_object: ba76ccdfe646b9d6e0d9dbca11b594bbf1ca75ce + tests/test_indexing_documents.py: + id: 5445d048eccd + last_write_checksum: sha1:03eda0aceb8904f9974260374b1092d3e1e1db17 + pristine_git_object: 53c2f4b1345be2f73bcb05aa54f44a287ed11c59 + tests/test_indexing_permissions.py: + id: a6c5e41932fb + last_write_checksum: sha1:ce73ba9de3f1e0b28725112cb250c61ff83ebd33 + pristine_git_object: 51a750d7b6f1e75837dcd81c25a42bdfecc80fd0 + tests/test_insights.py: + id: 7669cd72a629 + last_write_checksum: sha1:1f1a50da621d48b4acd55f8350d6778e9b1f2393 + pristine_git_object: 6cc8aeec3c52329d389081db0a27f10f53f214b9 + tests/test_messages.py: + id: be23089b1f8b + last_write_checksum: sha1:2404e23964ef6a1f5ddc900402b34e597d2d9617 + pristine_git_object: 132005ec7d1e35f805b6a8c28e07e043bce22f0a + tests/test_people.py: + id: 37c243940039 + last_write_checksum: sha1:7c7268ffeebe48d81ed25e9b1cfc3a395abf5c1f + pristine_git_object: c64882efb749dec916454d169b905964076b39e7 + tests/test_pins.py: + id: ca3f94cca4af + last_write_checksum: sha1:4d9eb94936fb2e8431c731f9b2179d32ae7a7c46 + pristine_git_object: fae672bbb1ebffb6b22ce6260a47c02d62ede3fd + tests/test_policies.py: + id: 4a08836fb665 + last_write_checksum: sha1:5a7a52568dc7f3b2c2f555eade996a746b680367 + pristine_git_object: 60925b9790ed2d1cc6f07eaf8c2d15956fed24e8 + tests/test_reports.py: + id: 1883332e3f45 + last_write_checksum: sha1:b34b5becf69930e60453e3d7d844ef39cc292f6d + pristine_git_object: 3fa82f944c8693f534f71d96c489225c3f65cb5d + tests/test_search.py: + id: dd86606b335f + last_write_checksum: sha1:313c3950c21ccf57f4569a4ca9eeeaefc8e7af91 + pristine_git_object: df2944ebda36db652b2770dd1c23be83df90fc99 + tests/test_summarize.py: + id: a255d8a6f627 + last_write_checksum: sha1:884caf9e9ba6ac6d6577682c45419d3fd6312dd9 + pristine_git_object: df71d57de672c7e6967ba36b3671d957ef075d55 + tests/test_tools.py: + id: 70889bdf7321 + last_write_checksum: sha1:293cea8c046c30086e5d57cb48aa59ab8da308f1 + pristine_git_object: e9c3dac5f1aa45a5cd9f20f7664be5133f486765 + tests/test_troubleshooting.py: + id: 784c409f631e + last_write_checksum: sha1:5af30befb8fffd54210e313bf98c24a64a685c50 + pristine_git_object: f505171958a72f776fbd4bc7e45c190a869aaf81 + tests/test_visibilityoverrides.py: + id: fd0437fcd963 + last_write_checksum: sha1:6c55e2416341d23ed4c68130c64c6eda00eedbfa + pristine_git_object: a71bf6572fdb8d6c519cc1f4367f92c7b08fb552 examples: activity: speakeasy-default-activity: @@ -1905,7 +8624,7 @@ examples: createannouncement: speakeasy-default-createannouncement: requestBody: - application/json: {"startTime": "2023-05-01T12:02:10.816Z", "endTime": "2024-03-17T14:19:30.278Z", "title": "", "body": {"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": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}]}, "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": "VERIFIER"}], "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."}, "likes": {"likedBy": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "likedByUser": false, "numLikes": 852982}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "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": 627080}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 642543}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "board": {"name": "", "description": "actual even swift curse while puppet outlandish since urgently", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 812610, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "collections": [{"name": "", "description": "minus mindless prudent better elderly", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 953622, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 164413, "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": "instead calmly after ick headline inasmuch forenenst westernize grouper amidst", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 345597, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "boulevard pale collaborate pertinent comparison drat yum rejigger nor finding", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 654575, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "DOCUMENT"}]}], "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": "instead calmly after ick headline inasmuch forenenst westernize grouper amidst", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 345597, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "boulevard pale collaborate pertinent comparison drat yum rejigger nor finding", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 654575, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "answerBoard": {"name": "", "description": "capitalise rubric championship snowplow", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 920771, "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": 254608, "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": {}}}}}]}}}]}, "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}]} + application/json: {"startTime": "2023-05-01T12:02:10.816Z", "endTime": "2024-03-17T14:19:30.278Z", "title": "", "body": {"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": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "displayable": true}], "datasourceProfiles": [{"datasource": "github", "handle": ""}], "status": "PROCESSED", "canBeDeleted": true}, "customEntity": {"roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}]}, "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": "VERIFIER"}], "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."}, "likes": {"likedBy": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "likedByUser": false, "numLikes": 852982}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "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": 627080}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 642543}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "minus mindless prudent better elderly", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 953622, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 164413, "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": "instead calmly after ick headline inasmuch forenenst westernize grouper amidst", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 345597, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "boulevard pale collaborate pertinent comparison drat yum rejigger nor finding", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 654575, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "DOCUMENT"}]}], "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": "instead calmly after ick headline inasmuch forenenst westernize grouper amidst", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 345597, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "boulevard pale collaborate pertinent comparison drat yum rejigger nor finding", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 654575, "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": 254608, "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": {}}}}}]}}}]}, "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}]} responses: "200": application/json: {"draftId": 342} @@ -1916,7 +8635,7 @@ examples: updateannouncement: speakeasy-default-updateannouncement: requestBody: - application/json: {"startTime": "2023-10-24T01:53:24.440Z", "endTime": "2024-10-30T07:24:12.087Z", "title": "", "body": {"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": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "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": "OWNER"}], "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": 768439}, "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": 69479}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 877321}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "board": {"name": "", "description": "litter anenst happy probable birdcage till", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 34422, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "collections": [{"name": "", "description": "ew or every verbally", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 297273, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 896121, "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": "shy versus chunder monocle", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 455912, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "though mismatch noisily jive worth meh following hmph analyse guidance", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 432713, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "URL"}]}], "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": "shy versus chunder monocle", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 455912, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "though mismatch noisily jive worth meh following hmph analyse guidance", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 432713, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "answerBoard": {"name": "", "description": "bookend dense second-hand", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 964771, "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": 766177, "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": {}}}}}]}}}]}, "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 210913} + application/json: {"startTime": "2023-10-24T01:53:24.440Z", "endTime": "2024-10-30T07:24:12.087Z", "title": "", "body": {"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": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "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": "OWNER"}], "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": 768439}, "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": 69479}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 877321}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "ew or every verbally", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 297273, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 896121, "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": "shy versus chunder monocle", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 455912, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "though mismatch noisily jive worth meh following hmph analyse guidance", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 432713, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "URL"}]}], "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": "shy versus chunder monocle", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 455912, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "though mismatch noisily jive worth meh following hmph analyse guidance", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 432713, "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": 766177, "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": {}}}}}]}}}]}, "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 210913} responses: "200": application/json: {"draftId": 342} @@ -1926,7 +8645,7 @@ examples: application/json: {"data": {"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": "VIEWER"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "OWNER"}], "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."}}} responses: "200": - application/json: {"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": "VIEWER"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "OWNER"}], "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": {}, "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": false, "numLikes": 431057}, "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": 109303}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 299633}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "board": {"name": "", "description": "up shrill except hmph blowgun mechanically seldom beyond", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 198996, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "collections": [{"name": "", "description": "drat what longingly um recklessly fill", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 523810, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 460997, "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": "gah peppery well tenement charm reword ha oof reassemble", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 957555, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "outside toward information as smoothly smoggy feminize solemnly round duh", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 459472, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "DOCUMENT"}]}], "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": "gah peppery well tenement charm reword ha oof reassemble", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 957555, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "outside toward information as smoothly smoggy feminize solemnly round duh", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 459472, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "answerBoard": {"name": "", "description": "wordy coincide near where husky at meh terrible", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 994124, "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": 485611, "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": false, "numLikes": 431057}, "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": 109303}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 299633}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "board": {"name": "", "description": "up shrill except hmph blowgun mechanically seldom beyond", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 198996, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"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": {}}}}} + application/json: {"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": "VIEWER"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "OWNER"}], "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": {}, "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": false, "numLikes": 431057}, "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": 109303}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 299633}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "drat what longingly um recklessly fill", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 523810, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 460997, "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": "gah peppery well tenement charm reword ha oof reassemble", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 957555, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "outside toward information as smoothly smoggy feminize solemnly round duh", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 459472, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "DOCUMENT"}]}], "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": "gah peppery well tenement charm reword ha oof reassemble", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 957555, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "outside toward information as smoothly smoggy feminize solemnly round duh", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 459472, "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": 485611, "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": false, "numLikes": 431057}, "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": 109303}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 299633}, "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": {}}}}} deleteanswer: speakeasy-default-deleteanswer: requestBody: @@ -1937,14 +8656,14 @@ examples: application/json: {"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": "OWNER"}], "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}], "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."}} responses: "200": - application/json: {"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": "OWNER"}], "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}], "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": {}, "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": 275292}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "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": 705883}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 764761}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "board": {"name": "", "description": "around eek frenetically unfortunately via pretty", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 835038, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "collections": [{"name": "", "description": "subtle fess aw if whether", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 701136, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 794773, "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": "hairy with authentic newsstand supposing howl short axe", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 296704, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "minus save since chasuble per blah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 925420, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "DOCUMENT"}]}], "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": "hairy with authentic newsstand supposing howl short axe", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 296704, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "minus save since chasuble per blah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 925420, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "answerBoard": {"name": "", "description": "deform swanling atop uh-huh hmph against meanwhile untimely allocation", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 79789, "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": 978665, "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": 275292}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "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": 705883}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 764761}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "board": {"name": "", "description": "around eek frenetically unfortunately via pretty", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 835038, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"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": {}}}}} + application/json: {"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": "OWNER"}], "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}], "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": {}, "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": 275292}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "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": 705883}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 764761}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "subtle fess aw if whether", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 701136, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 794773, "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": "hairy with authentic newsstand supposing howl short axe", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 296704, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "minus save since chasuble per blah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 925420, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "DOCUMENT"}]}], "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": "hairy with authentic newsstand supposing howl short axe", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 296704, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "minus save since chasuble per blah", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 925420, "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": 978665, "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": 275292}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "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": 705883}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 764761}, "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": {}}}}} getanswer: speakeasy-default-getanswer: requestBody: application/json: {"id": 3, "docId": "ANSWERS_answer_3"} responses: "200": - application/json: {"answerResult": {"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": "VIEWER"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "OWNER"}], "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}], "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": {}, "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": true, "numLikes": 322563}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "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": 37610}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 726314}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "board": {"name": "", "description": "gulp analyse dash eek noon", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 437234, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "collections": [{"name": "", "description": "exactly besmirch fuss nor bookend safely aw optimistically usher miscalculate", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 966336, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 648270, "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": "wilted ew hearten vestment gust", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 486539, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "unselfish regarding long calculating indolent twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 705775, "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": "wilted ew hearten vestment gust", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 486539, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "unselfish regarding long calculating indolent twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 705775, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "answerBoard": {"name": "", "description": "hence gosh failing seldom", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 309374, "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": 862152, "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": true, "numLikes": 322563}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "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": 37610}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 726314}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "board": {"name": "", "description": "gulp analyse dash eek noon", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 437234, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"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": {}}}}}}, "error": {"answerAuthor": {"name": "George Clooney", "obfuscatedId": "abc123"}}} + application/json: {"answerResult": {"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": "VIEWER"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "OWNER"}], "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}], "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": {}, "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": true, "numLikes": 322563}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "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": 37610}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 726314}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "exactly besmirch fuss nor bookend safely aw optimistically usher miscalculate", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 966336, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 648270, "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": "wilted ew hearten vestment gust", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 486539, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "unselfish regarding long calculating indolent twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 705775, "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": "wilted ew hearten vestment gust", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 486539, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "unselfish regarding long calculating indolent twist", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 705775, "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": 862152, "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": true, "numLikes": 322563}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "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": 37610}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 726314}, "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": {}}}}}}, "error": {"answerAuthor": {"name": "George Clooney", "obfuscatedId": "abc123"}}} listanswers: speakeasy-default-listanswers: requestBody: @@ -1969,13 +8688,13 @@ 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"}]}}, "board": {"name": "", "description": "that shocked casement malfunction nocturnal aching bravely carboxyl healthily", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 850019, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"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"}}]}, "answerBoard": {"name": "", "description": "incidentally metabolise hoarse", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 635091, "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"}]}}, "board": {"name": "", "description": "that shocked casement malfunction nocturnal aching bravely carboxyl healthily", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 850019, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"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"}}]}, "answerBoard": {"name": "", "description": "incidentally metabolise hoarse", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 635091, "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} + 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"}], "chat": {"createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}, "backendTimeMillis": 1100} streamingExample: requestBody: application/json: {"messages": [], "timeoutMillis": 30000} responses: "200": - application/json: {"messages": [{"agentConfig": {"agent": "DEFAULT", "mode": "DEFAULT"}, "author": "GLEAN_AI", "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"}]}}, "board": {"name": "", "description": "that shocked casement malfunction nocturnal aching bravely carboxyl healthily", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 850019, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"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"}}]}, "answerBoard": {"name": "", "description": "incidentally metabolise hoarse", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 635091, "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"}]}}, "board": {"name": "", "description": "that shocked casement malfunction nocturnal aching bravely carboxyl healthily", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 850019, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"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"}}]}, "answerBoard": {"name": "", "description": "incidentally metabolise hoarse", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 635091, "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"}, {"agentConfig": {"agent": "DEFAULT", "mode": "DEFAULT"}, "author": "GLEAN_AI", "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"}]}}, "board": {"name": "", "description": "that shocked casement malfunction nocturnal aching bravely carboxyl healthily", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 850019, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"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"}}]}, "answerBoard": {"name": "", "description": "incidentally metabolise hoarse", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 635091, "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"}]}}, "board": {"name": "", "description": "that shocked casement malfunction nocturnal aching bravely carboxyl healthily", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 850019, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"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"}}]}, "answerBoard": {"name": "", "description": "incidentally metabolise hoarse", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 635091, "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"}, {"agentConfig": {"agent": "DEFAULT", "mode": "DEFAULT"}, "author": "GLEAN_AI", "fragments": [{"text": "e are"}], "messageType": "CONTENT"}, {"agentConfig": {"agent": "DEFAULT", "mode": "DEFAULT"}, "author": "GLEAN_AI", "fragments": [{"text": "no hol"}], "messageType": "CONTENT"}, {"agentConfig": {"agent": "DEFAULT", "mode": "DEFAULT"}, "author": "GLEAN_AI", "fragments": [{"text": "idays!"}], "messageType": "CONTENT"}]} + application/json: {"messages": [{"agentConfig": {"agent": "DEFAULT", "mode": "DEFAULT"}, "author": "GLEAN_AI", "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"}, {"agentConfig": {"agent": "DEFAULT", "mode": "DEFAULT"}, "author": "GLEAN_AI", "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"}, {"agentConfig": {"agent": "DEFAULT", "mode": "DEFAULT"}, "author": "GLEAN_AI", "fragments": [{"text": "e are"}], "messageType": "CONTENT"}, {"agentConfig": {"agent": "DEFAULT", "mode": "DEFAULT"}, "author": "GLEAN_AI", "fragments": [{"text": "no hol"}], "messageType": "CONTENT"}, {"agentConfig": {"agent": "DEFAULT", "mode": "DEFAULT"}, "author": "GLEAN_AI", "fragments": [{"text": "idays!"}], "messageType": "CONTENT"}]} updateResponse: requestBody: application/json: {"messages": [], "timeoutMillis": 30000} @@ -1999,7 +8718,7 @@ examples: application/json: {"id": ""} responses: "200": - application/json: {"chatResult": {"chat": {"createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}, "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": 641568, "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": "EDITOR"}], "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": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "likedByUser": true, "numLikes": 548232}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "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": 728034}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 546319}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "board": {"name": "", "description": "humiliating jovially gadzooks when thorny yin oddly incidentally viciously", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 316173, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}, "collections": [{"name": "", "description": "until nifty warmly nicely furthermore howl at", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 427851, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 864473, "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": "scarification upon ack sometimes arrange contractor courageous tributary worthwhile jell", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 623437, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "bustling needily enroll", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 491436, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "DOCUMENT"}]}], "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": "scarification upon ack sometimes arrange contractor courageous tributary worthwhile jell", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 623437, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "bustling needily enroll", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 491436, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "answerBoard": {"name": "", "description": "deploy mostly as whitewash steeple geez", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 941180, "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": 853389, "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": 548232}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "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": 728034}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 546319}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "board": {"name": "", "description": "humiliating jovially gadzooks when thorny yin oddly incidentally viciously", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 316173, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"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": "scarification upon ack sometimes arrange contractor courageous tributary worthwhile jell", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 623437, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "bustling needily enroll", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 491436, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "answerBoard": {"name": "", "description": "deploy mostly as whitewash steeple geez", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 941180, "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": 853389, "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": "Stanford30", "displayDescription": "", "objectName": "[\"HR ticket\",\"Email\",\"Chat message\"]"}}}], "messageType": "CONTENT"}], "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}]}}} + application/json: {"chatResult": {"chat": {"createdBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}, "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": 641568, "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": "EDITOR"}], "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": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "likedByUser": true, "numLikes": 548232}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "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": 728034}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 546319}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "collections": [{"name": "", "description": "until nifty warmly nicely furthermore howl at", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 427851, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "items": [{"collectionId": 864473, "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": "scarification upon ack sometimes arrange contractor courageous tributary worthwhile jell", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 623437, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "bustling needily enroll", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 491436, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "itemType": "DOCUMENT"}]}], "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": "scarification upon ack sometimes arrange contractor courageous tributary worthwhile jell", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 623437, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "bustling needily enroll", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 491436, "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": 853389, "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": 548232}, "author": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "verification": {"state": "DEPRECATED", "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": 728034}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123"}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123"}, "remindAt": 546319}, "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": "scarification upon ack sometimes arrange contractor courageous tributary worthwhile jell", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 623437, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123"}, "children": [{"name": "", "description": "bustling needily enroll", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 491436, "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": 853389, "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": "Stanford30", "displayDescription": "", "objectName": "[\"HR ticket\",\"Email\",\"Chat message\"]"}}}], "messageType": "CONTENT"}], "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}]}}} listchats: speakeasy-default-listchats: responses: @@ -2069,6 +8788,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: @@ -2076,7 +8797,9 @@ examples: agent_id: "" responses: "200": - application/json: {"agent_id": "mho4lwzylcozgoc2", "input_schema": {}, "output_schema": {}} + application/json: {"agent_id": "mho4lwzylcozgoc2", "name": "HR Policy Agent", "input_schema": {}, "output_schema": {}} + "404": + application/json: {} searchAgents: speakeasy-default-search-agents: requestBody: @@ -2084,6 +8807,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: @@ -2091,6 +8816,8 @@ examples: responses: "200": text/event-stream: "" + "404": + application/json: {} createAndWaitRun: speakeasy-default-create-and-wait-run: requestBody: @@ -2190,7 +8917,7 @@ examples: application/json: {} responses: "200": - application/json: {"users": {"activityInsights": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}, "activity": "SEARCH"}], "inactiveInsights": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}, "activity": "ALL"}]}, "content": {"documentInsights": [{"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": {}}}}}]}, "collections": {"documentInsights": [{"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": {}}}}}]}, "collectionsV2": {"documentInsights": [{"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": {}}}}}]}, "shortcuts": {"shortcutInsights": [{"shortcut": {"inputAlias": "", "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "VIEWER"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "ANSWER_MODERATOR"}], "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": {}}}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}, "role": "EDITOR"}]}}]}, "announcements": {"documentInsights": [{"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": {}}}}}]}, "answers": {"documentInsights": [{"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": {}}}}}]}, "ai": {"assistantInsights": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}, "activity": "SEARCH"}]}, "aiApps": {"aiAppInsights": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}, "activity": "ALL"}]}, "gleanAssist": {"activityInsights": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}, "activity": "SEARCH"}]}, "overviewResponse": {"perUserInsights": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "assistantResponse": {"perUserInsights": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "agentsResponse": {"topAgentsInsights": [{"icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}], "agentsUsageByDepartmentInsights": [{"icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}], "agentUsersInsights": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}} + application/json: {"gleanAssist": {"activityInsights": [{"user": {"name": "George Clooney", "obfuscatedId": "abc123"}, "activity": "SEARCH"}]}, "overviewResponse": {"perUserInsights": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "assistantResponse": {"perUserInsights": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}, "agentsResponse": {"topAgentsInsights": [{"icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}], "topUseCasesInsights": [{"topAgentIcon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}], "agentsUsageByDepartmentInsights": [{"icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}], "agentUsersInsights": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}], "agentsTimeSavedInsights": [{"icon": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}, "mcpBreakdownResponse": {"usersBreakdown": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123"}}]}} messages: speakeasy-default-messages: requestBody: @@ -2259,7 +8986,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"}]}}, "board": {"name": "", "description": "aha hence why at epic only supposing fair although boo", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 652391, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"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"}}]}, "answerBoard": {"name": "", "description": "analogy gleaming repeatedly wicked officially ew chime", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 300658, "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"}]}}, "board": {"name": "", "description": "aha hence why at epic only supposing fair although boo", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 652391, "creator": {"name": "George Clooney", "obfuscatedId": "abc123"}, "updatedBy": {"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"}}]}, "answerBoard": {"name": "", "description": "analogy gleaming repeatedly wicked officially ew chime", "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 300658, "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} + 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: @@ -2596,6 +9323,203 @@ examples: speakeasy-default-post-/api/index/v1-/uploadshortcuts: requestBody: application/json; charset=UTF-8: {"uploadId": "", "shortcuts": [{"inputAlias": "", "destinationUrl": "https://majestic-pharmacopoeia.info/", "createdBy": ""}]} + createfindingsexport: + speakeasy-default-createfindingsexport: + requestBody: + application/json; charset=UTF-8: {} + responses: + "200": + application/json: {} + listfindingsexports: + speakeasy-default-listfindingsexports: + responses: + "200": + application/json: {} + downloadfindingsexport: + speakeasy-default-downloadfindingsexport: + parameters: + path: + id: "" + responses: + "200": + text/csv; charset=UTF-8: "" + deletefindingsexport: + speakeasy-default-deletefindingsexport: + parameters: + path: + id: 741945 + checkdatasourceauth: + speakeasy-default-checkdatasourceauth: + 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: {} + getChatFile: + speakeasy-default-get-chat-file: + parameters: + path: + fileId: "" + responses: + "200": + application/octet-stream: "x-file: example.file" + editAgent: + speakeasy-default-edit-agent: + parameters: + path: + agent_id: "" + requestBody: + application/json: {} + responses: + "404": + application/json: {} + getPersonPhoto: + speakeasy-default-get-person-photo: + parameters: + path: + person_id: "" + responses: + "200": + image/png: "x-file: example.file" + image/jpeg: "x-file: example.file" + getActionPackAuthStatus: + speakeasy-default-get-action-pack-auth-status: + parameters: + path: + actionPackId: "" + responses: + "200": + application/json: {"actionPack": {"authenticated": true, "authType": "AUTH_USER_OAUTH"}} + authorizeActionPack: + speakeasy-default-authorize-action-pack: + parameters: + path: + actionPackId: "" + requestBody: + application/json: {"returnUrl": "https://merry-allocation.org/"} + responses: + "200": + application/json: {"redirectUrl": "https://unconscious-diversity.net"} + put_/rest/api/index/document/{docId}/custom-metadata/{groupName}: + speakeasy-default-put-/rest/api/index/document/{doc-id}/custom-metadata/{group-name}: + parameters: + path: + docId: "" + groupName: "" + requestBody: + application/json: {"customMetadata": []} + responses: + "200": + application/json: {"success": true} + "400": + application/json: {"error": ""} + "500": + application/json: {"error": ""} + delete_/rest/api/index/document/{docId}/custom-metadata/{groupName}: + speakeasy-default-delete-/rest/api/index/document/{doc-id}/custom-metadata/{group-name}: + parameters: + path: + docId: "" + groupName: "" + responses: + "200": + application/json: {"success": true} + "400": + application/json: {"error": ""} + "500": + application/json: {"error": ""} + get_/rest/api/index/custom-metadata/schema/{groupName}: + speakeasy-default-get-/rest/api/index/custom-metadata/schema/{group-name}: + parameters: + path: + groupName: "" + responses: + "200": + application/json: {"metadataKeys": []} + "401": + application/json: {"error": ""} + "500": + application/json: {"error": ""} + put_/rest/api/index/custom-metadata/schema/{groupName}: + speakeasy-default-put-/rest/api/index/custom-metadata/schema/{group-name}: + parameters: + path: + groupName: "" + requestBody: + application/json: {"metadataKeys": []} + responses: + "200": + application/json: {"success": true} + "400": + application/json: {"error": ""} + "500": + application/json: {"error": ""} + delete_/rest/api/index/custom-metadata/schema/{groupName}: + speakeasy-default-delete-/rest/api/index/custom-metadata/schema/{group-name}: + parameters: + path: + groupName: "" + responses: + "200": + application/json: {"success": true} + "400": + application/json: {"error": ""} + "500": + application/json: {"error": ""} + post_/api/index/v1/debug/{datasource}/document/events: + speakeasy-default-post-/api/index/v1-/debug/{datasource}/document/events: + parameters: + path: + datasource: "" + requestBody: + application/json; charset=UTF-8: {"objectType": "Article", "docId": "art123", "startDate": "2025-05-01", "maxEvents": 50} + responses: + "200": + application/json; charset=UTF-8: {"lifeCycleEvents": [{"event": "INDEXED", "timestamp": "2021-08-06T17:58:01.000Z"}]} + getDatasourceCredentialStatus: + speakeasy-default-get-datasource-credential-status: + parameters: + path: + datasourceInstanceId: "o365sharepoint_abc123" + responses: + "200": + application/json: {"status": "VALID"} + "400": + application/json: {} + rotateDatasourceCredentials: + speakeasy-default-rotate-datasource-credentials: + parameters: + path: + datasourceInstanceId: "o365sharepoint_abc123" + requestBody: + application/json: {"credentials": {"values": {"key": {}}}} + responses: + "200": + application/json: {"status": "MISSING"} + "400": + application/json: {} examplesVersion: 1.0.2 generatedTests: activity: "2025-04-28T22:05:12+01:00" @@ -2741,6 +9665,1873 @@ generatedTests: editcollection: "2025-06-12T19:13:52-04:00" createshortcut: "2025-06-12T19:13:52-04:00" updateshortcut: "2025-06-12T19:13:52-04:00" -releaseNotes: | - ## Python SDK Changes Detected: - * `glean.client.insights.retrieve()`: `response.agents_response.agents_usage_by_department_insights.[]` **Changed** + listfindingsexports: "2025-12-10T17:53:31Z" + downloadfindingsexport: "2025-12-10T17:53:31Z" + checkdatasourceauth: "2026-02-19T15:48:52Z" + getDatasourceInstanceConfiguration: "2026-03-09T18:34:29Z" + updateDatasourceInstanceConfiguration: "2026-03-09T18:34:29Z" + getChatFile: "2026-06-05T03:54:47Z" + getPersonPhoto: "2026-06-05T03:54:47Z" + getActionPackAuthStatus: "2026-06-05T03:54:47Z" + authorizeActionPack: "2026-06-05T03:54:47Z" + put_/rest/api/index/document/{docId}/custom-metadata/{groupName}: "2026-06-05T03:54:47Z" + delete_/rest/api/index/document/{docId}/custom-metadata/{groupName}: "2026-06-05T03:54:47Z" + get_/rest/api/index/custom-metadata/schema/{groupName}: "2026-06-05T03:54:47Z" + put_/rest/api/index/custom-metadata/schema/{groupName}: "2026-06-05T03:54:47Z" + delete_/rest/api/index/custom-metadata/schema/{groupName}: "2026-06-05T03:54:47Z" + getDatasourceCredentialStatus: "2026-06-05T03:54:47Z" + rotateDatasourceCredentials: "2026-06-05T03:54:47Z" +releaseNotes: "## Python SDK Changes:\n* `glean.client.collections.add_items()`: `response` **Changed** (Breaking ⚠️)\n* `glean.chat.get_chat_file()`: **Added**\n* `glean.agents.edit_agent()`: **Added**\n* `glean.entities.get_person_photo()`: **Added**\n* `glean.tools.get_action_pack_auth_status()`: **Added**\n* `glean.tools.authorize_action_pack()`: **Added**\n* `glean.indexing.custom_metadata.upsert()`: **Added**\n* `glean.indexing.custom_metadata.delete()`: **Added**\n* `glean.indexing.custom_metadata.get_schema()`: **Added**\n* `glean.indexing.custom_metadata.upsert_schema()`: **Added**\n* `glean.indexing.custom_metadata.delete_schema()`: **Added**\n* `glean.troubleshooting.post_/api/index/v1/debug/{datasource}/document/events()`: **Added**\n* `glean.datasources.get_datasource_credential_status()`: **Added**\n* `glean.datasources.rotate_datasource_credentials()`: **Added**\n* `glean.client.activity.feedback()`: \n * `request.feedback1.category` **Changed**\n* `glean.client.announcements.create()`: \n * `request.body.structured_list[].document.metadata.author.related_documents[].results[].structured_results[].answer` **Changed**\n * `response` **Changed**\n* `glean.client.announcements.update()`: \n * `request.body.structured_list[].document.metadata.author.related_documents[].results[].structured_results[].answer` **Changed**\n * `response` **Changed**\n* `glean.client.answers.create()`: \n * `request.data.added_roles[].person.related_documents[]` **Changed**\n * `response` **Changed**\n* `glean.client.answers.update()`: \n * `request.added_roles[].person.related_documents[]` **Changed**\n * `response` **Changed**\n* `glean.client.answers.retrieve()`: `response.answer_result.answer` **Changed**\n* `glean.client.answers.list()`: `response.answer_results[].answer` **Changed**\n* `glean.client.chat.create()`: \n * `request.messages[].citations[].source_document.metadata.author.related_documents[].results[].structured_results[].answer` **Changed**\n * `response.messages[].citations[].source_document.metadata.author.related_documents[].results[].structured_results[].answer` **Changed**\n* `glean.client.chat.retrieve()`: `response.chat_result.chat.created_by.related_documents[]` **Changed**\n* `glean.client.chat.list()`: `response.chat_results[].chat.created_by.related_documents[]` **Changed**\n* `glean.client.chat.create_stream()`: \n * `request.messages[].citations[].source_document.metadata.author.related_documents[].results[].structured_results[].answer` **Changed**\n* `glean.client.collections.create()`: \n * `request.added_roles[].person.related_documents[]` **Changed**\n * `response.union(class (0))` **Changed**\n * `error_code.enum(corrupt_item)` **Added**\n* `glean.client.collections.delete()`: `error_code.enum(corrupt_item)` **Added**\n* `glean.client.collections.delete_item()`: `response.collection` **Changed**\n* `glean.client.collections.update()`: \n * `request.added_roles[].person.related_documents[]` **Changed**\n * `response` **Changed**\n * `error_code.enum(corrupt_item)` **Added**\n* `glean.client.collections.update_item()`: `response.collection` **Changed**\n* `glean.client.collections.retrieve()`: `response` **Changed**\n* `glean.client.collections.list()`: `response.collections[]` **Changed**\n* `glean.client.documents.retrieve()`: `response.documents.Map.union(Document).metadata.author.related_documents[].results[].structured_results[].answer` **Changed**\n* `glean.client.documents.retrieve_by_facets()`: `response.documents[].metadata.author.related_documents[].results[].structured_results[].answer` **Changed**\n* `glean.client.insights.retrieve()`: \n * `request` **Changed**\n * `response` **Changed**\n* `glean.client.messages.retrieve()`: `response.search_response.results[].structured_results[]` **Changed**\n* `glean.client.pins.update()`: `response.attribution.related_documents[]` **Changed**\n* `glean.client.pins.retrieve()`: `response.pin.attribution.related_documents[]` **Changed**\n* `glean.client.pins.list()`: `response.pins[].attribution.related_documents[]` **Changed**\n* `glean.client.pins.create()`: `response.attribution.related_documents[]` **Changed**\n* `glean.client.search.query_as_admin()`: \n * `request.source_document.metadata.author.related_documents[].results[].structured_results[].answer` **Changed**\n * `response.results[].structured_results[]` **Changed**\n* `glean.client.search.autocomplete()`: `response.results[].document.metadata.author.related_documents[].results[].structured_results[].answer` **Changed**\n* `glean.client.search.retrieve_feed()`: \n * `request.categories[]` **Changed**\n * `response.results[]` **Changed**\n* `glean.client.search.recommendations()`: \n * `request.source_document.metadata.author.related_documents[].results[].structured_results[].answer` **Changed**\n * `response.results[].structured_results[]` **Changed**\n* `glean.client.search.query()`: \n * `request.source_document.metadata.author.related_documents[].results[].structured_results[].answer` **Changed**\n * `response.results[].structured_results[]` **Changed**\n* `glean.client.entities.list()`: `response.results[].related_documents[]` **Changed**\n* `glean.client.entities.read_people()`: `response.results[].related_documents[]` **Changed**\n* `glean.client.shortcuts.create()`: \n * `request.data.added_roles[].person.related_documents[]` **Changed**\n * `response.shortcut.added_roles[].person.related_documents[]` **Changed**\n* `glean.client.shortcuts.retrieve()`: `response.shortcut.added_roles[].person.related_documents[]` **Changed**\n* `glean.client.shortcuts.list()`: `response.shortcuts[].added_roles[].person.related_documents[]` **Changed**\n* `glean.client.shortcuts.update()`: \n * `request.added_roles[].person.related_documents[]` **Changed**\n * `response.shortcut.added_roles[].person.related_documents[]` **Changed**\n* `glean.client.verification.add_reminder()`: `response.metadata.last_verifier.related_documents[]` **Changed**\n* `glean.client.verification.list()`: `response.documents[].metadata.last_verifier.related_documents[]` **Changed**\n* `glean.client.verification.verify()`: `response.metadata.last_verifier.related_documents[]` **Changed**\n" +generatedFiles: + - .devcontainer/README.md + - .devcontainer/devcontainer.json + - .devcontainer/setup.sh + - .gitattributes + - .vscode/settings.json + - USAGE.md + - docs/errors/collectionerror.md + - docs/errors/gleandataerror.md + - docs/models/activity.md + - docs/models/activityenum.md + - docs/models/activityevent.md + - docs/models/activityeventaction.md + - docs/models/activityeventparams.md + - docs/models/addcollectionitemserror.md + - docs/models/addcollectionitemserrorerrortype.md + - docs/models/addcollectionitemsrequest.md + - docs/models/addcollectionitemsresponse.md + - docs/models/additionalfielddefinition.md + - docs/models/agent.md + - docs/models/agentcapabilities.md + - docs/models/agentconfig.md + - docs/models/agentenum.md + - docs/models/agentexecutionstatus.md + - docs/models/agentmetadata.md + - docs/models/agentrun.md + - docs/models/agentruncreate.md + - docs/models/agentrunwaitresponse.md + - docs/models/agentschemas.md + - docs/models/agentsinsightsv2request.md + - docs/models/agentsinsightsv2response.md + - docs/models/agentsusagebydepartmentinsight.md + - docs/models/agentusersinsight.md + - docs/models/aiappactioncounts.md + - docs/models/aiappsinsightsresponse.md + - docs/models/aiinsightsresponse.md + - docs/models/allowlistoptions.md + - docs/models/announcement.md + - docs/models/announcementchannel.md + - docs/models/announcementposttype.md + - docs/models/announcementviewerinfo.md + - docs/models/anonymousevent.md + - docs/models/anonymouseventeventtype.md + - docs/models/answer.md + - docs/models/answerboard.md + - docs/models/answercreationdata.md + - docs/models/answercreationdatasourcetype.md + - docs/models/answerlike.md + - docs/models/answerlikes.md + - docs/models/answerresult.md + - docs/models/answersourcetype.md + - docs/models/appresult.md + - docs/models/assistantactivitytype.md + - docs/models/assistantinsightsresponse.md + - docs/models/authconfig.md + - docs/models/authconfigstatus.md + - docs/models/authconfigtype.md + - docs/models/author.md + - docs/models/authtoken.md + - docs/models/authtype.md + - docs/models/autocompleterequest.md + - docs/models/autocompleterequestresulttype.md + - docs/models/autocompleteresponse.md + - docs/models/autocompleteresult.md + - docs/models/autocompleteresultgroup.md + - docs/models/autocompleteresultresulttype.md + - docs/models/badge.md + - docs/models/bulkindexdocumentsrequest.md + - docs/models/bulkindexemployeesrequest.md + - docs/models/bulkindexgroupsrequest.md + - docs/models/bulkindexmembershipsrequest.md + - docs/models/bulkindexshortcutsrequest.md + - docs/models/bulkindexteamsrequest.md + - docs/models/bulkindexusersrequest.md + - docs/models/bulkuploadhistoryevent.md + - docs/models/bulkuploadhistoryeventstatus.md + - docs/models/calendarattendee.md + - docs/models/calendarattendees.md + - docs/models/calendarevent.md + - docs/models/calendareventeventtype.md + - docs/models/canonicalizingregextype.md + - docs/models/categorytoresultsize.md + - docs/models/channelinviteinfo.md + - docs/models/chat.md + - docs/models/chatfile.md + - docs/models/chatfilefailurereason.md + - docs/models/chatfilemetadata.md + - docs/models/chatfilestatus.md + - docs/models/chatmessage.md + - docs/models/chatmessagecitation.md + - docs/models/chatmessagefragment.md + - docs/models/chatmetadata.md + - docs/models/chatmetadataresult.md + - docs/models/chatrequest.md + - docs/models/chatrequestrequest.md + - docs/models/chatresponse.md + - docs/models/chatrestrictionfilters.md + - docs/models/chatresult.md + - docs/models/chatstreamrequest.md + - docs/models/chatsuggestion.md + - docs/models/chatzerostatesuggestionoptions.md + - docs/models/checkdocumentaccessrequest.md + - docs/models/checkdocumentaccessresponse.md + - docs/models/clustergroup.md + - docs/models/clustertypeenum.md + - docs/models/code.md + - docs/models/codeline.md + - docs/models/collection.md + - docs/models/collectionerror.md + - docs/models/collectionerrorerrorcode.md + - docs/models/collectionitem.md + - docs/models/collectionitemdescriptor.md + - docs/models/collectionitemdescriptoritemtype.md + - docs/models/collectionitemitemtype.md + - docs/models/collectionpinmetadata.md + - docs/models/collectionpinnablecategories.md + - docs/models/collectionpinnabletargets.md + - docs/models/collectionpinnedmetadata.md + - docs/models/collectionpintarget.md + - docs/models/commentdefinition.md + - docs/models/communicationchannel.md + - docs/models/company.md + - docs/models/conferencedata.md + - docs/models/conferencedatasource.md + - docs/models/connectortype.md + - docs/models/contentdefinition.md + - docs/models/contentinsightsresponse.md + - docs/models/contenttype.md + - docs/models/countinfo.md + - docs/models/createannouncementrequest.md + - docs/models/createannouncementrequestchannel.md + - docs/models/createannouncementrequestposttype.md + - docs/models/createanswerrequest.md + - docs/models/createauthtokenresponse.md + - docs/models/createcollectionrequest.md + - docs/models/createcollectionresponse.md + - docs/models/createdlpreportrequest.md + - docs/models/createdlpreportresponse.md + - docs/models/createshortcutrequest.md + - docs/models/createshortcutresponse.md + - docs/models/currentactiveusers.md + - docs/models/customdatasourceconfig.md + - docs/models/customdatasourceconfigconnectortype.md + - docs/models/customdatavalue.md + - docs/models/customentity.md + - docs/models/customentitymetadata.md + - docs/models/customer.md + - docs/models/customermetadata.md + - docs/models/customfielddata.md + - docs/models/customfieldvalue.md + - docs/models/customfieldvaluehyperlink.md + - docs/models/customfieldvalueperson.md + - docs/models/customfieldvaluestr.md + - docs/models/customproperty.md + - docs/models/datasource.md + - docs/models/datasourcebulkmembershipdefinition.md + - docs/models/datasourcecategory.md + - docs/models/datasourcegroupdefinition.md + - docs/models/datasourcemembershipdefinition.md + - docs/models/datasourceobjecttypedocumentcountentry.md + - docs/models/datasourceprofile.md + - docs/models/datasourcestype.md + - docs/models/datasourceuserdefinition.md + - docs/models/datasourcevisibility.md + - docs/models/debugdatasourcestatusidentityresponsecomponent.md + - docs/models/debugdatasourcestatusidentityresponsecomponentcounts.md + - docs/models/debugdatasourcestatusresponse.md + - docs/models/debugdatasourcestatusresponsecounts.md + - docs/models/debugdocumentrequest.md + - docs/models/debugdocumentresponse.md + - docs/models/debugdocumentsrequest.md + - docs/models/debugdocumentsresponse.md + - docs/models/debugdocumentsresponseitem.md + - docs/models/debuguserrequest.md + - docs/models/debuguserresponse.md + - docs/models/deleteallchatsrequest.md + - docs/models/deleteannouncementrequest.md + - docs/models/deleteanswerrequest.md + - docs/models/deletechatfilesrequest.md + - docs/models/deletechatfilesrequestrequest.md + - docs/models/deletechatsrequest.md + - docs/models/deletechatsrequestrequest.md + - docs/models/deletecollectionitemrequest.md + - docs/models/deletecollectionitemresponse.md + - docs/models/deletecollectionrequest.md + - docs/models/deletedocumentrequest.md + - docs/models/deleteemployeerequest.md + - docs/models/deletegrouprequest.md + - docs/models/deletemembershiprequest.md + - docs/models/deleteshortcutrequest.md + - docs/models/deleteteamrequest.md + - docs/models/deleteuserrequest.md + - docs/models/digest.md + - docs/models/digestsection.md + - docs/models/digestupdate.md + - docs/models/direction.md + - docs/models/disambiguation.md + - docs/models/displayablelistitemuiconfig.md + - docs/models/dlpconfig.md + - docs/models/dlpfrequency.md + - docs/models/dlpperson.md + - docs/models/dlppersonmetadata.md + - docs/models/dlpreport.md + - docs/models/dlpreportstatus.md + - docs/models/dlpsimpleresult.md + - docs/models/doccategory.md + - docs/models/document.md + - docs/models/documentcontent.md + - docs/models/documentdefinition.md + - docs/models/documentinsight.md + - docs/models/documentinteractions.md + - docs/models/documentinteractionsdefinition.md + - docs/models/documentmetadata.md + - docs/models/documentorerror.md + - docs/models/documentorerrorunion.md + - docs/models/documentpermissionsdefinition.md + - docs/models/documents.md + - docs/models/documentsection.md + - docs/models/documentspec1.md + - docs/models/documentspec2.md + - docs/models/documentspec3.md + - docs/models/documentspec4.md + - docs/models/documentspecugctype1.md + - docs/models/documentspecugctype2.md + - docs/models/documentspecunion.md + - docs/models/documentstatusresponse.md + - docs/models/documentvisibility.md + - docs/models/documentvisibilityoverride.md + - docs/models/documentvisibilityoverrideoverride.md + - docs/models/documentvisibilityupdateresult.md + - docs/models/documentvisibilityupdateresultoverride.md + - docs/models/downloadpolicycsvrequest.md + - docs/models/downloadreportcsvrequest.md + - docs/models/editanswerrequest.md + - docs/models/editanswerrequestsourcetype.md + - docs/models/editcollectionitemrequest.md + - docs/models/editcollectionitemresponse.md + - docs/models/editcollectionrequest.md + - docs/models/editcollectionresponse.md + - docs/models/editcollectionresponseerrorcode.md + - docs/models/editpinrequest.md + - docs/models/employeeinfodefinition.md + - docs/models/employeeteaminfo.md + - docs/models/entitiessortorder.md + - docs/models/entityrelationship.md + - docs/models/entitytype.md + - docs/models/error.md + - docs/models/errormessage.md + - docs/models/event.md + - docs/models/eventclassification.md + - docs/models/eventclassificationname.md + - docs/models/eventstrategyname.md + - docs/models/externalsharingoptions.md + - docs/models/externalshortcut.md + - docs/models/extractedqna.md + - docs/models/facetbucket.md + - docs/models/facetbucketfilter.md + - docs/models/facetfilter.md + - docs/models/facetfilterset.md + - docs/models/facetfiltervalue.md + - docs/models/facetresult.md + - docs/models/facetvalue.md + - docs/models/favoriteinfo.md + - docs/models/feedback.md + - docs/models/feedbackcategory.md + - docs/models/feedbackchannel.md + - docs/models/feedbackchatexchange.md + - docs/models/feedbackrequest.md + - docs/models/feedentry.md + - docs/models/feedrequest.md + - docs/models/feedrequestcategory.md + - docs/models/feedrequestoptions.md + - docs/models/feedresponse.md + - docs/models/feedresult.md + - docs/models/feedresultcategory.md + - docs/models/file.md + - docs/models/followupaction.md + - docs/models/format_.md + - docs/models/generatedattachment.md + - docs/models/generatedattachmentcontent.md + - docs/models/generatedqna.md + - docs/models/generatedqnastatus.md + - docs/models/getagentrequest.md + - docs/models/getagentschemasrequest.md + - docs/models/getanswererror.md + - docs/models/getanswererrorerrortype.md + - docs/models/getanswerrequest.md + - docs/models/getanswerresponse.md + - docs/models/getchatapplicationrequest.md + - docs/models/getchatapplicationrequestrequest.md + - docs/models/getchatapplicationresponse.md + - docs/models/getchatfilesrequest.md + - docs/models/getchatfilesrequestrequest.md + - docs/models/getchatfilesresponse.md + - docs/models/getchatrequest.md + - docs/models/getchatrequestrequest.md + - docs/models/getchatresponse.md + - docs/models/getcollectionrequest.md + - docs/models/getcollectionresponse.md + - docs/models/getdatasourceconfigrequest.md + - docs/models/getdlpreportresponse.md + - docs/models/getdocpermissionsrequest.md + - docs/models/getdocpermissionsresponse.md + - docs/models/getdocumentcountrequest.md + - docs/models/getdocumentcountresponse.md + - docs/models/getdocumentsbyfacetsrequest.md + - docs/models/getdocumentsbyfacetsresponse.md + - docs/models/getdocumentsrequest.md + - docs/models/getdocumentsrequestincludefield.md + - docs/models/getdocumentsresponse.md + - docs/models/getdocumentstatusrequest.md + - docs/models/getdocumentstatusresponse.md + - docs/models/getdocumentvisibilityoverridesresponse.md + - docs/models/getdocvisibilityrequest.md + - docs/models/getpinrequest.md + - docs/models/getpinresponse.md + - docs/models/getpolicyrequest.md + - docs/models/getreportstatusrequest.md + - docs/models/getrestapiv1toolslistrequest.md + - docs/models/getshortcutrequest.md + - docs/models/getshortcutrequestunion.md + - docs/models/getshortcutresponse.md + - docs/models/getusercountrequest.md + - docs/models/getusercountresponse.md + - docs/models/gleanassistinsightsresponse.md + - docs/models/gleandataerror.md + - docs/models/grantpermission.md + - docs/models/granttype.md + - docs/models/greenlistusersrequest.md + - docs/models/group.md + - docs/models/grouptype.md + - docs/models/hidebuiltinfacet.md + - docs/models/hotword.md + - docs/models/hotwordproximity.md + - docs/models/iconconfig.md + - docs/models/icontype.md + - docs/models/identity.md + - docs/models/idtype.md + - docs/models/includetype.md + - docs/models/indexdocumentrequest.md + - docs/models/indexdocumentsrequest.md + - docs/models/indexemployeerequest.md + - docs/models/indexgrouprequest.md + - docs/models/indexingshortcut.md + - docs/models/indexmembershiprequest.md + - docs/models/indexstatus.md + - docs/models/indexteamrequest.md + - docs/models/indexuserrequest.md + - docs/models/inputoptions.md + - docs/models/inputschema.md + - docs/models/insightsagentsrequestoptions.md + - docs/models/insightsaiapprequestoptions.md + - docs/models/insightsassistantrequest.md + - docs/models/insightschatsummary.md + - docs/models/insightsoverviewrequest.md + - docs/models/insightsoverviewresponse.md + - docs/models/insightsrequest.md + - docs/models/insightsrequestcategory.md + - docs/models/insightsresponse.md + - docs/models/insightssearchsummary.md + - docs/models/invalidoperatorvalueerror.md + - docs/models/inviteinfo.md + - docs/models/issue.md + - docs/models/justificationtype.md + - docs/models/knowledgetype.md + - docs/models/labeledcountinfo.md + - docs/models/lastscanstatus.md + - docs/models/likelihoodthreshold.md + - docs/models/listanswersrequest.md + - docs/models/listanswersresponse.md + - docs/models/listchatsrequest.md + - docs/models/listchatsresponse.md + - docs/models/listcollectionsrequest.md + - docs/models/listcollectionsresponse.md + - docs/models/listdlpreportsresponse.md + - docs/models/listentitiesrequest.md + - docs/models/listentitiesrequestentitytype.md + - docs/models/listentitiesrequestincludefield.md + - docs/models/listentitiesresponse.md + - docs/models/listpinsrequest.md + - docs/models/listpinsresponse.md + - docs/models/listpoliciesrequest.md + - docs/models/listshortcutspaginatedrequest.md + - docs/models/listshortcutspaginatedrequestincludefield.md + - docs/models/listshortcutspaginatedresponse.md + - docs/models/listverificationsrequest.md + - docs/models/manualfeedbackinfo.md + - docs/models/manualfeedbackinfosource.md + - docs/models/manualfeedbackinfovote.md + - docs/models/manualfeedbacksidebysideinfo.md + - docs/models/manualfeedbacksidebysideinfosource.md + - docs/models/manualfeedbacksidebysideinfovote.md + - docs/models/meeting.md + - docs/models/message.md + - docs/models/messagesrequest.md + - docs/models/messagesresponse.md + - docs/models/messagetextblock.md + - docs/models/messagetype.md + - docs/models/mode.md + - docs/models/objectdefinition.md + - docs/models/objectpermissions.md + - docs/models/operatormetadata.md + - docs/models/operatorscope.md + - docs/models/operatortype.md + - docs/models/orderby.md + - docs/models/outputschema.md + - docs/models/peoplerequest.md + - docs/models/peoplerequestincludefield.md + - docs/models/peopleresponse.md + - docs/models/peragentinsight.md + - docs/models/period.md + - docs/models/permissions.md + - docs/models/permissionsgroupintersectiondefinition.md + - docs/models/person.md + - docs/models/persondistance.md + - docs/models/personmetadata.md + - docs/models/personmetadatatype.md + - docs/models/personobject.md + - docs/models/personteam.md + - docs/models/personteamrelationship.md + - docs/models/persontoteamrelationship.md + - docs/models/persontoteamrelationshiprelationship.md + - docs/models/peruserassistantinsight.md + - docs/models/peruserinsight.md + - docs/models/pindocument.md + - docs/models/pinrequest.md + - docs/models/possiblevalue.md + - docs/models/postapiindexv1debugdatasourcedocumentrequest.md + - docs/models/postapiindexv1debugdatasourcedocumentsrequest.md + - docs/models/postapiindexv1debugdatasourcestatusrequest.md + - docs/models/postapiindexv1debugdatasourceuserrequest.md + - docs/models/processalldocumentsrequest.md + - docs/models/processallmembershipsrequest.md + - docs/models/processinghistoryevent.md + - docs/models/processingstate.md + - docs/models/prominence.md + - docs/models/prompttemplate.md + - docs/models/prompttemplateresult.md + - docs/models/propertydefinition.md + - docs/models/propertygroup.md + - docs/models/propertytype.md + - docs/models/provider.md + - docs/models/queryinsight.md + - docs/models/queryinsightsresponse.md + - docs/models/querysuggestion.md + - docs/models/querysuggestionlist.md + - docs/models/quicklink.md + - docs/models/reaction.md + - docs/models/readpermission.md + - docs/models/recommendationsrequest.md + - docs/models/recommendationsrequestoptions.md + - docs/models/referencerange.md + - docs/models/relateddocuments.md + - docs/models/relatedobject.md + - docs/models/relatedobjectedge.md + - docs/models/relatedobjectmetadata.md + - docs/models/relatedquestion.md + - docs/models/relation.md + - docs/models/relationtype.md + - docs/models/reminder.md + - docs/models/reminderrequest.md + - docs/models/reportstatusresponse.md + - docs/models/reportstatusresponsestatus.md + - docs/models/requesttype.md + - docs/models/responsebody1.md + - docs/models/responsebody2.md + - docs/models/responsehint.md + - docs/models/responsemetadata.md + - docs/models/responsestatus.md + - docs/models/restrictionfilters.md + - docs/models/resultdocument.md + - docs/models/resultsdescription.md + - docs/models/resultsresponse.md + - docs/models/resulttab.md + - docs/models/role.md + - docs/models/rotatetokenresponse.md + - docs/models/scope.md + - docs/models/scopetype.md + - docs/models/searchagentsrequest.md + - docs/models/searchagentsresponse.md + - docs/models/searchproviderinfo.md + - docs/models/searchrequest.md + - docs/models/searchrequestinputdetails.md + - docs/models/searchrequestoptions.md + - docs/models/searchresponse.md + - docs/models/searchresponsemetadata.md + - docs/models/searchresult.md + - docs/models/searchresultprominenceenum.md + - docs/models/searchresultsnippet.md + - docs/models/searchwarning.md + - docs/models/sectiontype.md + - docs/models/security.md + - docs/models/seenfeedbackinfo.md + - docs/models/sensitivecontentoptions.md + - docs/models/sensitiveexpression.md + - docs/models/sensitiveinfotype.md + - docs/models/sessioninfo.md + - docs/models/share.md + - docs/models/sharingoptions.md + - docs/models/shortcut.md + - docs/models/shortcuterror.md + - docs/models/shortcuterrorerrortype.md + - docs/models/shortcutinsight.md + - docs/models/shortcutinsightsresponse.md + - docs/models/shortcutmutableproperties.md + - docs/models/shortcutspaginationmetadata.md + - docs/models/sidebysideimplementation.md + - docs/models/socialnetwork.md + - docs/models/socialnetworkdefinition.md + - docs/models/sortoptions.md + - docs/models/state.md + - docs/models/structuredlink.md + - docs/models/structuredlocation.md + - docs/models/structuredresult.md + - docs/models/structuredresultsource.md + - docs/models/structuredtext.md + - docs/models/structuredtextitem.md + - docs/models/structuredtextmutableproperties.md + - docs/models/summarizerequest.md + - docs/models/summarizeresponse.md + - docs/models/summary.md + - docs/models/team.md + - docs/models/teamemail.md + - docs/models/teaminfodefinition.md + - docs/models/teammember.md + - docs/models/teamstatus.md + - docs/models/textrange.md + - docs/models/textrangetype.md + - docs/models/thumbnail.md + - docs/models/timeinterval.md + - docs/models/timeperiodtype.md + - docs/models/timepoint.md + - docs/models/timerange.md + - docs/models/tool.md + - docs/models/toolinfo.md + - docs/models/toolmetadata.md + - docs/models/toolmetadatatype.md + - docs/models/toolparameter.md + - docs/models/toolparametertype.md + - docs/models/toolscallparameter.md + - docs/models/toolscallrequest.md + - docs/models/toolscallresponse.md + - docs/models/toolsets.md + - docs/models/toolslistresponse.md + - docs/models/tooltype.md + - docs/models/ugctype.md + - docs/models/uiconfig.md + - docs/models/uioptions.md + - docs/models/unpin.md + - docs/models/updateannouncementrequest.md + - docs/models/updateannouncementrequestchannel.md + - docs/models/updateannouncementrequestposttype.md + - docs/models/updatedlpconfigrequest.md + - docs/models/updatedlpconfigresponse.md + - docs/models/updatedlpreportrequest.md + - docs/models/updatedlpreportresponse.md + - docs/models/updatedocumentvisibilityoverridesrequest.md + - docs/models/updatedocumentvisibilityoverridesresponse.md + - docs/models/updatepermissionsrequest.md + - docs/models/updatepolicyrequest.md + - docs/models/updateshortcutrequest.md + - docs/models/updateshortcutresponse.md + - docs/models/updatetype.md + - docs/models/uploadchatfilesrequest.md + - docs/models/uploadchatfilesrequestrequest.md + - docs/models/uploadchatfilesresponse.md + - docs/models/uploadshortcutsrequest.md + - docs/models/uploadstatusenum.md + - docs/models/user.md + - docs/models/useractivity.md + - docs/models/useractivityaction.md + - docs/models/useractivityinsight.md + - docs/models/usergeneratedcontentid.md + - docs/models/userinsightsresponse.md + - docs/models/userreferencedefinition.md + - docs/models/userrole.md + - docs/models/userrolespecification.md + - docs/models/userstatusresponse.md + - docs/models/userviewinfo.md + - docs/models/utils/retryconfig.md + - docs/models/value.md + - docs/models/verification.md + - docs/models/verificationfeed.md + - docs/models/verificationmetadata.md + - docs/models/verifyrequest.md + - docs/models/verifyrequestaction.md + - docs/models/viewerinfo.md + - docs/models/warningtype.md + - docs/models/workflow.md + - docs/models/workflowfeedbackinfo.md + - docs/models/workflowfeedbackinfosource.md + - docs/models/workflowresult.md + - docs/models/writeactionparameter.md + - docs/models/writeactionparametertype.md + - docs/models/writeactiontype.md + - docs/models/writepermission.md + - docs/sdks/agents/README.md + - docs/sdks/announcements/README.md + - docs/sdks/answers/README.md + - docs/sdks/clientactivity/README.md + - docs/sdks/clientauthentication/README.md + - docs/sdks/clientchat/README.md + - docs/sdks/clientdocuments/README.md + - docs/sdks/clientshortcuts/README.md + - docs/sdks/clientverification/README.md + - docs/sdks/collections/README.md + - docs/sdks/datasources/README.md + - docs/sdks/entities/README.md + - docs/sdks/indexingauthentication/README.md + - docs/sdks/indexingdatasource/README.md + - docs/sdks/indexingdocuments/README.md + - docs/sdks/indexingpermissions/README.md + - docs/sdks/indexingshortcuts/README.md + - docs/sdks/insights/README.md + - docs/sdks/messages/README.md + - docs/sdks/people/README.md + - docs/sdks/pins/README.md + - docs/sdks/policies/README.md + - docs/sdks/reports/README.md + - docs/sdks/search/README.md + - docs/sdks/tools/README.md + - docs/sdks/visibilityoverrides/README.md + - poetry.toml + - py.typed + - pylintrc + - scripts/prepare_readme.py + - scripts/publish.sh + - src/glean/api_client/__init__.py + - src/glean/api_client/_hooks/__init__.py + - src/glean/api_client/_hooks/sdkhooks.py + - src/glean/api_client/_hooks/types.py + - src/glean/api_client/_version.py + - src/glean/api_client/agents.py + - src/glean/api_client/announcements.py + - src/glean/api_client/answers.py + - src/glean/api_client/basesdk.py + - src/glean/api_client/client.py + - src/glean/api_client/client_activity.py + - src/glean/api_client/client_authentication.py + - src/glean/api_client/client_chat.py + - src/glean/api_client/client_documents.py + - src/glean/api_client/client_shortcuts.py + - src/glean/api_client/client_verification.py + - src/glean/api_client/collections.py + - src/glean/api_client/data.py + - src/glean/api_client/datasources.py + - src/glean/api_client/entities.py + - src/glean/api_client/errors/__init__.py + - src/glean/api_client/errors/collectionerror.py + - src/glean/api_client/errors/gleanbaseerror.py + - src/glean/api_client/errors/gleandataerror.py + - src/glean/api_client/errors/gleanerror.py + - src/glean/api_client/errors/no_response_error.py + - src/glean/api_client/errors/responsevalidationerror.py + - src/glean/api_client/governance.py + - src/glean/api_client/governance_documents.py + - src/glean/api_client/httpclient.py + - src/glean/api_client/indexing.py + - src/glean/api_client/indexing_authentication.py + - src/glean/api_client/indexing_datasource.py + - src/glean/api_client/indexing_documents.py + - src/glean/api_client/indexing_permissions.py + - src/glean/api_client/indexing_shortcuts.py + - src/glean/api_client/insights.py + - src/glean/api_client/messages.py + - src/glean/api_client/models/__init__.py + - src/glean/api_client/models/activity.py + - src/glean/api_client/models/activityevent.py + - src/glean/api_client/models/activityeventparams.py + - src/glean/api_client/models/addcollectionitemserror.py + - src/glean/api_client/models/addcollectionitemsrequest.py + - src/glean/api_client/models/addcollectionitemsresponse.py + - src/glean/api_client/models/additionalfielddefinition.py + - src/glean/api_client/models/agent.py + - src/glean/api_client/models/agentconfig.py + - src/glean/api_client/models/agentexecutionstatus.py + - src/glean/api_client/models/agentrun.py + - src/glean/api_client/models/agentruncreate.py + - src/glean/api_client/models/agentrunwaitresponse.py + - src/glean/api_client/models/agentschemas.py + - src/glean/api_client/models/agentsinsightsv2request.py + - src/glean/api_client/models/agentsinsightsv2response.py + - src/glean/api_client/models/agentsusagebydepartmentinsight.py + - src/glean/api_client/models/agentusersinsight.py + - src/glean/api_client/models/aiappactioncounts.py + - src/glean/api_client/models/aiappsinsightsresponse.py + - src/glean/api_client/models/aiinsightsresponse.py + - src/glean/api_client/models/allowlistoptions.py + - src/glean/api_client/models/announcement.py + - src/glean/api_client/models/anonymousevent.py + - src/glean/api_client/models/answer.py + - src/glean/api_client/models/answerboard.py + - src/glean/api_client/models/answercreationdata.py + - src/glean/api_client/models/answerlike.py + - src/glean/api_client/models/answerlikes.py + - src/glean/api_client/models/answerresult.py + - src/glean/api_client/models/appresult.py + - src/glean/api_client/models/assistantinsightsresponse.py + - src/glean/api_client/models/authconfig.py + - src/glean/api_client/models/authtoken.py + - src/glean/api_client/models/autocompleterequest.py + - src/glean/api_client/models/autocompleteresponse.py + - src/glean/api_client/models/autocompleteresult.py + - src/glean/api_client/models/autocompleteresultgroup.py + - src/glean/api_client/models/badge.py + - src/glean/api_client/models/bulkindexdocumentsrequest.py + - src/glean/api_client/models/bulkindexemployeesrequest.py + - src/glean/api_client/models/bulkindexgroupsrequest.py + - src/glean/api_client/models/bulkindexmembershipsrequest.py + - src/glean/api_client/models/bulkindexshortcutsrequest.py + - src/glean/api_client/models/bulkindexteamsrequest.py + - src/glean/api_client/models/bulkindexusersrequest.py + - src/glean/api_client/models/bulkuploadhistoryevent.py + - src/glean/api_client/models/calendarattendee.py + - src/glean/api_client/models/calendarattendees.py + - src/glean/api_client/models/calendarevent.py + - src/glean/api_client/models/canonicalizingregextype.py + - src/glean/api_client/models/channelinviteinfo.py + - src/glean/api_client/models/chat.py + - src/glean/api_client/models/chatfile.py + - src/glean/api_client/models/chatfilefailurereason.py + - src/glean/api_client/models/chatfilemetadata.py + - src/glean/api_client/models/chatfilestatus.py + - src/glean/api_client/models/chatmessage.py + - src/glean/api_client/models/chatmessagecitation.py + - src/glean/api_client/models/chatmessagefragment.py + - src/glean/api_client/models/chatmetadata.py + - src/glean/api_client/models/chatmetadataresult.py + - src/glean/api_client/models/chatop.py + - src/glean/api_client/models/chatrequest.py + - src/glean/api_client/models/chatresponse.py + - src/glean/api_client/models/chatrestrictionfilters.py + - src/glean/api_client/models/chatresult.py + - src/glean/api_client/models/chatstreamop.py + - src/glean/api_client/models/chatsuggestion.py + - src/glean/api_client/models/chatzerostatesuggestionoptions.py + - src/glean/api_client/models/checkdocumentaccessrequest.py + - src/glean/api_client/models/checkdocumentaccessresponse.py + - src/glean/api_client/models/clustergroup.py + - src/glean/api_client/models/clustertypeenum.py + - src/glean/api_client/models/code.py + - src/glean/api_client/models/codeline.py + - src/glean/api_client/models/collection.py + - src/glean/api_client/models/collectionerror.py + - src/glean/api_client/models/collectionitem.py + - src/glean/api_client/models/collectionitemdescriptor.py + - src/glean/api_client/models/collectionpinmetadata.py + - src/glean/api_client/models/collectionpinnablecategories.py + - src/glean/api_client/models/collectionpinnabletargets.py + - src/glean/api_client/models/collectionpinnedmetadata.py + - src/glean/api_client/models/collectionpintarget.py + - src/glean/api_client/models/commentdefinition.py + - src/glean/api_client/models/communicationchannel.py + - src/glean/api_client/models/company.py + - src/glean/api_client/models/conferencedata.py + - src/glean/api_client/models/connectortype.py + - src/glean/api_client/models/contentdefinition.py + - src/glean/api_client/models/contentinsightsresponse.py + - src/glean/api_client/models/contenttype.py + - src/glean/api_client/models/countinfo.py + - src/glean/api_client/models/createannouncementrequest.py + - src/glean/api_client/models/createanswerrequest.py + - src/glean/api_client/models/createauthtokenresponse.py + - src/glean/api_client/models/createcollectionop.py + - src/glean/api_client/models/createcollectionrequest.py + - src/glean/api_client/models/createdlpreportrequest.py + - src/glean/api_client/models/createdlpreportresponse.py + - src/glean/api_client/models/createshortcutrequest.py + - src/glean/api_client/models/createshortcutresponse.py + - src/glean/api_client/models/currentactiveusers.py + - src/glean/api_client/models/customdatasourceconfig.py + - src/glean/api_client/models/customdatavalue.py + - src/glean/api_client/models/customentity.py + - src/glean/api_client/models/customentitymetadata.py + - src/glean/api_client/models/customer.py + - src/glean/api_client/models/customermetadata.py + - src/glean/api_client/models/customfielddata.py + - src/glean/api_client/models/customfieldvalue.py + - src/glean/api_client/models/customfieldvaluehyperlink.py + - src/glean/api_client/models/customfieldvalueperson.py + - src/glean/api_client/models/customfieldvaluestr.py + - src/glean/api_client/models/customproperty.py + - src/glean/api_client/models/datasourcebulkmembershipdefinition.py + - src/glean/api_client/models/datasourcegroupdefinition.py + - src/glean/api_client/models/datasourcemembershipdefinition.py + - src/glean/api_client/models/datasourceobjecttypedocumentcountentry.py + - src/glean/api_client/models/datasourceprofile.py + - src/glean/api_client/models/datasourceuserdefinition.py + - src/glean/api_client/models/debugdatasourcestatusidentityresponsecomponent.py + - src/glean/api_client/models/debugdatasourcestatusresponse.py + - src/glean/api_client/models/debugdocumentrequest.py + - src/glean/api_client/models/debugdocumentresponse.py + - src/glean/api_client/models/debugdocumentsrequest.py + - src/glean/api_client/models/debugdocumentsresponse.py + - src/glean/api_client/models/debugdocumentsresponseitem.py + - src/glean/api_client/models/debuguserrequest.py + - src/glean/api_client/models/debuguserresponse.py + - src/glean/api_client/models/deleteallchatsop.py + - src/glean/api_client/models/deleteannouncementrequest.py + - src/glean/api_client/models/deleteanswerrequest.py + - src/glean/api_client/models/deletechatfilesop.py + - src/glean/api_client/models/deletechatfilesrequest.py + - src/glean/api_client/models/deletechatsop.py + - src/glean/api_client/models/deletechatsrequest.py + - src/glean/api_client/models/deletecollectionitemrequest.py + - src/glean/api_client/models/deletecollectionitemresponse.py + - src/glean/api_client/models/deletecollectionrequest.py + - src/glean/api_client/models/deletedocumentrequest.py + - src/glean/api_client/models/deleteemployeerequest.py + - src/glean/api_client/models/deletegrouprequest.py + - src/glean/api_client/models/deletemembershiprequest.py + - src/glean/api_client/models/deleteshortcutrequest.py + - src/glean/api_client/models/deleteteamrequest.py + - src/glean/api_client/models/deleteuserrequest.py + - src/glean/api_client/models/digest.py + - src/glean/api_client/models/digestsection.py + - src/glean/api_client/models/digestupdate.py + - src/glean/api_client/models/disambiguation.py + - src/glean/api_client/models/displayablelistitemuiconfig.py + - src/glean/api_client/models/dlpconfig.py + - src/glean/api_client/models/dlpfrequency.py + - src/glean/api_client/models/dlpperson.py + - src/glean/api_client/models/dlppersonmetadata.py + - src/glean/api_client/models/dlpreport.py + - src/glean/api_client/models/dlpreportstatus.py + - src/glean/api_client/models/dlpsimpleresult.py + - src/glean/api_client/models/document.py + - src/glean/api_client/models/documentcontent.py + - src/glean/api_client/models/documentdefinition.py + - src/glean/api_client/models/documentinsight.py + - src/glean/api_client/models/documentinteractions.py + - src/glean/api_client/models/documentinteractionsdefinition.py + - src/glean/api_client/models/documentmetadata.py + - src/glean/api_client/models/documentorerror_union.py + - src/glean/api_client/models/documentpermissionsdefinition.py + - src/glean/api_client/models/documentsection.py + - src/glean/api_client/models/documentspec_union.py + - src/glean/api_client/models/documentstatusresponse.py + - src/glean/api_client/models/documentvisibility.py + - src/glean/api_client/models/documentvisibilityoverride.py + - src/glean/api_client/models/documentvisibilityupdateresult.py + - src/glean/api_client/models/downloadpolicycsvop.py + - src/glean/api_client/models/downloadreportcsvop.py + - src/glean/api_client/models/editanswerrequest.py + - src/glean/api_client/models/editcollectionitemrequest.py + - src/glean/api_client/models/editcollectionitemresponse.py + - src/glean/api_client/models/editcollectionrequest.py + - src/glean/api_client/models/editcollectionresponse.py + - src/glean/api_client/models/editpinrequest.py + - src/glean/api_client/models/employeeinfodefinition.py + - src/glean/api_client/models/employeeteaminfo.py + - src/glean/api_client/models/entitiessortorder.py + - src/glean/api_client/models/entityrelationship.py + - src/glean/api_client/models/entitytype.py + - src/glean/api_client/models/errormessage.py + - src/glean/api_client/models/eventclassification.py + - src/glean/api_client/models/eventclassificationname.py + - src/glean/api_client/models/eventstrategyname.py + - src/glean/api_client/models/externalsharingoptions.py + - src/glean/api_client/models/externalshortcut.py + - src/glean/api_client/models/extractedqna.py + - src/glean/api_client/models/facetbucket.py + - src/glean/api_client/models/facetbucketfilter.py + - src/glean/api_client/models/facetfilter.py + - src/glean/api_client/models/facetfilterset.py + - src/glean/api_client/models/facetfiltervalue.py + - src/glean/api_client/models/facetresult.py + - src/glean/api_client/models/facetvalue.py + - src/glean/api_client/models/favoriteinfo.py + - src/glean/api_client/models/feedback.py + - src/glean/api_client/models/feedbackchatexchange.py + - src/glean/api_client/models/feedbackop.py + - src/glean/api_client/models/feedentry.py + - src/glean/api_client/models/feedrequest.py + - src/glean/api_client/models/feedrequestoptions.py + - src/glean/api_client/models/feedresponse.py + - src/glean/api_client/models/feedresult.py + - src/glean/api_client/models/followupaction.py + - src/glean/api_client/models/generatedattachment.py + - src/glean/api_client/models/generatedattachmentcontent.py + - src/glean/api_client/models/generatedqna.py + - src/glean/api_client/models/get_rest_api_v1_tools_listop.py + - src/glean/api_client/models/getagentop.py + - src/glean/api_client/models/getagentschemasop.py + - src/glean/api_client/models/getanswererror.py + - src/glean/api_client/models/getanswerrequest.py + - src/glean/api_client/models/getanswerresponse.py + - src/glean/api_client/models/getchatapplicationop.py + - src/glean/api_client/models/getchatapplicationrequest.py + - src/glean/api_client/models/getchatapplicationresponse.py + - src/glean/api_client/models/getchatfilesop.py + - src/glean/api_client/models/getchatfilesrequest.py + - src/glean/api_client/models/getchatfilesresponse.py + - src/glean/api_client/models/getchatop.py + - src/glean/api_client/models/getchatrequest.py + - src/glean/api_client/models/getchatresponse.py + - src/glean/api_client/models/getcollectionrequest.py + - src/glean/api_client/models/getcollectionresponse.py + - src/glean/api_client/models/getdatasourceconfigrequest.py + - src/glean/api_client/models/getdlpreportresponse.py + - src/glean/api_client/models/getdocpermissionsrequest.py + - src/glean/api_client/models/getdocpermissionsresponse.py + - src/glean/api_client/models/getdocumentcountrequest.py + - src/glean/api_client/models/getdocumentcountresponse.py + - src/glean/api_client/models/getdocumentsbyfacetsrequest.py + - src/glean/api_client/models/getdocumentsbyfacetsresponse.py + - src/glean/api_client/models/getdocumentsrequest.py + - src/glean/api_client/models/getdocumentsresponse.py + - src/glean/api_client/models/getdocumentstatusrequest.py + - src/glean/api_client/models/getdocumentstatusresponse.py + - src/glean/api_client/models/getdocumentvisibilityoverridesresponse.py + - src/glean/api_client/models/getdocvisibilityop.py + - src/glean/api_client/models/getpinrequest.py + - src/glean/api_client/models/getpinresponse.py + - src/glean/api_client/models/getpolicyop.py + - src/glean/api_client/models/getreportstatusop.py + - src/glean/api_client/models/getshortcutrequest_union.py + - src/glean/api_client/models/getshortcutresponse.py + - src/glean/api_client/models/getusercountrequest.py + - src/glean/api_client/models/getusercountresponse.py + - src/glean/api_client/models/gleanassistinsightsresponse.py + - src/glean/api_client/models/gleandataerror.py + - src/glean/api_client/models/grantpermission.py + - src/glean/api_client/models/greenlistusersrequest.py + - src/glean/api_client/models/group.py + - src/glean/api_client/models/grouptype.py + - src/glean/api_client/models/hotword.py + - src/glean/api_client/models/hotwordproximity.py + - src/glean/api_client/models/iconconfig.py + - src/glean/api_client/models/indexdocumentrequest.py + - src/glean/api_client/models/indexdocumentsrequest.py + - src/glean/api_client/models/indexemployeerequest.py + - src/glean/api_client/models/indexgrouprequest.py + - src/glean/api_client/models/indexingshortcut.py + - src/glean/api_client/models/indexmembershiprequest.py + - src/glean/api_client/models/indexstatus.py + - src/glean/api_client/models/indexteamrequest.py + - src/glean/api_client/models/indexuserrequest.py + - src/glean/api_client/models/inputoptions.py + - src/glean/api_client/models/insightsagentsrequestoptions.py + - src/glean/api_client/models/insightsaiapprequestoptions.py + - src/glean/api_client/models/insightsassistantrequest.py + - src/glean/api_client/models/insightschatsummary.py + - src/glean/api_client/models/insightsoverviewrequest.py + - src/glean/api_client/models/insightsoverviewresponse.py + - src/glean/api_client/models/insightsrequest.py + - src/glean/api_client/models/insightsresponse.py + - src/glean/api_client/models/insightssearchsummary.py + - src/glean/api_client/models/invalidoperatorvalueerror.py + - src/glean/api_client/models/inviteinfo.py + - src/glean/api_client/models/labeledcountinfo.py + - src/glean/api_client/models/listanswersrequest.py + - src/glean/api_client/models/listanswersresponse.py + - src/glean/api_client/models/listchatsop.py + - src/glean/api_client/models/listchatsresponse.py + - src/glean/api_client/models/listcollectionsrequest.py + - src/glean/api_client/models/listcollectionsresponse.py + - src/glean/api_client/models/listdlpreportsresponse.py + - src/glean/api_client/models/listentitiesrequest.py + - src/glean/api_client/models/listentitiesresponse.py + - src/glean/api_client/models/listpinsop.py + - src/glean/api_client/models/listpinsresponse.py + - src/glean/api_client/models/listpoliciesop.py + - src/glean/api_client/models/listshortcutspaginatedrequest.py + - src/glean/api_client/models/listshortcutspaginatedresponse.py + - src/glean/api_client/models/listverificationsop.py + - src/glean/api_client/models/manualfeedbackinfo.py + - src/glean/api_client/models/manualfeedbacksidebysideinfo.py + - src/glean/api_client/models/meeting.py + - src/glean/api_client/models/message.py + - src/glean/api_client/models/messagesrequest.py + - src/glean/api_client/models/messagesresponse.py + - src/glean/api_client/models/objectdefinition.py + - src/glean/api_client/models/objectpermissions.py + - src/glean/api_client/models/operatormetadata.py + - src/glean/api_client/models/operatorscope.py + - src/glean/api_client/models/peoplerequest.py + - src/glean/api_client/models/peopleresponse.py + - src/glean/api_client/models/peragentinsight.py + - src/glean/api_client/models/period.py + - src/glean/api_client/models/permissions.py + - src/glean/api_client/models/permissionsgroupintersectiondefinition.py + - src/glean/api_client/models/person.py + - src/glean/api_client/models/persondistance.py + - src/glean/api_client/models/personmetadata.py + - src/glean/api_client/models/personobject.py + - src/glean/api_client/models/personteam.py + - src/glean/api_client/models/persontoteamrelationship.py + - src/glean/api_client/models/peruserassistantinsight.py + - src/glean/api_client/models/peruserinsight.py + - src/glean/api_client/models/pindocument.py + - src/glean/api_client/models/pinrequest.py + - src/glean/api_client/models/possiblevalue.py + - src/glean/api_client/models/post_api_index_v1_debug_datasource_documentop.py + - src/glean/api_client/models/post_api_index_v1_debug_datasource_documentsop.py + - src/glean/api_client/models/post_api_index_v1_debug_datasource_statusop.py + - src/glean/api_client/models/post_api_index_v1_debug_datasource_userop.py + - src/glean/api_client/models/processalldocumentsrequest.py + - src/glean/api_client/models/processallmembershipsrequest.py + - src/glean/api_client/models/processinghistoryevent.py + - src/glean/api_client/models/prompttemplate.py + - src/glean/api_client/models/prompttemplateresult.py + - src/glean/api_client/models/propertydefinition.py + - src/glean/api_client/models/propertygroup.py + - src/glean/api_client/models/queryinsight.py + - src/glean/api_client/models/queryinsightsresponse.py + - src/glean/api_client/models/querysuggestion.py + - src/glean/api_client/models/querysuggestionlist.py + - src/glean/api_client/models/quicklink.py + - src/glean/api_client/models/reaction.py + - src/glean/api_client/models/readpermission.py + - src/glean/api_client/models/recommendationsrequest.py + - src/glean/api_client/models/recommendationsrequestoptions.py + - src/glean/api_client/models/referencerange.py + - src/glean/api_client/models/relateddocuments.py + - src/glean/api_client/models/relatedobject.py + - src/glean/api_client/models/relatedobjectedge.py + - src/glean/api_client/models/relatedquestion.py + - src/glean/api_client/models/reminder.py + - src/glean/api_client/models/reminderrequest.py + - src/glean/api_client/models/reportstatusresponse.py + - src/glean/api_client/models/restrictionfilters.py + - src/glean/api_client/models/resultsdescription.py + - src/glean/api_client/models/resultsresponse.py + - src/glean/api_client/models/resulttab.py + - src/glean/api_client/models/rotatetokenresponse.py + - src/glean/api_client/models/scopetype.py + - src/glean/api_client/models/searchagentsrequest.py + - src/glean/api_client/models/searchagentsresponse.py + - src/glean/api_client/models/searchproviderinfo.py + - src/glean/api_client/models/searchrequest.py + - src/glean/api_client/models/searchrequestinputdetails.py + - src/glean/api_client/models/searchrequestoptions.py + - src/glean/api_client/models/searchresponse.py + - src/glean/api_client/models/searchresponsemetadata.py + - src/glean/api_client/models/searchresult.py + - src/glean/api_client/models/searchresultprominenceenum.py + - src/glean/api_client/models/searchresultsnippet.py + - src/glean/api_client/models/searchwarning.py + - src/glean/api_client/models/sectiontype.py + - src/glean/api_client/models/security.py + - src/glean/api_client/models/seenfeedbackinfo.py + - src/glean/api_client/models/sensitivecontentoptions.py + - src/glean/api_client/models/sensitiveexpression.py + - src/glean/api_client/models/sensitiveinfotype.py + - src/glean/api_client/models/sessioninfo.py + - src/glean/api_client/models/share.py + - src/glean/api_client/models/sharingoptions.py + - src/glean/api_client/models/shortcut.py + - src/glean/api_client/models/shortcuterror.py + - src/glean/api_client/models/shortcutinsight.py + - src/glean/api_client/models/shortcutinsightsresponse.py + - src/glean/api_client/models/shortcutmutableproperties.py + - src/glean/api_client/models/shortcutspaginationmetadata.py + - src/glean/api_client/models/sidebysideimplementation.py + - src/glean/api_client/models/socialnetwork.py + - src/glean/api_client/models/socialnetworkdefinition.py + - src/glean/api_client/models/sortoptions.py + - src/glean/api_client/models/structuredlink.py + - src/glean/api_client/models/structuredlocation.py + - src/glean/api_client/models/structuredresult.py + - src/glean/api_client/models/structuredtext.py + - src/glean/api_client/models/structuredtextitem.py + - src/glean/api_client/models/structuredtextmutableproperties.py + - src/glean/api_client/models/summarizerequest.py + - src/glean/api_client/models/summarizeresponse.py + - src/glean/api_client/models/summary.py + - src/glean/api_client/models/team.py + - src/glean/api_client/models/teamemail.py + - src/glean/api_client/models/teaminfodefinition.py + - src/glean/api_client/models/teammember.py + - src/glean/api_client/models/textrange.py + - src/glean/api_client/models/thumbnail.py + - src/glean/api_client/models/timeinterval.py + - src/glean/api_client/models/timepoint.py + - src/glean/api_client/models/timerange.py + - src/glean/api_client/models/tool.py + - src/glean/api_client/models/toolinfo.py + - src/glean/api_client/models/toolmetadata.py + - src/glean/api_client/models/toolparameter.py + - src/glean/api_client/models/toolscallparameter.py + - src/glean/api_client/models/toolscallrequest.py + - src/glean/api_client/models/toolscallresponse.py + - src/glean/api_client/models/toolsets.py + - src/glean/api_client/models/toolslistresponse.py + - src/glean/api_client/models/ugctype.py + - src/glean/api_client/models/unpin.py + - src/glean/api_client/models/updateannouncementrequest.py + - src/glean/api_client/models/updatedlpconfigrequest.py + - src/glean/api_client/models/updatedlpconfigresponse.py + - src/glean/api_client/models/updatedlpreportrequest.py + - src/glean/api_client/models/updatedlpreportresponse.py + - src/glean/api_client/models/updatedocumentvisibilityoverridesrequest.py + - src/glean/api_client/models/updatedocumentvisibilityoverridesresponse.py + - src/glean/api_client/models/updatepermissionsrequest.py + - src/glean/api_client/models/updatepolicyop.py + - src/glean/api_client/models/updateshortcutrequest.py + - src/glean/api_client/models/updateshortcutresponse.py + - src/glean/api_client/models/updatetype.py + - src/glean/api_client/models/uploadchatfilesop.py + - src/glean/api_client/models/uploadchatfilesrequest.py + - src/glean/api_client/models/uploadchatfilesresponse.py + - src/glean/api_client/models/uploadshortcutsrequest.py + - src/glean/api_client/models/uploadstatusenum.py + - src/glean/api_client/models/user.py + - src/glean/api_client/models/useractivity.py + - src/glean/api_client/models/useractivityinsight.py + - src/glean/api_client/models/usergeneratedcontentid.py + - src/glean/api_client/models/userinsightsresponse.py + - src/glean/api_client/models/userreferencedefinition.py + - src/glean/api_client/models/userrole.py + - src/glean/api_client/models/userrolespecification.py + - src/glean/api_client/models/userstatusresponse.py + - src/glean/api_client/models/userviewinfo.py + - src/glean/api_client/models/verification.py + - src/glean/api_client/models/verificationfeed.py + - src/glean/api_client/models/verificationmetadata.py + - src/glean/api_client/models/verifyrequest.py + - src/glean/api_client/models/viewerinfo.py + - src/glean/api_client/models/workflow.py + - src/glean/api_client/models/workflowfeedbackinfo.py + - src/glean/api_client/models/workflowresult.py + - src/glean/api_client/models/writeactionparameter.py + - src/glean/api_client/models/writepermission.py + - src/glean/api_client/people.py + - src/glean/api_client/pins.py + - src/glean/api_client/policies.py + - src/glean/api_client/py.typed + - src/glean/api_client/reports.py + - src/glean/api_client/sdk.py + - src/glean/api_client/sdkconfiguration.py + - src/glean/api_client/search.py + - src/glean/api_client/tools.py + - src/glean/api_client/types/__init__.py + - src/glean/api_client/types/basemodel.py + - src/glean/api_client/utils/__init__.py + - src/glean/api_client/utils/annotations.py + - src/glean/api_client/utils/datetimes.py + - src/glean/api_client/utils/enums.py + - src/glean/api_client/utils/eventstreaming.py + - src/glean/api_client/utils/forms.py + - src/glean/api_client/utils/headers.py + - src/glean/api_client/utils/logger.py + - src/glean/api_client/utils/metadata.py + - src/glean/api_client/utils/queryparams.py + - src/glean/api_client/utils/requestbodies.py + - src/glean/api_client/utils/retries.py + - src/glean/api_client/utils/security.py + - src/glean/api_client/utils/serializers.py + - src/glean/api_client/utils/unmarshal_json_response.py + - src/glean/api_client/utils/url.py + - src/glean/api_client/utils/values.py + - src/glean/api_client/visibilityoverrides.py + - tests/__init__.py + - tests/mockserver/.gitignore + - tests/mockserver/Dockerfile + - tests/mockserver/Makefile + - tests/mockserver/README.md + - tests/mockserver/go.mod + - tests/mockserver/go.sum + - tests/mockserver/internal/handler/assert/contenttype.go + - tests/mockserver/internal/handler/assert/header.go + - tests/mockserver/internal/handler/assert/parameter.go + - tests/mockserver/internal/handler/assert/pointer.go + - tests/mockserver/internal/handler/assert/security.go + - tests/mockserver/internal/handler/doc.go + - tests/mockserver/internal/handler/generated_handler.go + - tests/mockserver/internal/handler/generated_handlers.go + - tests/mockserver/internal/handler/pathgetrestapiv1agentsagentid.go + - tests/mockserver/internal/handler/pathgetrestapiv1agentsagentidschemas.go + - tests/mockserver/internal/handler/pathgetrestapiv1governancedatapolicies.go + - tests/mockserver/internal/handler/pathgetrestapiv1governancedatapoliciesid.go + - tests/mockserver/internal/handler/pathgetrestapiv1toolslist.go + - tests/mockserver/internal/handler/pathpostapiindexv1adddatasource.go + - tests/mockserver/internal/handler/pathpostapiindexv1betausers.go + - tests/mockserver/internal/handler/pathpostapiindexv1bulkindexdocuments.go + - tests/mockserver/internal/handler/pathpostapiindexv1bulkindexgroups.go + - tests/mockserver/internal/handler/pathpostapiindexv1bulkindexmemberships.go + - tests/mockserver/internal/handler/pathpostapiindexv1bulkindexusers.go + - tests/mockserver/internal/handler/pathpostapiindexv1checkdocumentaccess.go + - tests/mockserver/internal/handler/pathpostapiindexv1deletedocument.go + - tests/mockserver/internal/handler/pathpostapiindexv1deletegroup.go + - tests/mockserver/internal/handler/pathpostapiindexv1deletemembership.go + - tests/mockserver/internal/handler/pathpostapiindexv1deleteuser.go + - tests/mockserver/internal/handler/pathpostapiindexv1getdatasourceconfig.go + - tests/mockserver/internal/handler/pathpostapiindexv1getdocumentcount.go + - tests/mockserver/internal/handler/pathpostapiindexv1getdocumentstatus.go + - tests/mockserver/internal/handler/pathpostapiindexv1getusercount.go + - tests/mockserver/internal/handler/pathpostapiindexv1indexdocument.go + - tests/mockserver/internal/handler/pathpostapiindexv1indexdocuments.go + - tests/mockserver/internal/handler/pathpostapiindexv1indexgroup.go + - tests/mockserver/internal/handler/pathpostapiindexv1indexmembership.go + - tests/mockserver/internal/handler/pathpostapiindexv1indexuser.go + - tests/mockserver/internal/handler/pathpostapiindexv1processalldocuments.go + - tests/mockserver/internal/handler/pathpostapiindexv1processallemployeesandteams.go + - tests/mockserver/internal/handler/pathpostapiindexv1processallmemberships.go + - tests/mockserver/internal/handler/pathpostapiindexv1rotatetoken.go + - tests/mockserver/internal/handler/pathpostapiindexv1updatepermissions.go + - tests/mockserver/internal/handler/pathpostrestapiv1activity.go + - tests/mockserver/internal/handler/pathpostrestapiv1addcollectionitems.go + - tests/mockserver/internal/handler/pathpostrestapiv1addverificationreminder.go + - tests/mockserver/internal/handler/pathpostrestapiv1adminsearch.go + - tests/mockserver/internal/handler/pathpostrestapiv1autocomplete.go + - tests/mockserver/internal/handler/pathpostrestapiv1chat.go + - tests/mockserver/internal/handler/pathpostrestapiv1createannouncement.go + - tests/mockserver/internal/handler/pathpostrestapiv1createanswer.go + - tests/mockserver/internal/handler/pathpostrestapiv1createauthtoken.go + - tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go + - tests/mockserver/internal/handler/pathpostrestapiv1createshortcut.go + - tests/mockserver/internal/handler/pathpostrestapiv1deleteallchats.go + - tests/mockserver/internal/handler/pathpostrestapiv1deleteannouncement.go + - tests/mockserver/internal/handler/pathpostrestapiv1deleteanswer.go + - tests/mockserver/internal/handler/pathpostrestapiv1deletechatfiles.go + - tests/mockserver/internal/handler/pathpostrestapiv1deletechats.go + - tests/mockserver/internal/handler/pathpostrestapiv1deletecollection.go + - tests/mockserver/internal/handler/pathpostrestapiv1deletecollectionitem.go + - tests/mockserver/internal/handler/pathpostrestapiv1deleteshortcut.go + - tests/mockserver/internal/handler/pathpostrestapiv1editanswer.go + - tests/mockserver/internal/handler/pathpostrestapiv1editcollection.go + - tests/mockserver/internal/handler/pathpostrestapiv1editcollectionitem.go + - tests/mockserver/internal/handler/pathpostrestapiv1editpin.go + - tests/mockserver/internal/handler/pathpostrestapiv1feed.go + - tests/mockserver/internal/handler/pathpostrestapiv1feedback.go + - tests/mockserver/internal/handler/pathpostrestapiv1getanswer.go + - tests/mockserver/internal/handler/pathpostrestapiv1getchat.go + - tests/mockserver/internal/handler/pathpostrestapiv1getchatapplication.go + - tests/mockserver/internal/handler/pathpostrestapiv1getchatfiles.go + - tests/mockserver/internal/handler/pathpostrestapiv1getcollection.go + - tests/mockserver/internal/handler/pathpostrestapiv1getdocpermissions.go + - tests/mockserver/internal/handler/pathpostrestapiv1getdocuments.go + - tests/mockserver/internal/handler/pathpostrestapiv1getdocumentsbyfacets.go + - tests/mockserver/internal/handler/pathpostrestapiv1getpin.go + - tests/mockserver/internal/handler/pathpostrestapiv1getshortcut.go + - tests/mockserver/internal/handler/pathpostrestapiv1insights.go + - tests/mockserver/internal/handler/pathpostrestapiv1listanswers.go + - tests/mockserver/internal/handler/pathpostrestapiv1listchats.go + - tests/mockserver/internal/handler/pathpostrestapiv1listcollections.go + - tests/mockserver/internal/handler/pathpostrestapiv1listentities.go + - tests/mockserver/internal/handler/pathpostrestapiv1listpins.go + - tests/mockserver/internal/handler/pathpostrestapiv1listshortcuts.go + - tests/mockserver/internal/handler/pathpostrestapiv1listverifications.go + - tests/mockserver/internal/handler/pathpostrestapiv1messages.go + - tests/mockserver/internal/handler/pathpostrestapiv1people.go + - tests/mockserver/internal/handler/pathpostrestapiv1pin.go + - tests/mockserver/internal/handler/pathpostrestapiv1recommendations.go + - tests/mockserver/internal/handler/pathpostrestapiv1search.go + - tests/mockserver/internal/handler/pathpostrestapiv1summarize.go + - tests/mockserver/internal/handler/pathpostrestapiv1toolscall.go + - tests/mockserver/internal/handler/pathpostrestapiv1unpin.go + - tests/mockserver/internal/handler/pathpostrestapiv1updateannouncement.go + - tests/mockserver/internal/handler/pathpostrestapiv1updateshortcut.go + - tests/mockserver/internal/handler/pathpostrestapiv1verify.go + - tests/mockserver/internal/handler/values/files.go + - tests/mockserver/internal/logging/doc.go + - tests/mockserver/internal/logging/formats.go + - tests/mockserver/internal/logging/http_file.go + - tests/mockserver/internal/logging/http_logger.go + - tests/mockserver/internal/logging/levels.go + - tests/mockserver/internal/logging/logger.go + - tests/mockserver/internal/logging/oas_operation.go + - tests/mockserver/internal/logging/oas_operation_call.go + - tests/mockserver/internal/sdk/models/components/activity.go + - tests/mockserver/internal/sdk/models/components/activityevent.go + - tests/mockserver/internal/sdk/models/components/activityeventparams.go + - tests/mockserver/internal/sdk/models/components/addcollectionitemserror.go + - tests/mockserver/internal/sdk/models/components/addcollectionitemsrequest.go + - tests/mockserver/internal/sdk/models/components/addcollectionitemsresponse.go + - tests/mockserver/internal/sdk/models/components/additionalfielddefinition.go + - tests/mockserver/internal/sdk/models/components/agent.go + - tests/mockserver/internal/sdk/models/components/agentconfig.go + - tests/mockserver/internal/sdk/models/components/agentexecutionstatus.go + - tests/mockserver/internal/sdk/models/components/agentrun.go + - tests/mockserver/internal/sdk/models/components/agentruncreate.go + - tests/mockserver/internal/sdk/models/components/agentrunwaitresponse.go + - tests/mockserver/internal/sdk/models/components/agentschemas.go + - tests/mockserver/internal/sdk/models/components/agentsinsightsv2request.go + - tests/mockserver/internal/sdk/models/components/agentsinsightsv2response.go + - tests/mockserver/internal/sdk/models/components/agentsusagebydepartmentinsight.go + - tests/mockserver/internal/sdk/models/components/agentusersinsight.go + - tests/mockserver/internal/sdk/models/components/aiappactioncounts.go + - tests/mockserver/internal/sdk/models/components/aiappsinsightsresponse.go + - tests/mockserver/internal/sdk/models/components/aiinsightsresponse.go + - tests/mockserver/internal/sdk/models/components/allowlistoptions.go + - tests/mockserver/internal/sdk/models/components/announcement.go + - tests/mockserver/internal/sdk/models/components/anonymousevent.go + - tests/mockserver/internal/sdk/models/components/answer.go + - tests/mockserver/internal/sdk/models/components/answerboard.go + - tests/mockserver/internal/sdk/models/components/answercreationdata.go + - tests/mockserver/internal/sdk/models/components/answerlike.go + - tests/mockserver/internal/sdk/models/components/answerlikes.go + - tests/mockserver/internal/sdk/models/components/answerresult.go + - tests/mockserver/internal/sdk/models/components/appresult.go + - tests/mockserver/internal/sdk/models/components/assistantinsightsresponse.go + - tests/mockserver/internal/sdk/models/components/authconfig.go + - tests/mockserver/internal/sdk/models/components/authtoken.go + - tests/mockserver/internal/sdk/models/components/autocompleterequest.go + - tests/mockserver/internal/sdk/models/components/autocompleteresponse.go + - tests/mockserver/internal/sdk/models/components/autocompleteresult.go + - tests/mockserver/internal/sdk/models/components/autocompleteresultgroup.go + - tests/mockserver/internal/sdk/models/components/badge.go + - tests/mockserver/internal/sdk/models/components/bulkindexdocumentsrequest.go + - tests/mockserver/internal/sdk/models/components/bulkindexemployeesrequest.go + - tests/mockserver/internal/sdk/models/components/bulkindexgroupsrequest.go + - tests/mockserver/internal/sdk/models/components/bulkindexmembershipsrequest.go + - tests/mockserver/internal/sdk/models/components/bulkindexshortcutsrequest.go + - tests/mockserver/internal/sdk/models/components/bulkindexteamsrequest.go + - tests/mockserver/internal/sdk/models/components/bulkindexusersrequest.go + - tests/mockserver/internal/sdk/models/components/bulkuploadhistoryevent.go + - tests/mockserver/internal/sdk/models/components/calendarattendee.go + - tests/mockserver/internal/sdk/models/components/calendarattendees.go + - tests/mockserver/internal/sdk/models/components/calendarevent.go + - tests/mockserver/internal/sdk/models/components/canonicalizingregextype.go + - tests/mockserver/internal/sdk/models/components/channelinviteinfo.go + - tests/mockserver/internal/sdk/models/components/chat.go + - tests/mockserver/internal/sdk/models/components/chatfile.go + - tests/mockserver/internal/sdk/models/components/chatfilefailurereason.go + - tests/mockserver/internal/sdk/models/components/chatfilemetadata.go + - tests/mockserver/internal/sdk/models/components/chatfilestatus.go + - tests/mockserver/internal/sdk/models/components/chatmessage.go + - tests/mockserver/internal/sdk/models/components/chatmessagecitation.go + - tests/mockserver/internal/sdk/models/components/chatmessagefragment.go + - tests/mockserver/internal/sdk/models/components/chatmetadata.go + - tests/mockserver/internal/sdk/models/components/chatmetadataresult.go + - tests/mockserver/internal/sdk/models/components/chatrequest.go + - tests/mockserver/internal/sdk/models/components/chatresponse.go + - tests/mockserver/internal/sdk/models/components/chatrestrictionfilters.go + - tests/mockserver/internal/sdk/models/components/chatresult.go + - tests/mockserver/internal/sdk/models/components/chatsuggestion.go + - tests/mockserver/internal/sdk/models/components/chatzerostatesuggestionoptions.go + - tests/mockserver/internal/sdk/models/components/checkdocumentaccessrequest.go + - tests/mockserver/internal/sdk/models/components/checkdocumentaccessresponse.go + - tests/mockserver/internal/sdk/models/components/clustergroup.go + - tests/mockserver/internal/sdk/models/components/clustertypeenum.go + - tests/mockserver/internal/sdk/models/components/code.go + - tests/mockserver/internal/sdk/models/components/codeline.go + - tests/mockserver/internal/sdk/models/components/collection.go + - tests/mockserver/internal/sdk/models/components/collectionerror.go + - tests/mockserver/internal/sdk/models/components/collectionitem.go + - tests/mockserver/internal/sdk/models/components/collectionitemdescriptor.go + - tests/mockserver/internal/sdk/models/components/collectionpinmetadata.go + - tests/mockserver/internal/sdk/models/components/collectionpinnablecategories.go + - tests/mockserver/internal/sdk/models/components/collectionpinnabletargets.go + - tests/mockserver/internal/sdk/models/components/collectionpinnedmetadata.go + - tests/mockserver/internal/sdk/models/components/collectionpintarget.go + - tests/mockserver/internal/sdk/models/components/commentdefinition.go + - tests/mockserver/internal/sdk/models/components/communicationchannel.go + - tests/mockserver/internal/sdk/models/components/company.go + - tests/mockserver/internal/sdk/models/components/conferencedata.go + - tests/mockserver/internal/sdk/models/components/connectortype.go + - tests/mockserver/internal/sdk/models/components/contentdefinition.go + - tests/mockserver/internal/sdk/models/components/contentinsightsresponse.go + - tests/mockserver/internal/sdk/models/components/contenttype.go + - tests/mockserver/internal/sdk/models/components/countinfo.go + - tests/mockserver/internal/sdk/models/components/createannouncementrequest.go + - tests/mockserver/internal/sdk/models/components/createanswerrequest.go + - tests/mockserver/internal/sdk/models/components/createauthtokenresponse.go + - tests/mockserver/internal/sdk/models/components/createcollectionrequest.go + - tests/mockserver/internal/sdk/models/components/createdlpreportrequest.go + - tests/mockserver/internal/sdk/models/components/createdlpreportresponse.go + - tests/mockserver/internal/sdk/models/components/createshortcutrequest.go + - tests/mockserver/internal/sdk/models/components/createshortcutresponse.go + - tests/mockserver/internal/sdk/models/components/currentactiveusers.go + - tests/mockserver/internal/sdk/models/components/customdatasourceconfig.go + - tests/mockserver/internal/sdk/models/components/customdatavalue.go + - tests/mockserver/internal/sdk/models/components/customentity.go + - tests/mockserver/internal/sdk/models/components/customentitymetadata.go + - tests/mockserver/internal/sdk/models/components/customer.go + - tests/mockserver/internal/sdk/models/components/customermetadata.go + - tests/mockserver/internal/sdk/models/components/customfielddata.go + - tests/mockserver/internal/sdk/models/components/customfieldvalue.go + - tests/mockserver/internal/sdk/models/components/customfieldvaluehyperlink.go + - tests/mockserver/internal/sdk/models/components/customfieldvalueperson.go + - tests/mockserver/internal/sdk/models/components/customfieldvaluestr.go + - tests/mockserver/internal/sdk/models/components/customproperty.go + - tests/mockserver/internal/sdk/models/components/datasourcebulkmembershipdefinition.go + - tests/mockserver/internal/sdk/models/components/datasourcegroupdefinition.go + - tests/mockserver/internal/sdk/models/components/datasourcemembershipdefinition.go + - tests/mockserver/internal/sdk/models/components/datasourceobjecttypedocumentcountentry.go + - tests/mockserver/internal/sdk/models/components/datasourceprofile.go + - tests/mockserver/internal/sdk/models/components/datasourceuserdefinition.go + - tests/mockserver/internal/sdk/models/components/debugdatasourcestatusidentityresponsecomponent.go + - tests/mockserver/internal/sdk/models/components/debugdatasourcestatusresponse.go + - tests/mockserver/internal/sdk/models/components/debugdocumentrequest.go + - tests/mockserver/internal/sdk/models/components/debugdocumentresponse.go + - tests/mockserver/internal/sdk/models/components/debugdocumentsrequest.go + - tests/mockserver/internal/sdk/models/components/debugdocumentsresponse.go + - tests/mockserver/internal/sdk/models/components/debugdocumentsresponseitem.go + - tests/mockserver/internal/sdk/models/components/debuguserrequest.go + - tests/mockserver/internal/sdk/models/components/debuguserresponse.go + - tests/mockserver/internal/sdk/models/components/deleteannouncementrequest.go + - tests/mockserver/internal/sdk/models/components/deleteanswerrequest.go + - tests/mockserver/internal/sdk/models/components/deletechatfilesrequest.go + - tests/mockserver/internal/sdk/models/components/deletechatsrequest.go + - tests/mockserver/internal/sdk/models/components/deletecollectionitemrequest.go + - tests/mockserver/internal/sdk/models/components/deletecollectionitemresponse.go + - tests/mockserver/internal/sdk/models/components/deletecollectionrequest.go + - tests/mockserver/internal/sdk/models/components/deletedocumentrequest.go + - tests/mockserver/internal/sdk/models/components/deleteemployeerequest.go + - tests/mockserver/internal/sdk/models/components/deletegrouprequest.go + - tests/mockserver/internal/sdk/models/components/deletemembershiprequest.go + - tests/mockserver/internal/sdk/models/components/deleteshortcutrequest.go + - tests/mockserver/internal/sdk/models/components/deleteteamrequest.go + - tests/mockserver/internal/sdk/models/components/deleteuserrequest.go + - tests/mockserver/internal/sdk/models/components/digest.go + - tests/mockserver/internal/sdk/models/components/digestsection.go + - tests/mockserver/internal/sdk/models/components/digestupdate.go + - tests/mockserver/internal/sdk/models/components/disambiguation.go + - tests/mockserver/internal/sdk/models/components/displayablelistitemuiconfig.go + - tests/mockserver/internal/sdk/models/components/dlpconfig.go + - tests/mockserver/internal/sdk/models/components/dlpfrequency.go + - tests/mockserver/internal/sdk/models/components/dlpperson.go + - tests/mockserver/internal/sdk/models/components/dlppersonmetadata.go + - tests/mockserver/internal/sdk/models/components/dlpreport.go + - tests/mockserver/internal/sdk/models/components/dlpreportstatus.go + - tests/mockserver/internal/sdk/models/components/dlpsimpleresult.go + - tests/mockserver/internal/sdk/models/components/document.go + - tests/mockserver/internal/sdk/models/components/documentcontent.go + - tests/mockserver/internal/sdk/models/components/documentdefinition.go + - tests/mockserver/internal/sdk/models/components/documentinsight.go + - tests/mockserver/internal/sdk/models/components/documentinteractions.go + - tests/mockserver/internal/sdk/models/components/documentinteractionsdefinition.go + - tests/mockserver/internal/sdk/models/components/documentmetadata.go + - tests/mockserver/internal/sdk/models/components/documentorerrorunion.go + - tests/mockserver/internal/sdk/models/components/documentpermissionsdefinition.go + - tests/mockserver/internal/sdk/models/components/documentsection.go + - tests/mockserver/internal/sdk/models/components/documentspecunion.go + - tests/mockserver/internal/sdk/models/components/documentstatusresponse.go + - tests/mockserver/internal/sdk/models/components/documentvisibility.go + - tests/mockserver/internal/sdk/models/components/documentvisibilityoverride.go + - tests/mockserver/internal/sdk/models/components/documentvisibilityupdateresult.go + - tests/mockserver/internal/sdk/models/components/editanswerrequest.go + - tests/mockserver/internal/sdk/models/components/editcollectionitemrequest.go + - tests/mockserver/internal/sdk/models/components/editcollectionitemresponse.go + - tests/mockserver/internal/sdk/models/components/editcollectionrequest.go + - tests/mockserver/internal/sdk/models/components/editcollectionresponse.go + - tests/mockserver/internal/sdk/models/components/editpinrequest.go + - tests/mockserver/internal/sdk/models/components/employeeinfodefinition.go + - tests/mockserver/internal/sdk/models/components/employeeteaminfo.go + - tests/mockserver/internal/sdk/models/components/entitiessortorder.go + - tests/mockserver/internal/sdk/models/components/entityrelationship.go + - tests/mockserver/internal/sdk/models/components/entitytype.go + - tests/mockserver/internal/sdk/models/components/errormessage.go + - tests/mockserver/internal/sdk/models/components/eventclassification.go + - tests/mockserver/internal/sdk/models/components/eventclassificationname.go + - tests/mockserver/internal/sdk/models/components/eventstrategyname.go + - tests/mockserver/internal/sdk/models/components/externalsharingoptions.go + - tests/mockserver/internal/sdk/models/components/externalshortcut.go + - tests/mockserver/internal/sdk/models/components/extractedqna.go + - tests/mockserver/internal/sdk/models/components/facetbucket.go + - tests/mockserver/internal/sdk/models/components/facetbucketfilter.go + - tests/mockserver/internal/sdk/models/components/facetfilter.go + - tests/mockserver/internal/sdk/models/components/facetfilterset.go + - tests/mockserver/internal/sdk/models/components/facetfiltervalue.go + - tests/mockserver/internal/sdk/models/components/facetresult.go + - tests/mockserver/internal/sdk/models/components/facetvalue.go + - tests/mockserver/internal/sdk/models/components/favoriteinfo.go + - tests/mockserver/internal/sdk/models/components/feedback.go + - tests/mockserver/internal/sdk/models/components/feedbackchatexchange.go + - tests/mockserver/internal/sdk/models/components/feedentry.go + - tests/mockserver/internal/sdk/models/components/feedrequest.go + - tests/mockserver/internal/sdk/models/components/feedrequestoptions.go + - tests/mockserver/internal/sdk/models/components/feedresponse.go + - tests/mockserver/internal/sdk/models/components/feedresult.go + - tests/mockserver/internal/sdk/models/components/followupaction.go + - tests/mockserver/internal/sdk/models/components/generatedattachment.go + - tests/mockserver/internal/sdk/models/components/generatedattachmentcontent.go + - tests/mockserver/internal/sdk/models/components/generatedqna.go + - tests/mockserver/internal/sdk/models/components/getanswererror.go + - tests/mockserver/internal/sdk/models/components/getanswerrequest.go + - tests/mockserver/internal/sdk/models/components/getanswerresponse.go + - tests/mockserver/internal/sdk/models/components/getchatapplicationrequest.go + - tests/mockserver/internal/sdk/models/components/getchatapplicationresponse.go + - tests/mockserver/internal/sdk/models/components/getchatfilesrequest.go + - tests/mockserver/internal/sdk/models/components/getchatfilesresponse.go + - tests/mockserver/internal/sdk/models/components/getchatrequest.go + - tests/mockserver/internal/sdk/models/components/getchatresponse.go + - tests/mockserver/internal/sdk/models/components/getcollectionrequest.go + - tests/mockserver/internal/sdk/models/components/getcollectionresponse.go + - tests/mockserver/internal/sdk/models/components/getdatasourceconfigrequest.go + - tests/mockserver/internal/sdk/models/components/getdlpreportresponse.go + - tests/mockserver/internal/sdk/models/components/getdocpermissionsrequest.go + - tests/mockserver/internal/sdk/models/components/getdocpermissionsresponse.go + - tests/mockserver/internal/sdk/models/components/getdocumentcountrequest.go + - tests/mockserver/internal/sdk/models/components/getdocumentcountresponse.go + - tests/mockserver/internal/sdk/models/components/getdocumentsbyfacetsrequest.go + - tests/mockserver/internal/sdk/models/components/getdocumentsbyfacetsresponse.go + - tests/mockserver/internal/sdk/models/components/getdocumentsrequest.go + - tests/mockserver/internal/sdk/models/components/getdocumentsresponse.go + - tests/mockserver/internal/sdk/models/components/getdocumentstatusrequest.go + - tests/mockserver/internal/sdk/models/components/getdocumentstatusresponse.go + - tests/mockserver/internal/sdk/models/components/getdocumentvisibilityoverridesresponse.go + - tests/mockserver/internal/sdk/models/components/getpinrequest.go + - tests/mockserver/internal/sdk/models/components/getpinresponse.go + - tests/mockserver/internal/sdk/models/components/getshortcutrequestunion.go + - tests/mockserver/internal/sdk/models/components/getshortcutresponse.go + - tests/mockserver/internal/sdk/models/components/getusercountrequest.go + - tests/mockserver/internal/sdk/models/components/getusercountresponse.go + - tests/mockserver/internal/sdk/models/components/gleanassistinsightsresponse.go + - tests/mockserver/internal/sdk/models/components/gleandataerror.go + - tests/mockserver/internal/sdk/models/components/grantpermission.go + - tests/mockserver/internal/sdk/models/components/greenlistusersrequest.go + - tests/mockserver/internal/sdk/models/components/group.go + - tests/mockserver/internal/sdk/models/components/grouptype.go + - tests/mockserver/internal/sdk/models/components/hotword.go + - tests/mockserver/internal/sdk/models/components/hotwordproximity.go + - tests/mockserver/internal/sdk/models/components/httpmetadata.go + - tests/mockserver/internal/sdk/models/components/iconconfig.go + - tests/mockserver/internal/sdk/models/components/indexdocumentrequest.go + - tests/mockserver/internal/sdk/models/components/indexdocumentsrequest.go + - tests/mockserver/internal/sdk/models/components/indexemployeerequest.go + - tests/mockserver/internal/sdk/models/components/indexgrouprequest.go + - tests/mockserver/internal/sdk/models/components/indexingshortcut.go + - tests/mockserver/internal/sdk/models/components/indexmembershiprequest.go + - tests/mockserver/internal/sdk/models/components/indexstatus.go + - tests/mockserver/internal/sdk/models/components/indexteamrequest.go + - tests/mockserver/internal/sdk/models/components/indexuserrequest.go + - tests/mockserver/internal/sdk/models/components/inputoptions.go + - tests/mockserver/internal/sdk/models/components/insightsagentsrequestoptions.go + - tests/mockserver/internal/sdk/models/components/insightsaiapprequestoptions.go + - tests/mockserver/internal/sdk/models/components/insightsassistantrequest.go + - tests/mockserver/internal/sdk/models/components/insightschatsummary.go + - tests/mockserver/internal/sdk/models/components/insightsoverviewrequest.go + - tests/mockserver/internal/sdk/models/components/insightsoverviewresponse.go + - tests/mockserver/internal/sdk/models/components/insightsrequest.go + - tests/mockserver/internal/sdk/models/components/insightsresponse.go + - tests/mockserver/internal/sdk/models/components/insightssearchsummary.go + - tests/mockserver/internal/sdk/models/components/invalidoperatorvalueerror.go + - tests/mockserver/internal/sdk/models/components/inviteinfo.go + - tests/mockserver/internal/sdk/models/components/labeledcountinfo.go + - tests/mockserver/internal/sdk/models/components/listanswersrequest.go + - tests/mockserver/internal/sdk/models/components/listanswersresponse.go + - tests/mockserver/internal/sdk/models/components/listchatsresponse.go + - tests/mockserver/internal/sdk/models/components/listcollectionsrequest.go + - tests/mockserver/internal/sdk/models/components/listcollectionsresponse.go + - tests/mockserver/internal/sdk/models/components/listdlpreportsresponse.go + - tests/mockserver/internal/sdk/models/components/listentitiesrequest.go + - tests/mockserver/internal/sdk/models/components/listentitiesresponse.go + - tests/mockserver/internal/sdk/models/components/listpinsresponse.go + - tests/mockserver/internal/sdk/models/components/listshortcutspaginatedrequest.go + - tests/mockserver/internal/sdk/models/components/listshortcutspaginatedresponse.go + - tests/mockserver/internal/sdk/models/components/manualfeedbackinfo.go + - tests/mockserver/internal/sdk/models/components/manualfeedbacksidebysideinfo.go + - tests/mockserver/internal/sdk/models/components/meeting.go + - tests/mockserver/internal/sdk/models/components/message.go + - tests/mockserver/internal/sdk/models/components/messagesrequest.go + - tests/mockserver/internal/sdk/models/components/messagesresponse.go + - tests/mockserver/internal/sdk/models/components/objectdefinition.go + - tests/mockserver/internal/sdk/models/components/objectpermissions.go + - tests/mockserver/internal/sdk/models/components/operatormetadata.go + - tests/mockserver/internal/sdk/models/components/operatorscope.go + - tests/mockserver/internal/sdk/models/components/peoplerequest.go + - tests/mockserver/internal/sdk/models/components/peopleresponse.go + - tests/mockserver/internal/sdk/models/components/peragentinsight.go + - tests/mockserver/internal/sdk/models/components/period.go + - tests/mockserver/internal/sdk/models/components/permissions.go + - tests/mockserver/internal/sdk/models/components/permissionsgroupintersectiondefinition.go + - tests/mockserver/internal/sdk/models/components/person.go + - tests/mockserver/internal/sdk/models/components/persondistance.go + - tests/mockserver/internal/sdk/models/components/personmetadata.go + - tests/mockserver/internal/sdk/models/components/personobject.go + - tests/mockserver/internal/sdk/models/components/personteam.go + - tests/mockserver/internal/sdk/models/components/persontoteamrelationship.go + - tests/mockserver/internal/sdk/models/components/peruserassistantinsight.go + - tests/mockserver/internal/sdk/models/components/peruserinsight.go + - tests/mockserver/internal/sdk/models/components/pindocument.go + - tests/mockserver/internal/sdk/models/components/pinrequest.go + - tests/mockserver/internal/sdk/models/components/possiblevalue.go + - tests/mockserver/internal/sdk/models/components/processalldocumentsrequest.go + - tests/mockserver/internal/sdk/models/components/processallmembershipsrequest.go + - tests/mockserver/internal/sdk/models/components/processinghistoryevent.go + - tests/mockserver/internal/sdk/models/components/prompttemplate.go + - tests/mockserver/internal/sdk/models/components/prompttemplateresult.go + - tests/mockserver/internal/sdk/models/components/propertydefinition.go + - tests/mockserver/internal/sdk/models/components/propertygroup.go + - tests/mockserver/internal/sdk/models/components/queryinsight.go + - tests/mockserver/internal/sdk/models/components/queryinsightsresponse.go + - tests/mockserver/internal/sdk/models/components/querysuggestion.go + - tests/mockserver/internal/sdk/models/components/querysuggestionlist.go + - tests/mockserver/internal/sdk/models/components/quicklink.go + - tests/mockserver/internal/sdk/models/components/reaction.go + - tests/mockserver/internal/sdk/models/components/readpermission.go + - tests/mockserver/internal/sdk/models/components/recommendationsrequest.go + - tests/mockserver/internal/sdk/models/components/recommendationsrequestoptions.go + - tests/mockserver/internal/sdk/models/components/referencerange.go + - tests/mockserver/internal/sdk/models/components/relateddocuments.go + - tests/mockserver/internal/sdk/models/components/relatedobject.go + - tests/mockserver/internal/sdk/models/components/relatedobjectedge.go + - tests/mockserver/internal/sdk/models/components/relatedquestion.go + - tests/mockserver/internal/sdk/models/components/reminder.go + - tests/mockserver/internal/sdk/models/components/reminderrequest.go + - tests/mockserver/internal/sdk/models/components/reportstatusresponse.go + - tests/mockserver/internal/sdk/models/components/restrictionfilters.go + - tests/mockserver/internal/sdk/models/components/resultsdescription.go + - tests/mockserver/internal/sdk/models/components/resultsresponse.go + - tests/mockserver/internal/sdk/models/components/resulttab.go + - tests/mockserver/internal/sdk/models/components/rotatetokenresponse.go + - tests/mockserver/internal/sdk/models/components/scopetype.go + - tests/mockserver/internal/sdk/models/components/searchagentsrequest.go + - tests/mockserver/internal/sdk/models/components/searchagentsresponse.go + - tests/mockserver/internal/sdk/models/components/searchproviderinfo.go + - tests/mockserver/internal/sdk/models/components/searchrequest.go + - tests/mockserver/internal/sdk/models/components/searchrequestinputdetails.go + - tests/mockserver/internal/sdk/models/components/searchrequestoptions.go + - tests/mockserver/internal/sdk/models/components/searchresponse.go + - tests/mockserver/internal/sdk/models/components/searchresponsemetadata.go + - tests/mockserver/internal/sdk/models/components/searchresult.go + - tests/mockserver/internal/sdk/models/components/searchresultprominenceenum.go + - tests/mockserver/internal/sdk/models/components/searchresultsnippet.go + - tests/mockserver/internal/sdk/models/components/searchwarning.go + - tests/mockserver/internal/sdk/models/components/sectiontype.go + - tests/mockserver/internal/sdk/models/components/security.go + - tests/mockserver/internal/sdk/models/components/seenfeedbackinfo.go + - tests/mockserver/internal/sdk/models/components/sensitivecontentoptions.go + - tests/mockserver/internal/sdk/models/components/sensitiveexpression.go + - tests/mockserver/internal/sdk/models/components/sensitiveinfotype.go + - tests/mockserver/internal/sdk/models/components/sessioninfo.go + - tests/mockserver/internal/sdk/models/components/share.go + - tests/mockserver/internal/sdk/models/components/sharingoptions.go + - tests/mockserver/internal/sdk/models/components/shortcut.go + - tests/mockserver/internal/sdk/models/components/shortcuterror.go + - tests/mockserver/internal/sdk/models/components/shortcutinsight.go + - tests/mockserver/internal/sdk/models/components/shortcutinsightsresponse.go + - tests/mockserver/internal/sdk/models/components/shortcutmutableproperties.go + - tests/mockserver/internal/sdk/models/components/shortcutspaginationmetadata.go + - tests/mockserver/internal/sdk/models/components/sidebysideimplementation.go + - tests/mockserver/internal/sdk/models/components/socialnetwork.go + - tests/mockserver/internal/sdk/models/components/socialnetworkdefinition.go + - tests/mockserver/internal/sdk/models/components/sortoptions.go + - tests/mockserver/internal/sdk/models/components/structuredlink.go + - tests/mockserver/internal/sdk/models/components/structuredlocation.go + - tests/mockserver/internal/sdk/models/components/structuredresult.go + - tests/mockserver/internal/sdk/models/components/structuredtext.go + - tests/mockserver/internal/sdk/models/components/structuredtextitem.go + - tests/mockserver/internal/sdk/models/components/structuredtextmutableproperties.go + - tests/mockserver/internal/sdk/models/components/summarizerequest.go + - tests/mockserver/internal/sdk/models/components/summarizeresponse.go + - tests/mockserver/internal/sdk/models/components/summary.go + - tests/mockserver/internal/sdk/models/components/team.go + - tests/mockserver/internal/sdk/models/components/teamemail.go + - tests/mockserver/internal/sdk/models/components/teaminfodefinition.go + - tests/mockserver/internal/sdk/models/components/teammember.go + - tests/mockserver/internal/sdk/models/components/textrange.go + - tests/mockserver/internal/sdk/models/components/thumbnail.go + - tests/mockserver/internal/sdk/models/components/timeinterval.go + - tests/mockserver/internal/sdk/models/components/timepoint.go + - tests/mockserver/internal/sdk/models/components/timerange.go + - tests/mockserver/internal/sdk/models/components/tool.go + - tests/mockserver/internal/sdk/models/components/toolinfo.go + - tests/mockserver/internal/sdk/models/components/toolmetadata.go + - tests/mockserver/internal/sdk/models/components/toolparameter.go + - tests/mockserver/internal/sdk/models/components/toolscallparameter.go + - tests/mockserver/internal/sdk/models/components/toolscallrequest.go + - tests/mockserver/internal/sdk/models/components/toolscallresponse.go + - tests/mockserver/internal/sdk/models/components/toolsets.go + - tests/mockserver/internal/sdk/models/components/toolslistresponse.go + - tests/mockserver/internal/sdk/models/components/ugctype.go + - tests/mockserver/internal/sdk/models/components/unpin.go + - tests/mockserver/internal/sdk/models/components/updateannouncementrequest.go + - tests/mockserver/internal/sdk/models/components/updatedlpconfigrequest.go + - tests/mockserver/internal/sdk/models/components/updatedlpconfigresponse.go + - tests/mockserver/internal/sdk/models/components/updatedlpreportrequest.go + - tests/mockserver/internal/sdk/models/components/updatedlpreportresponse.go + - tests/mockserver/internal/sdk/models/components/updatedocumentvisibilityoverridesrequest.go + - tests/mockserver/internal/sdk/models/components/updatedocumentvisibilityoverridesresponse.go + - tests/mockserver/internal/sdk/models/components/updatepermissionsrequest.go + - tests/mockserver/internal/sdk/models/components/updateshortcutrequest.go + - tests/mockserver/internal/sdk/models/components/updateshortcutresponse.go + - tests/mockserver/internal/sdk/models/components/updatetype.go + - tests/mockserver/internal/sdk/models/components/uploadchatfilesrequest.go + - tests/mockserver/internal/sdk/models/components/uploadchatfilesresponse.go + - tests/mockserver/internal/sdk/models/components/uploadshortcutsrequest.go + - tests/mockserver/internal/sdk/models/components/uploadstatusenum.go + - tests/mockserver/internal/sdk/models/components/user.go + - tests/mockserver/internal/sdk/models/components/useractivity.go + - tests/mockserver/internal/sdk/models/components/useractivityinsight.go + - tests/mockserver/internal/sdk/models/components/usergeneratedcontentid.go + - tests/mockserver/internal/sdk/models/components/userinsightsresponse.go + - tests/mockserver/internal/sdk/models/components/userreferencedefinition.go + - tests/mockserver/internal/sdk/models/components/userrole.go + - tests/mockserver/internal/sdk/models/components/userrolespecification.go + - tests/mockserver/internal/sdk/models/components/userstatusresponse.go + - tests/mockserver/internal/sdk/models/components/userviewinfo.go + - tests/mockserver/internal/sdk/models/components/verification.go + - tests/mockserver/internal/sdk/models/components/verificationfeed.go + - tests/mockserver/internal/sdk/models/components/verificationmetadata.go + - tests/mockserver/internal/sdk/models/components/verifyrequest.go + - tests/mockserver/internal/sdk/models/components/viewerinfo.go + - tests/mockserver/internal/sdk/models/components/workflow.go + - tests/mockserver/internal/sdk/models/components/workflowfeedbackinfo.go + - tests/mockserver/internal/sdk/models/components/workflowresult.go + - tests/mockserver/internal/sdk/models/components/writeactionparameter.go + - tests/mockserver/internal/sdk/models/components/writepermission.go + - tests/mockserver/internal/sdk/models/operations/activity.go + - tests/mockserver/internal/sdk/models/operations/addcollectionitems.go + - tests/mockserver/internal/sdk/models/operations/addverificationreminder.go + - tests/mockserver/internal/sdk/models/operations/adminsearch.go + - tests/mockserver/internal/sdk/models/operations/autocomplete.go + - tests/mockserver/internal/sdk/models/operations/chat.go + - tests/mockserver/internal/sdk/models/operations/chatstream.go + - tests/mockserver/internal/sdk/models/operations/createandstreamrun.go + - tests/mockserver/internal/sdk/models/operations/createandwaitrun.go + - tests/mockserver/internal/sdk/models/operations/createannouncement.go + - tests/mockserver/internal/sdk/models/operations/createanswer.go + - tests/mockserver/internal/sdk/models/operations/createauthtoken.go + - tests/mockserver/internal/sdk/models/operations/createcollection.go + - tests/mockserver/internal/sdk/models/operations/createpolicy.go + - tests/mockserver/internal/sdk/models/operations/createreport.go + - tests/mockserver/internal/sdk/models/operations/createshortcut.go + - tests/mockserver/internal/sdk/models/operations/deleteallchats.go + - tests/mockserver/internal/sdk/models/operations/deleteannouncement.go + - tests/mockserver/internal/sdk/models/operations/deleteanswer.go + - tests/mockserver/internal/sdk/models/operations/deletechatfiles.go + - tests/mockserver/internal/sdk/models/operations/deletechats.go + - tests/mockserver/internal/sdk/models/operations/deletecollection.go + - tests/mockserver/internal/sdk/models/operations/deletecollectionitem.go + - tests/mockserver/internal/sdk/models/operations/deleteshortcut.go + - tests/mockserver/internal/sdk/models/operations/downloadpolicycsv.go + - tests/mockserver/internal/sdk/models/operations/downloadreportcsv.go + - tests/mockserver/internal/sdk/models/operations/editanswer.go + - tests/mockserver/internal/sdk/models/operations/editcollection.go + - tests/mockserver/internal/sdk/models/operations/editcollectionitem.go + - tests/mockserver/internal/sdk/models/operations/editpin.go + - tests/mockserver/internal/sdk/models/operations/feed.go + - tests/mockserver/internal/sdk/models/operations/feedback.go + - tests/mockserver/internal/sdk/models/operations/getagent.go + - tests/mockserver/internal/sdk/models/operations/getagentschemas.go + - tests/mockserver/internal/sdk/models/operations/getanswer.go + - tests/mockserver/internal/sdk/models/operations/getchat.go + - tests/mockserver/internal/sdk/models/operations/getchatapplication.go + - tests/mockserver/internal/sdk/models/operations/getchatfiles.go + - tests/mockserver/internal/sdk/models/operations/getcollection.go + - tests/mockserver/internal/sdk/models/operations/getdocpermissions.go + - tests/mockserver/internal/sdk/models/operations/getdocuments.go + - tests/mockserver/internal/sdk/models/operations/getdocumentsbyfacets.go + - tests/mockserver/internal/sdk/models/operations/getdocvisibility.go + - tests/mockserver/internal/sdk/models/operations/getpin.go + - tests/mockserver/internal/sdk/models/operations/getpolicy.go + - tests/mockserver/internal/sdk/models/operations/getreportstatus.go + - tests/mockserver/internal/sdk/models/operations/getrestapiv1toolslist.go + - tests/mockserver/internal/sdk/models/operations/getshortcut.go + - tests/mockserver/internal/sdk/models/operations/insights.go + - tests/mockserver/internal/sdk/models/operations/listanswers.go + - tests/mockserver/internal/sdk/models/operations/listchats.go + - tests/mockserver/internal/sdk/models/operations/listcollections.go + - tests/mockserver/internal/sdk/models/operations/listentities.go + - tests/mockserver/internal/sdk/models/operations/listpins.go + - tests/mockserver/internal/sdk/models/operations/listpolicies.go + - tests/mockserver/internal/sdk/models/operations/listshortcuts.go + - tests/mockserver/internal/sdk/models/operations/listverifications.go + - tests/mockserver/internal/sdk/models/operations/messages.go + - tests/mockserver/internal/sdk/models/operations/people.go + - tests/mockserver/internal/sdk/models/operations/pin.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1adddatasource.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1betausers.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexdocuments.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexemployees.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexgroups.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexmemberships.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexshortcuts.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexteams.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1bulkindexusers.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1checkdocumentaccess.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcedocument.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcedocuments.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcestatus.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourceuser.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1deletedocument.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1deleteemployee.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1deletegroup.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1deletemembership.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1deleteteam.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1deleteuser.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1getdatasourceconfig.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1getdocumentcount.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1getdocumentstatus.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1getusercount.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1indexdocument.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1indexdocuments.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1indexemployee.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1indexgroup.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1indexmembership.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1indexteam.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1indexuser.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1processalldocuments.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1processallemployeesandteams.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1processallmemberships.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1rotatetoken.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1updatepermissions.go + - tests/mockserver/internal/sdk/models/operations/postapiindexv1uploadshortcuts.go + - tests/mockserver/internal/sdk/models/operations/postrestapiv1toolscall.go + - tests/mockserver/internal/sdk/models/operations/recommendations.go + - tests/mockserver/internal/sdk/models/operations/search.go + - tests/mockserver/internal/sdk/models/operations/searchagents.go + - tests/mockserver/internal/sdk/models/operations/setdocvisibility.go + - tests/mockserver/internal/sdk/models/operations/summarize.go + - tests/mockserver/internal/sdk/models/operations/unpin.go + - tests/mockserver/internal/sdk/models/operations/updateannouncement.go + - tests/mockserver/internal/sdk/models/operations/updatepolicy.go + - tests/mockserver/internal/sdk/models/operations/updateshortcut.go + - tests/mockserver/internal/sdk/models/operations/uploadchatfiles.go + - tests/mockserver/internal/sdk/models/operations/verify.go + - tests/mockserver/internal/sdk/models/sdkerrors/collectionerror.go + - tests/mockserver/internal/sdk/models/sdkerrors/gleandataerror.go + - tests/mockserver/internal/sdk/types/bigint.go + - tests/mockserver/internal/sdk/types/date.go + - tests/mockserver/internal/sdk/types/datetime.go + - tests/mockserver/internal/sdk/types/decimal.go + - tests/mockserver/internal/sdk/types/jsonl/jsonl.go + - tests/mockserver/internal/sdk/types/pointers.go + - tests/mockserver/internal/sdk/utils/json.go + - tests/mockserver/internal/sdk/utils/reflect.go + - tests/mockserver/internal/sdk/utils/sort.go + - tests/mockserver/internal/server/doc.go + - tests/mockserver/internal/server/generated_handlers.go + - tests/mockserver/internal/server/internal_handlers.go + - tests/mockserver/internal/server/server.go + - tests/mockserver/internal/server/server_option.go + - tests/mockserver/internal/server/templates/log/index.html.tmpl + - tests/mockserver/internal/server/templates/log/operation.html.tmpl + - tests/mockserver/internal/server/templates/log/style.css.tmpl + - tests/mockserver/internal/tracking/requesttracker.go + - tests/mockserver/main.go + - tests/test_activities.py + - tests/test_agents.py + - tests/test_announcements.py + - tests/test_answers.py + - tests/test_calendar.py + - tests/test_client.py + - tests/test_client_activity.py + - tests/test_client_authentication.py + - tests/test_client_chat.py + - tests/test_client_documents.py + - tests/test_client_shortcuts.py + - tests/test_client_user.py + - tests/test_client_verification.py + - tests/test_collections.py + - tests/test_datasources.py + - tests/test_displayablelists.py + - tests/test_entities.py + - tests/test_indexing_authentication.py + - tests/test_indexing_documents.py + - tests/test_indexing_permissions.py + - tests/test_insights.py + - tests/test_messages.py + - tests/test_people.py + - tests/test_pins.py + - tests/test_policies.py + - tests/test_reports.py + - tests/test_search.py + - tests/test_summarize.py + - tests/test_tools.py + - tests/test_troubleshooting.py + - tests/test_visibilityoverrides.py diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index bad83ffd..8423ecdd 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -16,6 +16,8 @@ generation: requestResponseComponentNamesFeb2024: true securityFeb2025: true sharedErrorComponentsApr2025: true + sharedNestedComponentsJan2026: false + nameOverrideFeb2026: false auth: oAuth2ClientCredentialsEnabled: false oAuth2PasswordEnabled: false @@ -23,14 +25,16 @@ generation: schemas: allOfMergeStrategy: shallowMerge requestBodyFieldName: "" + versioningStrategy: automatic mockServer: disabled: false + persistentEdits: {} tests: generateTests: true generateNewTests: true skipResponseBodyAssertions: true python: - version: 0.11.22 + version: 0.13.0 additionalDependencies: dev: {} main: {} @@ -40,19 +44,25 @@ python: - input asyncMode: both authors: - - Speakeasy + - Glean Technologies, Inc. baseErrorName: GleanBaseError + bodyVariantOverloads: false clientServerStatusCodesAsErrors: true + constFieldCasing: upper defaultErrorName: GleanError description: Python Client SDK Generated by Speakeasy. enableCustomCodeRegions: false enumFormat: enum envVarPrefix: GLEAN fixFlags: + asyncPaginationSep2025: false + conflictResistantModelImportsFeb2026: false responseRequiredSep2024: true flattenGlobalSecurity: true flattenRequests: true flatteningOrder: parameters-first + forwardCompatibleEnumsByDefault: true + forwardCompatibleUnionsByDefault: "false" imports: option: openapi paths: @@ -61,18 +71,25 @@ python: operations: "" shared: "" webhooks: "" + inferUnionDiscriminators: true inputModelSuffix: input legacyPyright: true license: "" maxMethodParams: 999 methodArguments: infer-optional-args + methodTimeoutArgument: timeout-ms + methodTimeoutUnits: milliseconds moduleName: glean.api_client + multipartArrayFormat: standard + optionalDependencies: {} outputModelSuffix: output packageManager: poetry - packageName: glean + packageName: glean-api-client + preApplyUnionDiscriminators: false pytestFilterWarnings: [] pytestTimeout: 0 + rawResponseHelpers: false responseFormat: flat sseFlatResponse: false templateVersion: v2 - multipartArrayFormat: standard + useAsyncHooks: false diff --git a/.speakeasy/glean-merged-spec.yaml b/.speakeasy/glean-merged-spec.yaml index 596e5121..bd780d7e 100644 --- a/.speakeasy/glean-merged-spec.yaml +++ b/.speakeasy/glean-merged-spec.yaml @@ -1,12911 +1,14958 @@ openapi: 3.0.0 info: - version: 0.9.0 - title: Glean API - x-source-commit-sha: 1c30a2e9466bf278374bd82863042433f7fa8a6d - 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. + version: 0.9.0 + title: Glean API + x-source-commit-sha: deacbe1e0fd0b5074c1b1445f05b4a5df529f487 + 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. - # Usage guidelines - This API is evolving fast. Glean will provide advance notice of any planned backwards incompatible changes along - with a 6-month sunset period for anything that requires developers to adopt the new versions. + # Usage guidelines + This API is evolving fast. Glean will provide advance notice of any planned backwards incompatible changes along + with a 6-month sunset period for anything that requires developers to adopt the new versions. - # API Clients - Official API clients for the Glean Indexing API are available in multiple languages: + # API Clients + Official API clients for the Glean Indexing API are available in multiple languages: - - [Python](https://github.com/gleanwork/api-client-python) - - [TypeScript](https://github.com/gleanwork/api-client-typescript) - - [Go](https://github.com/gleanwork/api-client-go) - - [Java](https://github.com/gleanwork/api-client-java) + - [Python](https://github.com/gleanwork/api-client-python) + - [TypeScript](https://github.com/gleanwork/api-client-typescript) + - [Go](https://github.com/gleanwork/api-client-go) + - [Java](https://github.com/gleanwork/api-client-java) - 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: bfa098a27c3b8f11087766de34606765c946e305 - x-speakeasy-name: 'Glean API' + 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: 7de1c5956c93a8bdd7b4a2c6a4c6fd98b0c4df70 + x-speakeasy-name: 'Glean API' servers: - - url: https://{instance}-be.glean.com - variables: - instance: - default: instance-name - description: The instance name (typically the email domain without the TLD) that determines the deployment backend. -security: - - APIToken: [] + - url: https://{instance}-be.glean.com + variables: + instance: + default: instance-name + description: The instance name (typically the email domain without the TLD) that determines the deployment backend. paths: - /rest/api/v1/activity: - post: - tags: - - Activity - summary: Report document activity - description: Report user activity that occurs on indexed documents such as viewing or editing. This signal improves search quality. - operationId: activity - x-visibility: Public - x-codegen-request-body-name: payload - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/Activity" - required: true - x-exportParamName: Activity - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: report - x-speakeasy-group: client.activity - /rest/api/v1/feedback: - post: - tags: - - Activity - summary: Report client activity - description: Report events that happen to results within a Glean client UI, such as search result views and clicks. This signal improves search quality. - operationId: feedback - x-visibility: Public - x-codegen-request-body-name: payload - parameters: - - name: feedback - in: query - description: A URL encoded versions of Feedback. This is useful for requests. - required: false - schema: - type: string - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/Feedback" - x-exportParamName: Feedback - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-group: client.activity - /rest/api/v1/createannouncement: - post: - tags: - - Announcements - summary: Create Announcement - description: Create a textual announcement visible to some set of users based on department and location. - operationId: createannouncement - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CreateAnnouncementRequest" - description: Announcement content - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/Announcement" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: create - x-speakeasy-group: client.announcements - /rest/api/v1/deleteannouncement: - post: - tags: - - Announcements - summary: Delete Announcement - description: Delete an existing user-generated announcement. - operationId: deleteannouncement - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteAnnouncementRequest" - description: Delete announcement request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: delete - x-speakeasy-group: client.announcements - /rest/api/v1/updateannouncement: - post: - tags: - - Announcements - summary: Update Announcement - description: Update a textual announcement visible to some set of users based on department and location. - operationId: updateannouncement - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/UpdateAnnouncementRequest" - description: Announcement content. Id need to be specified for the announcement. - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/Announcement" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: update - x-speakeasy-group: client.announcements - /rest/api/v1/createanswer: - post: - tags: - - Answers - summary: Create Answer - description: Create a user-generated Answer that contains a question and answer. - operationId: createanswer - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CreateAnswerRequest" - description: CreateAnswer request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/Answer" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: create - x-speakeasy-group: client.answers - /rest/api/v1/deleteanswer: - post: - tags: - - Answers - summary: Delete Answer - description: Delete an existing user-generated Answer. - operationId: deleteanswer - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteAnswerRequest" - description: DeleteAnswer request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: delete - x-speakeasy-group: client.answers - /rest/api/v1/editanswer: - post: - tags: - - Answers - summary: Update Answer - description: Update an existing user-generated Answer. - operationId: editanswer - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/EditAnswerRequest" - description: EditAnswer request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/Answer" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: update - x-speakeasy-group: client.answers - /rest/api/v1/getanswer: - post: - tags: - - Answers - summary: Read Answer - description: Read the details of a particular Answer given its ID. - operationId: getanswer - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetAnswerRequest" - description: GetAnswer request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetAnswerResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieve - x-speakeasy-group: client.answers - /rest/api/v1/listanswers: - post: - tags: - - Answers - summary: List Answers - description: List Answers created by the current user. - operationId: listanswers - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ListAnswersRequest" - description: ListAnswers request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ListAnswersResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: list - x-speakeasy-group: client.answers - /rest/api/v1/createauthtoken: - post: - tags: - - Authentication - summary: Create authentication token - description: | - Creates an authentication token for the authenticated user. These are - specifically intended to be used with the [Web SDK](https://developers.glean.com/web). + /rest/api/v1/activity: + post: + tags: + - Activity + summary: Report document activity + description: Report user activity that occurs on indexed documents such as viewing or editing. This signal improves search quality. + operationId: activity + x-visibility: Public + x-codegen-request-body-name: payload + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Activity" + required: true + x-exportParamName: Activity + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: report + x-speakeasy-group: client.activity + /rest/api/v1/feedback: + post: + tags: + - Activity + summary: Report client activity + description: Report events that happen to results within a Glean client UI, such as search result views and clicks. This signal improves search quality. + operationId: feedback + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - name: feedback + in: query + description: A URL encoded versions of Feedback. This is useful for requests. + required: false + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Feedback" + x-exportParamName: Feedback + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-group: client.activity + /rest/api/v1/createannouncement: + post: + tags: + - Announcements + summary: Create Announcement + description: Create a textual announcement visible to some set of users based on department and location. + operationId: createannouncement + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CreateAnnouncementRequest" + description: Announcement content + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/Announcement" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: create + x-speakeasy-group: client.announcements + /rest/api/v1/deleteannouncement: + post: + tags: + - Announcements + summary: Delete Announcement + description: Delete an existing user-generated announcement. + operationId: deleteannouncement + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DeleteAnnouncementRequest" + description: Delete announcement request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: delete + x-speakeasy-group: client.announcements + /rest/api/v1/updateannouncement: + post: + tags: + - Announcements + summary: Update Announcement + description: Update a textual announcement visible to some set of users based on department and location. + operationId: updateannouncement + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UpdateAnnouncementRequest" + description: Announcement content. Id need to be specified for the announcement. + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/Announcement" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: update + x-speakeasy-group: client.announcements + /rest/api/v1/createanswer: + post: + tags: + - Answers + summary: Create Answer + description: Create a user-generated Answer that contains a question and answer. + operationId: createanswer + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CreateAnswerRequest" + description: CreateAnswer request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/Answer" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: create + x-speakeasy-group: client.answers + /rest/api/v1/deleteanswer: + post: + tags: + - Answers + summary: Delete Answer + description: Delete an existing user-generated Answer. + operationId: deleteanswer + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DeleteAnswerRequest" + description: DeleteAnswer request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: delete + x-speakeasy-group: client.answers + /rest/api/v1/editanswer: + post: + tags: + - Answers + summary: Update Answer + description: Update an existing user-generated Answer. + operationId: editanswer + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/EditAnswerRequest" + description: EditAnswer request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/Answer" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: update + x-speakeasy-group: client.answers + /rest/api/v1/getanswer: + post: + tags: + - Answers + summary: Read Answer + description: Read the details of a particular Answer given its ID. + operationId: getanswer + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/GetAnswerRequest" + description: GetAnswer request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/GetAnswerResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: retrieve + x-speakeasy-group: client.answers + /rest/api/v1/listanswers: + post: + tags: + - Answers + summary: List Answers + description: List Answers created by the current user. + operationId: listanswers + deprecated: true + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ListAnswersRequest" + description: ListAnswers request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/ListAnswersResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-glean-deprecated: + id: 4c0923bd-64c7-45b9-99a5-b36f2705e618 + introduced: "2026-01-21" + 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: + post: + tags: + - Authentication + summary: Check datasource authorization + description: | + Returns all datasource instances that require per-user OAuth authorization + for the authenticated user, along with a transient auth token that can be + appended to auth URLs to complete OAuth flows. - Note: The tokens generated from this endpoint are **not** valid tokens - for use with the Client API (e.g. `/rest/api/v1/*`). - operationId: createauthtoken - x-visibility: Public - parameters: [] - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/CreateAuthTokenResponse" - "400": - description: Invalid Request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: createToken - x-speakeasy-group: client.authentication - /rest/api/v1/chat: - post: - tags: - - Chat - summary: Chat - description: Have a conversation with Glean AI. - operationId: chat - x-visibility: Public - x-codegen-request-body-name: payload - parameters: - - $ref: "#/components/parameters/timezoneOffset" - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ChatRequest" - examples: - defaultExample: - value: - messages: - - author: USER - messageType: CONTENT - fragments: - - text: What are the company holidays this year? - gptAgentExample: - value: - agentConfig: - agent: GPT - messages: - - author: USER - messageType: CONTENT - fragments: - - text: Who was the first person to land on the moon? - description: Includes chat history for Glean AI to respond to. - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/ChatResponse' - examples: - defaultExample: - value: - messages: - - author: GLEAN_AI - messageType: CONTENT - hasMoreFragments: false - agentConfig: - agent: DEFAULT - mode: DEFAULT - fragments: - - text: There are no holidays! - streamingExample: - value: - messages: - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: true - fragments: null - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: true - fragments: null - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: true - fragments: - - text: e are - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: true - fragments: - - text: no hol - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: false - fragments: - - text: idays! - updateResponse: - value: - messages: - - author: GLEAN_AI - messageType: UPDATE - agentConfig: - agent: DEFAULT - mode: DEFAULT - fragments: - - text: '**Reading:**' - - structuredResults: - - document: - id: '123' - title: Company Handbook - citationResponse: - value: - messages: - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - citations: - - sourceDocument: - id: '123' - title: Company Handbook - referenceRanges: - - textRange: - startIndex: 0 - endIndex: 12 - type: CITATION - "400": - description: Invalid request - "401": - description: Not Authorized - "408": - description: Request Timeout - "429": - description: Too Many Requests - x-speakeasy-group: client.chat - x-speakeasy-name-override: create - x-speakeasy-usage-example: true - /rest/api/v1/deleteallchats: - post: - tags: - - Chat - summary: Deletes all saved Chats owned by a user - description: Deletes all saved Chats a user has had and all their contained conversational content. - operationId: deleteallchats - x-visibility: Public - x-codegen-request-body-name: payload - parameters: - - $ref: "#/components/parameters/timezoneOffset" - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - x-speakeasy-name-override: deleteAll - x-speakeasy-group: client.chat - /rest/api/v1/deletechats: - post: - tags: - - Chat - summary: Deletes saved Chats - description: Deletes saved Chats and all their contained conversational content. - operationId: deletechats - x-visibility: Public - x-codegen-request-body-name: payload - parameters: - - $ref: "#/components/parameters/timezoneOffset" - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteChatsRequest" - required: true - x-exportParamName: Request - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - "429": - description: Too Many Requests - x-speakeasy-name-override: delete - x-speakeasy-group: client.chat - /rest/api/v1/getchat: - post: - tags: - - Chat - summary: Retrieves a Chat - description: Retrieves the chat history between Glean Assistant and the user for a given Chat. - operationId: getchat - x-visibility: Public - x-codegen-request-body-name: payload - parameters: - - $ref: "#/components/parameters/timezoneOffset" - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetChatRequest" - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetChatResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieve - x-speakeasy-group: client.chat - /rest/api/v1/listchats: - post: - tags: - - Chat - summary: Retrieves all saved Chats - description: Retrieves all the saved Chats between Glean Assistant and the user. The returned Chats contain only metadata and no conversational content. - operationId: listchats - x-visibility: Public - x-codegen-request-body-name: payload - parameters: - - $ref: "#/components/parameters/timezoneOffset" - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ListChatsResponse" - "401": - description: Not Authorized - "403": - description: Forbidden - "429": - description: Too Many Requests - x-speakeasy-name-override: list - x-speakeasy-group: client.chat - /rest/api/v1/getchatapplication: - post: - tags: - - Chat - summary: Gets the metadata for a custom Chat application - description: Gets the Chat application details for the specified application ID. - operationId: getchatapplication - x-visibility: Preview - x-codegen-request-body-name: payload - parameters: - - $ref: "#/components/parameters/timezoneOffset" - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetChatApplicationRequest" - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetChatApplicationResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - x-speakeasy-name-override: retrieveApplication - x-speakeasy-group: client.chat - /rest/api/v1/uploadchatfiles: - post: - tags: - - Chat - summary: Upload files for Chat. - description: Upload files for Chat. - operationId: uploadchatfiles - x-visibility: Public - parameters: - - $ref: "#/components/parameters/timezoneOffset" - requestBody: - required: true - content: - multipart/form-data: - schema: - $ref: "#/components/schemas/UploadChatFilesRequest" - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/UploadChatFilesResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - "429": - description: Too Many Requests - x-speakeasy-name-override: uploadFiles - x-speakeasy-group: client.chat - /rest/api/v1/getchatfiles: - post: - tags: - - Chat - summary: Get files uploaded by a user for Chat. - description: Get files uploaded by a user for Chat. - operationId: getchatfiles - x-visibility: Public - parameters: - - $ref: "#/components/parameters/timezoneOffset" - requestBody: - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/GetChatFilesRequest" - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetChatFilesResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieveFiles - x-speakeasy-group: client.chat - /rest/api/v1/deletechatfiles: - post: - tags: - - Chat - summary: Delete files uploaded by a user for chat. - description: Delete files uploaded by a user for Chat. - operationId: deletechatfiles - x-visibility: Public - parameters: - - $ref: "#/components/parameters/timezoneOffset" - requestBody: - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteChatFilesRequest" - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - "429": - description: Too Many Requests - x-speakeasy-name-override: deleteFiles - x-speakeasy-group: client.chat - /rest/api/v1/agents/{agent_id}: - get: - tags: - - Agents - summary: Retrieve an agent - description: Returns details of an [agent](https://developers.glean.com/agents/agents-api) created in the Agent Builder. - operationId: getAgent - x-visibility: Preview - parameters: - - $ref: "#/components/parameters/timezoneOffset" - - description: The ID of the agent. - required: true - schema: - type: string - title: Agent ID - description: The ID of the agent. - name: agent_id - in: path - responses: - "200": - description: Success - content: - application/json: - schema: - $ref: "#/components/schemas/Agent" - "400": - description: Bad request - "403": - description: Forbidden - "404": - description: Not Found - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - "500": - description: Internal server error - x-speakeasy-group: client.agents - x-speakeasy-name-override: retrieve - /rest/api/v1/agents/{agent_id}/schemas: - get: - tags: - - Agents - summary: List an agent's schemas - description: Return [agent](https://developers.glean.com/agents/agents-api)'s input and output schemas. You can use these schemas to detect changes to an agent's input or output structure. - operationId: getAgentSchemas - x-visibility: Preview - parameters: - - $ref: "#/components/parameters/timezoneOffset" - - description: The ID of the agent. - required: true - schema: - type: string - title: Agent Id - description: The ID of the agent. - name: agent_id - in: path - responses: - "200": - description: Success - content: - application/json: - schema: - $ref: "#/components/schemas/AgentSchemas" - "400": - description: Bad request - "403": - description: Forbidden - "404": - description: Not Found - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - "422": - description: Validation Error - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - "500": - description: Internal server error - x-speakeasy-group: client.agents - x-speakeasy-name-override: retrieveSchemas - /rest/api/v1/agents/search: - post: - tags: - - Agents - summary: Search agents - description: Search for [agents](https://developers.glean.com/agents/agents-api) by agent name. - operationId: searchAgents - x-visibility: Preview - requestBody: - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/SearchAgentsRequest" - responses: - "200": - description: Success - content: - application/json: - schema: - $ref: "#/components/schemas/SearchAgentsResponse" - "400": - description: Bad request - "403": - description: Forbidden - "404": - description: Not Found - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - "422": - description: Validation Error - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - "500": - description: Internal server error - x-speakeasy-group: client.agents - x-speakeasy-name-override: list - /rest/api/v1/agents/runs/stream: - post: - tags: - - Agents - summary: Create an agent run and stream the response - description: Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the result as a stream of server-sent events (SSE). - operationId: createAndStreamRun - x-visibility: Preview - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/AgentRunCreate" - required: true - responses: - "200": - description: Success - content: - text/event-stream: - schema: - type: string - description: The server will send a stream of events in server-sent events (SSE) format. - example: | - id: 1 - event: message - data: {"messages":[{"role":"GLEAN_AI","content":[{"text":"Hello","type":"text"}]}]} + Clients construct the full OAuth URL by combining the backend base URL, + the `authUrlRelativePath` from each instance, and the transient auth token: + `/?transient_auth_token=`. + operationId: checkdatasourceauth + x-visibility: Public + parameters: [] + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/CheckDatasourceAuthResponse" + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + /rest/api/v1/createauthtoken: + post: + tags: + - Authentication + summary: Create authentication token + description: | + Creates an authentication token for the authenticated user. These are + specifically intended to be used with the [Web SDK](https://developers.glean.com/web). - id: 2 - event: message - data: {"messages":[{"role":"GLEAN_AI","content":[{"text":",","type":"text"}]}]} + Note: The tokens generated from this endpoint are **not** valid tokens + for use with the Client API (e.g. `/rest/api/v1/*`). + operationId: createauthtoken + x-visibility: Public + parameters: [] + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/CreateAuthTokenResponse" + "400": + description: Invalid Request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: createToken + x-speakeasy-group: client.authentication + /rest/api/v1/chat: + post: + tags: + - Chat + summary: Chat + description: Have a conversation with Glean AI. + operationId: chat + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + - $ref: "#/components/parameters/timezoneOffset" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ChatRequest" + examples: + defaultExample: + value: + messages: + - author: USER + messageType: CONTENT + fragments: + - text: What are the company holidays this year? + gptAgentExample: + value: + agentConfig: + agent: GPT + messages: + - author: USER + messageType: CONTENT + fragments: + - text: Who was the first person to land on the moon? + description: Includes chat history for Glean AI to respond to. + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ChatResponse' + examples: + defaultExample: + value: + messages: + - author: GLEAN_AI + messageType: CONTENT + hasMoreFragments: false + agentConfig: + agent: DEFAULT + mode: DEFAULT + fragments: + - text: There are no holidays! + streamingExample: + value: + messages: + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: true + fragments: null + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: true + fragments: null + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: true + fragments: + - text: e are + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: true + fragments: + - text: no hol + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: false + fragments: + - text: idays! + updateResponse: + value: + messages: + - author: GLEAN_AI + messageType: UPDATE + agentConfig: + agent: DEFAULT + mode: DEFAULT + fragments: + - text: '**Reading:**' + - structuredResults: + - document: + id: '123' + title: Company Handbook + citationResponse: + value: + messages: + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + citations: + - sourceDocument: + id: '123' + title: Company Handbook + referenceRanges: + - textRange: + startIndex: 0 + endIndex: 12 + type: CITATION + "400": + description: Invalid request + "401": + description: Not Authorized + "408": + 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 + /rest/api/v1/deleteallchats: + post: + tags: + - Chat + summary: Deletes all saved Chats owned by a user + description: Deletes all saved Chats a user has had and all their contained conversational content. + operationId: deleteallchats + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + - $ref: "#/components/parameters/timezoneOffset" + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + security: + - APIToken: [] + x-speakeasy-name-override: deleteAll + x-speakeasy-group: client.chat + /rest/api/v1/deletechats: + post: + tags: + - Chat + summary: Deletes saved Chats + description: Deletes saved Chats and all their contained conversational content. + operationId: deletechats + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + - $ref: "#/components/parameters/timezoneOffset" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DeleteChatsRequest" + required: true + x-exportParamName: Request + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: delete + x-speakeasy-group: client.chat + /rest/api/v1/getchat: + post: + tags: + - Chat + summary: Retrieves a Chat + description: Retrieves the chat history between Glean Assistant and the user for a given Chat. + operationId: getchat + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + - $ref: "#/components/parameters/timezoneOffset" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/GetChatRequest" + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/GetChatResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: retrieve + x-speakeasy-group: client.chat + /rest/api/v1/listchats: + post: + tags: + - Chat + summary: Retrieves all saved Chats + description: Retrieves all the saved Chats between Glean Assistant and the user. The returned Chats contain only metadata and no conversational content. + operationId: listchats + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + - $ref: "#/components/parameters/timezoneOffset" + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/ListChatsResponse" + "401": + description: Not Authorized + "403": + description: Forbidden + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: list + x-speakeasy-group: client.chat + /rest/api/v1/getchatapplication: + post: + tags: + - Chat + summary: Gets the metadata for a custom Chat application + description: Gets the Chat application details for the specified application ID. + operationId: getchatapplication + x-visibility: Preview + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + - $ref: "#/components/parameters/timezoneOffset" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/GetChatApplicationRequest" + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/GetChatApplicationResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + security: + - APIToken: [] + x-speakeasy-name-override: retrieveApplication + x-speakeasy-group: client.chat + /rest/api/v1/uploadchatfiles: + post: + tags: + - Chat + summary: Upload files for Chat + description: Upload files for Chat. + operationId: uploadchatfiles + x-visibility: Public + parameters: + - $ref: "#/components/parameters/locale" + - $ref: "#/components/parameters/timezoneOffset" + requestBody: + required: true + content: + multipart/form-data: + schema: + $ref: "#/components/schemas/UploadChatFilesRequest" + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/UploadChatFilesResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: uploadFiles + x-speakeasy-group: client.chat + /rest/api/v1/getchatfiles: + post: + tags: + - Chat + summary: Get files uploaded by a user for Chat + description: Get files uploaded by a user for Chat. + operationId: getchatfiles + x-visibility: Public + parameters: + - $ref: "#/components/parameters/locale" + - $ref: "#/components/parameters/timezoneOffset" + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/GetChatFilesRequest" + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/GetChatFilesResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: retrieveFiles + x-speakeasy-group: client.chat + /rest/api/v1/deletechatfiles: + post: + tags: + - Chat + summary: Delete files uploaded by a user for chat + description: Delete files uploaded by a user for Chat. + operationId: deletechatfiles + x-visibility: Public + parameters: + - $ref: "#/components/parameters/locale" + - $ref: "#/components/parameters/timezoneOffset" + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/DeleteChatFilesRequest" + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: deleteFiles + x-speakeasy-group: client.chat + /rest/api/v1/chat-files/{fileId}: + get: + tags: + - Chat + summary: Download a chat file + description: | + Download the raw content of a file generated or uploaded during a chat session (for example, an image produced by the assistant). Returns the file bytes with a Content-Type header matching the file's MIME type. + operationId: getChatFile + x-visibility: Public + parameters: + - name: fileId + in: path + required: true + description: Identifier of the chat file to download. + schema: + type: string + - name: preview + in: query + required: false + description: | + When true and the file is a PDF, the response is served inline (Content-Disposition: inline) instead of as an attachment. + schema: + type: boolean + responses: + "200": + description: File content. + content: + application/octet-stream: + schema: + type: string + format: binary + "400": + description: File ID missing from path. + "401": + description: Missing or invalid API token. + "403": + description: Caller does not have access to the file. + "404": + description: File not found. + "500": + description: Internal server error. + security: + - APIToken: [] + /rest/api/v1/agents/{agent_id}: + get: + tags: + - Agents + summary: Retrieve an agent + description: Returns details of an [agent](https://developers.glean.com/agents/agents-api) created in the Agent Builder. + operationId: getAgent + x-visibility: Preview + parameters: + - $ref: "#/components/parameters/locale" + - $ref: "#/components/parameters/timezoneOffset" + - description: The ID of the agent. + required: true + schema: + type: string + title: Agent ID + description: The ID of the agent. + name: agent_id + in: path + responses: + "200": + description: Success + content: + application/json: + schema: + $ref: "#/components/schemas/Agent" + "400": + description: Bad request + "403": + description: Forbidden + "404": + description: Not Found + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + "500": + description: Internal server error + security: + - APIToken: [] + x-speakeasy-group: client.agents + x-speakeasy-name-override: retrieve + post: + tags: + - Agents + summary: Edit an agent + description: Creates a draft or publishes an [agent](https://developers.glean.com/agents/agents-api). Use `isDraft=true` to save a draft, or `isDraft=false` (or omit) to publish immediately. Only draft and publish modes are supported. + operationId: editAgent + x-visibility: Preview + parameters: + - $ref: "#/components/parameters/locale" + - $ref: "#/components/parameters/timezoneOffset" + - description: The ID of the agent. + required: true + schema: + type: string + title: Agent ID + description: The ID of the agent. + name: agent_id + in: path + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/EditWorkflowRequest" + responses: + "200": + description: Success + "400": + description: Bad request + "401": + description: Not Authorized + "403": + description: Forbidden + "404": + description: Not Found + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + "500": + description: Internal server error + security: + - APIToken: [] + /rest/api/v1/agents/{agent_id}/schemas: + get: + tags: + - Agents + summary: List an agent's schemas + description: Return [agent](https://developers.glean.com/agents/agents-api)'s input and output schemas. You can use these schemas to detect changes to an agent's input or output structure. + operationId: getAgentSchemas + x-visibility: Preview + parameters: + - $ref: "#/components/parameters/locale" + - $ref: "#/components/parameters/timezoneOffset" + - description: The ID of the agent. + required: true + schema: + type: string + title: Agent Id + description: The ID of the agent. + name: agent_id + in: path + responses: + "200": + description: Success + content: + application/json: + schema: + $ref: "#/components/schemas/AgentSchemas" + "400": + description: Bad request + "403": + description: Forbidden + "404": + description: Not Found + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + "422": + description: Validation Error + content: + application/json: + schema: + $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: + post: + tags: + - Agents + summary: Search agents + description: Search for [agents](https://developers.glean.com/agents/agents-api) by agent name. + operationId: searchAgents + x-visibility: Preview + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/SearchAgentsRequest" + responses: + "200": + description: Success + content: + application/json: + schema: + $ref: "#/components/schemas/SearchAgentsResponse" + "400": + description: Bad request + "403": + description: Forbidden + "404": + description: Not Found + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + "422": + description: Validation Error + content: + application/json: + schema: + $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: + post: + tags: + - Agents + summary: Create an agent run and stream the response + description: "Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the result as a stream of server-sent events (SSE). **Note**: If the agent uses an input form trigger, all form fields (including optional fields) must be included in the `input` object." + operationId: createAndStreamRun + x-visibility: Preview + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/AgentRunCreate" + required: true + responses: + "200": + description: Success + content: + text/event-stream: + schema: + type: string + description: The server will send a stream of events in server-sent events (SSE) format. + example: | + id: 1 + event: message + data: {"messages":[{"role":"GLEAN_AI","content":[{"text":"Hello","type":"text"}]}]} - id: 3 - event: message - data: {"messages":[{"role":"GLEAN_AI","content":[{"text":" I'm","type":"text"}]}]} + id: 2 + event: message + data: {"messages":[{"role":"GLEAN_AI","content":[{"text":",","type":"text"}]}]} - id: 4 - event: message - data: {"messages":[{"role":"GLEAN_AI","content":[{"text":" your","type":"text"}]}]} - "400": - description: Bad request - "403": - description: Forbidden - "404": - description: Not Found - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - "409": - description: Conflict - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - "422": - description: Validation Error - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorResponse" - "500": - description: Internal server error - x-speakeasy-group: client.agents - x-speakeasy-name-override: runStream - /rest/api/v1/agents/runs/wait: - post: - tags: - - Agents - summary: Create an agent run and wait for the response - description: Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the final response. - operationId: createAndWaitRun - x-visibility: Preview - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/AgentRunCreate" - required: true - responses: - "200": - description: Success - content: - application/json: - schema: - $ref: "#/components/schemas/AgentRunWaitResponse" - "400": - description: Bad request - "403": - description: Forbidden - "404": - description: Not Found - "409": - description: Conflict - "422": - description: Validation Error - "500": - description: Internal server error - x-speakeasy-group: client.agents - x-speakeasy-name-override: run - /rest/api/v1/addcollectionitems: - post: - tags: - - Collections - summary: Add Collection item - description: Add items to a Collection. - operationId: addcollectionitems - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/AddCollectionItemsRequest" - description: Data describing the add operation. - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/AddCollectionItemsResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: addItems - x-speakeasy-group: client.collections - /rest/api/v1/createcollection: - post: - tags: - - Collections - summary: Create Collection - description: Create a publicly visible (empty) Collection of documents. - operationId: createcollection - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CreateCollectionRequest" - description: Collection content plus any additional metadata for the request. - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/CreateCollectionResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "422": - description: Semantic error - content: - application/json: - schema: - $ref: "#/components/schemas/CollectionError" - "429": - description: Too Many Requests - x-speakeasy-group: client.collections - x-speakeasy-name-override: create - /rest/api/v1/deletecollection: - post: - tags: - - Collections - summary: Delete Collection - description: Delete a Collection given the Collection's ID. - operationId: deletecollection - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteCollectionRequest" - description: DeleteCollection request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "422": - description: Semantic error - content: - application/json: - schema: - $ref: "#/components/schemas/CollectionError" - "429": - description: Too Many Requests - x-speakeasy-name-override: delete - x-speakeasy-group: client.collections - /rest/api/v1/deletecollectionitem: - post: - tags: - - Collections - summary: Delete Collection item - description: Delete a single item from a Collection. - operationId: deletecollectionitem - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteCollectionItemRequest" - description: Data describing the delete operation. - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteCollectionItemResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "422": - description: Failed to save deletion - "429": - description: Too Many Requests - x-speakeasy-name-override: deleteItem - x-speakeasy-group: client.collections - /rest/api/v1/editcollection: - post: - tags: - - Collections - summary: Update Collection - description: Update the properties of an existing Collection. - operationId: editcollection - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/EditCollectionRequest" - description: Collection content plus any additional metadata for the request. - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/EditCollectionResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "422": - description: Semantic error - content: - application/json: - schema: - $ref: "#/components/schemas/CollectionError" - "429": - description: Too Many Requests - x-speakeasy-name-override: update - x-speakeasy-group: client.collections - /rest/api/v1/editcollectionitem: - post: - tags: - - Collections - summary: Update Collection item - description: Update the URL, Glean Document ID, description of an item within a Collection given its ID. - operationId: editcollectionitem - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/EditCollectionItemRequest" - description: Edit Collection Items request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/EditCollectionItemResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: updateItem - x-speakeasy-group: client.collections - /rest/api/v1/getcollection: - post: - tags: - - Collections - summary: Read Collection - description: Read the details of a Collection given its ID. Does not fetch items in this Collection. - operationId: getcollection - x-visibility: Preview - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetCollectionRequest" - description: GetCollection request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetCollectionResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieve - x-speakeasy-group: client.collections - /rest/api/v1/listcollections: - post: - tags: - - Collections - summary: List Collections - description: List all existing Collections. - operationId: listcollections - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ListCollectionsRequest" - description: ListCollections request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ListCollectionsResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: list - x-speakeasy-group: client.collections - /rest/api/v1/getdocpermissions: - post: - tags: - - Documents - summary: Read document permissions - description: Read the emails of all users who have access to the given document. - operationId: getdocpermissions - x-visibility: Preview - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocPermissionsRequest" - description: Document permissions request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocPermissionsResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - "429": - description: Too Many Requests - x-speakeasy-name-override: retrievePermissions - x-speakeasy-group: client.documents - /rest/api/v1/getdocuments: - post: - tags: - - Documents - summary: Read documents - description: Read the documents including metadata (does not include enhanced metadata via `/documentmetadata`) for the given list of Glean Document IDs or URLs specified in the request. - operationId: getdocuments - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocumentsRequest" - description: Information about documents requested. - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocumentsResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Documents does not exist, or user cannot access documents. - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieve - x-speakeasy-group: client.documents - /rest/api/v1/getdocumentsbyfacets: - post: - tags: - - Documents - summary: Read documents by facets - description: Read the documents including metadata (does not include enhanced metadata via `/documentmetadata`) macthing the given facet conditions. - operationId: getdocumentsbyfacets - x-visibility: Preview - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocumentsByFacetsRequest" - description: Information about facet conditions for documents to be retrieved. - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocumentsByFacetsResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "404": - description: Not Found - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieveByFacets - x-speakeasy-group: client.documents - /rest/api/v1/insights: - post: - tags: - - Insights - summary: Get insights - description: Gets the aggregate usage insights data displayed in the Insights Dashboards. - operationId: insights - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/InsightsRequest" - description: Includes request parameters for insights requests. - required: true - x-exportParamName: InsightsRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/InsightsResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieve - x-speakeasy-group: client.insights - /rest/api/v1/messages: - post: - tags: - - Messages - summary: Read messages - description: Retrieves list of messages from messaging/chat datasources (e.g. Slack, Teams). - operationId: messages - x-visibility: Preview - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/MessagesRequest" - description: Includes request params such as the id for channel/message and direction. - required: true - x-exportParamName: MessagesRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/MessagesResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieve - x-speakeasy-group: client.messages - /rest/api/v1/editpin: - post: - tags: - - Pins - summary: Update pin - description: Update an existing user-generated pin. - operationId: editpin - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/EditPinRequest" - description: Edit pins request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/PinDocument" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: update - x-speakeasy-group: client.pins - /rest/api/v1/getpin: - post: - tags: - - Pins - summary: Read pin - description: Read pin details given its ID. - operationId: getpin - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetPinRequest" - description: Get pin request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetPinResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieve - x-speakeasy-group: client.pins - /rest/api/v1/listpins: - post: - tags: - - Pins - summary: List pins - description: Lists all pins. - operationId: listpins - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - type: object - description: List pins request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ListPinsResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: list - x-speakeasy-group: client.pins - /rest/api/v1/pin: - post: - tags: - - Pins - summary: Create pin - description: Pin a document as a result for a given search query.Pin results that are known to be a good match. - operationId: pin - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/PinRequest" - description: Details about the document and query for the pin. - required: true - x-exportParamName: PinDocument - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/PinDocument" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: create - x-speakeasy-group: client.pins - /rest/api/v1/unpin: - post: - tags: - - Pins - summary: Delete pin - description: Unpin a previously pinned result. - operationId: unpin - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/Unpin" - description: Details about the pin being unpinned. - required: true - x-exportParamName: Unpin - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden from unpinning someone else's pin - "429": - description: Too Many Requests - x-speakeasy-name-override: remove - x-speakeasy-group: client.pins - /rest/api/v1/adminsearch: - post: - tags: - - Search - summary: Search the index (admin) - description: Retrieves results for search query without respect for permissions. This is available only to privileged users. - operationId: adminsearch - x-visibility: Preview - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SearchRequest" - description: Admin search request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/SearchResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInfo" - "422": - description: Invalid Query - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInfo" - "429": - description: Too Many Requests - x-speakeasy-group: client.search - x-speakeasy-name-override: queryAsAdmin - /rest/api/v1/autocomplete: - post: - tags: - - Search - summary: Autocomplete - description: Retrieve query suggestions, operators and documents for the given partially typed query. - operationId: autocomplete - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/AutocompleteRequest" - description: Autocomplete request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/AutocompleteResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-group: client.search - x-speakeasy-name-override: autocomplete - /rest/api/v1/feed: - post: - tags: - - Search - summary: Feed of documents and events - description: The personalized feed/home includes different types of contents including suggestions, recents, calendar events and many more. - operationId: feed - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/FeedRequest" - description: Includes request params, client data and more for making user's feed. - required: true - x-exportParamName: FeedRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/FeedResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "408": - description: Request Timeout - "429": - description: Too Many Requests - x-speakeasy-name-override: retrieveFeed - x-speakeasy-group: client.search - /rest/api/v1/recommendations: - post: - tags: - - Search - summary: Recommend documents - description: Retrieve recommended documents for the given URL or Glean Document ID. - operationId: recommendations - x-visibility: Preview - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/RecommendationsRequest" - description: Recommendations request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/RecommendationsResponse" - "202": - description: Accepted. The Retry-After header has a hint about when the response will be available - "204": - description: There are no recommendations for this URL - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Document does not exist or user cannot access document - "429": - description: Too Many Requests - x-speakeasy-group: client.search - x-speakeasy-name-override: recommendations - /rest/api/v1/search: - post: - tags: - - Search - summary: Search - description: Retrieve results from the index for the given query and filters. - operationId: search - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SearchRequest" - description: Search request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/SearchResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Forbidden - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInfo" - "408": - description: Request Timeout - "422": - description: Invalid Query - content: - application/json: - schema: - $ref: "#/components/schemas/ErrorInfo" - "429": - description: Too Many Requests - x-speakeasy-group: client.search - x-speakeasy-name-override: query - /rest/api/v1/listentities: - post: - tags: - - Entities - summary: List entities - description: List some set of details for all entities that fit the given criteria and return in the requested order. Does not support negation in filters, assumes relation type EQUALS. There is a limit of 10000 entities that can be retrieved via this endpoint, except when using FULL_DIRECTORY request type for people entities. - operationId: listentities - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ListEntitiesRequest" - description: List people request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ListEntitiesResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-group: client.entities - x-speakeasy-name-override: list - /rest/api/v1/people: - post: - tags: - - Entities - summary: Read people - description: Read people details for the given IDs. - operationId: people - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/PeopleRequest" - description: People request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/PeopleResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: readPeople - x-speakeasy-group: client.entities - /rest/api/v1/createshortcut: - post: - tags: - - Shortcuts - summary: Create shortcut - description: Create a user-generated shortcut that contains an alias and destination URL. - operationId: createshortcut - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CreateShortcutRequest" - description: CreateShortcut request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/CreateShortcutResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: create - x-speakeasy-group: client.shortcuts - /rest/api/v1/deleteshortcut: - post: - tags: - - Shortcuts - summary: Delete shortcut - description: Delete an existing user-generated shortcut. - operationId: deleteshortcut - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteShortcutRequest" - description: DeleteShortcut request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: delete - x-speakeasy-group: client.shortcuts - /rest/api/v1/getshortcut: - post: - tags: - - Shortcuts - summary: Read shortcut - description: Read a particular shortcut's details given its ID. - operationId: getshortcut - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetShortcutRequest" - description: GetShortcut request - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetShortcutResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-group: client.shortcuts - x-speakeasy-name-override: retrieve - /rest/api/v1/listshortcuts: - post: - tags: - - Shortcuts - summary: List shortcuts - description: List shortcuts editable/owned by the currently authenticated user. - operationId: listshortcuts - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ListShortcutsPaginatedRequest" - description: Filters, sorters, paging params required for pagination - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ListShortcutsPaginatedResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-group: client.shortcuts - x-speakeasy-name-override: list - /rest/api/v1/updateshortcut: - post: - tags: - - Shortcuts - summary: Update shortcut - description: Updates the shortcut with the given ID. - operationId: updateshortcut - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/UpdateShortcutRequest" - description: Shortcut content. Id need to be specified for the shortcut. - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/UpdateShortcutResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-group: client.shortcuts - x-speakeasy-name-override: update - /rest/api/v1/summarize: - post: - tags: - - Summarize - summary: Summarize documents - description: Generate an AI summary of the requested documents. - operationId: summarize - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SummarizeRequest" - description: Includes request params such as the query and specs of the documents to summarize. - required: true - x-exportParamName: Request - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/SummarizeResponse" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: summarize - x-speakeasy-group: client.documents - /rest/api/v1/addverificationreminder: - post: - tags: - - Verification - summary: Create verification - description: Creates a verification reminder for the document. Users can create verification reminders from different product surfaces. - operationId: addverificationreminder - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ReminderRequest" - description: Details about the reminder. - required: true - x-exportParamName: ReminderRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/Verification" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Document does not exist, does not support verification or user cannot access document - "429": - description: Too Many Requests - x-speakeasy-name-override: addReminder - x-speakeasy-group: client.verification - /rest/api/v1/listverifications: - post: - tags: - - Verification - summary: List verifications - description: Returns the information to be rendered in verification dashboard. Includes information for each document owned by user regarding their verifications. - operationId: listverifications - x-visibility: Public - x-codegen-request-body-name: payload - parameters: - - in: query - name: count - description: Maximum number of documents to return - required: false - schema: - type: integer - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/VerificationFeed" - "400": - description: Invalid request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: list - x-speakeasy-group: client.verification - /rest/api/v1/verify: - post: - tags: - - Verification - summary: Update verification - description: Verify documents to keep the knowledge up to date within customer corpus. - operationId: verify - x-visibility: Public - x-codegen-request-body-name: payload - parameters: [] - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/VerifyRequest" - description: Details about the verification request. - required: true - x-exportParamName: VerifyRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/Verification" - "400": - description: Invalid request - "401": - description: Not Authorized - "403": - description: Document does not exist, does not support verification or user cannot access document - "429": - description: Too Many Requests - x-speakeasy-name-override: verify - x-speakeasy-group: client.verification - /rest/api/v1/tools/list: - get: - summary: List available tools - description: Returns a filtered set of available tools based on optional tool name parameters. If no filters are provided, all available tools are returned. - x-visibility: Preview - parameters: - - in: query - name: toolNames - description: Optional array of tool names to filter by - required: false - schema: - type: array - items: - type: string - style: form - explode: false - responses: - "200": - description: Successful operation - content: - application/json: - schema: - $ref: "#/components/schemas/ToolsListResponse" - "400": - description: Bad Request - "401": - description: Unauthorized - "404": - description: Not Found - "429": - description: Too Many Requests - tags: - - Tools - x-speakeasy-name-override: list - x-speakeasy-group: client.tools - /rest/api/v1/tools/call: - post: - summary: Execute the specified tool - description: Execute the specified tool with provided parameters - x-visibility: Preview - requestBody: - required: true - content: - application/json: - schema: - $ref: "#/components/schemas/ToolsCallRequest" - responses: - "200": - description: Successful operation - content: - application/json: - schema: - $ref: "#/components/schemas/ToolsCallResponse" - "400": - description: Bad Request - "401": - description: Unauthorized - "404": - description: Not Found - "429": - description: Too Many Requests - tags: - - Tools - x-speakeasy-name-override: run - x-speakeasy-group: client.tools - /api/index/v1/indexdocument: - post: - summary: Index document - description: Adds a document to the index or updates an existing document. - tags: - - Documents - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/IndexDocumentRequest" - required: true - x-exportParamName: IndexDocumentRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - "429": - description: Too Many Requests - x-speakeasy-name-override: addOrUpdate - x-speakeasy-group: indexing.documents - /api/index/v1/indexdocuments: - post: - summary: Index documents - 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 - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/IndexDocumentsRequest" - required: true - x-exportParamName: IndexDocumentsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - "429": - description: Too Many Requests - x-speakeasy-name-override: index - x-speakeasy-group: indexing.documents - /api/index/v1/bulkindexdocuments: - post: - summary: Bulk index documents - 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 - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/BulkIndexDocumentsRequest" - required: true - x-exportParamName: BulkIndexDocumentsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: bulkIndex - x-speakeasy-group: indexing.documents - /api/index/v1/updatepermissions: - post: - summary: Update document permissions - description: Updates the permissions for a given document without modifying document content. - tags: - - Documents - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/UpdatePermissionsRequest" - required: true - x-exportParamName: UpdatePermissionsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - "429": - description: Too Many Requests - x-speakeasy-name-override: updatePermissions - x-speakeasy-group: indexing.permissions - /api/index/v1/processalldocuments: - post: - summary: Schedules the processing of uploaded documents - description: | - Schedules the immediate processing of documents uploaded through the indexing API. By default the uploaded documents will be processed asynchronously but this API can be used to schedule processing of all documents on demand. + id: 3 + event: message + data: {"messages":[{"role":"GLEAN_AI","content":[{"text":" I'm","type":"text"}]}]} - If a `datasource` parameter is specified, processing is limited to that custom datasource. Without it, processing applies to all documents across all custom datasources. - #### Rate Limits - This endpoint is rate-limited to one usage every 3 hours. Exceeding this limit results in a 429 response code. Here's how the rate limit works: - 1. Calling `/processalldocuments` for datasource `foo` prevents another call for `foo` for 3 hours. - 2. Calling `/processalldocuments` for datasource `foo` doesn't affect immediate calls for `bar`. - 3. Calling `/processalldocuments` for all datasources prevents any datasource calls for 3 hours. - 4. Calling `/processalldocuments` for datasource `foo` doesn't affect immediate calls for all datasources. + id: 4 + event: message + data: {"messages":[{"role":"GLEAN_AI","content":[{"text":" your","type":"text"}]}]} + "400": + description: Bad request + "403": + description: Forbidden + "404": + description: Not Found + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + "409": + description: Conflict + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorResponse" + "422": + description: Validation Error + content: + application/json: + schema: + $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: + post: + tags: + - Agents + summary: Create an agent run and wait for the response + description: "Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the final response. **Note**: If the agent uses an input form trigger, all form fields (including optional fields) must be included in the `input` object." + operationId: createAndWaitRun + x-visibility: Preview + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/AgentRunCreate" + required: true + responses: + "200": + description: Success + content: + application/json: + schema: + $ref: "#/components/schemas/AgentRunWaitResponse" + "400": + description: Bad request + "403": + description: Forbidden + "404": + description: Not Found + "409": + description: Conflict + "422": + description: Validation Error + "500": + description: Internal server error + security: + - APIToken: [] + x-speakeasy-group: client.agents + x-speakeasy-name-override: run + /rest/api/v1/addcollectionitems: + post: + tags: + - Collections + summary: Add Collection item + description: Add items to a Collection. + operationId: addcollectionitems + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/AddCollectionItemsRequest" + description: Data describing the add operation. + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/AddCollectionItemsResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: addItems + x-speakeasy-group: client.collections + /rest/api/v1/createcollection: + post: + tags: + - Collections + summary: Create Collection + description: Create a publicly visible (empty) Collection of documents. + operationId: createcollection + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CreateCollectionRequest" + description: Collection content plus any additional metadata for the request. + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/CreateCollectionResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "422": + description: Semantic error + content: + application/json: + schema: + $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: + post: + tags: + - Collections + summary: Delete Collection + description: Delete a Collection given the Collection's ID. + operationId: deletecollection + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DeleteCollectionRequest" + description: DeleteCollection request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "422": + description: Semantic error + content: + application/json: + schema: + $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: + post: + tags: + - Collections + summary: Delete Collection item + description: Delete a single item from a Collection. + operationId: deletecollectionitem + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DeleteCollectionItemRequest" + description: Data describing the delete operation. + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/DeleteCollectionItemResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "422": + 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: + post: + tags: + - Collections + summary: Update Collection + description: Update the properties of an existing Collection. + operationId: editcollection + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/EditCollectionRequest" + description: Collection content plus any additional metadata for the request. + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/EditCollectionResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "422": + description: Semantic error + content: + application/json: + schema: + $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: + post: + tags: + - Collections + summary: Update Collection item + description: Update the URL, Glean Document ID, description of an item within a Collection given its ID. + operationId: editcollectionitem + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/EditCollectionItemRequest" + description: Edit Collection Items request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/EditCollectionItemResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: updateItem + x-speakeasy-group: client.collections + /rest/api/v1/getcollection: + post: + tags: + - Collections + summary: Read Collection + description: Read the details of a Collection given its ID. Does not fetch items in this Collection. + operationId: getcollection + x-visibility: Preview + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/GetCollectionRequest" + description: GetCollection request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/GetCollectionResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: retrieve + x-speakeasy-group: client.collections + /rest/api/v1/listcollections: + post: + tags: + - Collections + summary: List Collections + description: List all existing Collections. + operationId: listcollections + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ListCollectionsRequest" + description: ListCollections request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/ListCollectionsResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: list + x-speakeasy-group: client.collections + /rest/api/v1/getdocpermissions: + post: + tags: + - Documents + summary: Read document permissions + description: Read the emails of all users who have access to the given document. + operationId: getdocpermissions + x-visibility: Preview + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/GetDocPermissionsRequest" + description: Document permissions request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/GetDocPermissionsResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: retrievePermissions + x-speakeasy-group: client.documents + /rest/api/v1/getdocuments: + post: + tags: + - Documents + summary: Read documents + description: Read the documents including metadata (does not include enhanced metadata via `/documentmetadata`) for the given list of Glean Document IDs or URLs specified in the request. + operationId: getdocuments + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/GetDocumentsRequest" + description: Information about documents requested. + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/GetDocumentsResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + 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: + post: + tags: + - Documents + summary: Read documents by facets + description: Read the documents including metadata (does not include enhanced metadata via `/documentmetadata`) macthing the given facet conditions. + operationId: getdocumentsbyfacets + x-visibility: Preview + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/GetDocumentsByFacetsRequest" + description: Information about facet conditions for documents to be retrieved. + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/GetDocumentsByFacetsResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "404": + description: Not Found + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: retrieveByFacets + x-speakeasy-group: client.documents + /rest/api/v1/insights: + post: + tags: + - Insights + summary: Get insights + description: Gets the aggregate usage insights data displayed in the Insights Dashboards. + operationId: insights + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/InsightsRequest" + description: Includes request parameters for insights requests. + required: true + x-exportParamName: InsightsRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/InsightsResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: retrieve + x-speakeasy-group: client.insights + /rest/api/v1/messages: + post: + tags: + - Messages + summary: Read messages + description: Retrieves list of messages from messaging/chat datasources (e.g. Slack, Teams). + operationId: messages + x-visibility: Preview + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/MessagesRequest" + description: Includes request params such as the id for channel/message and direction. + required: true + x-exportParamName: MessagesRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/MessagesResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: retrieve + x-speakeasy-group: client.messages + /rest/api/v1/editpin: + post: + tags: + - Pins + summary: Update pin + description: Update an existing user-generated pin. + operationId: editpin + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/EditPinRequest" + description: Edit pins request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/PinDocument" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: update + x-speakeasy-group: client.pins + /rest/api/v1/getpin: + post: + tags: + - Pins + summary: Read pin + description: Read pin details given its ID. + operationId: getpin + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/GetPinRequest" + description: Get pin request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/GetPinResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: retrieve + x-speakeasy-group: client.pins + /rest/api/v1/listpins: + post: + tags: + - Pins + summary: List pins + description: Lists all pins. + operationId: listpins + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + type: object + description: List pins request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/ListPinsResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: list + x-speakeasy-group: client.pins + /rest/api/v1/pin: + post: + tags: + - Pins + summary: Create pin + description: Pin a document as a result for a given search query.Pin results that are known to be a good match. + operationId: pin + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/PinRequest" + description: Details about the document and query for the pin. + required: true + x-exportParamName: PinDocument + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/PinDocument" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: create + x-speakeasy-group: client.pins + /rest/api/v1/unpin: + post: + tags: + - Pins + summary: Delete pin + description: Unpin a previously pinned result. + operationId: unpin + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/Unpin" + description: Details about the pin being unpinned. + required: true + x-exportParamName: Unpin + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + 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: + post: + tags: + - Search + summary: Search the index (admin) + description: Retrieves results for search query without respect for permissions. This is available only to privileged users. + operationId: adminsearch + x-visibility: Preview + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/SearchRequest" + description: Admin search request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/SearchResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInfo" + "422": + description: Invalid Query + content: + application/json: + schema: + $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: + post: + tags: + - Search + summary: Autocomplete + description: Retrieve query suggestions, operators and documents for the given partially typed query. + operationId: autocomplete + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/AutocompleteRequest" + description: Autocomplete request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/AutocompleteResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-group: client.search + x-speakeasy-name-override: autocomplete + /rest/api/v1/feed: + post: + tags: + - Search + summary: Feed of documents and events + description: The personalized feed/home includes different types of contents including suggestions, recents, calendar events and many more. + operationId: feed + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/FeedRequest" + description: Includes request params, client data and more for making user's feed. + required: true + x-exportParamName: FeedRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/FeedResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "408": + description: Request Timeout + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: retrieveFeed + x-speakeasy-group: client.search + /rest/api/v1/recommendations: + post: + tags: + - Search + summary: Recommend documents + description: Retrieve recommended documents for the given URL or Glean Document ID. + operationId: recommendations + x-visibility: Preview + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/RecommendationsRequest" + description: Recommendations request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/RecommendationsResponse" + "202": + description: Accepted. The Retry-After header has a hint about when the response will be available + "204": + description: There are no recommendations for this URL + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + 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: + post: + tags: + - Search + summary: Search + description: Retrieve results from the index for the given query and filters. + operationId: search + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/SearchRequest" + description: Search request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/SearchResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + description: Forbidden + content: + application/json: + schema: + $ref: "#/components/schemas/ErrorInfo" + "408": + description: Request Timeout + "422": + description: Invalid Query + content: + application/json: + schema: + $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: + post: + tags: + - Entities + summary: List entities + description: List some set of details for all entities that fit the given criteria and return in the requested order. Does not support negation in filters, assumes relation type EQUALS. There is a limit of 10000 entities that can be retrieved via this endpoint, except when using FULL_DIRECTORY request type for people entities. + operationId: listentities + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ListEntitiesRequest" + description: List people request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/ListEntitiesResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-group: client.entities + x-speakeasy-name-override: list + /rest/api/v1/people: + post: + tags: + - Entities + summary: Read people + description: Read people details for the given IDs. + operationId: people + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/PeopleRequest" + description: People request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/PeopleResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: readPeople + x-speakeasy-group: client.entities + /rest/api/v1/people/{person_id}/photo: + get: + tags: + - Entities + summary: Get person photo + description: | + Returns the profile photo bytes for a person whose photo is stored in Glean (crawled from an identity source or user-uploaded via admin console). Photos hosted externally (e.g. Slack CDN) are not served by this endpoint; callers should follow the photoUrl from /people or /listentities directly. Responses include a Cache-Control header (max-age=3600) to reduce redundant fetches. + operationId: getPersonPhoto + x-visibility: Public + parameters: + - name: person_id + in: path + required: true + description: The obfuscated ID of the person whose photo to retrieve. + schema: + type: string + - name: ds + in: query + required: false + description: | + Optional datasource override for crawled photos (e.g. AZURE, GDRIVE, OKTA). When omitted, the datasource is derived from the person's stored photo URL or the deployment's primary person datasource. + schema: + type: string + responses: + "200": + description: Photo bytes returned successfully. + headers: + Cache-Control: + description: Caching directive for the photo response. + schema: + type: string + example: public, max-age=3600 + content: + image/png: + schema: + type: string + format: binary + image/jpeg: + schema: + type: string + format: binary + "400": + description: Missing person_id parameter. + "401": + description: Not Authorized. + "404": + description: | + Person not found, person has no photo, or photo is not hosted by Glean (follow photoUrl from /people or /listentities directly). + "429": + description: Too Many Requests. + security: + - APIToken: [] + /rest/api/v1/createshortcut: + post: + tags: + - Shortcuts + summary: Create shortcut + description: Create a user-generated shortcut that contains an alias and destination URL. + operationId: createshortcut + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CreateShortcutRequest" + description: CreateShortcut request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/CreateShortcutResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: create + x-speakeasy-group: client.shortcuts + /rest/api/v1/deleteshortcut: + post: + tags: + - Shortcuts + summary: Delete shortcut + description: Delete an existing user-generated shortcut. + operationId: deleteshortcut + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DeleteShortcutRequest" + description: DeleteShortcut request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: delete + x-speakeasy-group: client.shortcuts + /rest/api/v1/getshortcut: + post: + tags: + - Shortcuts + summary: Read shortcut + description: Read a particular shortcut's details given its ID. + operationId: getshortcut + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/GetShortcutRequest" + description: GetShortcut request + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/GetShortcutResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-group: client.shortcuts + x-speakeasy-name-override: retrieve + /rest/api/v1/listshortcuts: + post: + tags: + - Shortcuts + summary: List shortcuts + description: List shortcuts editable/owned by the currently authenticated user. + operationId: listshortcuts + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ListShortcutsPaginatedRequest" + description: Filters, sorters, paging params required for pagination + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/ListShortcutsPaginatedResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-group: client.shortcuts + x-speakeasy-name-override: list + /rest/api/v1/updateshortcut: + post: + tags: + - Shortcuts + summary: Update shortcut + description: Updates the shortcut with the given ID. + operationId: updateshortcut + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/UpdateShortcutRequest" + description: Shortcut content. Id need to be specified for the shortcut. + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/UpdateShortcutResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-group: client.shortcuts + x-speakeasy-name-override: update + /rest/api/v1/summarize: + post: + tags: + - Summarize + summary: Summarize documents + description: Generate an AI summary of the requested documents. + operationId: summarize + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/SummarizeRequest" + description: Includes request params such as the query and specs of the documents to summarize. + required: true + x-exportParamName: Request + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/SummarizeResponse" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: summarize + x-speakeasy-group: client.documents + /rest/api/v1/addverificationreminder: + post: + tags: + - Verification + summary: Create verification + description: Creates a verification reminder for the document. Users can create verification reminders from different product surfaces. + operationId: addverificationreminder + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ReminderRequest" + description: Details about the reminder. + required: true + x-exportParamName: ReminderRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/Verification" + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + 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: + post: + tags: + - Verification + summary: List verifications + description: Returns the information to be rendered in verification dashboard. Includes information for each document owned by user regarding their verifications. + operationId: listverifications + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - in: query + name: count + description: Maximum number of documents to return + required: false + schema: + type: integer + - $ref: "#/components/parameters/locale" + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/VerificationFeed" + "400": + description: Invalid request + "401": + description: Not Authorized + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: list + x-speakeasy-group: client.verification + /rest/api/v1/verify: + post: + tags: + - Verification + summary: Update verification + description: Verify documents to keep the knowledge up to date within customer corpus. + operationId: verify + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: "#/components/parameters/locale" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/VerifyRequest" + description: Details about the verification request. + required: true + x-exportParamName: VerifyRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/Verification" + "400": + description: Invalid request + "401": + description: Not Authorized + "403": + 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: + get: + tags: + - Tools + - Tools + summary: List available tools + description: Returns a filtered set of available tools based on optional tool name parameters. If no filters are provided, all available tools are returned. + x-visibility: Preview + parameters: + - in: query + name: toolNames + description: Optional array of tool names to filter by + required: false + schema: + type: array + items: + type: string + style: form + explode: false + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: "#/components/schemas/ToolsListResponse" + "400": + description: Bad Request + "401": + description: Unauthorized + "404": + description: Not Found + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: list + x-speakeasy-group: client.tools + /rest/api/v1/tools/call: + post: + tags: + - Tools + - Tools + summary: Execute the specified tool + description: Execute the specified tool with provided parameters + x-visibility: Preview + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/ToolsCallRequest" + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: "#/components/schemas/ToolsCallResponse" + "400": + description: Bad Request + "401": + description: Unauthorized + "404": + description: Not Found + "429": + description: Too Many Requests + security: + - APIToken: [] + x-speakeasy-name-override: run + x-speakeasy-group: client.tools + /rest/api/v1/actions/actionpack/{actionPackId}/auth: + parameters: + - in: path + name: actionPackId + required: true + description: ID of the action pack to query or authorize. + schema: + type: string + get: + tags: + - Tools + summary: Get end-user authentication status for an action pack. + description: | + Reports whether the calling user is already authenticated against the third-party + tool backing the specified action pack. Intended for headless / server-driven clients + that render an "Authorize" prompt when the user has not yet consented to the tool. + operationId: getActionPackAuthStatus + x-visibility: Preview + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: "#/components/schemas/ActionPackAuthStatusResponse" + "400": + description: Bad Request + "401": + description: Unauthorized + "404": + description: Action pack not found + "429": + description: Too Many Requests + security: + - APIToken: [] + post: + tags: + - Tools + summary: Start the OAuth authorization flow for an action pack. + description: | + Starts the third-party OAuth flow for the specified action pack and returns the + redirect URL that the client should navigate the end user to. After the OAuth + callback completes, the user's browser is redirected back to `returnUrl` with a + status query parameter (`?glean_action_auth=success|error&actionPackId=...`). - For more frequent document processing, contact Glean support. - tags: - - Documents - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ProcessAllDocumentsRequest" - x-exportParamName: ProcessAllDocumentsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: processAll - x-speakeasy-group: indexing.documents - /api/index/v1/deletedocument: - post: - summary: Delete document - description: Deletes the specified document from the index. Succeeds if document is not present. - tags: - - Documents - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteDocumentRequest" - required: true - x-exportParamName: DeleteDocumentRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: delete - x-speakeasy-group: indexing.documents - /api/index/v1/indexuser: - post: - summary: Index user - description: Adds a datasource user or updates an existing user. - tags: - - Permissions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/IndexUserRequest" - required: true - x-exportParamName: IndexUserRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: indexUser - x-speakeasy-group: indexing.permissions - /api/index/v1/bulkindexusers: - post: - summary: Bulk index users - description: | - Replaces the users 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. - Note: Any users deleted from the existing set will have their associated memberships deleted as well. - tags: - - Permissions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/BulkIndexUsersRequest" - required: true - x-exportParamName: BulkIndexUsersRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: bulkIndexUsers - x-speakeasy-group: indexing.permissions - /api/index/v1/indexgroup: - post: - summary: Index group - description: Add or update a group in the datasource. - tags: - - Permissions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/IndexGroupRequest" - required: true - x-exportParamName: IndexGroupRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: indexGroup - x-speakeasy-group: indexing.permissions - /api/index/v1/bulkindexgroups: - post: - summary: Bulk index groups - description: | - Replaces the groups 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. - Note: Any groups deleted from the existing set will have their associated memberships deleted as well. - tags: - - Permissions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/BulkIndexGroupsRequest" - required: true - x-exportParamName: BulkIndexGroupsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: bulkIndexGroups - x-speakeasy-group: indexing.permissions - /api/index/v1/indexmembership: - post: - summary: Index membership - description: Add the memberships of a group in the datasource. - tags: - - Permissions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/IndexMembershipRequest" - required: true - x-exportParamName: IndexMembershipRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: indexMembership - x-speakeasy-group: indexing.permissions - /api/index/v1/bulkindexmemberships: - post: - summary: Bulk index memberships for a group - 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 - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/BulkIndexMembershipsRequest" - required: true - x-exportParamName: BulkIndexMembershipsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: bulkIndexMemberships - x-speakeasy-group: indexing.permissions - /api/index/v1/processallmemberships: - post: - summary: Schedules the processing of group memberships - description: | - 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 - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ProcessAllMembershipsRequest" - x-exportParamName: ProcessAllMembershipsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - x-speakeasy-name-override: processMemberships - x-speakeasy-group: indexing.permissions - /api/index/v1/deleteuser: - post: - summary: Delete user - description: | - Delete the user from the datasource. Silently succeeds if user is not present. - Note: All memberships associated with the deleted user will also be deleted. - tags: - - Permissions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteUserRequest" - required: true - x-exportParamName: DeleteUserRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: deleteUser - x-speakeasy-group: indexing.permissions - /api/index/v1/deletegroup: - post: - summary: Delete group - description: | - Delete group from the datasource. Silently succeeds if group is not present. - Note: All memberships associated with the deleted group will also be deleted. - tags: - - Permissions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteGroupRequest" - required: true - x-exportParamName: DeleteGroupRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: deleteGroup - x-speakeasy-group: indexing.permissions - /api/index/v1/deletemembership: - post: - summary: Delete membership - description: Delete membership to a group in the specified datasource. Silently succeeds if membership is not present. - tags: - - Permissions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DeleteMembershipRequest" - required: true - x-exportParamName: DeleteMembershipRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: deleteMembership - x-speakeasy-group: indexing.permissions - /api/index/v1/debug/{datasource}/status: - post: - x-beta: true - summary: | - Beta: Get datasource status - description: | - Gather information about the datasource's overall status. Currently in beta, might undergo breaking changes without prior notice. + `returnUrl` must match the tenant's configured return URL allowlist; otherwise the + request is rejected with 400. + operationId: authorizeActionPack + x-visibility: Preview + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/AuthorizeActionPackRequest" + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: "#/components/schemas/AuthorizeActionPackResponse" + "400": + description: Invalid request (e.g. returnUrl not in allowlist, unsupported auth type) + "401": + description: Unauthorized + "403": + description: User not entitled to the action pack + "404": + description: Action pack not found + "429": + description: Too Many Requests + security: + - APIToken: [] + /api/index/v1/indexdocument: + post: + summary: Index document + description: Adds a document to the index or updates an existing document. + tags: + - Documents + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/IndexDocumentRequest' + required: true + x-exportParamName: IndexDocumentRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + "429": + description: Too Many Requests + x-speakeasy-name-override: addOrUpdate + x-speakeasy-group: indexing.documents + /api/index/v1/indexdocuments: + post: + summary: Index documents + 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: + schema: + $ref: '#/components/schemas/IndexDocumentsRequest' + required: true + x-exportParamName: IndexDocumentsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + "429": + description: Too Many Requests + x-speakeasy-name-override: index + x-speakeasy-group: indexing.documents + /api/index/v1/bulkindexdocuments: + post: + summary: Bulk index documents + 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: + schema: + $ref: '#/components/schemas/BulkIndexDocumentsRequest' + required: true + x-exportParamName: BulkIndexDocumentsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: bulkIndex + x-speakeasy-group: indexing.documents + /api/index/v1/updatepermissions: + post: + summary: Update document permissions + description: Updates the permissions for a given document without modifying document content. + tags: + - Documents + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdatePermissionsRequest' + required: true + x-exportParamName: UpdatePermissionsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + "429": + description: Too Many Requests + x-speakeasy-name-override: updatePermissions + x-speakeasy-group: indexing.permissions + /api/index/v1/processalldocuments: + post: + summary: Schedules the processing of uploaded documents + description: | + Schedules the immediate processing of documents uploaded through the indexing API. By default the uploaded documents will be processed asynchronously but this API can be used to schedule processing of all documents on demand. - Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. - tags: - - Troubleshooting - parameters: - - name: datasource - in: path - description: The datasource to get debug status for. - required: true - schema: - type: string - responses: - "200": - description: OK - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/DebugDatasourceStatusResponse" - "400": - description: Bad Request - "401": - description: Not Authorized - x-speakeasy-name-override: status - x-speakeasy-group: indexing.datasource - /api/index/v1/debug/{datasource}/document: - post: - x-beta: true - summary: | - Beta: Get document information - description: | - Gives various information that would help in debugging related to a particular document. Currently in beta, might undergo breaking changes without prior notice. + If a `datasource` parameter is specified, processing is limited to that custom datasource. Without it, processing applies to all documents across all custom datasources. + #### Rate Limits + This endpoint is rate-limited to one usage every 3 hours. Exceeding this limit results in a 429 response code. Here's how the rate limit works: + 1. Calling `/processalldocuments` for datasource `foo` prevents another call for `foo` for 3 hours. + 2. Calling `/processalldocuments` for datasource `foo` doesn't affect immediate calls for `bar`. + 3. Calling `/processalldocuments` for all datasources prevents any datasource calls for 3 hours. + 4. Calling `/processalldocuments` for datasource `foo` doesn't affect immediate calls for all datasources. - Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. - tags: - - Troubleshooting - parameters: - - name: datasource - in: path - description: The datasource to which the document belongs - required: true - schema: - type: string - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/DebugDocumentRequest" - required: true - x-exportParamName: DebugDocumentRequest - responses: - "200": - description: OK - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/DebugDocumentResponse" - "400": - description: Bad Request - "401": - description: Not Authorized - x-speakeasy-group: indexing.documents - x-speakeasy-name-override: debug - /api/index/v1/debug/{datasource}/documents: - post: - x-beta: true - summary: | - Beta: Get information of a batch of documents - description: | - Gives various information that would help in debugging related to a batch of documents. Currently in beta, might undergo breaking changes without prior notice. + For more frequent document processing, contact Glean support. + tags: + - Documents + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProcessAllDocumentsRequest' + x-exportParamName: ProcessAllDocumentsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-speakeasy-name-override: processAll + x-speakeasy-group: indexing.documents + /api/index/v1/deletedocument: + post: + summary: Delete document + description: Deletes the specified document from the index. Succeeds if document is not present. + tags: + - Documents + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteDocumentRequest' + required: true + x-exportParamName: DeleteDocumentRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: delete + x-speakeasy-group: indexing.documents + /api/index/v1/indexuser: + post: + summary: Index user + description: Adds a datasource user or updates an existing user. + tags: + - Permissions + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/IndexUserRequest' + required: true + x-exportParamName: IndexUserRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: indexUser + x-speakeasy-group: indexing.permissions + /api/index/v1/bulkindexusers: + post: + summary: Bulk index users + description: | + Replaces the users 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. + Note: Any users deleted from the existing set will have their associated memberships deleted as well. + tags: + - Permissions + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BulkIndexUsersRequest' + required: true + x-exportParamName: BulkIndexUsersRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: bulkIndexUsers + x-speakeasy-group: indexing.permissions + /api/index/v1/indexgroup: + post: + summary: Index group + description: Add or update a group in the datasource. + tags: + - Permissions + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/IndexGroupRequest' + required: true + x-exportParamName: IndexGroupRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: indexGroup + x-speakeasy-group: indexing.permissions + /api/index/v1/bulkindexgroups: + post: + summary: Bulk index groups + description: | + Replaces the groups 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. + Note: Any groups deleted from the existing set will have their associated memberships deleted as well. + tags: + - Permissions + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BulkIndexGroupsRequest' + required: true + x-exportParamName: BulkIndexGroupsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: bulkIndexGroups + x-speakeasy-group: indexing.permissions + /api/index/v1/indexmembership: + post: + summary: Index membership + description: Add the memberships of a group in the datasource. + tags: + - Permissions + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/IndexMembershipRequest' + required: true + x-exportParamName: IndexMembershipRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: indexMembership + x-speakeasy-group: indexing.permissions + /api/index/v1/bulkindexmemberships: + post: + summary: Bulk index memberships for a group + 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: + schema: + $ref: '#/components/schemas/BulkIndexMembershipsRequest' + required: true + x-exportParamName: BulkIndexMembershipsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: bulkIndexMemberships + x-speakeasy-group: indexing.permissions + /api/index/v1/processallmemberships: + post: + summary: Schedules the processing of group memberships + description: | + 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: + schema: + $ref: '#/components/schemas/ProcessAllMembershipsRequest' + x-exportParamName: ProcessAllMembershipsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + x-speakeasy-name-override: processMemberships + x-speakeasy-group: indexing.permissions + /api/index/v1/deleteuser: + post: + summary: Delete user + description: | + Delete the user from the datasource. Silently succeeds if user is not present. + Note: All memberships associated with the deleted user will also be deleted. + tags: + - Permissions + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteUserRequest' + required: true + x-exportParamName: DeleteUserRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: deleteUser + x-speakeasy-group: indexing.permissions + /api/index/v1/deletegroup: + post: + summary: Delete group + description: | + Delete group from the datasource. Silently succeeds if group is not present. + Note: All memberships associated with the deleted group will also be deleted. + tags: + - Permissions + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeleteGroupRequest' + required: true + x-exportParamName: DeleteGroupRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: deleteGroup + x-speakeasy-group: indexing.permissions + /api/index/v1/deletemembership: + post: + summary: Delete membership + 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: + schema: + $ref: '#/components/schemas/DeleteMembershipRequest' + required: true + x-exportParamName: DeleteMembershipRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: deleteMembership + x-speakeasy-group: indexing.permissions + /api/index/v1/debug/{datasource}/status: + post: + summary: | + Beta: Get datasource status + description: | + Gather information about the datasource's overall status. Currently in beta, might undergo breaking changes without prior notice. - Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. - tags: - - Troubleshooting - parameters: - - name: datasource - in: path - description: The datasource to which the document belongs - required: true - schema: - type: string - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/DebugDocumentsRequest" - required: true - x-exportParamName: DebugDocumentsRequest - responses: - "200": - description: OK - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/DebugDocumentsResponse" - "400": - description: Bad Request - "401": - description: Not Authorized - x-speakeasy-group: indexing.documents - x-speakeasy-name-override: debugMany - /api/index/v1/debug/{datasource}/user: - post: - x-beta: true - summary: | - Beta: Get user information - description: | - Gives various information that would help in debugging related to a particular user. Currently in beta, might undergo breaking changes without prior notice. + 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 + description: The datasource to get debug status for. + required: true + schema: + type: string + responses: + "200": + description: OK + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/DebugDatasourceStatusResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + x-beta: true + x-speakeasy-name-override: status + x-speakeasy-group: indexing.datasource + /api/index/v1/debug/{datasource}/document: + post: + summary: | + Beta: Get document information + description: | + Gives various information that would help in debugging related to a particular document. Currently in beta, might undergo breaking changes without prior notice. - Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. - tags: - - Troubleshooting - parameters: - - name: datasource - in: path - description: The datasource to which the user belongs - required: true - schema: - type: string - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/DebugUserRequest" - required: true - x-exportParamName: DebugUserRequest - responses: - "200": - description: OK - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/DebugUserResponse" - "400": - description: Bad Request - "401": - description: Not Authorized - x-speakeasy-name-override: debug - x-speakeasy-group: indexing.people - /api/index/v1/checkdocumentaccess: - post: - summary: Check document access - description: | - Check if a given user has access to access a document in a custom datasource + 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 + description: The datasource to which the document belongs + required: true + schema: + type: string + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/DebugDocumentRequest' + required: true + x-exportParamName: DebugDocumentRequest + responses: + "200": + description: OK + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/DebugDocumentResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + x-beta: true + x-speakeasy-group: indexing.documents + x-speakeasy-name-override: debug + /api/index/v1/debug/{datasource}/documents: + post: + summary: | + Beta: Get information of a batch of documents + description: | + Gives various information that would help in debugging related to a batch of documents. Currently in beta, might undergo breaking changes without prior notice. - Tip: Refer to the [Troubleshooting tutorial](https://developers.glean.com/indexing/debugging/datasource-config) for more information. - tags: - - Troubleshooting - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CheckDocumentAccessRequest" - required: true - x-exportParamName: CheckDocumentAccessRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/CheckDocumentAccessResponse" - "400": - description: Bad Request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-group: indexing.documents - x-speakeasy-name-override: checkAccess - /api/index/v1/getdocumentstatus: - post: - deprecated: true - summary: Get document upload and indexing status - description: | - Intended for debugging/validation. Fetches the current upload and indexing status of documents. + 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 + description: The datasource to which the document belongs + required: true + schema: + type: string + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/DebugDocumentsRequest' + required: true + x-exportParamName: DebugDocumentsRequest + responses: + "200": + description: OK + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/DebugDocumentsResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + x-beta: true + x-speakeasy-group: indexing.documents + x-speakeasy-name-override: debugMany + /api/index/v1/debug/{datasource}/user: + post: + summary: | + Beta: Get user information + description: | + Gives various information that would help in debugging related to a particular user. Currently in beta, might undergo breaking changes without prior notice. - Tip: Use [/debug/{datasource}/document](https://developers.glean.com/indexing/debugging/datasource-document) for richer information. - tags: - - Troubleshooting - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocumentStatusRequest" - required: true - x-exportParamName: GetDocumentStatusRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocumentStatusResponse" - "400": - description: Bad Request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-group: indexing.documents - x-speakeasy-name-override: status - /api/index/v1/getdocumentcount: - post: - deprecated: true - summary: Get document count - description: | - Fetches document count for the specified custom datasource. + 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 + description: The datasource to which the user belongs + required: true + schema: + type: string + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/DebugUserRequest' + required: true + x-exportParamName: DebugUserRequest + responses: + "200": + description: OK + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/DebugUserResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + x-beta: true + x-speakeasy-name-override: debug + x-speakeasy-group: indexing.people + /api/index/v1/checkdocumentaccess: + post: + summary: Check document access + description: | + Check if a given user has access to access a document in a custom datasource - Tip: Use [/debug/{datasource}/status](https://developers.glean.com/indexing/debugging/datasource-status) for richer information. - tags: - - Troubleshooting - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocumentCountRequest" - required: true - x-exportParamName: GetDocumentCountRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetDocumentCountResponse" - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-group: indexing.documents - x-speakeasy-name-override: count - /api/index/v1/getusercount: - post: - deprecated: true - summary: Get user count - description: | - Fetches user count for the specified custom datasource. + 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: + schema: + $ref: '#/components/schemas/CheckDocumentAccessRequest' + required: true + x-exportParamName: CheckDocumentAccessRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CheckDocumentAccessResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-speakeasy-group: indexing.documents + x-speakeasy-name-override: checkAccess + /api/index/v1/getdocumentstatus: + post: + summary: Get document upload and indexing status + description: | + Intended for debugging/validation. Fetches the current upload and indexing status of documents. - Tip: Use [/debug/{datasource}/status](https://developers.glean.com/indexing/debugging/datasource-status) for richer information. - tags: - - Troubleshooting - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetUserCountRequest" - required: true - x-exportParamName: GetUserCountRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetUserCountResponse" - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: count - x-speakeasy-group: indexing.people - /api/index/v1/betausers: - post: - summary: Beta users - 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 - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GreenlistUsersRequest" - required: true - x-exportParamName: GreenlistUsersRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: authorizeBetaUsers - x-speakeasy-group: indexing.permissions - /api/index/v1/adddatasource: - post: - summary: Add or update datasource - description: Add or update a custom datasource and its schema. - tags: - - Datasources - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CustomDatasourceConfig" - required: true - x-exportParamName: DatasourceConfig - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - x-speakeasy-name-override: add - x-speakeasy-group: indexing.datasources - /api/index/v1/getdatasourceconfig: - post: - summary: Get datasource config - description: Fetches the datasource config for the specified custom datasource. - tags: - - Datasources - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/GetDatasourceConfigRequest" - required: true - x-exportParamName: GetDatasourceConfigRequest - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/CustomDatasourceConfig" - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: retrieveConfig - x-speakeasy-group: indexing.datasources - /api/index/v1/rotatetoken: - post: - summary: Rotate token - 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 - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/RotateTokenResponse" - "400": - description: Bad Request - "401": - description: Not Authorized - x-speakeasy-name-override: rotateToken - x-speakeasy-group: indexing.authentication - /api/index/v1/indexemployee: - post: - summary: Index employee - description: Adds an employee or updates information about an employee - tags: - - People - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/IndexEmployeeRequest" - required: true - x-exportParamName: IndexEmployeeRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: index - x-speakeasy-group: indexing.people - /api/index/v1/bulkindexemployees: - post: - summary: Bulk index employees - 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 - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/BulkIndexEmployeesRequest" - required: true - x-exportParamName: BulkIndexEmployeesRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: bulkIndex - x-speakeasy-group: indexing.people - /api/index/v1/indexemployeelist: {} - /api/index/v1/processallemployeesandteams: - post: - summary: Schedules the processing of uploaded employees and teams - description: | - 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 - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "429": - description: Too Many Requests - x-speakeasy-name-override: processAllEmployeesAndTeams - x-speakeasy-group: indexing.people - /api/index/v1/deleteemployee: - post: - summary: Delete employee - description: Delete an employee. Silently succeeds if employee is not present. - tags: - - People - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/DeleteEmployeeRequest" - required: true - x-exportParamName: DeleteEmployeeRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: delete - x-speakeasy-group: indexing.people - /api/index/v1/indexteam: - post: - summary: Index team - description: Adds a team or updates information about a team - tags: - - People - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/IndexTeamRequest" - required: true - x-exportParamName: IndexTeamRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: indexTeam - x-speakeasy-group: indexing.people - /api/index/v1/deleteteam: - post: - summary: Delete team - description: Delete a team based on provided id. - tags: - - People - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/DeleteTeamRequest" - required: true - x-exportParamName: DeleteTeamRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: deleteTeam - x-speakeasy-group: indexing.people - /api/index/v1/bulkindexteams: - post: - summary: Bulk index teams - 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 - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/BulkIndexTeamsRequest" - required: true - x-exportParamName: BulkIndexTeamsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: bulkIndexTeams - x-speakeasy-group: indexing.people - /api/index/v1/bulkindexshortcuts: - post: - summary: Bulk index external shortcuts - 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 - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/BulkIndexShortcutsRequest" - required: true - x-exportParamName: BulkIndexShortcutsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: bulkIndex - x-speakeasy-group: indexing.shortcuts - /api/index/v1/uploadshortcuts: - post: - summary: Upload shortcuts - 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 - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/UploadShortcutsRequest" - required: true - x-exportParamName: UploadShortcutsRequest - responses: - "200": - description: OK - "400": - description: Bad Request - "401": - description: Not Authorized - "409": - description: Conflict - x-speakeasy-name-override: upload - x-speakeasy-group: indexing.shortcuts - /rest/api/v1/governance/data/policies/{id}: - get: - description: Fetches the specified policy version, or the latest if no version is provided. - summary: Gets specified policy - operationId: getpolicy - x-visibility: Public - tags: - - Governance - parameters: - - name: id - in: path - description: The id of the policy to fetch. - required: true - schema: - type: string - - name: version - in: query - description: The version of the policy to fetch. Each time a policy is updated, the older version is still stored. If this is left empty, the latest policy is fetched. - required: false - schema: - type: integer - format: int64 - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/GetDlpReportResponse" - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.data.policies - x-speakeasy-name-override: retrieve - post: - description: Updates an existing policy. - summary: Updates an existing policy - operationId: updatepolicy - tags: - - Governance - parameters: - - name: id - in: path - description: The id of the policy to fetch. - required: true - schema: - type: string - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/UpdateDlpReportRequest" - required: true - responses: - "200": - description: OK - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/UpdateDlpReportResponse" - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.data.policies - x-speakeasy-name-override: update - /rest/api/v1/governance/data/policies: - get: - description: Lists policies with filtering. - summary: Lists policies - operationId: listpolicies - x-visibility: Public - tags: - - Governance - parameters: - - name: autoHide - in: query - description: Filter to return reports with a given value of auto-hide. - required: false - schema: - type: boolean - - name: frequency - in: query - description: Filter to return reports with a given frequency. - required: false - schema: - type: string - responses: - "200": - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/ListDlpReportsResponse" - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.data.policies - x-speakeasy-name-override: list - post: - description: Creates a new policy with specified specifications and returns its id. - summary: Creates new policy - operationId: createpolicy - x-visibility: Public - tags: - - Governance - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/CreateDlpReportRequest" - required: true - responses: - "200": - description: OK - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/CreateDlpReportResponse" - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.data.policies - x-speakeasy-name-override: create - /rest/api/v1/governance/data/policies/{id}/download: - get: - description: Downloads CSV violations report for a specific policy id. This does not support continuous policies. - summary: Downloads violations CSV for policy - operationId: downloadpolicycsv - x-visibility: Public - tags: - - Governance - parameters: - - name: id - in: path - description: The id of the policy to download violations for. - required: true - schema: - type: string - responses: - "200": - description: Downloads csv of batch policy violations. - content: - text/csv; charset=UTF-8: - schema: - description: CSV of all the violations found for this policy. - type: string - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.data.policies - x-speakeasy-name-override: download - /rest/api/v1/governance/data/reports: - post: - description: Creates a new one-time report and executes its batch job. - summary: Creates new one-time report - operationId: createreport - x-visibility: Public - tags: - - Governance - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/UpdateDlpConfigRequest" - required: true - responses: - "200": - description: OK - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/UpdateDlpConfigResponse" - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.data.reports - x-speakeasy-name-override: create - /rest/api/v1/governance/data/reports/{id}/download: - get: - description: Downloads CSV violations report for a specific report id. - summary: Downloads violations CSV for report - operationId: downloadreportcsv - x-visibility: Public - tags: - - Governance - parameters: - - name: id - in: path - description: The id of the report to download violations for. - required: true - schema: - type: string - responses: - "200": - description: Downloads csv of one-time report violations. - content: - text/csv; charset=UTF-8: - schema: - description: CSV of all the violations found for this report. - type: string - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.data.reports - x-speakeasy-name-override: download - /rest/api/v1/governance/data/reports/{id}/status: - get: - description: Fetches the status of the run corresponding to the report-id. - summary: Fetches report run status - operationId: getreportstatus - x-visibility: Public - tags: - - Governance - parameters: - - name: id - in: path - description: The id of the report to get run status for. - required: true - schema: - type: string - responses: - "200": - description: Fetches status of report run. - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/ReportStatusResponse" - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.data.reports - x-speakeasy-name-override: status - /rest/api/v1/governance/documents/visibilityoverrides: - get: - description: Fetches the visibility override status of the documents passed. - summary: Fetches documents visibility - operationId: getdocvisibility - x-visibility: Public - tags: - - Governance - parameters: - - name: docIds - in: query - description: List of doc-ids which will have their hide status fetched. - schema: - type: array - items: - type: string - responses: - "200": - description: The visibility status of documents - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/GetDocumentVisibilityOverridesResponse" - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.documents.visibilityoverrides - x-speakeasy-name-override: list - post: - description: Sets the visibility-override state of the documents specified, effectively hiding or un-hiding documents. - summary: Hide or unhide docs - operationId: setdocvisibility - x-visibility: Public - tags: - - Governance - requestBody: - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/UpdateDocumentVisibilityOverridesRequest" - required: true - responses: - "200": - description: OK - content: - application/json; charset=UTF-8: - schema: - $ref: "#/components/schemas/UpdateDocumentVisibilityOverridesResponse" - "403": - description: Permissions error - "500": - description: Internal error - x-speakeasy-group: client.governance.documents.visibilityoverrides - x-speakeasy-name-override: create - /rest/api/v1/chat#stream: - post: - tags: - - Chat - summary: Chat - description: Have a conversation with Glean AI. - operationId: chatStream - x-visibility: Public - x-codegen-request-body-name: payload - parameters: - - $ref: '#/components/parameters/timezoneOffset' - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/ChatRequest' - examples: - defaultExample: - value: - messages: - - author: USER - messageType: CONTENT - fragments: - - text: What are the company holidays this year? - gptAgentExample: - value: - agentConfig: - agent: GPT - messages: - - author: USER - messageType: CONTENT - fragments: - - text: Who was the first person to land on the moon? - description: Includes chat history for Glean AI to respond to. - required: true - x-exportParamName: Request - responses: - '200': - description: OK - content: - text/plain: - schema: - $ref: '#/components/schemas/ChatRequestStream' - examples: - defaultExample: - value: - messages: - - author: GLEAN_AI - messageType: CONTENT - hasMoreFragments: false - agentConfig: - agent: DEFAULT - mode: DEFAULT - fragments: - - text: There are no holidays! - streamingExample: - value: - messages: - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: true - fragments: null - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: true - fragments: null - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: true - fragments: - - text: e are - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: true - fragments: - - text: no hol - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - hasMoreFragments: false - fragments: - - text: idays! - updateResponse: - value: - messages: - - author: GLEAN_AI - messageType: UPDATE - agentConfig: - agent: DEFAULT - mode: DEFAULT - fragments: - - text: '**Reading:**' - - structuredResults: - - document: - id: '123' - title: Company Handbook - citationResponse: - value: - messages: - - author: GLEAN_AI - messageType: CONTENT - agentConfig: - agent: DEFAULT - mode: DEFAULT - citations: - - sourceDocument: - id: '123' - title: Company Handbook - referenceRanges: - - textRange: - startIndex: 0 - endIndex: 12 - type: CITATION - '400': - description: Invalid request - '401': - description: Not Authorized - '408': - description: Request Timeout - '429': - description: Too Many Requests - x-speakeasy-group: client.chat - x-speakeasy-name-override: createStream - x-speakeasy-usage-example: true -components: - securitySchemes: - APIToken: - scheme: bearer - type: http - schemas: - ActivityEventParams: - properties: - bodyContent: - description: The HTML content of the page body. - type: string - datasourceInstance: - type: string - description: The full datasource instance name inferred from the URL of the event - datasource: - type: string - description: The datasource without the instance inferred from the URL of the event - instanceOnlyName: - type: string - description: The instance only name of the datasource instance, e.g. 1 for jira_1, inferred from the URL of the event - duration: - description: Length in seconds of the activity. For VIEWS, this represents the amount the page was visible in the foreground. - type: integer - query: - description: The user's search query associated with a SEARCH. - type: string - referrer: - description: The referring URL of the VIEW or SEARCH. - type: string - title: - description: The page title associated with the URL of the event - type: string - truncated: - description: Indicates that the parameters are incomplete and more parameters may be sent with the same action+timestamp+URL in the future. This is used for sending the duration when a `VIEW` is finished. - type: boolean - ActivityEvent: - required: - - action - - source - - timestamp - - url - properties: - id: - type: string - description: Universally unique identifier of the event. To allow for reliable retransmission, only the earliest received event of a given UUID is considered valid by the server and subsequent are ignored. - action: - type: string - description: The type of activity this represents. - enum: - - VIEW - - EDIT - - SEARCH - - COMMENT - - CRAWL - - HISTORICAL_SEARCH - - HISTORICAL_VIEW - x-speakeasy-enum-descriptions: - VIEW: Represents a visit to the given `url`. - EDIT: Represents an edit of the document represented by the `url`. - SEARCH: Represents a search performed at the given `url`. - COMMENT: Represents a comment on the document represented by the `url`. - CRAWL: Represents an explicit request to index the given `url` along with associated attributes in this payload. - HISTORICAL_SEARCH: Represents a search performed at the given `url` as indicated by the user's history. - HISTORICAL_VIEW: Represents a visit to the given `url` as indicated by the user's history. - params: - $ref: "#/components/schemas/ActivityEventParams" - timestamp: - type: string - description: The ISO 8601 timestamp when the activity began. - format: date-time - url: - description: The URL of the activity. - type: string - Activity: - required: - - events - properties: - events: - type: array - items: - $ref: "#/components/schemas/ActivityEvent" - example: - events: - - url: https://example.com/ - action: HISTORICAL_VIEW - timestamp: "2000-01-23T04:56:07.000Z" - - url: https://example.com/search?q=query - action: SEARCH - timestamp: "2000-01-23T04:56:07.000Z" - params: - query: query - - url: https://example.com/ - action: VIEW - timestamp: "2000-01-23T04:56:07.000Z" - params: - duration: 20 - referrer: https://example.com/document - SessionInfo: - properties: - sessionTrackingToken: - type: string - description: A unique token for this session. A new session (and token) is created when the user issues a request from a new tab or when our server hasn't seen activity for more than 10 minutes from a tab. - tabId: - type: string - description: A unique id for all requests a user makes from a given tab, no matter how far apart. A new tab id is only generated when a user issues a request from a new tab. - lastSeen: - type: string - format: date-time - description: The last time the server saw this token. - lastQuery: - type: string - description: The last query seen by the server. - User: - properties: - userID: - description: An opaque user ID for the claimed authority (i.e., the actas param, or the origid if actas is not specified). - type: string - origID: - description: An opaque user ID for the authenticated user (ignores actas). - type: string - FeedbackChatExchange: - properties: - timestamp: - type: integer - format: int64 - description: Unix timestamp in millis for the chat request. - agent: - type: string - description: Either DEFAULT (company knowledge) or GPT (world knowledge). - userQuery: - type: string - description: Initial query entered by the user. - searchQuery: - type: string - description: Search query performed by the agent. - resultDocuments: - type: array - description: List of documents read by the agent. - items: - properties: - title: - type: string - url: - type: string - response: - type: string - ManualFeedbackInfo: - properties: - email: - type: string - description: The email address of the user who submitted the Feedback.event.MANUAL_FEEDBACK event. - deprecated: true - source: - type: string - description: The source associated with the Feedback.event.MANUAL_FEEDBACK event. - enum: - - AUTOCOMPLETE - - CALENDAR - - CHAT - - CHAT_GENERAL - - CONCEPT_CARD - - DESKTOP_APP - - DISAMBIGUATION_CARD - - EXPERT_DETECTION - - FEED - - GENERATED_Q_AND_A - - INLINE_MENU - - NATIVE_RESULT - - PRISM - - Q_AND_A - - RELATED_QUESTIONS - - REPORT_ISSUE - - SCIOBOT - - SEARCH - - SIDEBAR - - SUMMARY - - TASKS - issue: - type: string - description: The issue the user indicated in the feedback. - deprecated: true - issues: - type: array - description: The issue(s) the user indicated in the feedback. - items: - type: string - enum: - - INACCURATE_RESPONSE - - INCOMPLETE_OR_NO_ANSWER - - INCORRECT_CITATION - - MISSING_CITATION - - OTHER - - OUTDATED_RESPONSE - - RESULT_MISSING - - RESULT_SHOULD_NOT_APPEAR - - RESULTS_HELPFUL - - RESULTS_POOR_ORDER - - TOO_MUCH_ONE_KIND - imageUrls: - type: array - items: - type: string - description: URLs of images uploaded by user when providing feedback - query: - type: string - description: The query associated with the Feedback.event.MANUAL_FEEDBACK event. - obscuredQuery: - type: string - description: The query associated with the Feedback.event.MANUAL_FEEDBACK event, but obscured such that the vowels are replaced with special characters. For search feedback events only. - activeTab: - type: string - description: Which tabs the user had chosen at the time of the Feedback.event.MANUAL_FEEDBACK event. For search feedback events only. - comments: - type: string - description: The comments users can optionally add to the Feedback.event.MANUAL_FEEDBACK events. - searchResults: - type: array - items: - type: string - description: The array of search result Glean Document IDs, ordered by top to bottom result. - previousMessages: - type: array - items: - type: string - description: The array of previous messages in a chat session, ordered by oldest to newest. - chatTranscript: - type: array - items: - $ref: "#/components/schemas/FeedbackChatExchange" - description: Array of previous request/response exchanges, ordered by oldest to newest. - numQueriesFromFirstRun: - type: integer - description: How many times this query has been run in the past. - vote: - type: string - description: The vote associated with the Feedback.event.MANUAL_FEEDBACK event. - enum: - - UPVOTE - - DOWNVOTE - rating: - type: integer - description: A rating associated with the user feedback. The value will be between one and the maximum given by ratingScale, inclusive. - ratingKey: - type: string - description: A description of the rating that contextualizes how it appeared to the user, e.g. "satisfied". - ratingScale: - type: integer - description: The scale of comparison for a rating associated with the feedback. Rating values start from one and go up to the maximum specified by ratingScale. For example, a five-option satisfaction rating will have a ratingScale of 5 and a thumbs-up/thumbs-down rating will have a ratingScale of 2. - SideBySideImplementation: - properties: - implementationId: - type: string - description: Unique identifier for this implementation variant. - implementationName: - type: string - description: Human-readable name for this implementation (e.g., "Variant A", "GPT-4", "Claude"). - searchParams: - type: object - description: The search/chat parameters used for this implementation. - additionalProperties: - type: string - response: - type: string - description: The full response generated by this implementation. - responseMetadata: - type: object - description: Metadata about the response (e.g., latency, token count). - properties: - latencyMs: - type: integer - description: Time taken to generate the response in milliseconds. - tokenCount: - type: integer - description: Number of tokens in the response. - modelUsed: - type: string - description: The specific model version used. - ManualFeedbackSideBySideInfo: - properties: - email: - type: string - description: The email address of the user who submitted the side-by-side feedback. - source: - type: string - description: The source associated with the side-by-side feedback event. - enum: - - LIVE_EVAL - - CHAT - - SEARCH - query: - type: string - description: The query or prompt that was evaluated across multiple implementations. - implementations: - type: array - description: Array of implementations that were compared side-by-side. - items: - $ref: "#/components/schemas/SideBySideImplementation" - evaluationSessionId: - type: string - description: Unique identifier for this evaluation session to group related feedback events. - implementationId: - type: string - description: The ID of the implementation this specific feedback event is for. - vote: - type: string - description: The vote for this specific implementation. - enum: - - UPVOTE - - DOWNVOTE - - NEUTRAL - comments: - type: string - description: Specific feedback comments for this implementation. - SeenFeedbackInfo: - properties: - isExplicit: - type: boolean - description: The confidence of the user seeing the object is high because they explicitly interacted with it e.g. answer impression in SERP with additional user interaction. - UserViewInfo: - properties: - docId: - type: string - description: Unique Glean Document ID of the associated document. - docTitle: - type: string - description: Title of associated document. - docUrl: - type: string - description: URL of associated document. - WorkflowFeedbackInfo: - properties: - source: - type: string - enum: - - ZERO_STATE - - LIBRARY - - HOMEPAGE - description: Where the feedback of the workflow originated from - Feedback: - required: - - event - - trackingTokens - properties: - id: - type: string - description: Universally unique identifier of the event. To allow for reliable retransmission, only the earliest received event of a given UUID is considered valid by the server and subsequent are ignored. - category: - type: string - description: 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. - enum: - - ANNOUNCEMENT - - AUTOCOMPLETE - - COLLECTIONS - - FEED - - SEARCH - - CHAT - - NTP - - WORKFLOWS - - SUMMARY - - GENERAL - - PRISM - - PROMPTS - trackingTokens: - type: array - description: A list of server-generated trackingTokens to which this event applies. - items: - type: string - event: - type: string - description: The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`. - enum: - - CLICK - - CONTAINER_CLICK - - COPY_LINK - - CREATE - - DISMISS - - DOWNVOTE - - EMAIL - - EXECUTE - - FILTER - - FIRST_TOKEN - - FOCUS_IN - - LAST_TOKEN - - MANUAL_FEEDBACK - - MANUAL_FEEDBACK_SIDE_BY_SIDE - - MARK_AS_READ - - MESSAGE - - MIDDLE_CLICK - - PAGE_BLUR - - PAGE_FOCUS - - PAGE_LEAVE - - PREVIEW - - RELATED_CLICK - - RIGHT_CLICK - - SECTION_CLICK - - SEEN - - SELECT - - SHARE - - SHOW_MORE - - UPVOTE - - VIEW - - VISIBLE - x-speakeasy-enum-descriptions: - CLICK: The object's primary link was clicked with the intent to view its full representation. Depending on the object type, this may imply an external navigation or navigating to a new page or view within the Glean app. - CONTAINER_CLICK: A link to the object's parent container (e.g. the folder in which it's located) was clicked. - COPY_LINK: The user copied a link to the primary link. - CREATE: The user creates a document. - DISMISS: The user dismissed the object such that it was hidden from view. - DOWNVOTE: The user gave feedback that the object was not useful. - EMAIL: The user attempted to send an email. - EXECUTE: The user executed the object (e.g. ran a workflow). - FILTER: The user applied a filter. - FIRST_TOKEN: The first token of a streaming response is received. - FOCUS_IN: The user clicked into an interactive element, e.g. the search box. - LAST_TOKEN: The final token of a streaming response is received. - MANUAL_FEEDBACK: The user submitted textual manual feedback regarding the object. - MANUAL_FEEDBACK_SIDE_BY_SIDE: The user submitted comparative feedback for multiple side-by-side implementations. - MARK_AS_READ: The user explicitly marked the content as read. - MESSAGE: The user attempted to send a message using their default messaing app. - MIDDLE_CLICK: The user middle clicked the object's primary link with the intent to open its full representation in a new tab. - PAGE_BLUR: The user puts a page out of focus but keeps it in the background. - PAGE_FOCUS: The user puts a page in focus, meaning it is the first to receive keyboard events. - PAGE_LEAVE: The user leaves a page and it is unloaded (by clicking a link, closing the tab/window, etc). - PREVIEW: The user clicked the object's inline preview affordance. - RIGHT_CLICK: The user right clicked the object's primary link. This may indicate an intent to open it in a new tab or copy it. - SECTION_CLICK: The user clicked a link to a subsection of the primary object. - SEEN: The user has likely seen the object (e.g. took action to make the object visible within the user's viewport). - SELECT: The user explicitly selected something, eg. a chat response variant they prefer. - SHARE: The user shared the object with another user. - SHOW_MORE: The user clicked the object's show more affordance. - UPVOTE: The user gave feedback that the object was useful. - VIEW: The object was visible within the user's viewport. - VISIBLE: The object was visible within the user's viewport. - position: - type: integer - description: Position of the element in the case that the client controls order (such as feed and autocomplete). - payload: - type: string - description: For type MANUAL_FEEDBACK, contains string of user feedback. For autocomplete, partial query string. For feed, string of user feedback in addition to manual feedback signals extracted from all suggested content. - sessionInfo: - $ref: "#/components/schemas/SessionInfo" - timestamp: - type: string - description: The ISO 8601 timestamp when the event occured. - format: date-time - user: - $ref: "#/components/schemas/User" - pathname: - type: string - description: The path the client was at when the feedback event triggered. - channels: - type: array - description: Where the feedback will be sent, e.g. to Glean, the user's company, or both. If no channels are specified, feedback will go only to Glean. - items: - type: string - enum: - - COMPANY - - GLEAN - url: - type: string - description: The URL the client was at when the feedback event triggered. - uiTree: - description: The UI element tree associated with the event, if any. - items: - type: string - type: array - uiElement: - type: string - description: The UI element associated with the event, if any. - manualFeedbackInfo: - $ref: "#/components/schemas/ManualFeedbackInfo" - manualFeedbackSideBySideInfo: - $ref: "#/components/schemas/ManualFeedbackSideBySideInfo" - seenFeedbackInfo: - $ref: "#/components/schemas/SeenFeedbackInfo" - userViewInfo: - $ref: "#/components/schemas/UserViewInfo" - workflowFeedbackInfo: - $ref: "#/components/schemas/WorkflowFeedbackInfo" - applicationId: - type: string - description: The application ID of the client that sent the feedback event. - agentId: - type: string - description: The agent ID of the client that sent the feedback event. - example: - trackingTokens: - - trackingTokens - event: VIEW - StructuredTextMutableProperties: - required: - - text - properties: - text: - type: string - example: From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. - ConnectorType: - type: string - description: The source from which document content was pulled, e.g. an API crawl or browser history - enum: - - API_CRAWL - - BROWSER_CRAWL - - BROWSER_HISTORY - - BUILTIN - - FEDERATED_SEARCH - - PUSH_API - - WEB_CRAWL - - NATIVE_HISTORY - DocumentContent: - properties: - fullTextList: - type: array - items: - type: string - description: The plaintext content of the document. - Document: - properties: - id: - type: string - description: The Glean Document ID. - datasource: - type: string - description: The app or other repository type from which the document was extracted - connectorType: - $ref: "#/components/schemas/ConnectorType" - docType: - type: string - description: The datasource-specific type of the document (e.g. for Jira issues, this is the issue type such as Bug or Feature Request). - content: - $ref: "#/components/schemas/DocumentContent" - containerDocument: - $ref: "#/components/schemas/Document" - parentDocument: - $ref: "#/components/schemas/Document" - title: - type: string - description: The title of the document. - url: - type: string - description: A permalink for the document. - metadata: - $ref: "#/components/schemas/DocumentMetadata" - sections: - type: array - description: A list of content sub-sections in the document, e.g. text blocks with different headings in a Drive doc or Confluence page. - items: - $ref: "#/components/schemas/DocumentSection" - SearchProviderInfo: - properties: - name: - type: string - description: Name of the search provider. - logoUrl: - type: string - description: URL to the provider's logo. - searchLinkUrlTemplate: - type: string - description: URL template that can be used to perform the suggested search by replacing the {query} placeholder with the query suggestion. - example: - name: Google - logo: https://app.glean.com/images/feather/globe.svg - searchLinkUrlTemplate: https://www.google.com/search?q={query}&hl=en - FacetFilterValue: - properties: - value: - type: string - example: Spreadsheet - relationType: - type: string - enum: - - EQUALS - - ID_EQUALS - - LT - - GT - - NOT_EQUALS - example: EQUALS - x-speakeasy-enum-descriptions: - EQUALS: The value is equal to the specified value. - ID_EQUALS: The value is equal to the specified ID. - LT: The value is less than the specified value. - GT: The value is greater than the specified value. - NOT_EQUALS: The value is not equal to the specified value. - isNegated: - type: boolean - deprecated: true - description: DEPRECATED - please use relationType instead - FacetFilter: - properties: - fieldName: - type: string - example: owner - values: - type: array - items: - $ref: "#/components/schemas/FacetFilterValue" - description: Within a single FacetFilter, the values are to be treated like an OR. For example, fieldName type with values [EQUALS Presentation, EQUALS Spreadsheet] means we want to show a document if it's a Presentation OR a Spreadsheet. - groupName: - type: string - example: Spreadsheet - description: Indicates the value of a facet, if any, that the given facet is grouped under. This is only used for nested facets, for example, fieldName could be owner and groupName would be Spreadsheet if showing all owners for spreadsheets as a nested facet. - example: - fieldName: type - values: - - value: Spreadsheet - relationType: EQUALS - - value: Presentation - relationType: EQUALS - FacetFilterSet: - properties: - filters: - type: array - items: - $ref: "#/components/schemas/FacetFilter" - description: Within a single FacetFilterSet, the filters are treated as AND. For example, owner Sumeet and type Spreadsheet shows documents that are by Sumeet AND are Spreadsheets. - FacetBucketFilter: - properties: - facet: - type: string - description: The facet whose buckets should be filtered. - prefix: - type: string - description: The per-term prefix that facet buckets should be filtered on. - AuthToken: - required: - - accessToken - - datasource - properties: - accessToken: - type: string - datasource: - type: string - scope: - type: string - tokenType: - type: string - authUser: - description: Used by Google to indicate the index of the logged in user. Useful for generating hyperlinks that support multilogin. - type: string - expiration: - description: Unix timestamp when this token expires (in seconds since epoch UTC). - type: integer - format: int64 - example: - accessToken: 123abc - datasource: gmail - scope: email profile https://www.googleapis.com/auth/gmail.readonly - tokenType: Bearer - authUser: "1" - DocumentSpec: - x-multiple-discriminators: true - oneOf: - - type: object - required: - - url - properties: - url: - type: string - x-discriminator: true - description: The URL of the document. - - type: object - required: - - id - properties: - id: - type: string - x-discriminator: true - description: The ID of the document. - - type: object - required: - - contentId - - ugcType - properties: - ugcType: - type: string - enum: - - ANNOUNCEMENTS - - ANSWERS - - COLLECTIONS - - SHORTCUTS - - CHATS - description: The type of the user generated content (UGC datasource). - contentId: - type: integer - x-discriminator: true - description: The numeric id for user generated content. Used for ANNOUNCEMENTS, ANSWERS, COLLECTIONS, SHORTCUTS. - docType: - type: string - description: The specific type of the user generated content type. - - type: object - required: - - ugcType - - ugcId - properties: - ugcType: - type: string - enum: - - ANNOUNCEMENTS - - ANSWERS - - COLLECTIONS - - SHORTCUTS - - CHATS - description: The type of the user generated content (UGC datasource). - ugcId: - type: string - x-discriminator: true - description: The string id for user generated content. Used for CHATS. - docType: - type: string - description: The specific type of the user generated content type. - RestrictionFilters: - properties: - containerSpecs: - description: "Specifications for containers that should be used as part of the restriction (include/exclude). Memberships are recursively defined for a subset of datasources (currently: SharePoint, OneDrive, Google Drive, and Confluence). Please contact the Glean team to enable this for more datasources. Recursive memberships do not apply for Collections." - type: array - items: - $ref: "#/components/schemas/DocumentSpec" - SearchRequestOptions: - required: - - facetBucketSize - properties: - datasourceFilter: - type: string - description: Filter results to a single datasource name (e.g. gmail, slack). All results are returned if missing. - datasourcesFilter: - type: array - items: - type: string - description: Filter results to one or more datasources (e.g. gmail, slack). All results are returned if missing. - queryOverridesFacetFilters: - type: boolean - description: If true, the operators in the query are taken to override any operators in facetFilters in the case of conflict. This is used to correctly set rewrittenFacetFilters and rewrittenQuery. - facetFilters: - type: array - items: - $ref: "#/components/schemas/FacetFilter" - description: A list of filters for the query. An AND is assumed between different facetFilters. For example, owner Sumeet and type Spreadsheet shows documents that are by Sumeet AND are Spreadsheets. - facetFilterSets: - type: array - items: - $ref: "#/components/schemas/FacetFilterSet" - description: A list of facet filter sets that will be OR'ed together. SearchRequestOptions where both facetFilterSets and facetFilters set are considered as bad request. Callers should set only one of these fields. - facetBucketFilter: - $ref: "#/components/schemas/FacetBucketFilter" - facetBucketSize: - type: integer - description: The maximum number of FacetBuckets to return in each FacetResult. - defaultFacets: - type: array - items: - type: string - description: Facets for which FacetResults should be fetched and that don't apply to a particular datasource. If specified, these values will replace the standard default facets (last_updated_at, from, etc.). The requested facets will be returned alongside datasource-specific facets if searching a single datasource. - authTokens: - type: array - description: Auth tokens which may be used for non-indexed, federated results (e.g. Gmail). - items: - $ref: "#/components/schemas/AuthToken" - fetchAllDatasourceCounts: - type: boolean - description: Hints that the QE should return result counts (via the datasource facet result) for all supported datasources, rather than just those specified in the datasource[s]Filter - responseHints: - type: array - description: Array of hints containing which fields should be populated in the response. - items: - type: string - description: Hints for the response content. - enum: - - ALL_RESULT_COUNTS - - FACET_RESULTS - - QUERY_METADATA - - RESULTS - - SPELLCHECK_METADATA - x-speakeasy-enum-descriptions: - ALL_RESULT_COUNTS: Return result counts for each result set which has non-zero results, even when the request itself is limited to a subset. - FACET_RESULTS: Return only facet results. - QUERY_METADATA: Returns result counts for each result set which has non-zero results, as well as other information about the search such as suggested spelling corrections. - RESULTS: Return search result documents. - SPELLCHECK_METADATA: Return metadata pertaining to spellcheck results. - timezoneOffset: - type: integer - description: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. - disableSpellcheck: - type: boolean - description: Whether or not to disable spellcheck. - disableQueryAutocorrect: - type: boolean - description: Disables automatic adjustment of the input query for spelling corrections or other reasons. - returnLlmContentOverSnippets: - type: boolean - description: Enables expanded content to be returned for LLM usage. The size of content per result returned should be modified using maxSnippetSize. Server may return less or more than what is specified in maxSnippetSize. For more details, see https://developers.glean.com/guides/search/llm-content. - inclusions: - $ref: "#/components/schemas/RestrictionFilters" - description: A list of filters which restrict the search results to only the specified content. - exclusions: - $ref: "#/components/schemas/RestrictionFilters" - description: A list of filters specifying content to avoid getting search results from. Exclusions take precendence over inclusions and other query parameters, such as search operators and search facets. - example: - datasourceFilter: JIRA - datasourcesFilter: - - JIRA - queryOverridesFacetFilters: true - facetFilters: - - fieldName: fieldName - values: - - fieldValues - - fieldValues - - fieldName: fieldName - values: - - fieldValues - - fieldValues - TextRange: - required: - - startIndex - description: A subsection of a given string to which some special formatting should be applied. - properties: - startIndex: - type: integer - description: The inclusive start index of the range. - endIndex: - type: integer - description: The exclusive end index of the range. - type: - type: string - enum: - - BOLD - - CITATION - - HIGHLIGHT - - LINK - url: - type: string - description: The URL associated with the range, if applicable. For example, the linked URL for a LINK range. - document: - $ref: "#/components/schemas/Document" - description: A document corresponding to the range, if applicable. For example, the cited document for a CITATION range. - SearchRequestInputDetails: - properties: - hasCopyPaste: - type: boolean - description: Whether the associated query was at least partially copy-pasted. If subsequent requests are issued after a copy-pasted query is constructed (e.g. with facet modifications), this bit should continue to be set for those requests. - example: - hasCopyPaste: true - QuerySuggestion: - required: - - query - properties: - missingTerm: - type: string - description: A query term missing from the original query on which this suggestion is based. - query: - type: string - description: The query being suggested (e.g. enforcing the missing term from the original query). - searchProviderInfo: - $ref: "#/components/schemas/SearchProviderInfo" - description: Information about the search provider that generated this suggestion. - label: - type: string - description: A user-facing description to display for the suggestion. - datasource: - type: string - description: The datasource associated with the suggestion. - requestOptions: - $ref: "#/components/schemas/SearchRequestOptions" - ranges: - type: array - items: - $ref: "#/components/schemas/TextRange" - description: The bolded ranges within the query of the QuerySuggestion. - inputDetails: - $ref: "#/components/schemas/SearchRequestInputDetails" - example: - query: app:github type:pull author:mortimer - label: Mortimer's PRs - datasource: github - Person: - required: - - name - - obfuscatedId - properties: - name: - type: string - description: The display name. - obfuscatedId: - type: string - description: An opaque identifier that can be used to request metadata for a Person. - relatedDocuments: - type: array - items: - $ref: "#/components/schemas/RelatedDocuments" - description: A list of documents related to this person. - metadata: - $ref: "#/components/schemas/PersonMetadata" - example: - name: George Clooney - obfuscatedId: abc123 - Company: - required: - - name - properties: - name: - type: string - description: User-friendly display name. - profileUrl: - type: string - description: Link to internal company company profile. - websiteUrls: - type: array - description: Link to company's associated websites. - items: - type: string - logoUrl: - type: string - description: The URL of the company's logo. Public, Glean-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). - location: - type: string - description: User facing string representing the company's location. - example: New York City - phone: - type: string - description: Phone number as a number string. - fax: - type: string - description: Fax number as a number string. - industry: - type: string - description: User facing string representing the company's industry. - example: Finances - annualRevenue: - type: number - format: double - description: Average company's annual revenue for reference. - numberOfEmployees: - type: integer - format: int64 - description: Average company's number of employees for reference. - stockSymbol: - type: string - description: Company's stock symbol if company is public. - foundedDate: - type: string - format: date - description: The date when the company was founded. - about: - type: string - description: User facing description of company. - example: Financial, software, data, and media company headquartered in Midtown Manhattan, New York City - DocumentCounts: - type: object - description: A map of {string, int} pairs representing counts of each document type associated with this customer. - additionalProperties: - type: integer - CustomDataValue: - properties: - displayLabel: - type: string - stringValue: - type: string - stringListValue: - type: array - description: list of strings for multi-value properties - items: - type: string - numberValue: - type: number - booleanValue: - type: boolean - CustomData: - type: object - description: Custom fields specific to individual datasources - additionalProperties: - $ref: "#/components/schemas/CustomDataValue" - CustomerMetadata: - properties: - datasourceId: - type: string - description: The user visible id of the salesforce customer account. - customData: - $ref: "#/components/schemas/CustomData" - Customer: - required: - - id - - company - properties: - id: - type: string - description: Unique identifier. - domains: - type: array - description: Link to company's associated website domains. - items: - type: string - company: - $ref: "#/components/schemas/Company" - documentCounts: - $ref: "#/components/schemas/DocumentCounts" - poc: - type: array - description: A list of POC for company. - items: - $ref: "#/components/schemas/Person" - metadata: - $ref: "#/components/schemas/CustomerMetadata" - mergedCustomers: - type: array - description: A list of Customers. - items: - $ref: "#/components/schemas/Customer" - startDate: - type: string - format: date - description: The date when the interaction with customer started. - contractAnnualRevenue: - type: number - format: double - description: Average contract annual revenue with that customer. - notes: - type: string - description: User facing (potentially generated) notes about company. - example: CIO is interested in trying out the product. - RelatedObject: - required: - - id - properties: - id: - type: string - description: The ID of the related object - metadata: - type: object - description: Some metadata of the object which can be displayed, while not having the actual object. - properties: - name: - type: string - description: Placeholder name of the object, not the relationship. - RelatedObjectEdge: - properties: - objects: - type: array - items: - $ref: "#/components/schemas/RelatedObject" - RelatedObjects: - properties: - relatedObjects: - type: object - description: A list of objects related to a source object. - additionalProperties: - $ref: "#/components/schemas/RelatedObjectEdge" - ScopeType: - type: string - description: Describes the scope for a ReadPermission, WritePermission, or GrantPermission object - enum: - - GLOBAL - - OWN - WritePermission: - description: Describes the write permissions levels that a user has for a specific feature - properties: - scopeType: - $ref: "#/components/schemas/ScopeType" - create: - type: boolean - description: True if user has create permission for this feature and scope - update: - type: boolean - description: True if user has update permission for this feature and scope - delete: - type: boolean - description: True if user has delete permission for this feature and scope - ObjectPermissions: - properties: - write: - $ref: "#/components/schemas/WritePermission" - PermissionedObject: - properties: - permissions: - $ref: "#/components/schemas/ObjectPermissions" - description: The permissions the current viewer has with respect to a particular object. - PersonToTeamRelationship: - required: - - person - type: object - description: Metadata about the relationship of a person to a team. - properties: - person: - $ref: "#/components/schemas/Person" - relationship: - type: string - description: The team member's relationship to the team. This defaults to MEMBER if not set. - default: MEMBER - enum: - - MEMBER - - MANAGER - - LEAD - - POINT_OF_CONTACT - - OTHER - customRelationshipStr: - type: string - description: Displayed name for the relationship if relationship is set to `OTHER`. - joinDate: - type: string - format: date-time - description: The team member's start date - TeamEmail: - type: object - description: Information about a team's email - properties: - email: - type: string - format: email - description: An email address - type: - type: string - description: An enum of `PRIMARY`, `SECONDARY`, `ONCALL`, `OTHER` - default: OTHER - required: - - email - - type - CustomFieldValueStr: - properties: - strText: - type: string - description: Text field for string value. - CustomFieldValueHyperlink: - properties: - urlAnchor: - type: string - description: Anchor text for hyperlink. - urlLink: - type: string - description: Link for this URL. - CustomFieldValuePerson: - properties: - person: - $ref: "#/components/schemas/Person" - CustomFieldValue: - oneOf: - - $ref: "#/components/schemas/CustomFieldValueStr" - - $ref: "#/components/schemas/CustomFieldValueHyperlink" - - $ref: "#/components/schemas/CustomFieldValuePerson" - CustomFieldData: - required: - - label - - values - - displayable - properties: - label: - type: string - description: A user-facing label for this field. - values: - type: array - items: - $ref: "#/components/schemas/CustomFieldValue" - displayable: - type: boolean - description: Determines whether the client should display this custom field - default: true - DatasourceProfile: - required: - - datasource - - handle - properties: - datasource: - type: string - example: github - description: The datasource the profile is of. - handle: - type: string - description: The display name of the entity in the given datasource. - url: - type: string - description: URL to view the entity's profile. - nativeAppUrl: - type: string - description: A deep link, if available, into the datasource's native application for the entity's platform (i.e. slack://...). - isUserGenerated: - type: boolean - description: For internal use only. True iff the data source profile was manually added by a user from within Glean (aka not from the original data source) - Team: - allOf: - - $ref: "#/components/schemas/RelatedObjects" - - $ref: "#/components/schemas/PermissionedObject" - - type: object - required: - - id - - name - properties: - id: - type: string - description: Unique identifier - name: - type: string - description: Team name - description: - type: string - description: A description of the team - businessUnit: - type: string - description: Typically the highest level organizational unit; generally applies to bigger companies with multiple distinct businesses. - department: - type: string - description: An organizational unit where everyone has a similar task, e.g. `Engineering`. - photoUrl: - type: string - format: url - description: A link to the team's photo. - bannerUrl: - type: string - format: url - description: A link to the team's banner photo. - externalLink: - type: string - format: uri - description: Link to a team page on the internet or your company's intranet - members: - type: array - description: The members on this team - items: - $ref: "#/components/schemas/PersonToTeamRelationship" - memberCount: - type: integer - description: Number of members on this team (recursive; includes all individuals that belong to this team, and all individuals that belong to a subteam within this team) - emails: - type: array - description: The emails for this team - items: - $ref: "#/components/schemas/TeamEmail" - customFields: - type: array - description: Customizable fields for additional team information. - items: - $ref: "#/components/schemas/CustomFieldData" - datasourceProfiles: - type: array - description: The datasource profiles of the team - items: - $ref: "#/components/schemas/DatasourceProfile" - datasource: - type: string - description: the data source of the team, e.g. GDRIVE - createdFrom: - type: string - description: For teams created from docs, the doc title. Otherwise empty. - lastUpdatedAt: - type: string - format: date-time - description: when this team was last updated. - status: - type: string - description: whether this team is fully processed or there are still unprocessed operations that'll affect it - default: PROCESSED - enum: - - PROCESSED - - QUEUED_FOR_CREATION - - QUEUED_FOR_DELETION - canBeDeleted: - type: boolean - description: can this team be deleted. Some manually ingested teams like GCS_CSV or PUSH_API cannot - default: true - loggingId: - type: string - description: The logging id of the team used in scrubbed logs, client analytics, and metrics. - CustomEntityMetadata: - properties: - customData: - $ref: "#/components/schemas/CustomData" - GroupType: - type: string - description: The type of user group - enum: - - DEPARTMENT - - ALL - - TEAM - - JOB_TITLE - - ROLE_TYPE - - LOCATION - - REGION - - EXTERNAL_GROUP - Group: - required: - - type - - id - properties: - type: - $ref: "#/components/schemas/GroupType" - id: - type: string - description: A unique identifier for the group. May be the same as name. - name: - type: string - description: Name of the group. - datasourceInstance: - type: string - description: Datasource instance if the group belongs to one e.g. external groups. - provisioningId: - type: string - description: identifier for greenlist provisioning, aka sciokey - UserRole: - type: string - description: A user's role with respect to a specific document. - enum: - - OWNER - - VIEWER - - ANSWER_MODERATOR - - EDITOR - - VERIFIER - UserRoleSpecification: - required: - - role - properties: - sourceDocumentSpec: - $ref: "#/components/schemas/DocumentSpec" - description: The document spec of the object this role originates from. The object this role is included with will usually have the same information as this document spec, but if the role is inherited, then the document spec refers to the parent document that the role came from. - person: - $ref: "#/components/schemas/Person" - group: - $ref: "#/components/schemas/Group" - role: - $ref: "#/components/schemas/UserRole" - CustomEntity: - allOf: - - $ref: "#/components/schemas/PermissionedObject" - - type: object - properties: - id: - type: string - description: Unique identifier. - title: - type: string - description: Title or name of the custom entity. - datasource: - type: string - description: The datasource the custom entity is from. - objectType: - type: string - description: The type of the entity. Interpretation is specific to each datasource - metadata: - $ref: "#/components/schemas/CustomEntityMetadata" - roles: - type: array - description: A list of user roles for the custom entity explicitly granted by the owner. - items: - $ref: "#/components/schemas/UserRoleSpecification" - AnswerId: - properties: - id: - type: integer - description: The opaque ID of the Answer. - example: 3 - AnswerDocId: - properties: - docId: - type: string - description: Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. - example: ANSWERS_answer_3 - AnswerMutableProperties: - properties: - question: - type: string - example: Why is the sky blue? - questionVariations: - type: array - description: Additional ways of phrasing this question. - items: - type: string - bodyText: - type: string - description: The plain text answer to the question. - example: From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. - boardId: - type: integer - description: The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. - deprecated: true - audienceFilters: - type: array - description: Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. - items: - $ref: "#/components/schemas/FacetFilter" - addedRoles: - type: array - description: A list of user roles for the answer added by the owner. - items: - $ref: "#/components/schemas/UserRoleSpecification" - removedRoles: - type: array - description: A list of user roles for the answer removed by the owner. - items: - $ref: "#/components/schemas/UserRoleSpecification" - roles: - type: array - description: A list of roles for this answer explicitly granted by an owner, editor, or admin. - items: - $ref: "#/components/schemas/UserRoleSpecification" - sourceDocumentSpec: - $ref: "#/components/schemas/DocumentSpec" - sourceType: - type: string - enum: - - DOCUMENT - - ASSISTANT - StructuredText: - allOf: - - $ref: "#/components/schemas/StructuredTextMutableProperties" - - type: object - properties: - structuredList: - type: array - items: - $ref: "#/components/schemas/StructuredTextItem" - description: An array of objects each of which contains either a string or a link which optionally corresponds to a document. - AnswerLike: - properties: - user: - $ref: "#/components/schemas/Person" - createTime: - type: string - format: date-time - description: The time the user liked the answer in ISO format (ISO 8601). - AnswerLikes: - required: - - likedBy - - likedByUser - - numLikes - properties: - likedBy: - type: array - items: - $ref: "#/components/schemas/AnswerLike" - likedByUser: - type: boolean - description: Whether the user in context liked the answer. - numLikes: - type: integer - description: The total number of likes for the answer. - Reminder: - required: - - assignee - - remindAt - properties: - assignee: - $ref: "#/components/schemas/Person" - requestor: - $ref: "#/components/schemas/Person" - remindAt: - type: integer - description: Unix timestamp for when the reminder should trigger (in seconds since epoch UTC). - createdAt: - type: integer - description: Unix timestamp for when the reminder was first created (in seconds since epoch UTC). - reason: - type: string - description: An optional free-text reason for the reminder. This is particularly useful when a reminder is used to ask for verification from another user (for example, "Duplicate", "Incomplete", "Incorrect"). - TimePoint: - properties: - epochSeconds: - type: integer - description: Epoch seconds. Has precedence over daysFromNow. - daysFromNow: - type: integer - description: The number of days from now. Specification relative to current time. Can be negative. - Period: - properties: - minDaysFromNow: - type: integer - description: DEPRECATED - The number of days from now in the past to define upper boundary of time period. - deprecated: true - maxDaysFromNow: - type: integer - description: DEPRECATED - The number of days from now in the past to define lower boundary of time period. - deprecated: true - start: - $ref: "#/components/schemas/TimePoint" - end: - $ref: "#/components/schemas/TimePoint" - CountInfo: - required: - - count - properties: - count: - type: integer - description: The counter value - period: - $ref: "#/components/schemas/Period" - org: - type: string - description: The unit of organization over which we did the count aggregation, e.g. org (department) or company - VerificationMetadata: - required: - - documentId - properties: - lastVerifier: - $ref: "#/components/schemas/Person" - lastVerificationTs: - type: integer - description: The unix timestamp of the verification (in seconds since epoch UTC). - expirationTs: - type: integer - description: The unix timestamp of the verification expiration if applicable (in seconds since epoch UTC). - document: - $ref: "#/components/schemas/Document" - reminders: - type: array - items: - $ref: "#/components/schemas/Reminder" - description: Info about all outstanding verification reminders for the document if exists. - lastReminder: - $ref: "#/components/schemas/Reminder" - visitorCount: - type: array - items: - $ref: "#/components/schemas/CountInfo" - description: Number of visitors to the document during included time periods. - candidateVerifiers: - type: array - items: - $ref: "#/components/schemas/Person" - description: List of potential verifiers for the document e.g. old verifiers and/or users with view/edit permissions. - Verification: - required: - - state - properties: - state: - type: string - enum: - - UNVERIFIED - - VERIFIED - - DEPRECATED - description: The verification state for the document. - metadata: - $ref: "#/components/schemas/VerificationMetadata" - CollectionBaseMutableProperties: - required: - - name - properties: - name: - type: string - description: The unique name of the Collection. - description: - type: string - description: A brief summary of the Collection's contents. - addedRoles: - type: array - description: A list of added user roles for the Collection. - items: - $ref: "#/components/schemas/UserRoleSpecification" - removedRoles: - type: array - description: A list of removed user roles for the Collection. - items: - $ref: "#/components/schemas/UserRoleSpecification" - audienceFilters: - type: array - items: - $ref: "#/components/schemas/FacetFilter" - description: Filters which restrict who should see this Collection. Values are taken from the corresponding filters in people search. - AnswerBoardMutableProperties: - allOf: - - $ref: "#/components/schemas/CollectionBaseMutableProperties" - AnswerBoard: - allOf: - - $ref: "#/components/schemas/AnswerBoardMutableProperties" - - $ref: "#/components/schemas/PermissionedObject" - - type: object - required: - - id - - description - properties: - id: - type: integer - description: The unique ID of the Answer Board. - createTime: - type: string - format: date-time - updateTime: - type: string - format: date-time - creator: - $ref: "#/components/schemas/Person" - updatedBy: - $ref: "#/components/schemas/Person" - itemCount: - type: integer - description: The number of items currently in the Answer Board. Separated from the actual items so we can grab the count without items. - roles: - type: array - description: A list of user roles for the Answer Board. - items: - $ref: "#/components/schemas/UserRoleSpecification" - Thumbnail: - properties: - photoId: - type: string - description: Photo id if the thumbnail is from splash. - url: - type: string - description: Thumbnail URL. This can be user provided image and/or from downloaded images hosted by Glean. - CollectionMutableProperties: - allOf: - - $ref: "#/components/schemas/CollectionBaseMutableProperties" - - type: object - required: - - name - properties: - icon: - type: string - description: The emoji icon of this Collection. - adminLocked: - type: boolean - description: Indicates whether edits are allowed for everyone or only admins. - parentId: - type: integer - description: The parent of this Collection, or 0 if it's a top-level Collection. - thumbnail: - $ref: "#/components/schemas/Thumbnail" - allowedDatasource: - type: string - description: The datasource type this Collection can hold. - CollectionItemMutableProperties: - properties: - name: - type: string - description: The optional name of the Collection item. - description: - type: string - description: A helpful description of why this CollectionItem is in the Collection that it's in. - icon: - type: string - description: The emoji icon for this CollectionItem. Only used for Text type items. - UserGeneratedContentId: - properties: - id: - type: integer - description: The opaque id of the user generated content. - ShortcutMutableProperties: - properties: - inputAlias: - type: string - description: Link text following go/ prefix as entered by the user. - destinationUrl: - type: string - description: Destination URL for the shortcut. - destinationDocumentId: - type: string - description: Glean Document ID for the URL, if known. - description: - type: string - description: A short, plain text blurb to help people understand the intent of the shortcut. - unlisted: - type: boolean - description: Whether this shortcut is unlisted or not. Unlisted shortcuts are visible to author + admins only. - urlTemplate: - type: string - description: For variable shortcuts, contains the URL template; note, `destinationUrl` contains default URL. - addedRoles: - type: array - description: A list of user roles added for the Shortcut. - items: - $ref: "#/components/schemas/UserRoleSpecification" - removedRoles: - type: array - description: A list of user roles removed for the Shortcut. - items: - $ref: "#/components/schemas/UserRoleSpecification" - ShortcutMetadata: - properties: - createdBy: - $ref: "#/components/schemas/Person" - createTime: - type: string - format: date-time - description: The time the shortcut was created in ISO format (ISO 8601). - updatedBy: - $ref: "#/components/schemas/Person" - updateTime: - type: string - format: date-time - description: The time the shortcut was updated in ISO format (ISO 8601). - destinationDocument: - $ref: "#/components/schemas/Document" - description: Document that corresponds to the destination URL, if applicable. - intermediateUrl: - type: string - description: The URL from which the user is then redirected to the destination URL. Full replacement for https://go/. - viewPrefix: - type: string - description: The part of the shortcut preceding the input alias when used for showing shortcuts to users. Should end with "/". e.g. "go/" for native shortcuts. - isExternal: - type: boolean - description: Indicates whether a shortcut is native or external. - editUrl: - type: string - description: The URL using which the user can access the edit page of the shortcut. - Shortcut: - allOf: - - $ref: "#/components/schemas/UserGeneratedContentId" - - $ref: "#/components/schemas/ShortcutMutableProperties" - - $ref: "#/components/schemas/PermissionedObject" - - $ref: "#/components/schemas/ShortcutMetadata" - - type: object - required: - - inputAlias - properties: - alias: - type: string - description: canonical link text following go/ prefix where hyphen/underscore is removed. - title: - type: string - description: Title for the Go Link - roles: - type: array - description: A list of user roles for the Go Link. - items: - $ref: "#/components/schemas/UserRoleSpecification" - Collection: - allOf: - - $ref: "#/components/schemas/CollectionMutableProperties" - - $ref: "#/components/schemas/PermissionedObject" - - type: object - required: - - id - - description - properties: - id: - type: integer - description: The unique ID of the Collection. - createTime: - type: string - format: date-time - updateTime: - type: string - format: date-time - creator: - $ref: "#/components/schemas/Person" - updatedBy: - $ref: "#/components/schemas/Person" - itemCount: - type: integer - description: The number of items currently in the Collection. Separated from the actual items so we can grab the count without items. - childCount: - type: integer - description: The number of children Collections. Separated from the actual children so we can grab the count without children. - items: - type: array - items: - $ref: "#/components/schemas/CollectionItem" - description: The items in this Collection. - pinMetadata: - $ref: "#/components/schemas/CollectionPinnedMetadata" - description: Metadata having what categories this Collection is pinned to and the eligible categories to pin to - shortcuts: - type: array - items: - type: string - description: The names of the shortcuts (Go Links) that point to this Collection. - children: - type: array - items: - $ref: "#/components/schemas/Collection" - description: The children Collections of this Collection. - roles: - type: array - description: A list of user roles for the Collection. - items: - $ref: "#/components/schemas/UserRoleSpecification" - CollectionItem: - allOf: - - $ref: "#/components/schemas/CollectionItemMutableProperties" - - type: object - required: - - collectionId - - itemType - properties: - collectionId: - type: integer - description: The Collection ID of the Collection that this CollectionItem belongs in. - documentId: - type: string - description: If this CollectionItem is indexed, the Glean Document ID of that document. - url: - type: string - description: The URL of this CollectionItem. - itemId: - type: string - description: Unique identifier for the item within the Collection it belongs to. - createdBy: - $ref: "#/components/schemas/Person" - description: The person who added this Collection item. - createdAt: - type: string - format: date-time - description: Unix timestamp for when the item was first added (in seconds since epoch UTC). - document: - $ref: "#/components/schemas/Document" - description: The Document this CollectionItem corresponds to (omitted if item is a non-indexed URL). - shortcut: - $ref: "#/components/schemas/Shortcut" - description: The Shortcut this CollectionItem corresponds to (only included if item URL is for a Go Link). - collection: - $ref: "#/components/schemas/Collection" - description: The Collection this CollectionItem corresponds to (only included if item type is COLLECTION). - itemType: - type: string - enum: - - DOCUMENT - - TEXT - - URL - - COLLECTION - CollectionPinnableCategories: - type: string - description: Categories a Collection can be pinned to. - enum: - - COMPANY_RESOURCE - - DEPARTMENT_RESOURCE - - TEAM_RESOURCE - CollectionPinnableTargets: - type: string - description: What targets can a Collection be pinned to. - enum: - - RESOURCE_CARD - - TEAM_PROFILE_PAGE - CollectionPinTarget: - required: - - category - properties: - category: - $ref: "#/components/schemas/CollectionPinnableCategories" - value: - type: string - description: Optional. If category supports values, then the additional value for the category e.g. department name for DEPARTMENT_RESOURCE, team name/id for TEAM_RESOURCE and so on. - target: - $ref: "#/components/schemas/CollectionPinnableTargets" - CollectionPinMetadata: - required: - - id - - target - properties: - id: - type: integer - description: The ID of the Collection. - target: - $ref: "#/components/schemas/CollectionPinTarget" - CollectionPinnedMetadata: - required: - - pinnedCategories - - eligibleCategoriesForPinning - properties: - existingPins: - type: array - items: - $ref: "#/components/schemas/CollectionPinTarget" - description: List of targets this Collection is pinned to. - eligiblePins: - type: array - items: - $ref: "#/components/schemas/CollectionPinMetadata" - description: List of targets this Collection can be pinned to, excluding the targets this Collection is already pinned to. We also include Collection ID already is pinned to each eligible target, which will be 0 if the target has no pinned Collection. - Answer: - allOf: - - $ref: "#/components/schemas/AnswerId" - - $ref: "#/components/schemas/AnswerDocId" - - $ref: "#/components/schemas/AnswerMutableProperties" - - $ref: "#/components/schemas/PermissionedObject" - - type: object - required: - - id - properties: - combinedAnswerText: - $ref: "#/components/schemas/StructuredText" - likes: - $ref: "#/components/schemas/AnswerLikes" - author: - $ref: "#/components/schemas/Person" - createTime: - type: string - format: date-time - description: The time the answer was created in ISO format (ISO 8601). - updateTime: - type: string - format: date-time - description: The time the answer was last updated in ISO format (ISO 8601). - updatedBy: - $ref: "#/components/schemas/Person" - verification: - $ref: "#/components/schemas/Verification" - board: - $ref: "#/components/schemas/AnswerBoard" - description: The parent board this answer is in. - collections: - type: array - description: The collections to which the answer belongs. - items: - $ref: "#/components/schemas/Collection" - documentCategory: - type: string - description: The document's document_category(.proto). - sourceDocument: - $ref: "#/components/schemas/Document" - FollowupAction: - description: A follow-up action that can be invoked by the user after a response. The action parameters are not included and need to be predicted/filled separately. - properties: - actionRunId: - type: string - description: Unique identifier for this actionRun recommendation event. - actionInstanceId: - type: string - description: The ID of the action instance that will be invoked. - actionId: - type: string - description: The ID of the associated action. - parameters: - type: object - description: Map of assistant predicted parameters and their corresponding values. - additionalProperties: - type: string - recommendationText: - type: string - description: Text to be displayed to the user when recommending the action instance. - actionLabel: - type: string - description: The label to be used when displaying a button to execute this action instance. - userConfirmationRequired: - type: boolean - description: Whether user confirmation is needed before executing this action instance. - GeneratedQna: - properties: - question: - type: string - description: Search query rephrased into a question. - answer: - type: string - description: Answer generated for the given query or the generated question. - followUpPrompts: - type: array - items: - type: string - description: List of all follow-up prompts generated for the given query or the generated question. - followupActions: - description: List of follow-up actions generated for the given query or the generated question. - type: array - items: - $ref: "#/components/schemas/FollowupAction" - ranges: - type: array - items: - $ref: "#/components/schemas/TextRange" - description: Answer subsections to mark with special formatting (citations, bolding etc) - status: - type: string - enum: - - COMPUTING - - DISABLED - - FAILED - - NO_ANSWER - - SKIPPED - - STREAMING - - SUCCEEDED - - TIMEOUT - description: Status of backend generating the answer - cursor: - type: string - description: An opaque cursor representing the search request - trackingToken: - type: string - description: An opaque token that represents this particular result in this particular query. To be used for /feedback reporting. - SearchResult: - required: - - url - allOf: - - $ref: "#/components/schemas/Result" - - type: object - properties: - document: - $ref: "#/components/schemas/Document" - title: - type: string - url: - type: string - nativeAppUrl: - type: string - description: A deep link, if available, into the datasource's native application for the user's platform (e.g. slack://...). - snippets: - type: array - items: - $ref: "#/components/schemas/SearchResultSnippet" - description: Text content from the result document which contains search query terms, if available. - fullText: - type: string - description: The full body text of the result if not already contained in the snippets. Only populated for conversation results (e.g. results from a messaging app such as Slack). - fullTextList: - type: array - description: The full body text of the result if not already contained in the snippets; each item in the array represents a separate line in the original text. Only populated for conversation results (e.g. results from a messaging app such as Slack). - items: - type: string - relatedResults: - type: array - items: - $ref: "#/components/schemas/RelatedDocuments" - description: A list of results related to this search result. Eg. for conversation results it contains individual messages from the conversation document which will be shown on SERP. - clusteredResults: - type: array - description: A list of results that should be displayed as associated with this result. - items: - $ref: "#/components/schemas/SearchResult" - allClusteredResults: - type: array - description: A list of results that should be displayed as associated with this result. - items: - $ref: "#/components/schemas/ClusterGroup" - attachmentCount: - type: integer - description: The total number of attachments. - attachments: - type: array - description: A (potentially partial) list of results representing documents attached to the main result document. - items: - $ref: "#/components/schemas/SearchResult" - backlinkResults: - type: array - description: A list of results that should be displayed as backlinks of this result in reverse chronological order. - items: - $ref: "#/components/schemas/SearchResult" - clusterType: - $ref: "#/components/schemas/ClusterTypeEnum" - mustIncludeSuggestions: - $ref: "#/components/schemas/QuerySuggestionList" - querySuggestion: - $ref: "#/components/schemas/QuerySuggestion" - prominence: - $ref: "#/components/schemas/SearchResultProminenceEnum" - attachmentContext: - type: string - description: Additional context for the relationship between the result and the document it's attached to. - pins: - type: array - description: A list of pins associated with this search result. - items: - $ref: "#/components/schemas/PinDocument" - example: - snippets: - - snippet: snippet - mimeType: mimeType - metadata: - container: container - createTime: "2000-01-23T04:56:07.000Z" - datasource: datasource - author: - name: name - documentId: documentId - updateTime: "2000-01-23T04:56:07.000Z" - mimeType: mimeType - objectType: objectType - title: title - url: https://example.com/foo/bar - nativeAppUrl: slack://foo/bar - mustIncludeSuggestions: - - missingTerm: container - query: container - ExtractedQnA: - properties: - heading: - type: string - description: Heading text that was matched to produce this result. - question: - type: string - description: Question text that was matched to produce this result. - questionResult: - $ref: "#/components/schemas/SearchResult" - CalendarAttendee: - required: - - person - properties: - isOrganizer: - type: boolean - description: Whether or not this attendee is an organizer. - isInGroup: - type: boolean - description: Whether or not this attendee is in a group. Needed temporarily at least to support both flat attendees and tree for compatibility. - person: - $ref: "#/components/schemas/Person" - groupAttendees: - type: array - description: If this attendee is a group, represents the list of individual attendees in the group. - items: - $ref: "#/components/schemas/CalendarAttendee" - responseStatus: - type: string - enum: - - ACCEPTED - - DECLINED - - NO_RESPONSE - - TENTATIVE - CalendarAttendees: - properties: - people: - type: array - items: - $ref: "#/components/schemas/CalendarAttendee" - description: Full details of some of the attendees of this event - isLimit: - type: boolean - description: Whether the total count of the people returned is at the retrieval limit. - total: - type: integer - description: Total number of attendees in this event. - numAccepted: - type: integer - description: Total number of attendees who have accepted this event. - numDeclined: - type: integer - description: Total number of attendees who have declined this event. - numNoResponse: - type: integer - description: Total number of attendees who have not responded to this event. - numTentative: - type: integer - description: Total number of attendees who have responded tentatively (i.e. responded maybe) to this event. - Meeting: - properties: - id: - type: string - title: - type: string - description: - type: string - url: - type: string - startTime: - type: string - format: date-time - endTime: - type: string - format: date-time - attendees: - $ref: "#/components/schemas/CalendarAttendees" - description: The attendee list, including their response status - AppResult: - required: - - datasource - properties: - datasource: - type: string - description: The app or other repository type this represents - docType: - type: string - description: The datasource-specific type of the document (e.g. for Jira issues, this is the issue type such as Bug or Feature Request). - mimeType: - type: string - description: Mimetype is used to differentiate between sub applications from a datasource (e.g. Sheets, Docs from Gdrive) - iconUrl: - type: string - description: If there is available icon URL. - CodeLine: - properties: - lineNumber: - type: integer - content: - type: string - ranges: - type: array - items: - $ref: "#/components/schemas/TextRange" - description: Index ranges depicting matched sections of the line - Code: - properties: - repoName: - type: string - fileName: - type: string - fileUrl: - type: string - lines: - type: array - items: - $ref: "#/components/schemas/CodeLine" - isLastMatch: - type: boolean - description: Last file match for a repo - example: - repoName: scio - fileName: README.md - matches: - - lineNumber: 1 - content: Welcome to the beginning - ranges: [] - - lineNumber: 2 - content: Second line of the file - ranges: [] - - lineNumber: 3 - content: hello world hello world - ranges: - - startindex: 0 - endIndex: 5 - - startIndex: 12 - endIndex: 17 - QuerySuggestionList: - properties: - suggestions: - type: array - items: - $ref: "#/components/schemas/QuerySuggestion" - person: - $ref: "#/components/schemas/Person" - IconConfig: - description: Defines how to render an icon - properties: - generatedBackgroundColorKey: - type: string - backgroundColor: - type: string - color: - type: string - key: - type: string - iconType: - enum: - - COLLECTION - - CUSTOM - - DATASOURCE - - DATASOURCE_INSTANCE - - FAVICON - - FILE_TYPE - - GENERATED_BACKGROUND - - GLYPH - - MIME_TYPE - - NO_ICON - - PERSON - - REACTIONS - - URL - masked: - type: boolean - description: Whether the icon should be masked based on current theme. - name: - type: string - description: The name of the icon if applicable, e.g. the glyph name for `IconType.GLYPH` icons. - url: - type: string - description: The URL to an image to be displayed if applicable, e.g. the URL for `iconType.URL` icons. - example: - color: "#343CED" - key: person_icon - iconType: GLYPH - name: user - ChatMetadata: - description: Metadata of a Chat a user had with Glean Assistant. This contains no actual conversational content. - properties: - id: - type: string - description: The opaque id of the Chat. - createTime: - type: integer - description: Server Unix timestamp of the creation time (in seconds since epoch UTC). - createdBy: - $ref: "#/components/schemas/Person" - description: The user who created this Chat. - updateTime: - type: integer - description: Server Unix timestamp of the update time (in seconds since epoch UTC). - name: - type: string - description: The name of the Chat. - applicationId: - type: string - description: The ID of the AI App that this Chat is associated to. - applicationName: - type: string - description: The display name of the AI App that this Chat is associated to. - icon: - $ref: "#/components/schemas/IconConfig" - RelatedDocuments: - properties: - relation: - type: string - description: How this document relates to the including entity. - enum: - - ATTACHMENT - - CANONICAL - - CASE - - contact - - CONTACT - - CONVERSATION_MESSAGES - - EXPERT - - FROM - - HIGHLIGHT - - opportunity - - OPPORTUNITY - - RECENT - - SOURCE - - TICKET - - TRANSCRIPT - - WITH - x-speakeasy-enum-descriptions: - CANONICAL: Canonical documents for the entity, such as overview docs, architecture docs elastic. - associatedEntityId: - type: string - description: Which entity in the response that this entity relates to. Relevant when there are multiple entities associated with the response (such as merged customers) - querySuggestion: - $ref: "#/components/schemas/QuerySuggestion" - documents: - type: array - items: - $ref: "#/components/schemas/Document" - description: A truncated list of documents with this relation. TO BE DEPRECATED. - deprecated: true - results: - type: array - items: - $ref: "#/components/schemas/SearchResult" - description: A truncated list of documents associated with this relation. To be used in favor of `documents` because it contains a trackingToken. - RelatedQuestion: - properties: - question: - type: string - description: The text of the related question - answer: - type: string - description: The answer for the related question - ranges: - type: array - items: - $ref: "#/components/schemas/TextRange" - description: Subsections of the answer string to which some special formatting should be applied (eg. bold) - EntityType: - type: string - description: The type of entity. - x-include-enum-class-prefix: true - enum: - - PERSON - - PROJECT - - CUSTOMER - Disambiguation: - type: object - description: A disambiguation between multiple entities with the same name - properties: - name: - type: string - description: Name of the ambiguous entity - id: - type: string - description: The unique id of the entity in the knowledge graph - type: - $ref: "#/components/schemas/EntityType" - SearchResultSnippet: - required: - - snippet - properties: - mimeType: - type: string - description: The mime type of the snippets, currently either text/plain or text/html. - text: - type: string - description: A matching snippet from the document with no highlights. - snippetTextOrdering: - type: integer - description: Used for sorting based off the snippet's location within all_snippetable_text - ranges: - type: array - items: - $ref: "#/components/schemas/TextRange" - description: The bolded ranges within text. - url: - type: string - description: 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: - 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. - example: - snippet: snippet - mimeType: mimeType - StructuredResult: - description: A single object that can support any object in the work graph. Only a single object will be populated. - properties: - document: - $ref: "#/components/schemas/Document" - person: - $ref: "#/components/schemas/Person" - customer: - $ref: "#/components/schemas/Customer" - team: - $ref: "#/components/schemas/Team" - customEntity: - $ref: "#/components/schemas/CustomEntity" - answer: - $ref: "#/components/schemas/Answer" - generatedQna: - $ref: "#/components/schemas/GeneratedQna" - extractedQnA: - $ref: "#/components/schemas/ExtractedQnA" - meeting: - $ref: "#/components/schemas/Meeting" - app: - $ref: "#/components/schemas/AppResult" - collection: - $ref: "#/components/schemas/Collection" - answerBoard: - $ref: "#/components/schemas/AnswerBoard" - code: - $ref: "#/components/schemas/Code" - shortcut: - $ref: "#/components/schemas/Shortcut" - querySuggestions: - $ref: "#/components/schemas/QuerySuggestionList" - chat: - $ref: "#/components/schemas/ChatMetadata" - relatedDocuments: - type: array - items: - $ref: "#/components/schemas/RelatedDocuments" - description: A list of documents related to this structured result. - relatedQuestion: - $ref: "#/components/schemas/RelatedQuestion" - disambiguation: - $ref: "#/components/schemas/Disambiguation" - snippets: - description: Any snippets associated to the populated object. - type: array - items: - $ref: "#/components/schemas/SearchResultSnippet" - trackingToken: - type: string - description: An opaque token that represents this particular result in this particular query. To be used for /feedback reporting. - prominence: - type: string - description: The level of visual distinction that should be given to a result. - enum: - - HERO - - PROMOTED - - STANDARD - x-speakeasy-enum-descriptions: - HERO: A high-confidence result that should feature prominently on the page. - PROMOTED: May not be the best result but should be given additional visual distinction. - STANDARD: Should not be distinct from any other results. - source: - type: string - description: Source context for this result. Possible values depend on the result type. - enum: - - EXPERT_DETECTION - - ENTITY_NLQ - Result: - properties: - structuredResults: - type: array - description: An array of entities in the work graph retrieved via a data request. - items: - $ref: "#/components/schemas/StructuredResult" - trackingToken: - type: string - description: An opaque token that represents this particular result in this particular query. To be used for /feedback reporting. - ClusterTypeEnum: - type: string - description: The reason for inclusion of clusteredResults. - enum: - - SIMILAR - - FRESHNESS - - TITLE - - CONTENT - - NONE - - THREAD_REPLY - - THREAD_ROOT - - PREFIX - - SUFFIX - - AUTHOR_PREFIX - - AUTHOR_SUFFIX - ClusterGroup: - required: - - visibleCountHint - properties: - clusteredResults: - type: array - description: A list of results that should be displayed as associated with this result. - items: - $ref: "#/components/schemas/SearchResult" - clusterType: - $ref: "#/components/schemas/ClusterTypeEnum" - visibleCountHint: - type: integer - description: The default number of results to display before truncating and showing a "see more" link - SearchResultProminenceEnum: + Tip: Use [/debug/{datasource}/document](https://developers.glean.com/indexing/debugging/datasource-document) for richer information. + tags: + - Troubleshooting + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetDocumentStatusRequest' + required: true + x-exportParamName: GetDocumentStatusRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetDocumentStatusResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + "429": + description: Too Many Requests + deprecated: true + x-glean-deprecated: + id: 7eec0433-78fd-49f9-a34f-cca83640ec24 + introduced: "2026-02-03" + message: Endpoint is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated" + x-speakeasy-group: indexing.documents + x-speakeasy-name-override: status + /api/index/v1/getdocumentcount: + post: + summary: Get document count + description: | + Fetches document count for the specified custom datasource. + + Tip: Use [/debug/{datasource}/status](https://developers.glean.com/indexing/debugging/datasource-status) for richer information. + tags: + - Troubleshooting + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetDocumentCountRequest' + required: true + x-exportParamName: GetDocumentCountRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetDocumentCountResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + deprecated: true + x-glean-deprecated: + id: c164089c-9412-4724-acf6-caf3b0d2a527 + introduced: "2026-02-03" + message: Endpoint is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated" + x-speakeasy-group: indexing.documents + x-speakeasy-name-override: count + /api/index/v1/getusercount: + post: + summary: Get user count + description: | + Fetches user count for the specified custom datasource. + + Tip: Use [/debug/{datasource}/status](https://developers.glean.com/indexing/debugging/datasource-status) for richer information. + tags: + - Troubleshooting + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetUserCountRequest' + required: true + x-exportParamName: GetUserCountRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetUserCountResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + deprecated: true + x-glean-deprecated: + id: 4f5df873-385e-4539-8183-cb764b0f06b9 + introduced: "2026-02-03" + message: Endpoint is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated" + x-speakeasy-name-override: count + x-speakeasy-group: indexing.people + /api/index/v1/betausers: + post: + summary: Beta users + 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: + schema: + $ref: '#/components/schemas/GreenlistUsersRequest' + required: true + x-exportParamName: GreenlistUsersRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: authorizeBetaUsers + x-speakeasy-group: indexing.permissions + /api/index/v1/adddatasource: + post: + summary: Add or update datasource + description: Add or update a custom datasource and its schema. + tags: + - Datasources + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CustomDatasourceConfig' + required: true + x-exportParamName: DatasourceConfig + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + x-speakeasy-name-override: add + x-speakeasy-group: indexing.datasources + /api/index/v1/getdatasourceconfig: + post: + summary: Get datasource config + description: Fetches the datasource config for the specified custom datasource. + tags: + - Datasources + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GetDatasourceConfigRequest' + required: true + x-exportParamName: GetDatasourceConfigRequest + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CustomDatasourceConfig' + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: retrieveConfig + x-speakeasy-group: indexing.datasources + /api/index/v1/rotatetoken: + post: + summary: Rotate token + 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 + content: + application/json: + schema: + $ref: '#/components/schemas/RotateTokenResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + x-speakeasy-name-override: rotateToken + x-speakeasy-group: indexing.authentication + /api/index/v1/indexemployee: + post: + summary: Index employee + description: Adds an employee or replaces the existing information about an employee. + tags: + - People + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/IndexEmployeeRequest' + required: true + x-exportParamName: IndexEmployeeRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: index + x-speakeasy-group: indexing.people + /api/index/v1/bulkindexemployees: + post: + summary: Bulk index employees + 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: + schema: + $ref: '#/components/schemas/BulkIndexEmployeesRequest' + required: true + x-exportParamName: BulkIndexEmployeesRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + deprecated: true + x-glean-deprecated: + id: ce596f49-55c4-465e-bf3c-5a3a33906e1f + introduced: "2026-02-03" + message: Endpoint is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-03, removal scheduled for 2026-10-15: Endpoint is deprecated" + x-speakeasy-name-override: bulkIndex + x-speakeasy-group: indexing.people + /api/index/v1/indexemployeelist: {} + /api/index/v1/processallemployeesandteams: + post: + summary: Schedules the processing of uploaded employees and teams + description: | + 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 + "400": + description: Bad Request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-speakeasy-name-override: processAllEmployeesAndTeams + x-speakeasy-group: indexing.people + /api/index/v1/deleteemployee: + post: + summary: Delete employee + description: Delete an employee. Silently succeeds if employee is not present. + tags: + - People + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/DeleteEmployeeRequest' + required: true + x-exportParamName: DeleteEmployeeRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: delete + x-speakeasy-group: indexing.people + /api/index/v1/indexteam: + post: + summary: Index team + description: Adds a team or updates information about a team + tags: + - People + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/IndexTeamRequest' + required: true + x-exportParamName: IndexTeamRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: indexTeam + x-speakeasy-group: indexing.people + /api/index/v1/deleteteam: + post: + summary: Delete team + description: Delete a team based on provided id. + tags: + - People + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/DeleteTeamRequest' + required: true + x-exportParamName: DeleteTeamRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: deleteTeam + x-speakeasy-group: indexing.people + /api/index/v1/bulkindexteams: + post: + summary: Bulk index teams + 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: + schema: + $ref: '#/components/schemas/BulkIndexTeamsRequest' + required: true + x-exportParamName: BulkIndexTeamsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: bulkIndexTeams + x-speakeasy-group: indexing.people + /api/index/v1/bulkindexshortcuts: + post: + summary: Bulk index external shortcuts + 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://docs.glean.com/user-guide/knowledge/go-links/how-go-links-work) page. + tags: + - Shortcuts + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/BulkIndexShortcutsRequest' + required: true + x-exportParamName: BulkIndexShortcutsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: bulkIndex + x-speakeasy-group: indexing.shortcuts + /api/index/v1/uploadshortcuts: + post: + summary: Upload shortcuts + 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: + schema: + $ref: '#/components/schemas/UploadShortcutsRequest' + required: true + x-exportParamName: UploadShortcutsRequest + responses: + "200": + description: OK + "400": + description: Bad Request + "401": + description: Not Authorized + "409": + description: Conflict + x-speakeasy-name-override: upload + x-speakeasy-group: indexing.shortcuts + /api/index/v1/debug/{datasource}/document/events: + post: + summary: | + Beta: Get document lifecycle events + description: | + Retrieves lifecycle events for a specific document including upload time, index times and deletions. Rate limited to 1 request per minute per datasource. Currently in beta, might undergo breaking changes without prior notice. + tags: + - Troubleshooting + security: + - APIToken: [] + parameters: + - name: datasource + in: path + description: The datasource to which the document belongs + required: true + schema: type: string - description: | - The level of visual distinction that should be given to a result. - enum: - - HERO - - PROMOTED - - STANDARD - x-speakeasy-enum-descriptions: - HERO: A high-confidence result that should feature prominently on the page. - PROMOTED: May not be the best result but should be given additional visual distinction. - STANDARD: Should not be distinct from any other results. - PinDocumentMutableProperties: - properties: - queries: - type: array - description: The query strings for which the pinned result will show. - items: - type: string - audienceFilters: - type: array - description: Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. - items: - $ref: "#/components/schemas/FacetFilter" - PinDocument: - allOf: - - $ref: "#/components/schemas/PinDocumentMutableProperties" - - type: object - required: - - documentId - properties: - id: - type: string - description: The opaque id of the pin. - documentId: - type: string - description: The document which should be a pinned result. - audienceFilters: - type: array - description: Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. - items: - $ref: "#/components/schemas/FacetFilter" - attribution: - $ref: "#/components/schemas/Person" - updatedBy: - $ref: "#/components/schemas/Person" - createTime: - type: string - format: date-time - updateTime: - type: string - format: date-time - PersonTeam: - description: Use `id` if you index teams via Glean, and use `name` and `externalLink` if you want to use your own team pages - properties: - id: - type: string - description: Unique identifier - name: - type: string - description: Team name - externalLink: - type: string - format: uri - description: Link to a team page on the internet or your company's intranet - relationship: - type: string - description: The team member's relationship to the team. This defaults to MEMBER if not set. - default: MEMBER - enum: - - MEMBER - - MANAGER - - LEAD - - POINT_OF_CONTACT - - OTHER - joinDate: - type: string - format: date-time - description: The team member's start date - StructuredLocation: - type: object - description: Detailed location with information about country, state, city etc. - properties: - deskLocation: - type: string - description: Desk number. - timezone: - type: string - description: Location's timezone, e.g. UTC, PST. - address: - type: string - description: Office address or name. - city: - type: string - description: Name of the city. - state: - type: string - description: State code. - region: - type: string - description: Region information, e.g. NORAM, APAC. - zipCode: - type: string - description: ZIP Code for the address. - country: - type: string - description: Country name. - countryCode: - type: string - description: Alpha-2 or Alpha-3 ISO 3166 country code, e.g. US or USA. - SocialNetwork: - required: - - name - - profileUrl - properties: - name: - type: string - description: Possible values are "twitter", "linkedin". - profileName: - type: string - description: Human-readable profile name. - profileUrl: - type: string - format: url - description: Link to profile. - PersonDistance: - required: - - name - - obfuscatedId - - distance - properties: - name: - type: string - description: The display name. - obfuscatedId: - type: string - description: An opaque identifier that can be used to request metadata for a Person. - distance: - type: number - format: float - description: Distance to person, refer to PeopleDistance pipeline on interpretation of the value. - CommunicationChannel: + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/DebugDocumentLifecycleRequest' + required: true + x-exportParamName: DebugDocumentLifecycleRequest + responses: + "200": + description: OK + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/DebugDocumentLifecycleResponse' + "400": + description: Bad Request + "401": + description: Not Authorized + "429": + description: Too Many Requests + x-beta: true + /rest/api/index/document/{docId}/custom-metadata/{groupName}: + put: + summary: Add or update custom metadata + description: Associates custom metadata with a specific document. Custom metadata enables you to enrich documents with additional structured information that can be used for search, filtering, and faceting. + tags: + - Custom Metadata + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CustomMetadataPutRequest' + required: true + x-exportParamName: CustomMetadataPutRequest + responses: + "200": + $ref: '#/components/responses/SuccessResponse' + "400": + $ref: '#/components/responses/BadRequestError' + "401": + $ref: '#/components/responses/UnauthorizedError' + "404": + $ref: '#/components/responses/NotFoundError' + "429": + $ref: '#/components/responses/TooManyRequestsError' + "500": + $ref: '#/components/responses/InternalServerError' + x-speakeasy-name-override: upsert + x-speakeasy-group: indexing.customMetadata + delete: + summary: Remove custom metadata + description: Removes all custom metadata for the specified metadata group from a document. + tags: + - Custom Metadata + security: + - APIToken: [] + responses: + "200": + $ref: '#/components/responses/SuccessResponse' + "400": + $ref: '#/components/responses/BadRequestError' + "401": + $ref: '#/components/responses/UnauthorizedError' + "404": + $ref: '#/components/responses/NotFoundError' + "429": + $ref: '#/components/responses/TooManyRequestsError' + "500": + $ref: '#/components/responses/InternalServerError' + x-speakeasy-name-override: delete + x-speakeasy-group: indexing.customMetadata + servers: + - url: https://{instance}-be.glean.com + variables: + instance: + default: instance-name + description: The instance name (typically the email domain without the TLD) that determines the deployment backend. + parameters: + - name: docId + in: path + description: Unique Glean identifier of the document + required: true + schema: + type: string + - name: groupName + in: path + description: Name of the metadata group as specified while adding schema + required: true + schema: + type: string + /rest/api/index/custom-metadata/schema/{groupName}: + get: + summary: Retrieve metadata schema + description: Retrieves the current schema definition for a metadata group. + tags: + - Custom Metadata + security: + - APIToken: [] + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/CustomMetadataSchema' + "401": + $ref: '#/components/responses/UnauthorizedError' + "404": + $ref: '#/components/responses/NotFoundError' + "429": + $ref: '#/components/responses/TooManyRequestsError' + "500": + $ref: '#/components/responses/InternalServerError' + x-speakeasy-name-override: getSchema + x-speakeasy-group: indexing.customMetadata + put: + summary: Create or update metadata schema + description: Defines or updates the schema for a metadata group. Schemas should be defined before indexing metadata. + tags: + - Custom Metadata + security: + - APIToken: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CustomMetadataSchema' + required: true + x-exportParamName: CustomMetadataSchema + responses: + "200": + $ref: '#/components/responses/SuccessResponse' + "400": + $ref: '#/components/responses/BadRequestError' + "401": + $ref: '#/components/responses/UnauthorizedError' + "409": + description: Conflict - Schema already exists with incompatible changes + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInfoResponse' + "429": + $ref: '#/components/responses/TooManyRequestsError' + "500": + $ref: '#/components/responses/InternalServerError' + x-speakeasy-name-override: upsertSchema + x-speakeasy-group: indexing.customMetadata + delete: + summary: Remove metadata schema + description: Deletes the schema definition for a metadata group. This does not delete existing metadata values on documents. + tags: + - Custom Metadata + security: + - APIToken: [] + responses: + "200": + $ref: '#/components/responses/SuccessResponse' + "400": + $ref: '#/components/responses/BadRequestError' + "401": + $ref: '#/components/responses/UnauthorizedError' + "404": + $ref: '#/components/responses/NotFoundError' + "429": + $ref: '#/components/responses/TooManyRequestsError' + "500": + $ref: '#/components/responses/InternalServerError' + x-speakeasy-name-override: deleteSchema + x-speakeasy-group: indexing.customMetadata + servers: + - url: https://{instance}-be.glean.com + variables: + instance: + default: instance-name + description: The instance name (typically the email domain without the TLD) that determines the deployment backend. + parameters: + - name: groupName + in: path + description: Name of the metadata group schema + required: true + schema: + type: string + /rest/api/v1/governance/data/policies/{id}: + get: + operationId: getpolicy + summary: Gets specified policy + description: Fetches the specified policy version, or the latest if no version is provided. + tags: + - Governance + security: + - APIToken: [] + parameters: + - name: id + in: path + description: The id of the policy to fetch. + required: true + schema: type: string - enum: - - COMMUNICATION_CHANNEL_EMAIL - - COMMUNICATION_CHANNEL_SLACK - ChannelInviteInfo: - description: Information regarding the invite status of a person for a particular channel. - properties: - channel: - description: Channel through which the invite was sent - $ref: "#/components/schemas/CommunicationChannel" - isAutoInvite: - description: Bit that tracks if this invite was automatically sent or user-sent - type: boolean - inviter: - description: The person that invited this person. - $ref: "#/components/schemas/Person" - inviteTime: - type: string - format: date-time - description: The time this person was invited in ISO format (ISO 8601). - reminderTime: - type: string - format: date-time - description: The time this person was reminded in ISO format (ISO 8601) if a reminder was sent. - InviteInfo: - description: Information regarding the invite status of a person. - properties: - signUpTime: - type: string - format: date-time - description: The time this person signed up in ISO format (ISO 8601). - invites: - type: array - items: - $ref: "#/components/schemas/ChannelInviteInfo" - description: Latest invites received by the user for each channel - inviter: - deprecated: true - description: The person that invited this person. - $ref: "#/components/schemas/Person" - inviteTime: - deprecated: true - type: string - format: date-time - description: The time this person was invited in ISO format (ISO 8601). - 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. - ReadPermission: - description: Describes the read permission level that a user has for a specific feature - properties: - scopeType: - $ref: "#/components/schemas/ScopeType" - ReadPermissions: - description: Describes the read permission levels that a user has for permissioned features. Key must be PermissionedFeatureOrObject - additionalProperties: - type: array - description: List of read permissions (for different scopes but same feature) - items: - $ref: "#/components/schemas/ReadPermission" - WritePermissions: - description: Describes the write permissions levels that a user has for permissioned features. Key must be PermissionedFeatureOrObject - additionalProperties: - type: array - description: List of write permissions (for different scopes but same feature) - items: - $ref: "#/components/schemas/WritePermission" - GrantPermission: - description: Describes the grant permission level that a user has for a specific feature - properties: - scopeType: - $ref: "#/components/schemas/ScopeType" - GrantPermissions: - description: Describes the grant permission levels that a user has for permissioned features. Key must be PermissionedFeatureOrObject - additionalProperties: - type: array - description: List of grant permissions (for different scopes but same feature) - items: - $ref: "#/components/schemas/GrantPermission" - Permissions: - description: |- - Describes the permissions levels that a user has for permissioned features. When the client sends this, Permissions.read and Permissions.write are the additional permissions granted to a user on top of what they have via their roles. - When the server sends this, Permissions.read and Permissions.write are the complete (merged) set of permissions the user has, and Permissions.roles is just for display purposes. - properties: - canAdminSearch: - type: boolean - description: TODO--deprecate in favor of the read and write properties. True if the user has access to /adminsearch - canAdminClientApiGlobalTokens: - type: boolean - description: TODO--deprecate in favor of the read and write properties. True if the user can administrate client API tokens with global scope - canDlp: - type: boolean - description: TODO--deprecate in favor of the read and write properties. True if the user has access to data loss prevention (DLP) features - read: - $ref: "#/components/schemas/ReadPermissions" - write: - $ref: "#/components/schemas/WritePermissions" - grant: - $ref: "#/components/schemas/GrantPermissions" - role: - type: string - description: The roleId of the canonical role a user has. The displayName is equal to the roleId. - roles: - type: array - description: The roleIds of the roles a user has. - items: - type: string - TimeInterval: - required: - - start - - end - properties: - start: - type: string - description: The RFC3339 timestamp formatted start time of this event. - end: - type: string - description: The RFC3339 timestamp formatted end time of this event. - AnonymousEvent: - description: A generic, light-weight calendar event. - type: object - properties: - time: - $ref: "#/components/schemas/TimeInterval" - eventType: - description: The nature of the event, for example "out of office". - type: string - enum: - - DEFAULT - - OUT_OF_OFFICE - Badge: - type: object - description: Displays a user's accomplishment or milestone - properties: - key: - type: string - description: An auto generated unique identifier. - displayName: - type: string - description: The badge name displayed to users - iconConfig: - $ref: "#/components/schemas/IconConfig" - pinned: - type: boolean - description: The badge should be shown on the PersonAttribution - example: - key: deployment_name_new_hire - displayName: New hire - iconConfig: - color: "#343CED" - key: person_icon - iconType: GLYPH - name: user - PersonMetadata: - properties: - type: - type: string - enum: - - FULL_TIME - - CONTRACTOR - - NON_EMPLOYEE - - FORMER_EMPLOYEE - example: FULL_TIME - x-speakeasy-enum-descriptions: - FULL_TIME: The person is a current full-time employee of the company. - CONTRACTOR: The person is a current contractor of the company. - NON_EMPLOYEE: The person object represents a non-human actor such as a service or admin account. - FORMER_EMPLOYEE: The person is a previous employee of the company. - firstName: - type: string - description: The first name of the person - lastName: - type: string - description: The last name of the person - title: - type: string - description: Job title. - businessUnit: - type: string - description: Typically the highest level organizational unit; generally applies to bigger companies with multiple distinct businesses. - department: - type: string - description: An organizational unit where everyone has a similar task, e.g. `Engineering`. - teams: - description: Info about the employee's team(s). - type: array - items: - $ref: "#/components/schemas/PersonTeam" - departmentCount: - type: integer - description: The number of people in this person's department. - email: - type: string - description: The user's primary email address - aliasEmails: - type: array - description: Additional email addresses of this user beyond the primary, if any. - items: - type: string - location: - type: string - description: User facing string representing the person's location. - structuredLocation: - $ref: "#/components/schemas/StructuredLocation" - externalProfileLink: - type: string - description: Link to a customer's internal profile page. This is set to '#' when no link is desired. - manager: - $ref: "#/components/schemas/Person" - managementChain: - description: The chain of reporting in the company as far up as it goes. The last entry is this person's direct manager. - type: array - items: - $ref: "#/components/schemas/Person" - phone: - type: string - description: Phone number as a number string. - timezone: - type: string - description: The timezone of the person. E.g. "Pacific Daylight Time". - timezoneOffset: - type: integer - format: int64 - description: The offset of the person's timezone in seconds from UTC. - photoUrl: - type: string - format: url - description: The URL of the person's avatar. Public, glean-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). - uneditedPhotoUrl: - type: string - format: url - description: The original photo URL of the person's avatar before any edits they made are applied - bannerUrl: - type: string - format: url - description: The URL of the person's banner photo. - reports: - type: array - items: - $ref: "#/components/schemas/Person" - startDate: - type: string - description: The date when the employee started. - format: date - endDate: - type: string - format: date - description: If a former employee, the last date of employment. - bio: - type: string - description: Short biography or mission statement of the employee. - pronoun: - type: string - description: She/her, He/his or other pronoun. - orgSizeCount: - type: integer - description: The total recursive size of the people reporting to this person, or 1 - directReportsCount: - type: integer - description: The total number of people who directly report to this person, or 0 - preferredName: - type: string - description: The preferred name of the person, or a nickname. - socialNetwork: - description: List of social network profiles. - type: array - items: - $ref: "#/components/schemas/SocialNetwork" - datasourceProfile: - type: array - description: List of profiles this user has in different datasources / tools that they use. - items: - $ref: "#/components/schemas/DatasourceProfile" - querySuggestions: - $ref: "#/components/schemas/QuerySuggestionList" - peopleDistance: - type: array - items: - $ref: "#/components/schemas/PersonDistance" - description: List of people and distances to those people from this person. Optionally with metadata. - inviteInfo: - $ref: "#/components/schemas/InviteInfo" - isSignedUp: - type: boolean - description: Whether the user has signed into Glean at least once. - lastExtensionUse: - type: string - format: date-time - description: The last time the user has used the Glean extension in ISO 8601 format. - permissions: - $ref: "#/components/schemas/Permissions" - customFields: - type: array - description: User customizable fields for additional people information. - items: - $ref: "#/components/schemas/CustomFieldData" - loggingId: - type: string - description: The logging id of the person used in scrubbed logs, tracking GA metrics. - startDatePercentile: - type: number - format: float - description: Percentage of the company that started strictly after this person. Between [0,100). - busyEvents: - type: array - items: - $ref: "#/components/schemas/AnonymousEvent" - description: Intervals of busy time for this person, along with the type of event they're busy with. - profileBoolSettings: - type: object - additionalProperties: - type: boolean - description: flag settings to indicate user profile settings for certain items - badges: - type: array - items: - $ref: "#/components/schemas/Badge" - description: The badges that a user has earned over their lifetime. - isOrgRoot: - type: boolean - description: Whether this person is a "root" node in their organization's hierarchy. - example: - department: Movies - email: george@example.com - location: Hollywood, CA - phone: 6505551234 - photoUrl: https://example.com/george.jpg - startDate: "2000-01-23" - title: Actor - DocumentVisibility: + - name: version + in: query + description: The version of the policy to fetch. Each time a policy is updated, the older version is still stored. If this is left empty, the latest policy is fetched. + required: false + schema: + type: integer + format: int64 + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/GetDlpReportResponse' + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.data.policies + x-speakeasy-name-override: retrieve + post: + operationId: updatepolicy + summary: Updates an existing policy + description: Updates an existing policy. + tags: + - Governance + security: + - APIToken: [] + parameters: + - name: id + in: path + description: The id of the policy to fetch. + required: true + schema: type: string - description: The level of visibility of the document as understood by our system. - enum: - - PRIVATE - - SPECIFIC_PEOPLE_AND_GROUPS - - DOMAIN_LINK - - DOMAIN_VISIBLE - - PUBLIC_LINK - - PUBLIC_VISIBLE - x-speakeasy-enum-descriptions: - PRIVATE: Only one person is able to see the document. - SPECIFIC_PEOPLE_AND_GROUPS: Only specific people and/or groups can see the document. - DOMAIN_LINK: Anyone in the domain with the link can see the document. - DOMAIN_VISIBLE: Anyone in the domain can search for the document. - PUBLIC_LINK: Anyone with the link can see the document. - PUBLIC_VISIBLE: Anyone on the internet can search for the document. - Reaction: - properties: - type: - type: string - count: - type: integer - description: The count of the reaction type on the document. - reactors: - type: array - items: - $ref: "#/components/schemas/Person" - reactedByViewer: - type: boolean - description: Whether the user in context reacted with this type to the document. - Share: - description: Search endpoint will only fill out numDays ago since that's all we need to display shared badge; docmetadata endpoint will fill out all the fields so that we can display shared badge tooltip - required: - - numDaysAgo - properties: - numDaysAgo: - type: integer - description: The number of days that has passed since the share happened - sharer: - $ref: "#/components/schemas/Person" - sharingDocument: - $ref: "#/components/schemas/Document" - DocumentInteractions: - properties: - numComments: - type: integer - description: The count of comments (thread replies in the case of slack). - numReactions: - type: integer - description: The count of reactions on the document. - reactions: - type: array - description: To be deprecated in favor of reacts. A (potentially non-exhaustive) list of reactions for the document. - deprecated: true - items: - type: string - reacts: - type: array - items: - $ref: "#/components/schemas/Reaction" - shares: - type: array - items: - $ref: "#/components/schemas/Share" - description: Describes instances of someone posting a link to this document in one of our indexed datasources. - visitorCount: - $ref: "#/components/schemas/CountInfo" - ViewerInfo: - properties: - role: - type: string - enum: - - ANSWER_MODERATOR - - OWNER - - VIEWER - description: DEPRECATED - use permissions instead. Viewer's role on the specific document. - deprecated: true - lastViewedTime: - type: string - format: date-time - IndexStatus: - properties: - lastCrawledTime: - description: When the document was last crawled - type: string - format: date-time - lastIndexedTime: - description: When the document was last indexed - type: string - format: date-time - DocumentMetadata: - properties: - datasource: - type: string - datasourceInstance: - type: string - description: The datasource instance from which the document was extracted. - objectType: - type: string - description: The type of the result. Interpretation is specific to each datasource. (e.g. for Jira issues, this is the issue type such as Bug or Feature Request). - container: - type: string - description: The name of the container (higher level parent, not direct parent) of the result. Interpretation is specific to each datasource (e.g. Channels for Slack, Project for Jira). cf. parentId - containerId: - type: string - description: The Glean Document ID of the container. Uniquely identifies the container. - superContainerId: - type: string - description: The Glean Document ID of the super container. Super container represents a broader abstraction that contains many containers. For example, whereas container might refer to a folder, super container would refer to a drive. - parentId: - type: string - description: The id of the direct parent of the result. Interpretation is specific to each datasource (e.g. parent issue for Jira). cf. container - mimeType: - type: string - documentId: - type: string - description: The index-wide unique identifier. - loggingId: - type: string - description: A unique identifier used to represent the document in any logging or feedback requests in place of documentId. - documentIdHash: - type: string - description: Hash of the Glean Document ID. - createTime: - type: string - format: date-time - updateTime: - type: string - format: date-time - author: - $ref: "#/components/schemas/Person" - owner: - $ref: "#/components/schemas/Person" - mentionedPeople: - type: array - items: - $ref: "#/components/schemas/Person" - description: A list of people mentioned in the document. - visibility: - $ref: "#/components/schemas/DocumentVisibility" - components: - type: array - description: A list of components this result is associated with. Interpretation is specific to each datasource. (e.g. for Jira issues, these are [components](https://confluence.atlassian.com/jirasoftwarecloud/organizing-work-with-components-764478279.html).) - items: - type: string - status: - type: string - description: The status or disposition of the result. Interpretation is specific to each datasource. (e.g. for Jira issues, this is the issue status such as Done, In Progress or Will Not Fix). - statusCategory: - type: string - description: The status category of the result. Meant to be more general than status. Interpretation is specific to each datasource. - pins: - type: array - description: A list of stars associated with this result. "Pin" is an older name. - items: - $ref: "#/components/schemas/PinDocument" - priority: - type: string - description: The document priority. Interpretation is datasource specific. - assignedTo: - $ref: "#/components/schemas/Person" - updatedBy: - $ref: "#/components/schemas/Person" - labels: - type: array - description: A list of tags for the document. Interpretation is datasource specific. - items: - type: string - collections: - type: array - description: A list of collections that the document belongs to. - items: - $ref: "#/components/schemas/Collection" - datasourceId: - type: string - description: The user-visible datasource specific id (e.g. Salesforce case number for example, GitHub PR number). - interactions: - $ref: "#/components/schemas/DocumentInteractions" - verification: - $ref: "#/components/schemas/Verification" - viewerInfo: - $ref: "#/components/schemas/ViewerInfo" - permissions: - $ref: "#/components/schemas/ObjectPermissions" - visitCount: - $ref: "#/components/schemas/CountInfo" - shortcuts: - type: array - description: A list of shortcuts of which destination URL is for the document. - items: - $ref: "#/components/schemas/Shortcut" - path: - type: string - description: For file datasources like onedrive/github etc this has the path to the file - customData: - $ref: "#/components/schemas/CustomData" - documentCategory: - type: string - description: The document's document_category(.proto). - contactPerson: - $ref: "#/components/schemas/Person" - thumbnail: - $ref: "#/components/schemas/Thumbnail" - description: A thumbnail image representing this document. - indexStatus: - $ref: "#/components/schemas/IndexStatus" - ancestors: - type: array - description: 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. - items: - $ref: "#/components/schemas/Document" - example: - container: container - parentId: JIRA_EN-1337 - createTime: "2000-01-23T04:56:07.000Z" - datasource: datasource - author: - name: name - documentId: documentId - updateTime: "2000-01-23T04:56:07.000Z" - mimeType: mimeType - objectType: Feature Request - components: - - Backend - - Networking - status: - - Done - customData: - someCustomField: someCustomValue - DocumentSection: - type: object - properties: - title: - type: string - description: The title of the document section (e.g. the section header). - url: - type: string - description: The permalink of the document section. - StructuredTextItem: - properties: - link: - type: string - example: https://en.wikipedia.org/wiki/Diffuse_sky_radiation - document: - deprecated: true - description: Deprecated. To be gradually migrated to structuredResult. - $ref: "#/components/schemas/Document" - text: - type: string - example: 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: - $ref: "#/components/schemas/StructuredResult" - AnnouncementMutableProperties: - properties: - startTime: - type: string - format: date-time - description: The date and time at which the announcement becomes active. - endTime: - type: string - format: date-time - description: The date and time at which the announcement expires. - title: - type: string - description: The headline of the announcement. - body: - $ref: "#/components/schemas/StructuredText" - emoji: - type: string - description: An emoji used to indicate the nature of the announcement. - thumbnail: - $ref: "#/components/schemas/Thumbnail" - banner: - $ref: "#/components/schemas/Thumbnail" - description: Optional variant of thumbnail cropped for header background. - audienceFilters: - type: array - description: Filters which restrict who should see the announcement. Values are taken from the corresponding filters in people search. - items: - $ref: "#/components/schemas/FacetFilter" - sourceDocumentId: - type: string - description: The Glean Document ID of the source document this Announcement was created from (e.g. Slack thread). - hideAttribution: - type: boolean - description: Whether or not to hide an author attribution. - channel: - type: string - enum: - - MAIN - - SOCIAL_FEED - description: This determines whether this is a Social Feed post or a regular announcement. - postType: - type: string - enum: - - TEXT - - LINK - description: 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. - isPrioritized: - type: boolean - description: Used by the Social Feed to pin posts to the front of the feed. - viewUrl: - type: string - description: URL for viewing the announcement. It will be set to document URL for announcements from other datasources e.g. simpplr. Can only be written when channel="SOCIAL_FEED". - CreateAnnouncementRequest: - allOf: - - $ref: "#/components/schemas/AnnouncementMutableProperties" - - type: object - required: - - title - - startTime - - endTime - DraftProperties: - properties: - draftId: - type: integer - description: The opaque id of the associated draft. - example: - draftId: 342 - Announcement: - allOf: - - $ref: "#/components/schemas/AnnouncementMutableProperties" - - $ref: "#/components/schemas/DraftProperties" - - $ref: "#/components/schemas/PermissionedObject" - - type: object - properties: - id: - type: integer - description: The opaque id of the announcement. - author: - $ref: "#/components/schemas/Person" - createTimestamp: - type: integer - description: Server Unix timestamp of the creation time (in seconds since epoch UTC). - lastUpdateTimestamp: - type: integer - description: Server Unix timestamp of the last update time (in seconds since epoch UTC). - updatedBy: - $ref: "#/components/schemas/Person" - viewerInfo: - type: object - properties: - isDismissed: - type: boolean - description: Whether the viewer has dismissed the announcement. - isRead: - type: boolean - description: Whether the viewer has read the announcement. - sourceDocument: - $ref: "#/components/schemas/Document" - description: The source document if the announcement is created from one. - isPublished: - type: boolean - description: Whether or not the announcement is published. - DeleteAnnouncementRequest: - required: - - id - properties: - id: - type: integer - description: The opaque id of the announcement to be deleted. - UpdateAnnouncementRequest: - allOf: - - $ref: "#/components/schemas/AnnouncementMutableProperties" - - type: object - required: - - id - - title - - startTime - - endTime - properties: - id: - type: integer - description: The opaque id of the announcement. - AddedCollections: - properties: - addedCollections: - type: array - items: - type: integer - description: IDs of Collections to which a document is added. - AnswerCreationData: - allOf: - - $ref: "#/components/schemas/AnswerMutableProperties" - - $ref: "#/components/schemas/AddedCollections" - - type: object - properties: - combinedAnswerText: - $ref: "#/components/schemas/StructuredTextMutableProperties" - CreateAnswerRequest: - required: - - data - properties: - data: - $ref: "#/components/schemas/AnswerCreationData" - DeleteAnswerRequest: - allOf: - - $ref: "#/components/schemas/AnswerId" - - $ref: "#/components/schemas/AnswerDocId" - - type: object - required: - - id - RemovedCollections: - properties: - removedCollections: - type: array - items: - type: integer - description: IDs of Collections from which a document is removed. - EditAnswerRequest: - allOf: - - $ref: "#/components/schemas/AnswerId" - - $ref: "#/components/schemas/AnswerDocId" - - $ref: "#/components/schemas/AnswerMutableProperties" - - $ref: "#/components/schemas/AddedCollections" - - $ref: "#/components/schemas/RemovedCollections" - - type: object - required: - - id - properties: - combinedAnswerText: - $ref: "#/components/schemas/StructuredTextMutableProperties" - GetAnswerRequest: - allOf: - - $ref: "#/components/schemas/AnswerId" - - $ref: "#/components/schemas/AnswerDocId" - AnswerResult: - required: - - answer - properties: - answer: - $ref: "#/components/schemas/Answer" - trackingToken: - type: string - description: An opaque token that represents this particular Answer. To be used for `/feedback` reporting. - GetAnswerError: - properties: - errorType: - type: string - enum: - - NO_PERMISSION - - INVALID_ID - answerAuthor: - $ref: "#/components/schemas/Person" - GetAnswerResponse: - properties: - answerResult: - $ref: "#/components/schemas/AnswerResult" - error: - $ref: "#/components/schemas/GetAnswerError" - ListAnswersRequest: - properties: - boardId: - type: integer - description: The Answer Board Id to list answers on. - ListAnswersResponse: - required: - - answers - - answerResults - properties: - answerResults: - type: array - items: - $ref: "#/components/schemas/AnswerResult" - description: List of answers with tracking tokens. - CreateAuthTokenResponse: - required: - - token - - expirationTime - properties: - token: - type: string - description: An authentication token that can be passed to any endpoint via Bearer Authentication - expirationTime: - description: Unix timestamp for when this token expires (in seconds since epoch UTC). - type: integer - format: int64 - ToolSets: - type: object - description: The types of tools that the agent is allowed to use. Only works with FAST and ADVANCED `agent` values - properties: - enableWebSearch: - type: boolean - description: "Whether the agent is allowed to use web search (default: true)." - enableCompanyTools: - type: boolean - description: "Whether the agent is allowed to search internal company resources (default: true)." - AgentConfig: - description: Describes the agent that executes the request. - properties: - agent: - type: string - description: Name of the agent. - enum: - - DEFAULT - - GPT - - UNIVERSAL - - FAST - - ADVANCED - x-speakeasy-enum-descriptions: - DEFAULT: Integrates with your company's knowledge. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values - GPT: Communicates directly with the LLM. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values - UNIVERSAL: Uses both company and web knowledge. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values - FAST: Uses an agent powered by the agentic engine that responds faster but may have lower quality results. Requires the agentic engine to be enabled in the deployment. - ADVANCED: Uses an agent powered by the agentic engine that thinks for longer and potentially makes more LLM calls to return higher quality results. Requires the agentic engine to be enabled in the deployment. - toolSets: - $ref: "#/components/schemas/ToolSets" - mode: - type: string - description: Top level modes to run GleanChat in. - enum: - - DEFAULT - - QUICK - x-speakeasy-enum-descriptions: - DEFAULT: Used if no mode supplied. - QUICK: Deprecated. - useImageGeneration: - type: boolean - description: Whether the agent should create an image. - ChatFileStatus: + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/UpdateDlpReportRequest' + required: true + responses: + "200": + description: OK + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/UpdateDlpReportResponse' + "403": + description: Permissions error + "500": + description: Internal error + x-speakeasy-group: client.governance.data.policies + x-speakeasy-name-override: update + /rest/api/v1/governance/data/policies: + get: + operationId: listpolicies + summary: Lists policies + description: Lists policies with filtering. + tags: + - Governance + security: + - APIToken: [] + parameters: + - name: autoHide + in: query + description: Filter to return reports with a given value of auto-hide. + required: false + schema: + type: boolean + - name: frequency + in: query + description: Filter to return reports with a given frequency. + required: false + schema: type: string - description: Current status of the file. - x-include-enum-class-prefix: true - enum: - - PROCESSING - - PROCESSED - - FAILED - - DELETED - ChatFileFailureReason: - type: string - description: Reason for failed status. - x-include-enum-class-prefix: true - enum: - - PARSE_FAILED - - AV_SCAN_FAILED - - FILE_TOO_SMALL - - FILE_TOO_LARGE - - FILE_EXTENSION_UNSUPPORTED - - FILE_METADATA_VALIDATION_FAIL - - FILE_PROCESSING_TIMED_OUT - ChatFileMetadata: - type: object - description: Metadata of a file uploaded by a user for Chat. - properties: - status: - $ref: "#/components/schemas/ChatFileStatus" - uploadTime: - type: integer - format: int64 - description: Upload time, in epoch seconds. - processedSize: - type: integer - format: int64 - description: Size of the processed file in bytes. - failureReason: - $ref: "#/components/schemas/ChatFileFailureReason" - mimeType: - description: MIME type of the file. - type: string - ChatFile: - type: object - description: Structure for file uploaded by a user for Chat. - properties: - id: - type: string - description: Unique identifier of the file. - example: FILE_1234 - url: - type: string - description: Url of the file. - example: www.google.com - name: - type: string - description: Name of the uploaded file. - example: sample.pdf - metadata: - $ref: "#/components/schemas/ChatFileMetadata" - ReferenceRange: - description: Each text range from the response can correspond to an array of snippets from the citation source. - properties: - textRange: - $ref: "#/components/schemas/TextRange" - snippets: - type: array - items: - $ref: "#/components/schemas/SearchResultSnippet" - ChatMessageCitation: - description: Information about the source for a ChatMessage. - properties: - trackingToken: - type: string - description: An opaque token that represents this particular result in this particular ChatMessage. To be used for /feedback reporting. - sourceDocument: - $ref: "#/components/schemas/Document" - sourceFile: - $ref: "#/components/schemas/ChatFile" - sourcePerson: - $ref: "#/components/schemas/Person" - referenceRanges: - description: Each reference range and its corresponding snippets - type: array - items: - $ref: "#/components/schemas/ReferenceRange" - displayName: - description: Human understandable name of the tool. Max 50 characters. - type: string - logoUrl: - type: string - description: URL used to fetch the logo. - objectName: - type: string - description: Name of the generated object. This will be used to indicate to the end user what the generated object contains. - example: - - HR ticket - - Email - - Chat message - PersonObject: - required: - - name - - obfuscatedId - properties: - name: - type: string - description: The display name. - obfuscatedId: - type: string - description: An opaque identifier that can be used to request metadata for a Person. - AuthConfig: - description: Config for tool's authentication method. - type: object - properties: - isOnPrem: - type: boolean - description: Whether or not this tool is hosted on-premise. - usesCentralAuth: - type: boolean - description: Whether or not this uses central auth. - type: - type: string - enum: - - NONE - - OAUTH_USER - - OAUTH_ADMIN - - API_KEY - - BASIC_AUTH - - DWD - description: | - 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. - 'OAUTH_USER' uses individual user tokens for external API calls. - 'DWD' refers to domain wide delegation. - grantType: - type: string - enum: - - AUTH_CODE - - CLIENT_CREDENTIALS - description: The type of grant type being used. - status: - type: string - description: Auth status of the tool. - enum: - - AWAITING_AUTH - - AUTHORIZED - - AUTH_DISABLED - client_url: - type: string - format: url - description: The URL where users will be directed to start the OAuth flow. - scopes: - type: array - items: - type: string - description: A list of strings denoting the different scopes or access levels required by the tool. - audiences: - type: array - items: - type: string - description: A list of strings denoting the different audience which can access the tool. - authorization_url: - type: string - format: url - description: The OAuth provider's endpoint, where access tokens are requested. - lastAuthorizedAt: - type: string - format: date-time - description: The time the tool was last authorized in ISO format (ISO 8601). - ToolMetadata: - description: The manifest for a tool that can be used to augment Glean Assistant. - required: - - type - - name - - displayName - - displayDescription - properties: - type: - description: The type of tool. - type: string - enum: - - RETRIEVAL - - ACTION - name: - description: Unique identifier for the tool. Name should be understandable by the LLM, and will be used to invoke a tool. - type: string - displayName: - $ref: "#/components/schemas/displayName" - toolId: - type: string - description: An opaque id which is unique identifier for the tool. - displayDescription: - description: Description of the tool meant for a human. - type: string - logoUrl: - $ref: "#/components/schemas/logoUrl" - objectName: - $ref: "#/components/schemas/objectName" - knowledgeType: - type: string - description: Indicates the kind of knowledge a tool would access or modify. - enum: - - NEUTRAL_KNOWLEDGE - - COMPANY_KNOWLEDGE - - WORLD_KNOWLEDGE - createdBy: - $ref: "#/components/schemas/PersonObject" - lastUpdatedBy: - $ref: "#/components/schemas/PersonObject" - createdAt: - type: string - format: date-time - description: The time the tool was created in ISO format (ISO 8601) - lastUpdatedAt: - type: string - format: date-time - description: The time the tool was last updated in ISO format (ISO 8601) - writeActionType: - type: string - description: 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. - enum: - - REDIRECT - - EXECUTION - - MCP - authType: - type: string - enum: - - NONE - - OAUTH_USER - - OAUTH_ADMIN - - API_KEY - - BASIC_AUTH - - DWD - description: | - 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. - 'OAUTH_USER' uses individual user tokens for external API calls. - 'DWD' refers to domain wide delegation. - auth: - deprecated: true - $ref: "#/components/schemas/AuthConfig" - permissions: - deprecated: true - $ref: "#/components/schemas/ObjectPermissions" - usageInstructions: - description: Usage instructions for the LLM to use this action. - type: string - isSetupFinished: - type: boolean - description: Whether this action has been fully configured and validated. - PossibleValue: - type: object - description: Possible value of a specific parameter - properties: - value: - type: string - description: Possible value - label: - type: string - description: User-friendly label associated with the value - WriteActionParameter: - type: object - properties: - type: - type: string - description: The type of the value (e.g., integer, string, boolean, etc.) - enum: - - UNKNOWN - - INTEGER - - STRING - - BOOLEAN - displayName: - type: string - description: Human readable display name for the key. - value: - type: string - description: The value of the field. - isRequired: - type: boolean - description: Is the parameter a required field. - description: - type: string - description: Description of the parameter. - possibleValues: - type: array - items: - $ref: "#/components/schemas/PossibleValue" - description: Possible values that the parameter can take. - ToolInfo: - type: object - properties: - metadata: - $ref: "#/components/schemas/ToolMetadata" - parameters: - type: object - description: Parameters supported by the tool. - additionalProperties: - $ref: "#/components/schemas/WriteActionParameter" - ChatMessageFragment: - description: Represents a part of a ChatMessage that originates from a single action/tool. It is designed to support rich data formats beyond simple text, allowing for a more dynamic and interactive chat experience. Each fragment can include various types of content, such as text, search queries, action information, and more. Also, each ChatMessageFragment should only have one of structuredResults, querySuggestion, writeAction, followupAction, agentRecommendation, followupRoutingSuggestion or file. - allOf: - - $ref: "#/components/schemas/Result" - - type: object - properties: - text: - type: string - querySuggestion: - description: The search queries issued while responding. - $ref: "#/components/schemas/QuerySuggestion" - file: - description: Files referenced in the message fragment. This is used to construct rich-text messages with file references. - $ref: "#/components/schemas/ChatFile" - action: - description: Basic information about an action. This can be used to construct rich-text messages with action references. - $ref: "#/components/schemas/ToolInfo" - citation: - description: Inline citation. - $ref: "#/components/schemas/ChatMessageCitation" - ChatMessage: - description: A message that is rendered as one coherent unit with one given sender. - properties: - agentConfig: - $ref: "#/components/schemas/AgentConfig" - description: Describes the agent config that generated this message. Populated on responses and not required on requests. - author: - default: USER - enum: - - USER - - GLEAN_AI - citations: - type: array - items: - $ref: "#/components/schemas/ChatMessageCitation" - description: A list of Citations that were used to generate the response. - uploadedFileIds: - type: array - items: - type: string - description: IDs of files uploaded in the message that are referenced to generate the answer. - fragments: - type: array - description: A list of rich data used to represent the response or formulate a request. These are linearly stitched together to support richer data formats beyond simple text. - items: - $ref: "#/components/schemas/ChatMessageFragment" - ts: - type: string - description: Response timestamp of the message. - messageId: - type: string - description: A unique server-side generated ID used to identify a message, automatically populated for any USER authored messages. - messageTrackingToken: - type: string - description: Opaque tracking token generated server-side. - messageType: - type: string - default: CONTENT - description: 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. - enum: - - UPDATE - - CONTENT - - CONTEXT - - DEBUG - - DEBUG_EXTERNAL - - ERROR - - HEADING - - WARNING - - SERVER_TOOL - x-speakeasy-enum-descriptions: - UPDATE: An intermediate state message for progress updates. - CONTENT: A user query or response message. - CONTEXT: A message providing context in addition to the user query. - DEBUG: A debug message. Strictly used internally. - DEBUG_EXTERNAL: A debug message to be used while debugging Action creation. - ERROR: A message that describes an error while processing the request. - HEADING: A heading message used to distinguish different sections of the holistic response. - WARNING: A warning message to be shown to the user. - SERVER_TOOL: A message used to for server-side tool auth/use, for request and response. - hasMoreFragments: - deprecated: true - type: boolean - description: Signals there are additional response fragments incoming. - ChatRequestBase: - required: - - messages - description: The minimal set of fields that form a chat request. - properties: - messages: - type: array - description: A list of chat messages, from most recent to least recent. At least one message must specify a USER author. - items: - $ref: "#/components/schemas/ChatMessage" - sessionInfo: - description: Optional object for tracking the session used by the client and for debugging purposes. - $ref: "#/components/schemas/SessionInfo" - ChatRestrictionFilters: - allOf: - - $ref: "#/components/schemas/RestrictionFilters" - - type: object - properties: - documentSpecs: - type: array - items: - $ref: "#/components/schemas/DocumentSpec" - datasourceInstances: - type: array - items: - type: string - ChatRequest: - allOf: - - $ref: "#/components/schemas/ChatRequestBase" - - type: object - properties: - saveChat: - type: boolean - description: Save the current interaction as a Chat for the user to access and potentially continue later. - chatId: - type: string - description: The id of the Chat that context should be retrieved from and messages added to. An empty id starts a new Chat, and the Chat is saved if saveChat is true. - agentConfig: - $ref: "#/components/schemas/AgentConfig" - description: Describes the agent that will execute the request. - inclusions: - $ref: "#/components/schemas/ChatRestrictionFilters" - description: A list of filters which only allows chat to access certain content. - exclusions: - $ref: "#/components/schemas/ChatRestrictionFilters" - description: A list of filters which disallows chat from accessing certain content. If content is in both inclusions and exclusions, it'll be excluded. - timeoutMillis: - type: integer - description: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. - example: 30000 - applicationId: - type: string - description: The ID of the application this request originates from, used to determine the configuration of underlying chat processes. This should correspond to the ID set during admin setup. If not specified, the default chat experience will be used. - agentId: - type: string - description: The ID of the Agent that should process this chat request. Only Agents with trigger set to 'User chat message' are invokable through this API. If not specified, the default chat experience will be used. - stream: - type: boolean - description: If set, response lines will be streamed one-by-one as they become available. Each will be a ChatResponse, formatted as JSON, and separated by a new line. If false, the entire response will be returned at once. Note that if this is set and the model being used does not support streaming, the model's response will not be streamed, but other messages from the endpoint still will be. - ChatResponse: - description: A single response from the /chat backend. - properties: - messages: - type: array - items: - $ref: "#/components/schemas/ChatMessage" - chatId: - type: string - description: The id of the associated Chat the messages belong to, if one exists. - followUpPrompts: - type: array - items: - type: string - description: Follow-up prompts for the user to potentially use - backendTimeMillis: - type: integer - format: int64 - description: Time in milliseconds the backend took to respond to the request. - example: 1100 - chatSessionTrackingToken: - type: string - description: A token that is used to track the session. - DeleteChatsRequest: - required: - - ids - properties: - ids: - type: array - items: - type: string - description: A non-empty list of ids of the Chats to be deleted. - GetChatRequest: - required: - - id - properties: - id: - type: string - description: The id of the Chat to be retrieved. - Chat: - description: A historical representation of a series of chat messages a user had with Glean Assistant. - allOf: - - $ref: "#/components/schemas/ChatMetadata" - - $ref: "#/components/schemas/PermissionedObject" - properties: - messages: - type: array - items: - $ref: "#/components/schemas/ChatMessage" - description: The chat messages within a Chat. - roles: - type: array - items: - $ref: "#/components/schemas/UserRoleSpecification" - description: A list of roles for this Chat. - ChatResult: - properties: - chat: - $ref: "#/components/schemas/Chat" - trackingToken: - type: string - description: An opaque token that represents this particular Chat. To be used for `/feedback` reporting. - GetChatResponse: - properties: - chatResult: - $ref: "#/components/schemas/ChatResult" - ChatMetadataResult: - properties: - chat: - $ref: "#/components/schemas/ChatMetadata" - trackingToken: - type: string - description: An opaque token that represents this particular Chat. To be used for `/feedback` reporting. - ListChatsResponse: - properties: - chatResults: - type: array - items: - $ref: "#/components/schemas/ChatMetadataResult" - x-includeEmpty: true - GetChatApplicationRequest: - required: - - id - properties: - id: - type: string - description: The id of the Chat application to be retrieved. - ChatApplicationDetails: {} - GetChatApplicationResponse: - properties: - application: - $ref: "#/components/schemas/ChatApplicationDetails" - UploadChatFilesRequest: - required: - - files - properties: - files: - type: array - items: - type: string - format: binary - description: Raw files to be uploaded for chat in binary format. - UploadChatFilesResponse: - properties: - files: - type: array - items: - $ref: "#/components/schemas/ChatFile" - description: Files uploaded for chat. - GetChatFilesRequest: - required: - - fileIds - properties: - fileIds: - type: array - items: - type: string - description: IDs of files to fetch. - GetChatFilesResponse: - properties: - files: - description: A map of file IDs to ChatFile structs. - type: object - additionalProperties: - $ref: "#/components/schemas/ChatFile" - DeleteChatFilesRequest: - required: - - fileIds - properties: - fileIds: - type: array - items: - type: string - description: IDs of files to delete. - Agent: - title: Agent - type: object - required: - - agent_id - - name - - capabilities - properties: - agent_id: - type: string - title: Agent Id - description: The ID of the agent. - example: mho4lwzylcozgoc2 - name: - type: string - title: Agent Name - description: The name of the agent - example: HR Policy Agent - description: - type: string - title: Description - description: The description of the agent. - example: This agent answers questions about the current company HR policies. - metadata: - type: object - title: Metadata - description: The agent metadata. Currently not implemented. - capabilities: - type: object - title: Agent Capabilities - description: |- - Describes features that the agent supports. example: { - "ap.io.messages": true, - "ap.io.streaming": true - } - properties: - ap.io.messages: - type: boolean - title: Messages - description: Whether the agent supports messages as an input. If true, you'll pass `messages` as an input when running the agent. - ap.io.streaming: - type: boolean - title: Streaming - 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 - AgentSchemas: - properties: - agent_id: - type: string - title: Agent Id - description: The ID of the agent. - example: mho4lwzylcozgoc2 - input_schema: - type: object - title: Input Schema - description: The schema for the agent input. In JSON Schema format. - output_schema: - type: object - title: Output Schema - description: The schema for the agent output. In JSON Schema format. - type: object - required: - - agent_id - - input_schema - - output_schema - title: AgentSchemas - description: Defines the structure and properties of an agent. - SearchAgentsRequest: - type: object - properties: - name: - type: string - description: Filters on the name of the agent. The keyword search is case-insensitive. If search string is ommited or empty, acts as no filter. - example: HR Policy Agent - SearchAgentsResponse: - type: object - title: Response Search Agents - properties: - agents: - type: array - items: - $ref: "#/components/schemas/Agent" - ContentType: - type: string - enum: - - text - Message: - type: object - properties: - role: - type: string - title: Role - description: The role of the message. - example: USER - content: - title: Content - description: The content of the message. - type: array - items: - type: object - properties: - text: - type: string - type: - $ref: "#/components/schemas/ContentType" - required: - - text - - type - title: MessageTextBlock - AgentRunCreate: - description: Payload for creating a run. - type: object - required: - - agent_id - properties: - agent_id: - type: string - title: Agent Id - description: The ID of the agent to run. - input: - type: object - title: Input - description: The input to the agent. - additionalProperties: true - messages: - type: array - items: - $ref: "#/components/schemas/Message" - title: Messages - description: The messages to pass an input to the agent. - metadata: - type: object - title: Metadata - description: The metadata to pass to the agent. - additionalProperties: true - AgentExecutionStatus: - description: The status of the run. One of 'error', 'success'. - type: string - enum: - - error - - success - title: AgentExecutionStatus - AgentRun: - allOf: - - $ref: "#/components/schemas/AgentRunCreate" - - type: object - properties: - status: - $ref: "#/components/schemas/AgentExecutionStatus" - AgentRunWaitResponse: - type: object - properties: - run: - $ref: "#/components/schemas/AgentRun" - title: Run - description: The run information. - messages: - type: array - items: - $ref: "#/components/schemas/Message" - title: Messages - description: The messages returned by the run. - CollectionItemDescriptor: - allOf: - - $ref: "#/components/schemas/CollectionItemMutableProperties" - properties: - url: - type: string - description: The URL of the item being added. - documentId: - type: string - description: The Glean Document ID of the item being added if it's an indexed document. - newNextItemId: - type: string - description: The (optional) ItemId of the next CollectionItem in sequence. If omitted, will be added to the end of the Collection - itemType: - type: string - enum: - - DOCUMENT - - TEXT - - URL - AddCollectionItemsRequest: - required: - - collectionId - properties: - collectionId: - type: number - description: The ID of the Collection to add items to. - addedCollectionItemDescriptors: - type: array - items: - $ref: "#/components/schemas/CollectionItemDescriptor" - description: The CollectionItemDescriptors of the items being added. - AddCollectionItemsError: - properties: - errorType: - type: string - enum: - - EXISTING_ITEM - AddCollectionItemsResponse: - properties: - collection: - $ref: "#/components/schemas/Collection" - description: The modified Collection. Only CollectionItemMutableProperties are set for each item. - error: - $ref: "#/components/schemas/AddCollectionItemsError" - CreateCollectionRequest: - allOf: - - $ref: "#/components/schemas/CollectionMutableProperties" - - type: object - properties: - newNextItemId: - type: string - description: The (optional) ItemId of the next CollectionItem in sequence. If omitted, will be added to the end of the Collection. Only used if parentId is specified. - CollectionError: - required: - - errorCode - properties: - errorCode: - type: string - enum: - - NAME_EXISTS - - NOT_FOUND - - COLLECTION_PINNED - - CONCURRENT_HIERARCHY_EDIT - - HEIGHT_VIOLATION - - WIDTH_VIOLATION - - NO_PERMISSIONS - CreateCollectionResponse: - allOf: - - type: object - anyOf: - - required: - - collection - - required: - - error - properties: - collection: - $ref: "#/components/schemas/Collection" - error: - $ref: "#/components/schemas/CollectionError" - DeleteCollectionRequest: - required: - - ids - properties: - ids: - type: array - items: - type: integer - description: The IDs of the Collections to delete. - allowedDatasource: - type: string - description: The datasource allowed in the Collection to be deleted. - DeleteCollectionItemRequest: - required: - - collectionId - - itemId - properties: - collectionId: - type: number - description: The ID of the Collection to remove an item in. - itemId: - type: string - description: The item ID of the CollectionItem to remove from this Collection. - documentId: - type: string - description: The (optional) Glean Document ID of the CollectionItem to remove from this Collection if this is an indexed document. - DeleteCollectionItemResponse: - properties: - collection: - $ref: "#/components/schemas/Collection" - description: The modified Collection. Only CollectionItemMutableProperties are set for each item. - EditCollectionRequest: - allOf: - - $ref: "#/components/schemas/CollectionMutableProperties" - - type: object - required: - - id - properties: - id: - type: integer - description: The ID of the Collection to modify. - EditCollectionResponse: - allOf: - - $ref: "#/components/schemas/Collection" - - $ref: "#/components/schemas/CollectionError" - - type: object - properties: - collection: - $ref: "#/components/schemas/Collection" - error: - $ref: "#/components/schemas/CollectionError" - EditCollectionItemRequest: - required: - - collectionId - - itemId - allOf: - - $ref: "#/components/schemas/CollectionItemMutableProperties" - - type: object - properties: - collectionId: - type: integer - description: The ID of the Collection to edit CollectionItems in. - itemId: - type: string - description: The ID of the CollectionItem to edit. - EditCollectionItemResponse: - properties: - collection: - $ref: "#/components/schemas/Collection" - description: The modified Collection. Only CollectionItemMutableProperties are set for each item. - GetCollectionRequest: - required: - - id - properties: - id: - type: integer - description: The ID of the Collection to be retrieved. - withItems: - type: boolean - description: Whether or not to include the Collection Items in this Collection. Only request if absolutely required, as this is expensive. - withHierarchy: - type: boolean - description: Whether or not to include the top level Collection in this Collection's hierarchy. - allowedDatasource: - type: string - description: The datasource allowed in the Collection returned. - GetCollectionResponse: - properties: - collection: - $ref: "#/components/schemas/Collection" - rootCollection: - $ref: "#/components/schemas/Collection" - trackingToken: - type: string - description: An opaque token that represents this particular Collection. To be used for `/feedback` reporting. - error: - $ref: "#/components/schemas/CollectionError" - ListCollectionsRequest: - properties: - includeAudience: - type: boolean - description: Whether to include the audience filters with the listed Collections. - includeRoles: - type: boolean - description: Whether to include the editor roles with the listed Collections. - allowedDatasource: - type: string - description: |- - The datasource type this Collection can hold. - ANSWERS - for Collections representing answer boards - ListCollectionsResponse: - required: - - collections - properties: - collections: - type: array - items: - $ref: "#/components/schemas/Collection" - description: List of all Collections, no Collection items are fetched. - GetDocPermissionsRequest: - type: object - properties: - documentId: - type: string - description: The Glean Document ID to retrieve permissions for. - GetDocPermissionsResponse: - type: object - properties: - allowedUserEmails: - type: array - items: - type: string - description: A list of emails of users who have access to the document. If the document is visible to all Glean users, a list with only a single value of 'VISIBLE_TO_ALL'. - GetDocumentsRequest: - required: - - documentSpecs - properties: - documentSpecs: - type: array - items: - $ref: "#/components/schemas/DocumentSpec" - description: The specification for the documents to be retrieved. - includeFields: - description: List of Document fields to return (that aren't returned by default) - type: array - items: - type: string - enum: - - LAST_VIEWED_AT - - VISITORS_COUNT - - RECENT_SHARES - - DOCUMENT_CONTENT - DocumentOrError: - oneOf: - - $ref: "#/components/schemas/Document" - - type: object - required: - - error - properties: - error: - type: string - description: The text for error, reason. - GetDocumentsResponse: - properties: - documents: - type: object - additionalProperties: - $ref: "#/components/schemas/DocumentOrError" - description: The document details or the error if document is not found. - GetDocumentsByFacetsRequest: - required: - - filterSets - properties: - datasourcesFilter: - type: array - items: - type: string - description: Filter results to one or more datasources (e.g. gmail, slack). All results are returned if missing. - filterSets: - type: array - items: - $ref: "#/components/schemas/FacetFilterSet" - description: A list of facet filter sets that will be OR'ed together. An AND is assumed between different filters in each set. - cursor: - type: string - description: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. - GetDocumentsByFacetsResponse: - properties: - documents: - type: array - items: - $ref: "#/components/schemas/Document" - description: The document details, ordered by score. - hasMoreResults: - type: boolean - description: Whether more results are available. Use cursor to retrieve them. - cursor: - type: string - description: Cursor that indicates the start of the next page of results. To be passed in "more" requests for this query. - InsightsOverviewRequest: - properties: - departments: - type: array - items: - type: string - description: Departments for which Insights are requested. - dayRange: - $ref: "#/components/schemas/Period" - description: Time period for which Insights are requested. - InsightsAssistantRequest: - properties: - departments: - type: array - items: - type: string - description: Departments for which Insights are requested. - dayRange: - $ref: "#/components/schemas/Period" - description: Time period for which Insights are requested. - AgentsInsightsV2Request: - properties: - agentIds: - type: array - items: - type: string - description: IDs of the Agents for which Insights should be returned. An empty array signifies all. - departments: - type: array - items: - type: string - description: Departments for which Insights are requested. - dayRange: - $ref: "#/components/schemas/Period" - description: Time period for which Insights are requested. - InsightsAiAppRequestOptions: - type: object - properties: - aiAppIds: - type: array - items: - type: string - description: IDs of the AI Apps for which Insights should be returned. An empty array signifies all. - InsightsAgentsRequestOptions: - type: object - properties: - agentIds: - type: array - items: - type: string - description: IDs of the Agents for which Insights should be returned. An empty array signifies all. - InsightsRequest: - properties: - overviewRequest: - $ref: "#/components/schemas/InsightsOverviewRequest" - x-visibility: Public - description: If specified, will return data for the Overview section of the Insights Dashboard. - assistantRequest: - $ref: "#/components/schemas/InsightsAssistantRequest" - x-visibility: Public - description: If specified, will return data for the Assistant section of the Insights Dashboard. - agentsRequest: - $ref: "#/components/schemas/AgentsInsightsV2Request" - x-visibility: Public - description: If specified, will return data for the Agents section of the Insights Dashboard. - disablePerUserInsights: - type: boolean - description: If true, suppresses the generation of per-user Insights in the response. Default is false. - categories: - deprecated: true - type: array - items: - type: string - enum: - - AGENTS - - AGENT_USERS - - TOP_AGENTS - - AGENTS_USAGE_BY_DEPARTMENT - - AI - - AI_APPS - - ANNOUNCEMENTS - - ANSWERS - - COLLECTIONS - - CONTENT - - GLEAN_ASSIST - - QUERIES - - SHORTCUTS - - USERS - description: Categories of data requested. Request can include single or multiple types. - departments: - deprecated: true - type: array - items: - type: string - description: Departments that the data is requested for. If this is empty, corresponds to whole company. - dayRange: - deprecated: true - $ref: "#/components/schemas/Period" - aiAppRequestOptions: - deprecated: true - $ref: "#/components/schemas/InsightsAiAppRequestOptions" - agentsRequestOptions: - deprecated: true - $ref: "#/components/schemas/InsightsAgentsRequestOptions" - assistantActivityTypes: - deprecated: true - type: array - items: - type: string - enum: - - GLEAN_CHAT - - AI_SUMMARY - - AI_ANSWER - - GLEANBOT_RESPONSE - description: Types of activity that should count in the definition of an Assistant Active User. Affects only insights for AI category. - LabeledCountInfo: - required: - - label - properties: - label: - type: string - description: Label for the included count information. - countInfo: - type: array - items: - $ref: "#/components/schemas/CountInfo" - description: List of data points for counts for a given date period. - UserActivityInsight: - required: - - user - - activity - properties: - user: - $ref: "#/components/schemas/Person" - activity: - type: string - enum: - - ALL - - SEARCH - description: Activity e.g. search, home page visit or all. - lastActivityTimestamp: - type: integer - description: Unix timestamp of the last activity (in seconds since epoch UTC). - activityCount: - $ref: "#/components/schemas/CountInfo" - activeDayCount: - $ref: "#/components/schemas/CountInfo" - UserInsightsResponse: - properties: - lastLogTimestamp: - type: integer - description: Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - activityInsights: - type: array - items: - $ref: "#/components/schemas/UserActivityInsight" - description: Insights for all active users with respect to set of actions. - inactiveInsights: - type: array - items: - $ref: "#/components/schemas/UserActivityInsight" - description: Insights for all in inactive users with respect to set of actions and time period. Activity count will be set to 0. - totalTeammates: - type: integer - description: Total number of teammates that have logged in to the product, that are still valid teammates. - totalActiveUsers: - type: integer - description: Total number of active users in the requested period. - departments: - type: array - items: - type: string - description: list of departments applicable for users tab. - DocumentInsight: - required: - - document - properties: - document: - $ref: "#/components/schemas/Document" - viewCount: - $ref: "#/components/schemas/CountInfo" - visitorCount: - $ref: "#/components/schemas/CountInfo" - ContentInsightsResponse: - properties: - lastLogTimestamp: - type: integer - description: Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - documentInsights: - type: array - items: - $ref: "#/components/schemas/DocumentInsight" - description: Insights for documents. - departments: - type: array - items: - type: string - description: list of departments applicable for contents tab. - minDepartmentSizeThreshold: - type: integer - description: Min threshold in size of departments while populating results, otherwise 0. - minVisitorThreshold: - type: integer - description: Minimum number of visitors to a document required to be included in insights. - QueryInsight: - required: - - query - properties: - query: - type: string - description: The query string the information is about. - searchCount: - $ref: "#/components/schemas/CountInfo" - searchorCount: - $ref: "#/components/schemas/CountInfo" - searchWithClickCount: - $ref: "#/components/schemas/CountInfo" - clickCount: - $ref: "#/components/schemas/CountInfo" - similarQueries: - type: array - items: - $ref: "#/components/schemas/QueryInsight" - description: list of similar queries to current one. - QueryInsightsResponse: - properties: - lastLogTimestamp: - type: integer - description: Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - queryInsights: - type: array - items: - $ref: "#/components/schemas/QueryInsight" - description: Insights for queries. - lowPerformingQueryInsights: - type: array - items: - $ref: "#/components/schemas/QueryInsight" - description: Insights for low performing queries without good results. - departments: - type: array - items: - type: string - description: list of departments applicable for queries tab. - minVisitorThreshold: - type: integer - description: Min threshold in number of visitors while populating results, otherwise 0. - ShortcutInsight: - required: - - shortcut - properties: - shortcut: - $ref: "#/components/schemas/Shortcut" - visitCount: - $ref: "#/components/schemas/CountInfo" - visitorCount: - $ref: "#/components/schemas/CountInfo" - ShortcutInsightsResponse: - properties: - lastLogTimestamp: - type: integer - description: Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - shortcutInsights: - type: array - items: - $ref: "#/components/schemas/ShortcutInsight" - description: Insights for shortcuts. - departments: - type: array - items: - type: string - description: list of departments applicable for shortcuts tab. - minVisitorThreshold: - type: integer - description: Min threshold in number of visitors while populating results, otherwise 0. - AiInsightsResponse: - properties: - lastLogTimestamp: - type: integer - description: Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - assistantInsights: - type: array - items: - $ref: "#/components/schemas/UserActivityInsight" - totalActiveAssistantUsers: - type: integer - description: Total number of Active Assistant users (chat, summary, AIA) in requested period. - totalChatMessages: - type: integer - description: Total number of Chat messages sent in requested period. - totalAiSummarizations: - type: integer - description: Total number of AI Document Summarizations invoked in the requested period. - totalAiAnswers: - type: integer - description: Total number of AI Answers generated in the requested period. - totalUpvotes: - type: integer - description: Total number of Chat messages which received upvotes by the user. - totalDownvotes: - type: integer - description: Total number of Chat messages which received downvotes by the user. - totalGleanbotResponses: - type: integer - description: Total number of Gleanbot responses, both proactive and reactive. - totalGleanbotResponsesShared: - type: integer - description: Total number of Gleanbot responses shared publicly (upvoted). - totalGleanbotResponsesNotHelpful: - type: integer - description: Total number of Glean responses rejected as not helpful (downvoted). - departments: - type: array - items: - type: string - description: list of departments applicable for users tab. - AiAppActionCounts: - type: object - additionalProperties: - type: integer - description: Map from action to frequency. - properties: - totalSlackbotResponses: - type: integer - description: Total number of Slackbot responses, both proactive and reactive. - totalSlackbotResponsesShared: - type: integer - description: Total number of Slackbot responses shared publicly (upvoted). - totalSlackbotResponsesNotHelpful: - type: integer - description: Total number of Slackbot responses rejected as not helpful (downvoted). - totalChatMessages: - type: integer - description: Total number of Chat messages sent in requested period. - totalUpvotes: - type: integer - description: Total number of Chat messages which received upvotes by the user. - totalDownvotes: - type: integer - description: Total number of Chat messages which received downvotes by the user. - AiAppsInsightsResponse: - properties: - lastLogTimestamp: - type: integer - description: Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - aiAppInsights: - type: array - items: - $ref: "#/components/schemas/UserActivityInsight" - totalActiveUsers: - type: integer - description: Total number of active users on the Ai App in the requested period. - actionCounts: - $ref: "#/components/schemas/AiAppActionCounts" - departments: - type: array - items: - type: string - description: list of departments applicable for users tab. - GleanAssistInsightsResponse: - properties: - lastLogTimestamp: - type: integer - description: Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - activityInsights: - type: array - items: - $ref: "#/components/schemas/UserActivityInsight" - description: Insights for all active users with respect to set of actions. - totalActiveUsers: - type: integer - description: Total number of active users in the requested period. - datasourceInstances: - type: array - items: - type: string - description: List of datasource instances for which glean assist is enabled. - departments: - type: array - items: - type: string - description: List of departments applicable for users tab. - CurrentActiveUsers: - properties: - monthlyActiveUsers: - type: integer - description: Number of current Monthly Active Users, in the specified departments. - weeklyActiveUsers: - type: integer - description: Number of current Weekly Active Users, in the specified departments. - InsightsSearchSummary: - allOf: - - $ref: "#/components/schemas/CurrentActiveUsers" - - type: object - properties: - numSearches: - type: integer - description: Total number of searches by users over the specified time period. - numSearchUsers: - type: integer - description: Total number of distinct users who searched over the specified time period. - InsightsChatSummary: - allOf: - - $ref: "#/components/schemas/CurrentActiveUsers" - - type: object - properties: - numChats: - type: integer - description: Total number of chats by users over the specified time period. - numChatUsers: - type: integer - description: Total number of distinct users who used Chat over the specified time period. - InsightsDepartmentsSummary: - allOf: - - $ref: "#/components/schemas/CurrentActiveUsers" - - type: object - properties: - departments: - type: array - items: - type: string - description: Department name(s). - employeeCount: - type: integer - description: Number of current employees in the specified departments, according to the Org Chart. - totalSignups: - type: integer - description: Number of current signed up employees in the specified departments, according to the Org Chart. - searchSummary: - $ref: "#/components/schemas/InsightsSearchSummary" - chatSummary: - $ref: "#/components/schemas/InsightsChatSummary" - extensionSummary: - $ref: "#/components/schemas/CurrentActiveUsers" - ugcSummary: - $ref: "#/components/schemas/CurrentActiveUsers" - PerUserInsight: - properties: - person: - $ref: "#/components/schemas/Person" - numSearches: - type: integer - description: Total number of searches by this user over the specified time period. - numChats: - type: integer - description: Total number of chats by this user over the specified time period. - numActiveSessions: - type: integer - description: Total number of active sessions by this user in a Glean client over the specified time period. - numGleanbotUsefulResponses: - type: integer - description: Total number of Gleanbot responses marked useful by this user over the specified time period. - numDaysActive: - type: integer - description: Total number of days this user was an Active User over the specified time period. - InsightsOverviewResponse: - allOf: - - $ref: "#/components/schemas/InsightsDepartmentsSummary" - - type: object - properties: - lastUpdatedTs: - type: integer - description: Unix timestamp of the last update for the insights data in the response. - searchSessionSatisfaction: - type: number - format: float - description: Search session satisfaction rate, over the specified time period in the specified departments. - monthlyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - weeklyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - dailyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - searchDatasourceCounts: - type: object - additionalProperties: - type: integer - description: Counts of search result clicks, by datasource, over the specified time period in the specified departments. - chatDatasourceCounts: - type: object - additionalProperties: - type: integer - description: Counts of cited documents in chat, by datasource, over the specified time period in the specified departments. - perUserInsights: - type: array - items: - $ref: "#/components/schemas/PerUserInsight" - description: Per-user insights, over the specified time period in the specified departments. All current users in the organization who have signed into Glean at least once are included. - PerUserAssistantInsight: - properties: - person: - $ref: "#/components/schemas/Person" - numChatMessages: - type: integer - description: Total number of chat messages sent by this user over the specified time period. - numSummarizations: - type: integer - description: Total number of summarized items by this user over the specified time period. - numAiAnswers: - type: integer - description: Total number of AI Answers interacted with by this user over the specified time period. - numGleanbotInteractions: - type: integer - description: Total number of Gleanbot responses marked useful by this user over the specified time period. - numDaysActive: - type: integer - description: Total number of days this user was active on the Assistant over the specified time period. - AssistantInsightsResponse: - allOf: - - $ref: "#/components/schemas/CurrentActiveUsers" - - type: object - properties: - lastUpdatedTs: - type: integer - description: Unix timestamp of the last update for the insights data in the response. - monthlyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - weeklyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - dailyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - totalSignups: - type: integer - description: Number of current signed up employees in the specified departments, according to the Org Chart. - chatMessagesTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - summarizationsTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - aiAnswersTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - gleanbotInteractionsTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - perUserInsights: - type: array - items: - $ref: "#/components/schemas/PerUserAssistantInsight" - upvotesTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - downvotesTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - PerAgentInsight: - properties: - agentId: - type: string - description: Agent ID - agentName: - type: string - description: Agent name - icon: - $ref: "#/components/schemas/IconConfig" - description: Agent icon configuration - isDeleted: - type: boolean - description: Indicates whether the agent has been deleted - userCount: - type: integer - description: Total number of users for this agent over the specified time period. - runCount: - type: integer - description: Total number of runs for this agent over the specified time period. - upvoteCount: - type: integer - description: Total number of upvotes for this agent over the specified time period. - downvoteCount: - type: integer - description: Total number of downvotes for this agent over the specified time period. - AgentsUsageByDepartmentInsight: - properties: - department: - type: string - description: Name of the department - agentAdoptionRate: - type: number - format: float - description: Percentage of employees in the department who have used agents at least once over the specified time period. - userCount: - type: integer - description: Total number of users in this department who have used any agent over the specified time period. - runCount: - type: integer - description: Total number of runs in this department over the specified time period. - agentId: - type: string - description: ID of the agent to be shown in the agent column in this department over the specified time period. - agentName: - type: string - description: Name of the agent to be shown in the agent column in this department over the specified time period. - icon: - $ref: "#/components/schemas/IconConfig" - description: Agent icon configuration - isDeleted: - type: boolean - description: Indicates whether the agent has been deleted - AgentUsersInsight: - properties: - person: - $ref: "#/components/schemas/Person" - departmentName: - type: string - description: Department name - agentsUsedCount: - type: integer - description: Total number of agents used by this user over the specified time period. - averageRunsPerDayCount: - type: number - format: float - description: Average number of runs per day for this user over the specified time period. - agentsCreatedCount: - type: integer - description: Total number of agents created by this user over the specified time period. - runCount: - type: integer - description: Total number of agent runs for this user over the specified time period. - AgentsInsightsV2Response: - allOf: - - $ref: "#/components/schemas/CurrentActiveUsers" - - type: object - properties: - monthlyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - weeklyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - dailyActiveUserTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - sharedAgentsCount: - type: integer - description: Total number of shared agents. - topAgentsInsights: - type: array - items: - $ref: "#/components/schemas/PerAgentInsight" - agentsUsageByDepartmentInsights: - type: array - items: - $ref: "#/components/schemas/AgentsUsageByDepartmentInsight" - agentUsersInsights: - type: array - items: - $ref: "#/components/schemas/AgentUsersInsight" - dailyAgentRunsTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - upvotesTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - downvotesTimeseries: - $ref: "#/components/schemas/LabeledCountInfo" - InsightsResponse: - properties: - timeseries: - deprecated: true - type: array - items: - $ref: "#/components/schemas/LabeledCountInfo" - description: List of timeseries to make charts (if applicable). - users: - deprecated: true - $ref: "#/components/schemas/UserInsightsResponse" - content: - deprecated: true - $ref: "#/components/schemas/ContentInsightsResponse" - queries: - deprecated: true - $ref: "#/components/schemas/QueryInsightsResponse" - collections: - deprecated: true - $ref: "#/components/schemas/ContentInsightsResponse" - collectionsV2: - deprecated: true - $ref: "#/components/schemas/ContentInsightsResponse" - shortcuts: - deprecated: true - $ref: "#/components/schemas/ShortcutInsightsResponse" - announcements: - deprecated: true - $ref: "#/components/schemas/ContentInsightsResponse" - answers: - deprecated: true - $ref: "#/components/schemas/ContentInsightsResponse" - ai: - deprecated: true - $ref: "#/components/schemas/AiInsightsResponse" - aiApps: - deprecated: true - $ref: "#/components/schemas/AiAppsInsightsResponse" - gleanAssist: - deprecated: true - $ref: "#/components/schemas/GleanAssistInsightsResponse" - departments: - deprecated: true - type: array - items: - type: string - description: list of all departments. - overviewResponse: - $ref: "#/components/schemas/InsightsOverviewResponse" - assistantResponse: - $ref: "#/components/schemas/AssistantInsightsResponse" - agentsResponse: - $ref: "#/components/schemas/AgentsInsightsV2Response" - MessagesRequest: - required: - - id - - idType - - datasource - properties: - idType: - type: string - enum: - - CHANNEL_NAME - - THREAD_ID - - CONVERSATION_ID - description: Type of the id in the incoming request. - id: - type: string - description: ID corresponding to the requested idType. Note that channel and threads are represented by the underlying datasource's ID and conversations are represented by their document's ID. - workspaceId: - type: string - description: Id for the for the workspace in case of multiple workspaces. - direction: - type: string - enum: - - OLDER - - NEWER - description: The direction of the results asked with respect to the reference timestamp. Missing field defaults to OLDER. Only applicable when using a message_id. - timestampMillis: - type: integer - format: int64 - description: Timestamp in millis of the reference message. Only applicable when using a message_id. - includeRootMessage: - type: boolean - description: Whether to include root message in response. - datasource: - type: string - enum: - - SLACK - - SLACKENTGRID - - MICROSOFTTEAMS - - GCHAT - - FACEBOOKWORKPLACE - description: The type of the data source. - datasourceInstanceDisplayName: - type: string - description: The datasource instance display name from which the document was extracted. This is used for appinstance facet filter for datasources that support multiple instances. - InvalidOperatorValueError: - properties: - key: - description: The operator key that has an invalid value. - type: string - value: - description: The invalid operator value. - type: string - ErrorMessage: - properties: - source: - description: The datasource this message relates to. - type: string - errorMessage: - type: string - ErrorInfo: - properties: - badGmailToken: - type: boolean - description: Indicates the gmail results could not be fetched due to bad token. - badOutlookToken: - type: boolean - description: Indicates the outlook results could not be fetched due to bad token. - invalidOperators: - type: array - description: Indicates results could not be fetched due to invalid operators in the query. - items: - $ref: "#/components/schemas/InvalidOperatorValueError" - errorMessages: - type: array - items: - $ref: "#/components/schemas/ErrorMessage" - x-speakeasy-name-override: GleanDataError - ResultsResponse: - properties: - trackingToken: - type: string - description: A token that should be passed for additional requests related to this request (such as more results requests). - sessionInfo: - $ref: "#/components/schemas/SessionInfo" - results: - type: array - items: - $ref: "#/components/schemas/SearchResult" - structuredResults: - type: array - items: - $ref: "#/components/schemas/StructuredResult" - generatedQnaResult: - $ref: "#/components/schemas/GeneratedQna" - errorInfo: - $ref: "#/components/schemas/ErrorInfo" - requestID: - type: string - description: A platform-generated request ID to correlate backend logs. - backendTimeMillis: - type: integer - format: int64 - description: Time in milliseconds the backend took to respond to the request. - example: 1100 - BackendExperimentsContext: - properties: - experimentIds: - type: array - items: - type: integer - format: int64 - description: List of experiment ids for the corresponding request. - SearchWarning: - required: - - warningType - properties: - warningType: - type: string - enum: - - LONG_QUERY - - QUOTED_PUNCTUATION - - PUNCTUATION_ONLY - - COPYPASTED_QUOTES - - INVALID_OPERATOR - - MAYBE_INVALID_FACET_QUERY - - TOO_MANY_DATASOURCE_GROUPS - description: The type of the warning. - lastUsedTerm: - type: string - description: The last term we considered in the user's long query. - quotesIgnoredQuery: - type: string - description: The query after ignoring/removing quotes. - ignoredTerms: - type: array - items: - type: string - description: 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. - SearchResponseMetadata: - properties: - rewrittenQuery: - type: string - description: A cleaned up or updated version of the query to be displayed in the query box. Useful for mapping visual facets to search operators. - searchedQuery: - type: string - description: The actual query used to perform search and return results. - searchedQueryWithoutNegation: - type: string - description: The query used to perform search and return results, with negated terms and facets removed. - x-includeEmpty: true - searchedQueryRanges: - type: array - items: - $ref: "#/components/schemas/TextRange" - description: The bolded ranges within the searched query. - originalQuery: - type: string - description: The query text sent by the client in the request. - querySuggestion: - $ref: "#/components/schemas/QuerySuggestion" - description: An alternative query to the one provided that may give better results, e.g. a spelling suggestion. - additionalQuerySuggestions: - $ref: "#/components/schemas/QuerySuggestionList" - description: Other alternative queries that may provide better or more specific results than the original query. - negatedTerms: - type: array - items: - type: string - description: A list of terms that were negated when processing the query. - modifiedQueryWasUsed: - type: boolean - description: A different query was performed than the one requested. - originalQueryHadNoResults: - type: boolean - description: No results were found for the original query. The usage of this bit in conjunction with modifiedQueryWasUsed will dictate whether the full page replacement is 0-result or few-result based. - searchWarning: - $ref: "#/components/schemas/SearchWarning" - triggeredExpertDetection: - type: boolean - description: Whether the query triggered expert detection results in the People tab. - isNoQuotesSuggestion: - type: boolean - description: Whether the query was modified to remove quotes - FacetValue: - properties: - stringValue: - type: string - example: engineering - description: The value that should be set in the FacetFilter when applying this filter to a search request. - integerValue: - type: integer - example: 5 - displayLabel: - type: string - example: engineering - description: An optional user-friendly label to display in place of the facet value. - iconConfig: - $ref: "#/components/schemas/IconConfig" - FacetBucket: - properties: - count: - type: integer - description: Estimated number of results in this facet. - example: 1 - datasource: - type: string - example: jira - description: The datasource the value belongs to. This will be used by the all tab to show types across all datasources. - percentage: - type: integer - description: Estimated percentage of results in this facet. - example: 5 - value: - $ref: "#/components/schemas/FacetValue" - FacetResult: - properties: - sourceName: - type: string - description: The source of this facet (e.g. container_name, type, last_updated_at). - example: container_name - operatorName: - type: string - description: How to display this facet. Currently supportes 'SelectSingle' and 'SelectMultiple'. - example: SelectMultiple - buckets: - type: array - description: A list of unique buckets that exist within this result set. - items: - $ref: "#/components/schemas/FacetBucket" - hasMoreBuckets: - type: boolean - description: Returns true if more buckets exist than those returned. Additional buckets can be retrieve by requesting again with a higher facetBucketSize. - example: false - groupName: - type: string - description: For most facets this will be the empty string, meaning the facet is high-level and applies to all documents for the datasource. When non-empty, this is used to group facets together (i.e. group facets for each doctype for a certain datasource) - example: Service Cloud - ResultTab: - properties: - id: - type: string - description: The unique ID of the tab. Can be passed in a search request to get results for that tab. - count: - type: integer - description: The number of results in this tab for the current query. - datasource: - type: string - description: The datasource associated with the tab, if any. - datasourceInstance: - type: string - description: The datasource instance associated with the tab, if any. - ResultsDescription: - properties: - text: - type: string - description: Textual description of the results. Can be shown at the top of SERP, e.g. 'People who write about this topic' for experts in people tab. - iconConfig: - $ref: "#/components/schemas/IconConfig" - description: The config for the icon that's displayed with this description - SearchResponse: - allOf: - - $ref: "#/components/schemas/ResultsResponse" - - $ref: "#/components/schemas/BackendExperimentsContext" - - type: object - properties: - metadata: - $ref: "#/components/schemas/SearchResponseMetadata" - facetResults: - type: array - items: - $ref: "#/components/schemas/FacetResult" - resultTabs: - type: array - items: - $ref: "#/components/schemas/ResultTab" - description: All result tabs available for the current query. Populated if QUERY_METADATA is specified in the request. - resultTabIds: - type: array - items: - type: string - description: The unique IDs of the result tabs to which this response belongs. - resultsDescription: - $ref: "#/components/schemas/ResultsDescription" - rewrittenFacetFilters: - type: array - items: - $ref: "#/components/schemas/FacetFilter" - description: The actual applied facet filters based on the operators and facetFilters in the query. Useful for mapping typed operators to visual facets. - cursor: - type: string - description: Cursor that indicates the start of the next page of results. To be passed in "more" requests for this query. - hasMoreResults: - type: boolean - description: Whether more results are available. Use cursor to retrieve them. - example: - trackingToken: trackingToken - suggestedSpellCorrectedQuery: suggestedSpellCorrectedQuery - hasMoreResults: true - errorInfo: - errorMessages: - - source: gmail - errorMessage: invalid token - - source: slack - errorMessage: expired token - requestID: 5e345ae500ff0befa2b9d1a3ba0001737e7363696f312d323535323137000171756572792d656e64706f696e743a323032303031333074313830343032000100 - results: - - snippets: - - snippet: snippet - mimeType: mimeType - metadata: - container: container - createTime: "2000-01-23T04:56:07.000Z" - datasource: datasource - author: - name: name - documentId: documentId - updateTime: "2000-01-23T04:56:07.000Z" - mimeType: mimeType - objectType: objectType - title: title - url: https://www.example.com/ - - snippets: - - snippet: snippet - mimeType: mimeType - metadata: - container: container - createTime: "2000-01-23T04:56:07.000Z" - datasource: datasource - author: - name: name - documentId: documentId - updateTime: "2000-01-23T04:56:07.000Z" - mimeType: mimeType - objectType: objectType - title: title - url: https://www.example.com/ - facetResults: - - buckets: - - percentage: 5 - count: 1 - value: - stringValue: stringValue - integerValue: 5 - - percentage: 5 - count: 1 - value: - stringValue: stringValue - integerValue: 5 - sourceName: sourceName - operatorName: operatorName - objectType: objectType - - buckets: - - percentage: 5 - count: 1 - value: - stringValue: stringValue - integerValue: 5 - - percentage: 5 - count: 1 - value: - stringValue: stringValue - integerValue: 5 - sourceName: sourceName - operatorName: operatorName - objectType: objectType - rewrittenQuery: rewrittenQuery - rewrittenFacetFilters: - - fieldName: fieldName - values: - - fieldValues - - fieldValues - - fieldName: fieldName - values: - - fieldValues - - fieldValues - MessagesResponse: - required: - - hasMore - properties: - hasMore: - type: boolean - description: Whether there are more results for client to continue requesting. - searchResponse: - $ref: "#/components/schemas/SearchResponse" - rootMessage: - $ref: "#/components/schemas/SearchResult" - EditPinRequest: - allOf: - - $ref: "#/components/schemas/PinDocumentMutableProperties" - - type: object - properties: - id: - type: string - description: The opaque id of the pin to be edited. - GetPinRequest: - properties: - id: - type: string - description: The opaque id of the pin to be fetched. - GetPinResponse: - properties: - pin: - $ref: "#/components/schemas/PinDocument" - ListPinsResponse: - required: - - pins - properties: - pins: - type: array - items: - $ref: "#/components/schemas/PinDocument" - description: List of pinned documents. - PinRequest: - allOf: - - $ref: "#/components/schemas/PinDocumentMutableProperties" - - type: object - properties: - documentId: - type: string - description: The document to be pinned. - Unpin: - properties: - id: - type: string - description: The opaque id of the pin to be unpinned. - ResultsRequest: - properties: - timestamp: - type: string - description: The ISO 8601 timestamp associated with the client request. - format: date-time - trackingToken: - type: string - description: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. - sessionInfo: - $ref: "#/components/schemas/SessionInfo" - sourceDocument: - $ref: "#/components/schemas/Document" - description: The document from which the ResultsRequest is issued, if any. - pageSize: - type: integer - example: 100 - description: Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. - maxSnippetSize: - type: integer - description: Hint to the server about how many characters long a snippet may be. Server may return less or more. - example: 400 - SearchRequest: - required: - - query - allOf: - - $ref: "#/components/schemas/ResultsRequest" - - type: object - properties: - query: - type: string - description: The search terms. - example: vacation policy - cursor: - type: string - description: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. - resultTabIds: - type: array - items: - type: string - description: The unique IDs of the result tabs for which to fetch results. This will have precedence over datasource filters if both are specified and in conflict. - inputDetails: - $ref: "#/components/schemas/SearchRequestInputDetails" - requestOptions: - $ref: "#/components/schemas/SearchRequestOptions" - timeoutMillis: - type: integer - description: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. - example: 5000 - disableSpellcheck: - type: boolean - description: Whether or not to disable spellcheck. - example: - trackingToken: trackingToken - query: vacation policy - pageSize: 10 - requestOptions: - facetFilters: - - fieldName: type - values: - - value: article - relationType: EQUALS - - value: document - relationType: EQUALS - - fieldName: department - values: - - value: engineering - relationType: EQUALS - AutocompleteRequest: - type: object - properties: - trackingToken: - type: string - sessionInfo: - $ref: "#/components/schemas/SessionInfo" - query: - type: string - description: Partially typed query. - example: San Fra - datasourcesFilter: - type: array - items: - type: string - description: Filter results to only those relevant to one or more datasources (e.g. jira, gdrive). Results are unfiltered if missing. - datasource: - type: string - description: Filter to only return results relevant to the given datasource. - resultTypes: - type: array - description: Filter to only return results of the given type(s). All types may be returned if omitted. - items: - type: string - enum: - - ADDITIONAL_DOCUMENT - - APP - - BROWSER_HISTORY - - DATASOURCE - - DOCUMENT - - ENTITY - - GOLINK - - HISTORY - - CHAT_HISTORY - - NEW_CHAT - - OPERATOR - - OPERATOR_VALUE - - QUICKLINK - - SUGGESTION - resultSize: - type: integer - description: | - Maximum number of results to be returned. If no value is provided, the backend will cap at 200. - example: 10 - authTokens: - type: array - description: Auth tokens which may be used for federated results. - items: - $ref: "#/components/schemas/AuthToken" - example: - trackingToken: trackingToken - query: what is a que - datasource: GDRIVE - resultSize: 10 - OperatorScope: - properties: - datasource: - type: string - docType: - type: string - OperatorMetadata: - required: - - name - properties: - name: - type: string - isCustom: - type: boolean - description: Whether this operator is supported by default or something that was created within a workplace app (e.g. custom jira field). - operatorType: - type: string - enum: - - TEXT - - DOUBLE - - DATE - - USER - helpText: - type: string - scopes: - type: array - items: - $ref: "#/components/schemas/OperatorScope" - value: - type: string - description: Raw/canonical value of the operator. Only applies when result is an operator value. - displayValue: - type: string - description: Human readable value of the operator that can be shown to the user. Only applies when result is an operator value. - example: - name: Last Updated - operatorType: DATE - scopes: - - datasource: GDRIVE - docType: Document - - datasource: ZENDESK - Quicklink: - description: An action for a specific datasource that will show up in autocomplete and app card, e.g. "Create new issue" for jira. - properties: - name: - type: string - description: Full action name. Used in autocomplete. - shortName: - type: string - description: Shortened name. Used in app cards. - url: - type: string - description: The URL of the action. - iconConfig: - $ref: "#/components/schemas/IconConfig" - description: The config for the icon for this quicklink - id: - type: string - description: Unique identifier of this quicklink - scopes: - type: array - description: The scopes for which this quicklink is applicable - items: - type: string - enum: - - APP_CARD - - AUTOCOMPLETE_EXACT_MATCH - - AUTOCOMPLETE_FUZZY_MATCH - - AUTOCOMPLETE_ZERO_QUERY - - NEW_TAB_PAGE - AutocompleteResult: - required: - - result - - result_type - properties: - result: - type: string - keywords: - type: array - items: - type: string - description: A list of all possible keywords for given result. - resultType: - type: string - enum: - - ADDITIONAL_DOCUMENT - - APP - - BROWSER_HISTORY - - DATASOURCE - - DOCUMENT - - ENTITY - - GOLINK - - HISTORY - - CHAT_HISTORY - - NEW_CHAT - - OPERATOR - - OPERATOR_VALUE - - QUICKLINK - - SUGGESTION - score: - type: number - description: Higher indicates a more confident match. - operatorMetadata: - $ref: "#/components/schemas/OperatorMetadata" - quicklink: - $ref: "#/components/schemas/Quicklink" - document: - $ref: "#/components/schemas/Document" - url: - type: string - structuredResult: - $ref: "#/components/schemas/StructuredResult" - trackingToken: - type: string - description: A token to be passed in /feedback events associated with this autocomplete result. - ranges: - type: array - items: - $ref: "#/components/schemas/TextRange" - description: Subsections of the result string to which some special formatting should be applied (eg. bold) - example: - result: sample result - resultType: DOCUMENT - score: 4.56 - url: https://www.example.com/ - trackingToken: abcd - metadata: - - datasource: confluence - - objectType: page - AutocompleteResultGroup: - description: A subsection of the results list from which distinct sections should be created. - properties: - startIndex: - type: integer - description: The inclusive start index of the range. - endIndex: - type: integer - description: The exclusive end index of the range. - title: - type: string - description: The title of the result group to be displayed. Empty means no title. - AutocompleteResponse: - allOf: - - $ref: "#/components/schemas/BackendExperimentsContext" - - type: object - properties: - trackingToken: - type: string - description: An opaque token that represents this particular set of autocomplete results. To be used for /feedback reporting. - sessionInfo: - $ref: "#/components/schemas/SessionInfo" - results: - type: array - items: - $ref: "#/components/schemas/AutocompleteResult" - groups: - type: array - items: - $ref: "#/components/schemas/AutocompleteResultGroup" - description: Subsections of the results list from which distinct sections should be created. - errorInfo: - $ref: "#/components/schemas/ErrorInfo" - backendTimeMillis: - type: integer - format: int64 - description: Time in milliseconds the backend took to respond to the request. - example: 1100 - example: - trackingToken: trackingToken - ChatZeroStateSuggestionOptions: - properties: - applicationId: - type: string - description: The Chat Application ID this feed request should be scoped to. Empty means there is no Chat Application ID.. - FeedRequestOptions: - required: - - resultSize - properties: - resultSize: - type: integer - description: Number of results asked in response. If a result is a collection, counts as one. - timezoneOffset: - type: integer - description: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. - categoryToResultSize: - type: object - additionalProperties: - type: object - properties: - resultSize: - type: integer - description: Mapping from category to number of results asked for the category. - datasourceFilter: - type: array - items: - type: string - description: Datasources for which content should be included. Empty is for all. - chatZeroStateSuggestionOptions: - $ref: "#/components/schemas/ChatZeroStateSuggestionOptions" - FeedRequest: - required: - - refreshType - properties: - categories: - type: array - items: - type: string - enum: - - DOCUMENT_SUGGESTION - - DOCUMENT_SUGGESTION_SCENARIO - - TRENDING_DOCUMENT - - VERIFICATION_REMINDER - - EVENT - - ANNOUNCEMENT - - MENTION - - DATASOURCE_AFFINITY - - RECENT - - COMPANY_RESOURCE - - EXPERIMENTAL - - PEOPLE_CELEBRATIONS - - DISPLAYABLE_LIST - - SOCIAL_LINK - - EXTERNAL_TASKS - - WORKFLOW_COLLECTIONS - - ZERO_STATE_CHAT_SUGGESTION - - ZERO_STATE_CHAT_TOOL_SUGGESTION - - ZERO_STATE_WORKFLOW_CREATED_BY_ME - - ZERO_STATE_WORKFLOW_FAVORITES - - ZERO_STATE_WORKFLOW_POPULAR - - ZERO_STATE_WORKFLOW_RECENT - - ZERO_STATE_WORKFLOW_SUGGESTION - - PERSONALIZED_CHAT_SUGGESTION - - DAILY_DIGEST - description: Categories of content requested. An allowlist gives flexibility to request content separately or together. - requestOptions: - $ref: "#/components/schemas/FeedRequestOptions" - timeoutMillis: - type: integer - description: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. - example: 5000 - sessionInfo: - $ref: "#/components/schemas/SessionInfo" - DisplayableListFormat: - properties: - format: - type: string - enum: - - LIST - description: defines how to render this particular displayable list card - DisplayableListItemUIConfig: - type: object - description: UI configurations for each item of the list - properties: - showNewIndicator: - type: boolean - description: show a "New" pill next to the item - ConferenceData: - required: - - provider - - uri - properties: - provider: - type: string - enum: - - ZOOM - - HANGOUTS - uri: - type: string - description: A permalink for the conference. - source: - type: string - enum: - - NATIVE_CONFERENCE - - LOCATION - - DESCRIPTION - EventClassificationName: - description: The name for a generated classification of an event. - type: string - enum: - - External Event - EventStrategyName: - type: string - description: The name of method used to surface relevant data for a given calendar event. - enum: - - customerCard - - news - - call - - email - - meetingNotes - - linkedIn - - relevantDocuments - - chatFollowUps - - conversations - EventClassification: - description: A generated classification of a given event. - properties: - name: - $ref: "#/components/schemas/EventClassificationName" - strategies: - type: array - items: - $ref: "#/components/schemas/EventStrategyName" - StructuredLink: - description: The display configuration for a link. - properties: - name: - type: string - description: The display name for the link - url: - type: string - description: The URL for the link. - iconConfig: - $ref: "#/components/schemas/IconConfig" - GeneratedAttachmentContent: - description: Content that has been generated or extrapolated from the documents present in the document field. - properties: - displayHeader: - description: The header describing the generated content. - type: string - text: - description: The content that has been generated. - type: string - example: - displayHeader: Action Items - content: You said you'd send over the design document after the meeting. - GeneratedAttachment: - description: These are attachments that aren't natively present on the event, and have been smartly suggested. - properties: - strategyName: - $ref: "#/components/schemas/EventStrategyName" - documents: - type: array - items: - $ref: "#/components/schemas/Document" - person: - $ref: "#/components/schemas/Person" - customer: - $ref: "#/components/schemas/Customer" - externalLinks: - description: A list of links to external sources outside of Glean. - type: array - items: - $ref: "#/components/schemas/StructuredLink" - content: - type: array - items: - $ref: "#/components/schemas/GeneratedAttachmentContent" - CalendarEvent: - required: - - id - - url - allOf: - - $ref: "#/components/schemas/AnonymousEvent" - - type: object - properties: - id: - type: string - description: The calendar event id - url: - type: string - description: A permalink for this calendar event - attendees: - $ref: "#/components/schemas/CalendarAttendees" - location: - type: string - description: The location that this event is taking place at. - conferenceData: - $ref: "#/components/schemas/ConferenceData" - description: - type: string - description: The HTML description of the event. - datasource: - type: string - description: The app or other repository type from which the event was extracted - hasTranscript: - type: boolean - description: The event has a transcript associated with it enabling features like summarization - transcriptUrl: - type: string - description: A link to the transcript of the event - classifications: - type: array - items: - $ref: "#/components/schemas/EventClassification" - generatedAttachments: - type: array - items: - $ref: "#/components/schemas/GeneratedAttachment" - SectionType: - type: string - description: Type of the section. This defines how the section should be interpreted and rendered in the digest. - enum: - - CHANNEL - - MENTIONS - - TOPIC - x-speakeasy-enum-descriptions: - CHANNEL: A standard section for channel-based digests (e.g. from Slack, Teams). - MENTIONS: A dedicated section that surfaces user mentions (actionable, informative, or all). - TOPIC: A section driven by a generic topic, not tied to any specific channel or instance. - UpdateType: - type: string - description: Optional type classification for the update. - enum: - - ACTIONABLE - - INFORMATIVE - x-speakeasy-enum-descriptions: - ACTIONABLE: Updates that require user attention or action - INFORMATIVE: Updates that are purely informational - DigestUpdate: - type: object - properties: - urls: - type: array - description: List of URLs for similar updates that are grouped together and rendered as a single update. - items: - type: string - url: - type: string - description: URL link to the content or document. - title: - type: string - description: Title or headline of the update. - datasource: - type: string - description: Name or identifier of the data source (e.g., slack, confluence, etc.). - summary: - type: string - description: Brief summary or description of the update content. - type: - $ref: "#/components/schemas/UpdateType" - DigestSection: - type: object - required: - - id - - type - - updates - properties: - id: - type: string - description: Unique identifier for the digest section. - type: - $ref: "#/components/schemas/SectionType" - displayName: - type: string - description: Human-readable name for the digest section. - channelName: - type: string - description: Name of the channel (applicable for CHANNEL type sections). Used to display in the frontend. - channelType: - type: string - description: | - Channel visibility/type for CHANNEL sections. For Slack this is typically one of - PublicChannel, PrivateChannel. Omit if not applicable or unknown. - instanceId: - type: string - description: Instance identifier for the channel or workspace. Used for constructing channel URLs to display in the frontend. - url: - type: string - description: Optional URL for the digest section. Should be populated only if the section is a CHANNEL type section. - updates: - type: array - items: - $ref: "#/components/schemas/DigestUpdate" - description: List of updates within this digest section. - Digest: - type: object - properties: - podcastFileId: - type: string - description: Identifier for the podcast file generated from this digest content. - podcastDuration: - type: number - format: float - description: Duration of the podcast file in seconds. - digestDate: - type: string - description: The date this digest covers, in YYYY-MM-DD format. Represents the specific day for which the digest content and updates were compiled. This can be empty if the digest is not yet available. - example: "2025-09-03" - sections: - type: array - items: - $ref: "#/components/schemas/DigestSection" - description: Array of digest sections from which the podcast was created. - ChatSuggestion: - properties: - query: - type: string - description: The actionable chat query to run when the user selects this suggestion. - feature: - type: string - description: Targeted Glean Chat feature for the suggestion. - PromptTemplateMutableProperties: - required: - - template - properties: - name: - type: string - description: The user-given identifier for this prompt template. - template: - type: string - description: The actual template string. - applicationId: - type: string - description: The Application Id the prompt template should be created under. Empty for default assistant. - inclusions: - $ref: "#/components/schemas/ChatRestrictionFilters" - description: A list of filters which only allows the prompt template to access certain content. - addedRoles: - type: array - description: A list of added user roles for the Workflow. - items: - $ref: "#/components/schemas/UserRoleSpecification" - removedRoles: - type: array - description: A list of removed user roles for the Workflow. - items: - $ref: "#/components/schemas/UserRoleSpecification" - AttributionProperties: {} - PromptTemplate: - allOf: - - $ref: "#/components/schemas/PromptTemplateMutableProperties" - - $ref: "#/components/schemas/PermissionedObject" - - $ref: "#/components/schemas/AttributionProperties" - - type: object - properties: - id: - type: string - description: Opaque id for this prompt template - author: - $ref: "#/components/schemas/Person" - createTimestamp: - type: integer - description: Server Unix timestamp of the creation time. - lastUpdateTimestamp: - type: integer - description: Server Unix timestamp of the last update time. - lastUpdatedBy: - $ref: "#/components/schemas/Person" - roles: - type: array - description: A list of roles for this prompt template explicitly granted. - items: - $ref: "#/components/schemas/UserRoleSpecification" - UgcType: - enum: - - ANNOUNCEMENTS_TYPE - - ANSWERS_TYPE - - COLLECTIONS_TYPE - - SHORTCUTS_TYPE - - WORKFLOWS_TYPE - - PROMPT_TEMPLATES_TYPE - FavoriteInfo: - type: object - properties: - ugcType: - $ref: "#/components/schemas/UgcType" - id: - type: string - description: Opaque id of the UGC. - count: - type: integer - x-includeEmpty: true - description: Number of users this object has been favorited by. - favoritedByUser: - type: boolean - x-includeEmpty: true - description: If the requesting user has favorited this object. - PromptTemplateResult: - properties: - promptTemplate: - $ref: "#/components/schemas/PromptTemplate" - trackingToken: - type: string - description: An opaque token that represents this prompt template - favoriteInfo: - $ref: "#/components/schemas/FavoriteInfo" - runCount: - $ref: "#/components/schemas/CountInfo" - description: This tracks how many times this prompt template was run. If user runs a prompt template after modifying the original one, it still counts as a run for the original template. - WorkflowDraftableProperties: - properties: - name: - type: string - description: The name of the workflow. - WorkflowMutableProperties: - type: object - allOf: - - $ref: "#/components/schemas/WorkflowDraftableProperties" - - type: object - WorkflowMetadata: - allOf: - - type: object - properties: - author: - $ref: "#/components/schemas/Person" - createTimestamp: - type: integer - description: Server Unix timestamp of the creation time. - lastUpdateTimestamp: - type: integer - description: Server Unix timestamp of the last update time. - lastUpdatedBy: - $ref: "#/components/schemas/Person" - Workflow: - allOf: - - $ref: "#/components/schemas/PermissionedObject" - - $ref: "#/components/schemas/WorkflowMutableProperties" - - $ref: "#/components/schemas/WorkflowMetadata" - - $ref: "#/components/schemas/AttributionProperties" - - type: object - properties: - id: - type: string - description: The ID of the workflow. - WorkflowResult: - type: object - required: - - workflow - properties: - workflow: - $ref: "#/components/schemas/Workflow" - UserActivity: - properties: - actor: - $ref: "#/components/schemas/Person" - timestamp: - type: integer - description: Unix timestamp of the activity (in seconds since epoch UTC). - action: - type: string - enum: - - ADD - - ADD_REMINDER - - CLICK - - COMMENT - - DELETE - - DISMISS - - EDIT - - MENTION - - MOVE - - OTHER - - RESTORE - - UNKNOWN - - VERIFY - - VIEW - description: The action for the activity - aggregateVisitCount: - $ref: "#/components/schemas/CountInfo" - FeedEntry: - required: - - title - properties: - entryId: - type: string - description: optional ID associated with a single feed entry (displayable_list_id) - title: - type: string - description: Title for the result. Can be document title, event title and so on. - thumbnail: - $ref: "#/components/schemas/Thumbnail" - createdBy: - $ref: "#/components/schemas/Person" - uiConfig: - allOf: - - $ref: "#/components/schemas/DisplayableListFormat" - - type: object - properties: - additionalFlags: - $ref: "#/components/schemas/DisplayableListItemUIConfig" - justificationType: - type: string - enum: - - FREQUENTLY_ACCESSED - - RECENTLY_ACCESSED - - TRENDING_DOCUMENT - - VERIFICATION_REMINDER - - SUGGESTED_DOCUMENT - - EMPTY_STATE_SUGGESTION - - FRECENCY_SCORED - - SERVER_GENERATED - - USE_CASE - - UPDATE_SINCE_LAST_VIEW - - RECENTLY_STARTED - - EVENT - - USER_MENTION - - ANNOUNCEMENT - - EXTERNAL_ANNOUNCEMENT - - POPULARITY_BASED_TRENDING - - COMPANY_RESOURCE - - EVENT_DOCUMENT_FROM_CONTENT - - EVENT_DOCUMENT_FROM_SEARCH - - VISIT_AFFINITY_SCORED - - SUGGESTED_APP - - SUGGESTED_PERSON - - ACTIVITY_HIGHLIGHT - - SAVED_SEARCH - - SUGGESTED_CHANNEL - - PEOPLE_CELEBRATIONS - - SOCIAL_LINK - - ZERO_STATE_CHAT_SUGGESTION - - ZERO_STATE_CHAT_TOOL_SUGGESTION - - ZERO_STATE_PROMPT_TEMPLATE_SUGGESTION - - ZERO_STATE_STATIC_WORKFLOW_SUGGESTION - - ZERO_STATE_AGENT_SUGGESTION - - PERSONALIZED_CHAT_SUGGESTION - - DAILY_DIGEST - description: Type of the justification. - justification: - type: string - description: Server side generated justification string if server provides one. - trackingToken: - type: string - description: An opaque token that represents this particular feed entry in this particular response. To be used for /feedback reporting. - viewUrl: - type: string - description: View URL for the entry if based on links that are not documents in Glean. - document: - $ref: "#/components/schemas/Document" - event: - $ref: "#/components/schemas/CalendarEvent" - announcement: - $ref: "#/components/schemas/Announcement" - digest: - $ref: "#/components/schemas/Digest" - collection: - $ref: "#/components/schemas/Collection" - collectionItem: - $ref: "#/components/schemas/CollectionItem" - person: - $ref: "#/components/schemas/Person" - app: - $ref: "#/components/schemas/AppResult" - chatSuggestion: - $ref: "#/components/schemas/ChatSuggestion" - promptTemplate: - $ref: "#/components/schemas/PromptTemplateResult" - workflow: - $ref: "#/components/schemas/WorkflowResult" - activities: - type: array - items: - $ref: "#/components/schemas/UserActivity" - description: List of activity where each activity has user, action, timestamp. - documentVisitorCount: - $ref: "#/components/schemas/CountInfo" - FeedResult: - required: - - category - - primaryEntry - properties: - category: - type: string - enum: - - DOCUMENT_SUGGESTION - - DOCUMENT_SUGGESTION_SCENARIO - - TRENDING_DOCUMENT - - USE_CASE - - VERIFICATION_REMINDER - - EVENT - - ANNOUNCEMENT - - MENTION - - DATASOURCE_AFFINITY - - RECENT - - COMPANY_RESOURCE - - EXPERIMENTAL - - PEOPLE_CELEBRATIONS - - SOCIAL_LINK - - EXTERNAL_TASKS - - DISPLAYABLE_LIST - - ZERO_STATE_CHAT_SUGGESTION - - ZERO_STATE_CHAT_TOOL_SUGGESTION - - ZERO_STATE_WORKFLOW_CREATED_BY_ME - - ZERO_STATE_WORKFLOW_FAVORITES - - ZERO_STATE_WORKFLOW_POPULAR - - ZERO_STATE_WORKFLOW_RECENT - - ZERO_STATE_WORKFLOW_SUGGESTION - - PERSONALIZED_CHAT_SUGGESTION - - DAILY_DIGEST - description: Category of the result, one of the requested categories in incoming request. - primaryEntry: - $ref: "#/components/schemas/FeedEntry" - secondaryEntries: - type: array - items: - $ref: "#/components/schemas/FeedEntry" - description: Secondary entries for the result e.g. suggested docs for the calendar, carousel. - rank: - type: integer - description: Rank of the result. Rank is suggested by server. Client side rank may differ. - FeedResponse: - required: - - serverTimestamp - allOf: - - $ref: "#/components/schemas/BackendExperimentsContext" - - type: object - properties: - trackingToken: - type: string - description: An opaque token that represents this particular feed response. - serverTimestamp: - type: integer - description: Server unix timestamp (in seconds since epoch UTC). - results: - type: array - items: - $ref: "#/components/schemas/FeedResult" - facetResults: - type: object - additionalProperties: - type: array - items: - $ref: "#/components/schemas/FacetResult" - description: Map from category to the list of facets that can be used to filter the entry's content. - mentionsTimeWindowInHours: - type: integer - description: The time window (in hours) used for generating user mentions. - RecommendationsRequestOptions: - properties: - datasourceFilter: - type: string - description: Filter results to a single datasource name (e.g. gmail, slack). All results are returned if missing. - datasourcesFilter: - type: array - items: - type: string - description: Filter results to only those relevant to one or more datasources (e.g. jira, gdrive). All results are returned if missing. - facetFilterSets: - type: array - items: - $ref: "#/components/schemas/FacetFilterSet" - description: A list of facet filter sets that will be OR'ed together. - context: - $ref: "#/components/schemas/Document" - description: Content for either a new or unindexed document, or additional content for an indexed document, which may be used to generate recommendations. - resultProminence: - description: The types of prominence wanted in results returned. Default is any type. - type: array - items: - $ref: "#/components/schemas/SearchResultProminenceEnum" - RecommendationsRequest: - allOf: - - $ref: "#/components/schemas/ResultsRequest" - - type: object - properties: - recommendationDocumentSpec: - $ref: "#/components/schemas/DocumentSpec" - description: Retrieve recommendations for this document. Glean Document ID is preferred over URL. - requestOptions: - $ref: "#/components/schemas/RecommendationsRequestOptions" - description: Options for adjusting the request for recommendations. - RecommendationsResponse: - allOf: - - $ref: "#/components/schemas/ResultsResponse" - SortOptions: - type: object - properties: - orderBy: - type: string - enum: - - ASC - - DESC - sortBy: - type: string - ListEntitiesRequest: - type: object - properties: - filter: - type: array - items: - $ref: "#/components/schemas/FacetFilter" - sort: - description: Use EntitiesSortOrder enum for SortOptions.sortBy - type: array - items: - $ref: "#/components/schemas/SortOptions" - entityType: - type: string - default: PEOPLE - enum: - - PEOPLE - - TEAMS - - CUSTOM_ENTITIES - datasource: - type: string - description: The datasource associated with the entity type, most commonly used with CUSTOM_ENTITIES - query: - type: string - description: A query string to search for entities that each entity in the response must conform to. An empty query does not filter any entities. - includeFields: - description: List of entity fields to return (that aren't returned by default) - type: array - items: - type: string - enum: - - PEOPLE - - TEAMS - - PEOPLE_DISTANCE - - PERMISSIONS - - FACETS - - INVITE_INFO - - LAST_EXTENSION_USE - - MANAGEMENT_DETAILS - - UNPROCESSED_TEAMS - pageSize: - type: integer - example: 100 - description: Hint to the server about how many results to send back. Server may return less. - cursor: - type: string - description: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. - source: - type: string - description: A string denoting the search surface from which the endpoint is called. - requestType: - type: string - default: STANDARD - description: The type of request being made. - enum: - - STANDARD - - FULL_DIRECTORY - x-speakeasy-enum-descriptions: - STANDARD: Used by default for all requests and satisfies all standard use cases for list requests. Limited to 10000 entities. - FULL_DIRECTORY: Used exclusively to return a comprehensive list of all people entities in the organization, typically for audit like purposes. The recommended approach is to sort by FIRST_NAME or LAST_NAME, and use pagination for large organizations. - EntitiesSortOrder: - type: string - description: Different ways of sorting entities - enum: - - ENTITY_NAME - - FIRST_NAME - - LAST_NAME - - ORG_SIZE_COUNT - - START_DATE - - TEAM_SIZE - - RELEVANCE - ListEntitiesResponse: - type: object - properties: - results: - type: array - items: - $ref: "#/components/schemas/Person" - teamResults: - type: array - items: - $ref: "#/components/schemas/Team" - customEntityResults: - type: array - items: - $ref: "#/components/schemas/CustomEntity" - facetResults: - type: array - items: - $ref: "#/components/schemas/FacetResult" - cursor: - type: string - description: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. - totalCount: - type: integer - description: The total number of entities available - hasMoreResults: - type: boolean - description: Whether or not more entities can be fetched. - sortOptions: - type: array - description: Sort options from EntitiesSortOrder supported for this response. Default is empty list. - items: - $ref: "#/components/schemas/EntitiesSortOrder" - customFacetNames: - type: array - description: list of Person attributes that are custom setup by deployment - items: - type: string - PeopleRequest: - type: object - properties: - timezoneOffset: - type: integer - description: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. - obfuscatedIds: - type: array - items: - type: string - description: The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. - emailIds: - type: array - items: - type: string - description: The email IDs to retrieve. The result is the deduplicated union of emailIds and obfuscatedIds. - includeFields: - description: List of PersonMetadata fields to return (that aren't returned by default) - type: array - items: - type: string - enum: - - BADGES - - BUSY_EVENTS - - DOCUMENT_ACTIVITY - - INVITE_INFO - - PEOPLE_DISTANCE - - PERMISSIONS - - PEOPLE_DETAILS - - MANAGEMENT_DETAILS - - PEOPLE_PROFILE_SETTINGS - - PEOPLE_WITHOUT_MANAGER - includeTypes: - description: The types of people entities to include in the response in addition to those returned by default. - type: array - items: - type: string - enum: - - PEOPLE_WITHOUT_MANAGER - - INVALID_ENTITIES - x-speakeasy-enum-descriptions: - PEOPLE_WITHOUT_MANAGER: Returns all people without a manager apart from the requested IDs. - INVALID_ENTITIES: Includes invalid entities in the response if any of the requested IDs are invalid. - source: - type: string - description: A string denoting the search surface from which the endpoint is called. - example: - obfuscatedIds: - - abc123 - - abc456 - PeopleResponse: - properties: - results: - type: array - items: - $ref: "#/components/schemas/Person" - description: A Person for each ID in the request, each with PersonMetadata populated. - relatedDocuments: - type: array - items: - $ref: "#/components/schemas/RelatedDocuments" - description: A list of documents related to this people response. This is only included if DOCUMENT_ACTIVITY is requested and only 1 person is included in the request. - errors: - type: array - items: - type: string - description: A list of IDs that could not be found. - CreateShortcutRequest: - required: - - data - properties: - data: - $ref: "#/components/schemas/ShortcutMutableProperties" - ShortcutError: - properties: - errorType: - type: string - enum: - - NO_PERMISSION - - INVALID_ID - - EXISTING_SHORTCUT - - INVALID_CHARS - CreateShortcutResponse: - properties: - shortcut: - $ref: "#/components/schemas/Shortcut" - error: - $ref: "#/components/schemas/ShortcutError" - DeleteShortcutRequest: - allOf: - - $ref: "#/components/schemas/UserGeneratedContentId" - - type: object - required: - - id - GetShortcutRequest: - oneOf: - - $ref: "#/components/schemas/UserGeneratedContentId" - - type: object - required: - - alias - properties: - alias: - type: string - description: The alias for the shortcut, including any arguments for variable shortcuts. - GetShortcutResponse: - properties: - shortcut: - $ref: "#/components/schemas/Shortcut" - description: Shortcut given the input alias with any provided arguments substituted into the destination URL. - error: - $ref: "#/components/schemas/ShortcutError" - ListShortcutsPaginatedRequest: - required: - - pageSize - properties: - includeFields: - description: Array of fields/data to be included in response that are not included by default - type: array - items: - type: string - enum: - - FACETS - - PEOPLE_DETAILS - pageSize: - type: integer - example: 10 - cursor: - type: string - description: A token specifying the position in the overall results to start at. Received from the endpoint and iterated back. Currently being used as page no (as we implement offset pagination) - filters: - type: array - items: - $ref: "#/components/schemas/FacetFilter" - description: A list of filters for the query. An AND is assumed between different filters. We support filters on Go Link name, author, department and type. - sort: - $ref: "#/components/schemas/SortOptions" - description: Specifies fieldname to sort on and order (ASC|DESC) to sort in - query: - type: string - description: Search query that should be a substring in atleast one of the fields (alias , inputAlias, destinationUrl, description). Empty query does not filter shortcuts. - ShortcutsPaginationMetadata: - properties: - cursor: - type: string - description: Cursor indicates the start of the next page of results - hasNextPage: - type: boolean - totalItemCount: - type: integer - ListShortcutsPaginatedResponse: - required: - - shortcuts - - meta - properties: - shortcuts: - type: array - items: - $ref: "#/components/schemas/Shortcut" - description: List of all shortcuts accessible to the user - facetResults: - type: array - items: - $ref: "#/components/schemas/FacetResult" - meta: - $ref: "#/components/schemas/ShortcutsPaginationMetadata" - description: Contains metadata like total item count and whether next page exists - UpdateShortcutRequest: - allOf: - - $ref: "#/components/schemas/UserGeneratedContentId" - - $ref: "#/components/schemas/ShortcutMutableProperties" - - type: object - required: - - id - UpdateShortcutResponse: - properties: - shortcut: - $ref: "#/components/schemas/Shortcut" - error: - $ref: "#/components/schemas/ShortcutError" - SummarizeRequest: - description: Summary of the document - required: - - documentSpecs - properties: - timestamp: - type: string - description: The ISO 8601 timestamp associated with the client request. - format: date-time - query: - type: string - description: Optional query that the summary should be about - preferredSummaryLength: - type: integer - description: Optional length of summary output. If not given, defaults to 500 chars. - documentSpecs: - type: array - items: - $ref: "#/components/schemas/DocumentSpec" - description: Specifications of documents to summarize - trackingToken: - type: string - description: An opaque token that represents this particular result. To be used for /feedback reporting. - Summary: - properties: - text: - type: string - followUpPrompts: - type: array - items: - type: string - description: Follow-up prompts based on the summarized doc - SummarizeResponse: - properties: - error: - type: object - properties: - message: - type: string - summary: - $ref: "#/components/schemas/Summary" - trackingToken: - type: string - description: An opaque token that represents this summary in this particular query. To be used for /feedback reporting. - ReminderRequest: - required: - - documentId - properties: - documentId: - type: string - description: The document which the verification is for new reminders and/or update. - assignee: - type: string - description: The obfuscated id of the person this verification is assigned to. - remindInDays: - type: integer - description: Reminder for the next verifications in terms of days. For deletion, this will be omitted. - reason: - type: string - description: An optional free-text reason for the reminder. This is particularly useful when a reminder is used to ask for verification from another user (for example, "Duplicate", "Incomplete", "Incorrect"). - VerificationFeed: - properties: - documents: - type: array - items: - $ref: "#/components/schemas/Verification" - description: List of document infos that include verification related information for them. - VerifyRequest: - required: - - documentId - properties: - documentId: - type: string - description: The document which is verified. - action: - type: string - enum: - - VERIFY - - DEPRECATE - - UNVERIFY - description: The verification action requested. - ToolParameter: - type: object - properties: - type: - type: string - description: Parameter type (string, number, boolean, object, array) - enum: - - string - - number - - boolean - - object - - array - name: - type: string - description: The name of the parameter - description: - type: string - description: The description of the parameter - isRequired: - type: boolean - description: Whether the parameter is required - possibleValues: - type: array - description: The possible values for the parameter. Can contain only primitive values or arrays of primitive values. - items: - type: string - items: - type: object - description: When type is 'array', this describes the structure of the item in the array. - $ref: "#/components/schemas/ToolParameter" - properties: - type: object - description: When type is 'object', this describes the structure of the object. - additionalProperties: - $ref: "#/components/schemas/ToolParameter" - Tool: - type: object - properties: - type: - type: string - description: Type of tool (READ, WRITE) - enum: - - READ - - WRITE - name: - type: string - description: Unique identifier for the tool - displayName: - type: string - description: Human-readable name - description: - type: string - description: LLM friendly description of the tool - parameters: - type: object - description: The parameters for the tool. Each key is the name of the parameter and the value is the parameter object. - additionalProperties: - $ref: "#/components/schemas/ToolParameter" - ToolsListResponse: - type: object - properties: - tools: - type: array - items: - $ref: "#/components/schemas/Tool" - ToolsCallParameter: - type: object - required: - - name - - value - properties: - name: - type: string - description: The name of the parameter - value: - type: string - description: The value of the parameter (for primitive types) - items: - type: array - description: The value of the parameter (for array types) - items: - $ref: "#/components/schemas/ToolsCallParameter" - properties: - type: object - description: The value of the parameter (for object types) - additionalProperties: - $ref: "#/components/schemas/ToolsCallParameter" - ToolsCallRequest: - type: object - required: - - name - - parameters - properties: - name: - type: string - description: Required name of the tool to execute - parameters: - type: object - description: The parameters for the tool. Each key is the name of the parameter and the value is the parameter object. - additionalProperties: - $ref: "#/components/schemas/ToolsCallParameter" - ToolsCallResponse: - type: object - properties: - rawResponse: - additionalProperties: true - type: object - description: The raw response from the tool - error: - type: string - description: The error message if applicable - IndexDocumentRequest: - type: object - description: Describes the request body of the /indexdocument API call - properties: - version: - type: integer - format: int64 - description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. - document: - description: Document being added/updated - $ref: "#/components/schemas/DocumentDefinition" - required: - - document - IndexDocumentsRequest: - type: object - description: Describes the request body of the /indexdocuments API call - properties: - uploadId: - type: string - description: Optional id parameter to identify and track a batch of documents. - datasource: - type: string - description: Datasource of the documents - documents: - description: Batch of documents being added/updated - type: array - items: - $ref: "#/components/schemas/DocumentDefinition" - required: - - documents - - datasource - UpdatePermissionsRequest: - type: object - description: Describes the request body of the /updatepermissions API call - properties: - datasource: - type: string - objectType: - type: string - description: The type of the document (Case, KnowledgeArticle for Salesforce for example). It cannot have spaces or _ - id: - type: string - description: The datasource specific id for the document. This field is case insensitive and should not be more than 200 characters in length. - viewURL: - type: string - description: | - The permalink for viewing the document. **Note: viewURL is a required field if id was not set when uploading the document.**' - permissions: - $ref: "#/components/schemas/DocumentPermissionsDefinition" - description: The permissions that define who can view this document in the search results. Please refer to [this](https://developers.glean.com/indexing/documents/permissions) for more details. - required: - - permissions - - datasource - GetDocumentCountRequest: - type: object - description: Describes the request body of the /getdocumentcount API call - properties: - datasource: - type: string - description: Datasource name for which document count is needed. - required: - - datasource - GetDocumentCountResponse: - type: object - description: Describes the response body of the /getdocumentcount API call - properties: - documentCount: - type: integer - description: Number of documents corresponding to the specified custom datasource. - GetDocumentStatusRequest: - type: object - description: Describes the request body for /getdocumentstatus API call - properties: - datasource: - type: string - description: Datasource to get fetch document status for - objectType: - type: string - description: Object type of the document to get the status for - docId: - type: string - description: Glean Document ID within the datasource to get the status for. - required: - - datasource - - objectType - - docId - GetDocumentStatusResponse: - type: object - description: Describes the response body of the /getdocumentstatus API call - properties: - uploadStatus: - type: string - description: Upload status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN - lastUploadedAt: - type: integer - format: int64 - description: Time of last successful upload, in epoch seconds - indexingStatus: - type: string - description: Indexing status, enum of NOT_INDEXED, INDEXED, STATUS_UNKNOWN - lastIndexedAt: - type: integer - format: int64 - description: Time of last successful indexing, in epoch seconds - BulkIndexRequest: - type: object - description: Describes the request body of a bulk upload API call - required: - - uploadId - properties: - uploadId: - type: string - description: Unique id that must be used for this bulk upload instance - isFirstPage: - type: boolean - description: true if this is the first page of the upload. Defaults to false - isLastPage: - type: boolean - description: true if this is the last page of the upload. Defaults to false - forceRestartUpload: - type: boolean - description: Flag to discard previous upload attempts and start from scratch. Must be specified with isFirstPage=true - BulkIndexTeamsRequest: - type: object - description: Describes the request body of the /bulkindexteams API call - allOf: - - $ref: "#/components/schemas/BulkIndexRequest" - - type: object - properties: - teams: - description: Batch of team information - type: array - items: - $ref: "#/components/schemas/TeamInfoDefinition" - required: - - teams - BulkIndexEmployeesRequest: - type: object - description: Describes the request body of the /bulkindexemployees API call - allOf: - - $ref: "#/components/schemas/BulkIndexRequest" - - type: object - properties: - employees: - description: Batch of employee information - type: array - items: - $ref: "#/components/schemas/EmployeeInfoDefinition" - disableStaleDataDeletionCheck: - type: boolean - description: True if older employee data needs to be force deleted after the upload completes. Defaults to older data being deleted only if the percentage of data being deleted is less than 20%. This must only be set when `isLastPage = true` - required: - - employees - BulkIndexDocumentsRequest: - type: object - description: Describes the request body of the /bulkindexdocuments API call - allOf: - - $ref: "#/components/schemas/BulkIndexRequest" - - type: object - properties: - datasource: - type: string - description: Datasource of the documents - documents: - description: Batch of documents for the datasource - type: array - items: - $ref: "#/components/schemas/DocumentDefinition" - disableStaleDocumentDeletionCheck: - type: boolean - description: True if older documents need to be force deleted after the upload completes. Defaults to older documents being deleted asynchronously. This must only be set when `isLastPage = true` - required: - - datasource - - documents - ProcessAllDocumentsRequest: - type: object - description: Describes the request body of the /processalldocuments API call - properties: - datasource: - type: string - description: If provided, process documents only for this custom datasource. Otherwise all uploaded documents are processed. - DeleteDocumentRequest: - type: object - description: Describes the request body of the /deletedocument API call - properties: - version: - type: integer - format: int64 - description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. - datasource: - type: string - description: datasource of the document - objectType: - type: string - description: object type of the document - id: - type: string - description: The id of the document - required: - - datasource - - id - - objectType - IndexUserRequest: - type: object - description: Describes the request body of the /indexuser API call - properties: - version: - type: integer - format: int64 - description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. - datasource: - type: string - description: The datasource for which the user is added - user: - description: The user to be added or updated - $ref: "#/components/schemas/DatasourceUserDefinition" - required: - - datasource - - user - GetUserCountRequest: - type: object - description: Describes the request body of the /getusercount API call - properties: - datasource: - type: string - description: Datasource name for which user count is needed. - required: - - datasource - GetUserCountResponse: - type: object - description: Describes the response body of the /getusercount API call - properties: - userCount: - type: integer - description: Number of users corresponding to the specified custom datasource. - BulkIndexUsersRequest: - type: object - description: Describes the request body for the /bulkindexusers API call - properties: - uploadId: - type: string - description: Unique id that must be used for this instance of datasource users upload - isFirstPage: - type: boolean - description: true if this is the first page of the upload. Defaults to false - isLastPage: - type: boolean - description: true if this is the last page of the upload. Defaults to false - forceRestartUpload: - type: boolean - description: Flag to discard previous upload attempts and start from scratch. Must be specified with isFirstPage=true - datasource: - type: string - description: datasource of the users - users: - description: batch of users for the datasource - type: array - items: - $ref: "#/components/schemas/DatasourceUserDefinition" - disableStaleDataDeletionCheck: - type: boolean - description: True if older user data needs to be force deleted after the upload completes. Defaults to older data being deleted only if the percentage of data being deleted is less than a reasonable threshold. This must only be set when `isLastPage = true` - required: - - uploadId - - datasource - - users - GreenlistUsersRequest: - type: object - description: Describes the request body of the /betausers API call - properties: - datasource: - type: string - description: Datasource which needs to be made visible to users specified in the `emails` field. - emails: - type: array - description: The emails of the beta users - items: - type: string - format: email - required: - - datasource - - emails - DatasourceUserDefinition: - type: object - description: describes a user in the datasource - properties: - email: - type: string - userId: - description: To be supplied if the user id in the datasource is not the email - type: string - name: - type: string - isActive: - type: boolean - description: set to false if the user is a former employee or a bot - required: - - email - - name - IndexGroupRequest: - type: object - description: Describes the request body of the /indexgroup API call - properties: - version: - type: integer - format: int64 - description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. - datasource: - type: string - description: The datasource for which the group is added - group: - description: The group to be added or updated - $ref: "#/components/schemas/DatasourceGroupDefinition" - required: - - datasource - - group - BulkIndexGroupsRequest: - type: object - description: Describes the request body for the /bulkindexgroups API call - properties: - uploadId: - type: string - description: Unique id that must be used for this instance of datasource groups upload - isFirstPage: - type: boolean - description: true if this is the first page of the upload. Defaults to false - isLastPage: - type: boolean - description: true if this is the last page of the upload. Defaults to false - forceRestartUpload: - type: boolean - description: Flag to discard previous upload attempts and start from scratch. Must be specified with isFirstPage=true - datasource: - type: string - description: datasource of the groups - groups: - description: batch of groups for the datasource - type: array - items: - $ref: "#/components/schemas/DatasourceGroupDefinition" - disableStaleDataDeletionCheck: - type: boolean - description: True if older group data needs to be force deleted after the upload completes. Defaults to older data being deleted only if the percentage of data being deleted is less than a reasonable threshold. This must only be set when `isLastPage = true` - required: - - uploadId - - datasource - - groups - DatasourceGroupDefinition: - type: object - description: describes a group in the datasource - properties: - name: - type: string - description: name of the group. Should be unique among all groups for the datasource, and cannot have spaces. - required: - - name - IndexMembershipRequest: - type: object - description: Describes the request body of the /indexmembership API call - properties: - version: - type: integer - format: int64 - description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. - datasource: - type: string - description: The datasource for which the membership is added - membership: - description: The membership to be added or updated - $ref: "#/components/schemas/DatasourceMembershipDefinition" - required: - - datasource - - membership - BulkIndexMembershipsRequest: - type: object - description: Describes the request body for the /bulkindexmemberships API call - properties: - uploadId: - type: string - description: Unique id that must be used for this instance of datasource group memberships upload - isFirstPage: - type: boolean - description: true if this is the first page of the upload. Defaults to false - isLastPage: - type: boolean - description: true if this is the last page of the upload. Defaults to false - forceRestartUpload: - type: boolean - description: Flag to discard previous upload attempts and start from scratch. Must be specified with isFirstPage=true - datasource: - type: string - description: datasource of the memberships - group: - type: string - description: group who's memberships are specified - memberships: - description: batch of memberships for the group - type: array - items: - $ref: "#/components/schemas/DatasourceBulkMembershipDefinition" - required: - - uploadId - - datasource - - memberships - ProcessAllMembershipsRequest: - type: object - description: Describes the request body of the /processallmemberships API call - properties: - datasource: - type: string - description: If provided, process group memberships only for this custom datasource. Otherwise all uploaded memberships are processed. - DatasourceMembershipDefinition: - type: object - description: describes the membership row of a group. Only one of memberUserId and memberGroupName can be specified. - properties: - groupName: - description: The group for which the membership is specified - type: string - memberUserId: - description: If the member is a user, then the email or datasource id for the user - type: string - memberGroupName: - description: If the member is a group, then the name of the member group - type: string - required: - - groupName - DatasourceBulkMembershipDefinition: - type: object - description: describes the membership row of a group in the bulk uploaded. Only one of memberUserId and memberGroupName can be specified. - properties: - memberUserId: - description: If the member is a user, then the email or datasource id for the user - type: string - memberGroupName: - description: If the member is a group, then the name of the member group - type: string - DeleteUserRequest: - type: object - description: Describes the request body of the /deleteuser API call - properties: - version: - type: integer - format: int64 - description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. - datasource: - type: string - description: The datasource for which the user is removed - email: - description: The email of the user to be deleted - type: string - required: - - datasource - - email - DeleteGroupRequest: - type: object - description: Describes the request body of the /deletegroup API call - properties: - version: - type: integer - format: int64 - description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. - datasource: - type: string - description: The datasource for which the group is removed - groupName: - description: the name of the group to be deleted - type: string - required: - - datasource - - groupName - DeleteMembershipRequest: - type: object - description: Describes the request body of the /deletemembership API call - properties: - version: - type: integer - format: int64 - description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. - datasource: - type: string - description: The datasource for which the membership is removed - membership: - description: the name of the membership to be deleted - $ref: "#/components/schemas/DatasourceMembershipDefinition" - required: - - datasource - - membership - DeleteEmployeeRequest: - type: object - description: Describes the request body of the /deleteemployee API call - properties: - version: - type: integer - format: int64 - description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. - employeeEmail: - description: The deleted employee's email - type: string - required: - - employeeEmail - DeleteTeamRequest: - type: object - description: Describes the request body of the /deleteteam API call - properties: - id: - description: The deleted team's id - type: string - required: - - id - DocumentDefinition: - type: object - description: Indexable document structure - properties: - title: - type: string - description: Document title, in plain text, if present. If not present, the title would be attempted to be extracted from the content. - filename: - type: string - description: Source filename, in plain text, for the document. May be used as a fallback title for the document, if the title is not provided and cannot be extracted from the content. Populate this if there is no explicit title for the document and the content is sourced from a file. - container: - type: string - description: The container name for the content (Folder for example for file content). - containerDatasourceId: - type: string - description: This represents the datasource sepcific id of the container. - containerObjectType: - type: string - description: This represents the object type of the container. It cannot have spaces or _ - datasource: - type: string - objectType: - type: string - description: The type of the document (Case, KnowledgeArticle for Salesforce for example). It cannot have spaces or _ - viewURL: - type: string - description: | - The permalink for viewing the document. **Note: viewURL 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).**' - id: - type: string - description: | - The datasource specific id for the document. This field is case insensitive and should not be more than 200 characters in length. Note: id is a required field for datasources created after 1st March 2025 - summary: - $ref: "#/components/schemas/ContentDefinition" - body: - $ref: "#/components/schemas/ContentDefinition" - author: - $ref: "#/components/schemas/UserReferenceDefinition" - owner: - $ref: "#/components/schemas/UserReferenceDefinition" - description: The current owner of the document, if not the author. - permissions: - $ref: "#/components/schemas/DocumentPermissionsDefinition" - description: The permissions that define who can view this document in the search results. Please refer to [this](https://developers.glean.com/indexing/documents/permissions) for more details. - createdAt: - type: integer - format: int64 - description: The creation time, in epoch seconds. - updatedAt: - type: integer - format: int64 - description: The last update time, in epoch seconds. - updatedBy: - $ref: "#/components/schemas/UserReferenceDefinition" - tags: - type: array - items: - type: string - description: Labels associated with the document. - interactions: - $ref: "#/components/schemas/DocumentInteractionsDefinition" - status: - type: string - additionalUrls: - type: array - items: - type: string - description: Additional variations of the URL that this document points to. - comments: - type: array - items: - $ref: "#/components/schemas/CommentDefinition" - description: Comments associated with the document. - customProperties: - type: array - items: - $ref: "#/components/schemas/CustomProperty" - description: Additional metadata properties of the document. These can surface as [facets and operators](https://developers.glean.com/indexing/datasource/custom-properties/operators_and_facets). - required: - - datasource - CommentDefinition: - type: object - description: Describes a comment on a document - properties: - id: - type: string - description: The document specific id for the comment. This field is case insensitive and should not be more than 200 characters in length. - author: - $ref: "#/components/schemas/UserReferenceDefinition" - description: The author of the comment. - content: - $ref: "#/components/schemas/ContentDefinition" - description: The content of the comment. - createdAt: - type: integer - format: int64 - description: The creation time, in epoch seconds. - updatedAt: - type: integer - format: int64 - description: The last updated time, in epoch seconds. - updatedBy: - $ref: "#/components/schemas/UserReferenceDefinition" - description: The user who last updated the comment. - required: - - id - ContentDefinition: - type: object - description: Describes text content or base64 encoded binary content - properties: - mimeType: - type: string - textContent: - type: string - description: text content. Only one of textContent or binary content can be specified - binaryContent: - type: string - description: base64 encoded binary content. Only one of textContent or binary content can be specified - required: - - mimeType - UserReferenceDefinition: - type: object - description: Describes how a user is referenced in a document. The user can be referenced by email or by a datasource specific id. - properties: - email: - type: string - datasourceUserId: - type: string - description: some datasources refer to the user by the datasource user id in the document - name: - type: string - PermissionsGroupIntersectionDefinition: - type: object - description: describes a list of groups that are all required in a permissions constraint - properties: - requiredGroups: - type: array - items: - type: string - DocumentPermissionsDefinition: - type: object - description: describes the access control details of the document - properties: - allowedUsers: - description: List of users who can view the document - type: array - items: - $ref: "#/components/schemas/UserReferenceDefinition" - allowedGroups: - description: List of groups that can view the document - type: array - items: - type: string - allowedGroupIntersections: - description: List of allowed group intersections. This describes a permissions constraint of the form ((GroupA AND GroupB AND GroupC) OR (GroupX AND GroupY) OR ... - type: array - items: - $ref: "#/components/schemas/PermissionsGroupIntersectionDefinition" - allowAnonymousAccess: - description: If true, then any Glean user can view the document - type: boolean - allowAllDatasourceUsersAccess: - description: If true, then any user who has an account in the datasource can view the document. - type: boolean - DocumentInteractionsDefinition: - type: object - description: describes the interactions on the document - properties: - numViews: - type: integer - numLikes: - type: integer - numComments: - type: integer - CheckDocumentAccessRequest: - type: object - description: Describes the request body of the /checkdocumentaccess API call - properties: - datasource: - type: string - description: Datasource of document to check access for. - objectType: - type: string - description: Object type of document to check access for. - docId: - type: string - description: Glean Document ID to check access for. - userEmail: - type: string - description: Email of user to check access for. - required: - - datasource - - objectType - - docId - - userEmail - CheckDocumentAccessResponse: - type: object - description: Describes the response body of the /checkdocumentaccess API call - properties: - hasAccess: - type: boolean - description: If true, user has access to document for search - CustomProperty: - type: object - description: Describes the custom properties of the object. - properties: - name: - type: string - value: - description: Must either be a string or an array of strings. An integer, boolean, etc. is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this. - DatasourceConfig: - $ref: "#/components/schemas/SharedDatasourceConfig" - GetDatasourceConfigRequest: - type: object - description: Describes the request body of the /getdatasourceconfig API call - properties: - datasource: - type: string - description: Datasource name for which config is needed. - required: - - datasource - DatasourceConfigList: - description: List of datasource configurations. - required: - - datasourceConfig - properties: - datasourceConfig: - type: array - description: Datasource configuration. - items: - $ref: "#/components/schemas/SharedDatasourceConfig" - RotateTokenResponse: - description: Describes the response body of the /rotatetoken API call - properties: - rawSecret: - type: string - description: New raw secret - createdAt: - type: integer - format: int64 - description: Unix timestamp in seconds when the new secret value is assigned to the token. The token needs to be rotated before `rotationPeriodMinutes` past the createdAt timestamp otherwise it would be rendered unusable. - rotationPeriodMinutes: - type: integer - format: int64 - description: Refers to the time period in minutes before which this token needs to be rotated. It is required to rotate the token within the specified `rotationPeriodMinutes` after each `/rotatetoken` call, otherwise the tokens would expire. Note that the token would still expire at `expiresAt` timestamp provided during token creation even if the token is being regularly rotated. `rotationPeriodMinutes` property is inherited from the parent token being rotated - IndexEmployeeRequest: - type: object - description: Info about an employee and optional version for that info - properties: - employee: - description: Info about the employee - $ref: "#/components/schemas/EmployeeInfoDefinition" - version: - description: Version number for the employee object. If absent or 0 then no version checks are done - type: integer - format: int64 - required: - - employee - IndexEmployeeListRequest: - type: object - description: Describes the request body of the /indexemployeelist API call - properties: - employees: - description: List of employee info and version. - type: array - items: - $ref: "#/components/schemas/IndexEmployeeRequest" - SocialNetworkDefinition: - type: object - description: Employee's social network profile - properties: - name: - type: string - description: Possible values are "twitter", "linkedin". - profileName: - type: string - description: Human-readable profile name. - profileUrl: - type: string - description: Link to profile. - AdditionalFieldDefinition: - type: object - description: Additional information about the employee or team. - properties: - key: - type: string - description: Key to reference this field, e.g. "languages". Note that the key should be all lowercase alphabetic characters with no numbers, spaces, hyphens or underscores. - value: - type: array - description: | - List of type string or HypertextField. - - HypertextField is defined as - ``` - { - anchor: string, // Anchor text for the hypertext field. - hyperlink: string, // URL for the hypertext field. - } - ``` - Example: ```{"anchor":"Glean","hyperlink":"https://glean.com"}``` - - When OpenAPI Generator supports oneOf, we will semantically enforce this in the docs. - - **Note**: If using the Python SDK to pass in a list of strings, the value may need to be a list of dictionaries. In that case, the key in that dictionary will be ignored. - Example: ```"languages": [{"lang":"English","lang":"Spanish",...}]```. In this case, the key "lang" will be ignored and can even be passed in as an empty string. - items: - type: object - description: Either a string or HypertextField. When OpenAPI Generator supports oneOf, we can semantically enforce this in the docs. - HypertextField: - type: object - properties: - anchor: - type: string - description: Anchor text for the hypertext field. - hyperlink: - type: string - description: URL for the hypertext field. - EmployeeInfoDefinition: - type: object - description: Describes employee info - properties: - email: - type: string - description: The employee's email - firstName: - type: string - description: | - The first name of the employee. **Note**: The value cannot be empty - lastName: - type: string - description: | - The last name of the employee. **Note**: The value cannot be empty - preferredName: - type: string - description: The preferred name or nickname of the employee - id: - type: string - description: | - **[Advanced]** A unique universal internal identifier for the employee. This is solely used for understanding manager relationships along with `managerId`. - phoneNumber: - type: string - description: The employee's phone number. - location: - type: string - description: The employee's location (city/office name etc). - deprecated: true - structuredLocation: - description: Detailed location with information about country, state, city etc. - $ref: "#/components/schemas/StructuredLocation" - title: - type: string - description: The employee's role title. - photoUrl: - type: string - format: uri - description: The employee's profile pic - businessUnit: - type: string - description: Typically the highest level organizational unit; generally applies to bigger companies with multiple distinct businesses. - department: - type: string - description: An organizational unit where everyone has a similar task, e.g. `Engineering`. - datasourceProfiles: - type: array - description: The datasource profiles of the employee, e.g. `Slack`,`Github`. - items: - $ref: "#/components/schemas/DatasourceProfile" - teams: - type: array - description: Info about the employee's team(s) - items: - $ref: "#/components/schemas/EmployeeTeamInfo" - startDate: - type: string - format: date - description: The date when the employee started - endDate: - type: string - format: date - description: If a former employee, the last date of employment. - bio: - type: string - description: Short biography or mission statement of the employee. - pronoun: - type: string - description: She/her, He/his or other pronoun. - alsoKnownAs: - type: array - description: Other names associated with the employee. - items: - type: string - profileUrl: - type: string - description: Link to internal company person profile. - socialNetworks: - type: array - description: List of social network profiles. - items: - $ref: "#/components/schemas/SocialNetworkDefinition" - managerEmail: - type: string - description: The email of the employee's manager - managerId: - type: string - description: | - **[Advanced]** A unique universal internal identifier for the employee's manager. This is solely used in conjunction with `id`. - type: - type: string - description: The type of the employee, an enum of `FULL_TIME`, `CONTRACTOR`, `NON_EMPLOYEE` - default: FULL_TIME - relationships: - type: array - description: List of unidirectional relationships with other employees. E.g. this employee (`A`) is a CHIEF_OF_STAFF to another employee (`B`); or this employee (`A`) is an EXECUTIVE_ASSISTANT of another employee (`C`). The mapping should be attached to `A`'s profile. - items: - $ref: "#/components/schemas/EntityRelationship" - status: - type: string - description: The status of the employee, an enum of `CURRENT`, `FUTURE`, `EX` - default: CURRENT - additionalFields: - type: array - description: List of additional fields with more information about the employee. - items: - $ref: "#/components/schemas/AdditionalFieldDefinition" - required: - - department - - email - EmployeeAndVersionDefinition: - type: object - description: describes info about an employee and optional version for that info - properties: - employee: - description: Info about the employee - $ref: "#/components/schemas/EmployeeInfoDefinition" - version: - description: Version number for the employee object. If absent or 0 then no version checks are done - type: integer - format: int64 - required: - - info - EmployeeTeamInfo: - type: object - description: Information about which team an employee belongs to - properties: - id: - type: string - description: unique identifier for this team - name: - type: string - description: Team name - url: - type: string - format: uri - description: Link to internal company team page - EntityRelationship: - type: object - description: Describes a relationship edge between a source and destination entity - required: - - name - - email - properties: - name: - type: string - description: The title or type of relationship. Currently an enum of `CHIEF_OF_STAFF`, `EXECUTIVE_ASSISTANT` - email: - type: string - description: Email of the person with whom the relationship exists. Per the example above, either `B` or `C`'s email depending on the relationship. - TeamMember: - type: object - description: Information about a team's member - properties: - email: - type: string - description: The member's email - format: email - relationship: - type: string - description: The member's relationship to the team, an enum of `MEMBER`, `MANAGER`, `LEAD`, `POINT_OF_CONTACT`, `OTHER` - default: MEMBER - join_date: - type: string - format: date - description: The member's start date - required: - - email - TeamInfoDefinition: - type: object - description: Information about an employee's team - properties: - id: - type: string - description: The unique ID of the team - name: - type: string - description: Human-readable team name - description: - type: string - description: The description of this team - businessUnit: - type: string - description: Typically the highest level organizational unit; generally applies to bigger companies with multiple distinct businesses. - department: - type: string - description: An organizational unit where everyone has a similar task, e.g. `Engineering`. - photoUrl: - type: string - format: uri - description: A link to the team's photo - externalLink: - type: string - format: uri - description: | - A link to an external team page. If set, team results will link to it. - emails: - type: array - description: The emails of the team - items: - $ref: "#/components/schemas/TeamEmail" - datasourceProfiles: - type: array - description: The datasource profiles of the team, e.g. `Slack`,`Github`. - items: - $ref: "#/components/schemas/DatasourceProfile" - members: - type: array - description: The members of the team - items: - $ref: "#/components/schemas/TeamMember" - additionalFields: - type: array - description: List of additional fields with more information about the team. - items: - $ref: "#/components/schemas/AdditionalFieldDefinition" - required: - - id - - members - - name - IndexTeamRequest: - type: object - description: Info about a team and optional version for that info - properties: - team: - description: Info about the team - $ref: "#/components/schemas/TeamInfoDefinition" - version: - description: Version number for the team object. If absent or 0 then no version checks are done - type: integer - format: int64 - required: - - team - BulkIndexShortcutsRequest: - type: object - description: Describes the request body of the /bulkindexshortcuts API call - allOf: - - $ref: "#/components/schemas/BulkIndexRequest" - - type: object - properties: - shortcuts: - description: Batch of shortcuts information - type: array - items: - $ref: "#/components/schemas/ExternalShortcut" - required: - - shortcuts - UploadShortcutsRequest: - type: object - description: Describes the request body of the /uploadshortcuts API call - allOf: - - $ref: "#/components/schemas/BulkIndexRequest" - - type: object - properties: - shortcuts: - description: Batch of shortcuts information - type: array - items: - $ref: "#/components/schemas/IndexingShortcut" - required: - - shortcuts - DebugDatasourceStatusResponse: - type: object - description: Describes the response body of the /debug/{datasource}/status API call - properties: - documents: - type: object - properties: - bulkUploadHistory: - type: object - $ref: "#/components/schemas/BulkUploadHistoryEventList" - counts: - type: object - properties: - uploaded: - type: array - items: - $ref: "#/components/schemas/DatasourceObjectTypeDocumentCountEntry" - description: | - A list of object types and corresponding upload counts. Note: This data may be cached and could be up to 3 hours stale. - indexed: - type: array - description: The number of documents indexed, grouped by objectType - items: - $ref: "#/components/schemas/DatasourceObjectTypeDocumentCountEntry" - processingHistory: - $ref: "#/components/schemas/ProcessingHistoryEventList" - identity: - type: object - properties: - processingHistory: - $ref: "#/components/schemas/ProcessingHistoryEventList" - users: - $ref: "#/components/schemas/DebugDatasourceStatusIdentityResponseComponent" - groups: - $ref: "#/components/schemas/DebugDatasourceStatusIdentityResponseComponent" - memberships: - $ref: "#/components/schemas/DebugDatasourceStatusIdentityResponseComponent" - datasourceVisibility: - type: string - description: The visibility of the datasource, an enum of VISIBLE_TO_ALL, VISIBLE_TO_TEST_GROUP, NOT_VISIBLE - enum: - - ENABLED_FOR_ALL - - ENABLED_FOR_TEST_GROUP - - NOT_ENABLED - example: ENABLED_FOR_ALL - DebugDatasourceStatusIdentityResponseComponent: - type: object - properties: - bulkUploadHistory: - type: object - $ref: "#/components/schemas/BulkUploadHistoryEventList" - counts: - type: object - properties: - uploaded: - type: integer - description: The number of users/groups/memberships uploaded - example: 15 - DatasourceObjectTypeDocumentCountEntry: - type: object - properties: - objectType: - type: string - description: The object type of the document - example: Article - count: - type: integer - description: The number of documents of the corresponding objectType - example: 15 - BulkUploadHistoryEvent: - type: object - description: Information about a successful bulk upload - properties: - uploadId: - type: string - description: The unique ID of the upload - example: upload-id-content-1707403081 - startTime: - type: string - description: The start time of the upload in ISO 8601 format - example: "2021-08-06T17:58:01.000Z" - endTime: - type: string - description: The end time of the upload in ISO 8601 format, 'NA' if the upload is still active - example: "2021-08-06T18:58:01.000Z" - status: - type: string - description: The status of the upload, an enum of ACTIVE, SUCCESSFUL - enum: - - ACTIVE - - SUCCESSFUL - example: SUCCESSFUL - processingState: - type: string - description: The current state of the upload, an enum of UNAVAILABLE, UPLOAD STARTED, UPLOAD IN PROGRESS, UPLOAD COMPLETED, DELETION PAUSED, INDEXING COMPLETED - enum: - - UNAVAILABLE - - UPLOAD STARTED - - UPLOAD IN PROGRESS - - UPLOAD COMPLETED - - DELETION PAUSED - - INDEXING COMPLETED - example: UPLOAD COMPLETED - BulkUploadHistoryEventList: - description: Information about active and recent successful uploads for the datasource + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListDlpReportsResponse' + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.data.policies + x-speakeasy-name-override: list + post: + operationId: createpolicy + summary: Creates new policy + description: Creates a new policy with specified specifications and returns its id. + tags: + - Governance + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/CreateDlpReportRequest' + required: true + responses: + "200": + description: OK + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/CreateDlpReportResponse' + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.data.policies + x-speakeasy-name-override: create + /rest/api/v1/governance/data/policies/{id}/download: + get: + operationId: downloadpolicycsv + summary: Downloads violations CSV for policy + 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 + description: The id of the policy to download violations for. + required: true + schema: + type: string + responses: + "200": + description: Downloads csv of batch policy violations. + content: + text/csv; charset=UTF-8: + schema: + type: string + description: CSV of all the violations found for this policy. + "400": + description: Bad request error (e.g., continuous policies are not supported). + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.data.policies + x-speakeasy-name-override: download + /rest/api/v1/governance/data/reports: + post: + operationId: createreport + summary: Creates new one-time report + description: Creates a new one-time report and executes its batch job. + tags: + - Governance + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/UpdateDlpConfigRequest' + required: true + responses: + "200": + description: OK + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/UpdateDlpConfigResponse' + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.data.reports + x-speakeasy-name-override: create + /rest/api/v1/governance/data/reports/{id}/download: + get: + operationId: downloadreportcsv + summary: Downloads violations CSV for report + description: Downloads CSV violations report for a specific report id. + tags: + - Governance + security: + - APIToken: [] + parameters: + - name: id + in: path + description: The id of the report to download violations for. + required: true + schema: + type: string + responses: + "200": + description: Downloads csv of one-time report violations. + content: + text/csv; charset=UTF-8: + schema: + type: string + description: CSV of all the violations found for this report. + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.data.reports + x-speakeasy-name-override: download + /rest/api/v1/governance/data/reports/{id}/status: + get: + operationId: getreportstatus + summary: Fetches report run status + description: Fetches the status of the run corresponding to the report-id. + tags: + - Governance + security: + - APIToken: [] + parameters: + - name: id + in: path + description: The id of the report to get run status for. + required: true + schema: + type: string + responses: + "200": + description: Fetches status of report run. + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/ReportStatusResponse' + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.data.reports + x-speakeasy-name-override: status + /rest/api/v1/governance/documents/visibilityoverrides: + get: + operationId: getdocvisibility + summary: Fetches documents visibility + description: Fetches the visibility override status of the documents passed. + tags: + - Governance + security: + - APIToken: [] + parameters: + - name: docIds + in: query + description: List of doc-ids which will have their hide status fetched. + schema: type: array items: - $ref: "#/components/schemas/BulkUploadHistoryEvent" - DebugDocumentRequest: - type: object - description: Describes the request body of the /debug/{datasource}/document API call. - properties: - objectType: - type: string - description: Object type of the document to get the status for. - example: Article - docId: - type: string - description: Glean Document ID within the datasource to get the status for. - example: art123 - required: - - objectType - - docId - DebugDocumentResponse: - type: object - description: Describes the response body of the /debug/{datasource}/document API call - properties: - status: - type: object - description: Upload and indexing status of the document - $ref: "#/components/schemas/DocumentStatusResponse" - uploadedPermissions: - $ref: "#/components/schemas/DocumentPermissionsDefinition" - DebugDocumentsRequest: - type: object - description: Describes the request body of the /debug/{datasource}/documents API call. - properties: - debugDocuments: - type: array - description: Documents to fetch debug information for - items: - $ref: "#/components/schemas/DebugDocumentRequest" - required: - - debugDocuments - DebugDocumentsResponseItem: - type: object - description: Describes the response body of a single document in the /debug/{datasource}/documents API call - properties: - docId: - type: string - description: Id of the document - objectType: - type: string - description: objectType of the document - debugInfo: - type: object - description: Debug information of the document - $ref: "#/components/schemas/DebugDocumentResponse" - DebugDocumentsResponse: - type: object - description: Describes the response body of a single document in the /debug/{datasource}/documents API call - properties: - documentStatuses: - type: array - description: List of document ids/urls and their debug information - items: - $ref: "#/components/schemas/DebugDocumentsResponseItem" - DocumentStatusResponse: - type: object - description: Describes the document status response body - properties: - uploadStatus: - type: string - description: Upload status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN - example: UPLOADED - lastUploadedAt: - type: string - description: Time of last successful upload for the document, in ISO 8601 format - example: "2021-08-06T17:58:01.000Z" - indexingStatus: - type: string - description: Indexing status, enum of NOT_INDEXED, INDEXED, STATUS_UNKNOWN - example: INDEXED - lastIndexedAt: - type: string - description: Time of last successful indexing for the document, in ISO 8601 format - example: "2021-08-06T17:58:01.000Z" - permissionIdentityStatus: - type: string - description: Permission identity status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN (Always unknown if `identityDatasourceName` is set). Document visibility may be affected status is `NOT_UPLOADED`. - example: UPLOADED - LifeCycleEvent: - type: object - properties: - event: - type: string - description: Type of event - enum: - - UPLOADED - - INDEXED - - DELETION_REQUESTED - - DELETED - example: INDEXED - timestamp: - type: string - description: Timestamp of the event - example: "2021-08-06T17:58:01.000Z" - ProcessingHistoryEvent: - type: object - description: Processing history event for a datasource - properties: - startTime: - type: string - description: The start time of the processing in ISO 8601 format - example: "2021-08-06T17:58:01.000Z" - endTime: - type: string - description: The end time of the processing in ISO 8601 format, 'NA' if still in progress - example: "2021-08-06T18:58:01.000Z" - ProcessingHistoryEventList: - description: Information about processing history for the datasource - type: array + type: string + responses: + "200": + description: The visibility status of documents + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/GetDocumentVisibilityOverridesResponse' + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.documents.visibilityoverrides + x-speakeasy-name-override: list + post: + operationId: setdocvisibility + summary: Hide or unhide docs + 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: + schema: + $ref: '#/components/schemas/UpdateDocumentVisibilityOverridesRequest' + required: true + responses: + "200": + description: OK + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/UpdateDocumentVisibilityOverridesResponse' + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + x-speakeasy-group: client.governance.documents.visibilityoverrides + x-speakeasy-name-override: create + /rest/api/v1/governance/data/findings/exports: + post: + operationId: createfindingsexport + summary: Creates findings export + description: Creates a new DLP findings export job. + tags: + - Governance + security: + - APIToken: [] + requestBody: + content: + application/json; charset=UTF-8: + schema: + $ref: '#/components/schemas/DlpExportFindingsRequest' + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ExportInfo' + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + get: + operationId: listfindingsexports + summary: Lists findings exports + description: Lists all DLP findings exports. + tags: + - Governance + security: + - APIToken: [] + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ListDlpFindingsExportsResponse' + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + /rest/api/v1/governance/data/findings/exports/{id}: + get: + operationId: downloadfindingsexport + summary: Downloads findings export + description: Downloads a DLP findings export as a CSV file. + tags: + - Governance + security: + - APIToken: [] + parameters: + - name: id + in: path + description: The ID of the export to download. + required: true + schema: + type: string + responses: + "200": + description: Downloads CSV of exported findings. + content: + text/csv; charset=UTF-8: + schema: + type: string + description: CSV of all the exported findings. + "403": + description: Permissions error + "500": + description: Internal error + x-visibility: Public + delete: + operationId: deletefindingsexport + summary: Deletes findings export + description: Deletes a DLP findings export. + tags: + - Governance + security: + - APIToken: [] + parameters: + - name: id + in: path + description: The ID of the export to delete. + required: true + schema: + type: integer + format: int64 + responses: + "200": + description: OK + "403": + description: Permissions error + "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/datasource/{datasourceInstanceId}/credentialstatus: + get: + operationId: getDatasourceCredentialStatus + summary: Get datasource instance credential status + description: | + Returns the current credential status for a datasource instance. Access is limited to callers with the ADMIN scope; the handler enforces this check. + tags: + - Datasources + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/datasourceInstanceId' + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DatasourceCredentialStatusResponse' + "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/datasource/{datasourceInstanceId}/credentials: + post: + operationId: rotateDatasourceCredentials + summary: Rotate datasource instance credentials + description: | + Rotates the credentials that a datasource instance uses to connect to its upstream system. Replaces the active credential material with the supplied values and returns the credential status after rotation. Access is limited to callers with the ADMIN scope; the handler enforces this check. + Only keys recognized as credential material for the datasource type may be set in `credentials.values` (e.g. `clientSecret`, `apiToken`, `privateKey`, depending on the configured auth method). Unrecognized keys, or keys that correspond to non-credential configuration, cause a 400; other instance configuration must be updated via PATCH /configure/datasources/{datasourceId}/instances/{instanceId}. + tags: + - Datasources + security: + - APIToken: [] + parameters: + - $ref: '#/components/parameters/datasourceInstanceId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RotateDatasourceCredentialsRequest' + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/DatasourceCredentialStatusResponse' + "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: + - Chat + summary: Chat + description: Have a conversation with Glean AI. + operationId: chatStream + x-visibility: Public + x-codegen-request-body-name: payload + parameters: + - $ref: '#/components/parameters/timezoneOffset' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ChatRequest' + examples: + defaultExample: + value: + messages: + - author: USER + messageType: CONTENT + fragments: + - text: What are the company holidays this year? + gptAgentExample: + value: + agentConfig: + agent: GPT + messages: + - author: USER + messageType: CONTENT + fragments: + - text: Who was the first person to land on the moon? + description: Includes chat history for Glean AI to respond to. + required: true + x-exportParamName: Request + responses: + '200': + description: OK + content: + text/plain: + schema: + $ref: '#/components/schemas/ChatRequestStream' + examples: + defaultExample: + value: + messages: + - author: GLEAN_AI + messageType: CONTENT + hasMoreFragments: false + agentConfig: + agent: DEFAULT + mode: DEFAULT + fragments: + - text: There are no holidays! + streamingExample: + value: + messages: + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: true + fragments: null + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: true + fragments: null + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: true + fragments: + - text: e are + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: true + fragments: + - text: no hol + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + hasMoreFragments: false + fragments: + - text: idays! + updateResponse: + value: + messages: + - author: GLEAN_AI + messageType: UPDATE + agentConfig: + agent: DEFAULT + mode: DEFAULT + fragments: + - text: '**Reading:**' + - structuredResults: + - document: + id: '123' + title: Company Handbook + citationResponse: + value: + messages: + - author: GLEAN_AI + messageType: CONTENT + agentConfig: + agent: DEFAULT + mode: DEFAULT + citations: + - sourceDocument: + id: '123' + title: Company Handbook + referenceRanges: + - textRange: + startIndex: 0 + endIndex: 12 + type: CITATION + '400': + description: Invalid request + '401': + description: Not Authorized + '408': + description: Request Timeout + '429': + description: Too Many Requests + x-speakeasy-group: client.chat + x-speakeasy-name-override: createStream + x-speakeasy-usage-example: true +components: + securitySchemes: + APIToken: + scheme: bearer + type: http + schemas: + ActivityEventParams: + properties: + bodyContent: + description: The HTML content of the page body. + type: string + datasourceInstance: + type: string + description: The full datasource instance name inferred from the URL of the event + datasource: + type: string + description: The datasource without the instance inferred from the URL of the event + instanceOnlyName: + type: string + description: The instance only name of the datasource instance, e.g. 1 for jira_1, inferred from the URL of the event + duration: + description: Length in seconds of the activity. For VIEWS, this represents the amount the page was visible in the foreground. + type: integer + query: + description: The user's search query associated with a SEARCH. + type: string + referrer: + description: The referring URL of the VIEW or SEARCH. + type: string + title: + description: The page title associated with the URL of the event + type: string + truncated: + description: Indicates that the parameters are incomplete and more parameters may be sent with the same action+timestamp+URL in the future. This is used for sending the duration when a `VIEW` is finished. + type: boolean + ActivityEvent: + required: + - action + - source + - timestamp + - url + properties: + id: + type: string + description: Universally unique identifier of the event. To allow for reliable retransmission, only the earliest received event of a given UUID is considered valid by the server and subsequent are ignored. + action: + type: string + description: The type of activity this represents. + x-enumDescriptions: + VIEW: Represents a visit to the given `url`. + EDIT: Represents an edit of the document represented by the `url`. + SEARCH: Represents a search performed at the given `url`. + COMMENT: Represents a comment on the document represented by the `url`. + CRAWL: Represents an explicit request to index the given `url` along with associated attributes in this payload. + HISTORICAL_SEARCH: Represents a search performed at the given `url` as indicated by the user's history. + HISTORICAL_VIEW: Represents a visit to the given `url` as indicated by the user's history. + enum: + - VIEW + - EDIT + - SEARCH + - COMMENT + - CRAWL + - HISTORICAL_SEARCH + - HISTORICAL_VIEW + x-speakeasy-enum-descriptions: + VIEW: Represents a visit to the given `url`. + EDIT: Represents an edit of the document represented by the `url`. + SEARCH: Represents a search performed at the given `url`. + COMMENT: Represents a comment on the document represented by the `url`. + CRAWL: Represents an explicit request to index the given `url` along with associated attributes in this payload. + HISTORICAL_SEARCH: Represents a search performed at the given `url` as indicated by the user's history. + HISTORICAL_VIEW: Represents a visit to the given `url` as indicated by the user's history. + params: + $ref: "#/components/schemas/ActivityEventParams" + timestamp: + type: string + description: The ISO 8601 timestamp when the activity began. + format: date-time + url: + description: The URL of the activity. + type: string + Activity: + required: + - events + properties: + events: + type: array + items: + $ref: "#/components/schemas/ActivityEvent" + example: + events: + - url: https://example.com/ + action: HISTORICAL_VIEW + timestamp: "2000-01-23T04:56:07.000Z" + - url: https://example.com/search?q=query + action: SEARCH + timestamp: "2000-01-23T04:56:07.000Z" + params: + query: query + - url: https://example.com/ + action: VIEW + timestamp: "2000-01-23T04:56:07.000Z" + params: + duration: 20 + referrer: https://example.com/document + SessionInfo: + properties: + sessionTrackingToken: + type: string + description: A unique token for this session. A new session (and token) is created when the user issues a request from a new tab or when our server hasn't seen activity for more than 10 minutes from a tab. + tabId: + type: string + description: A unique id for all requests a user makes from a given tab, no matter how far apart. A new tab id is only generated when a user issues a request from a new tab. + lastSeen: + type: string + format: date-time + description: The last time the server saw this token. + lastQuery: + type: string + description: The last query seen by the server. + User: + properties: + userID: + description: An opaque user ID for the claimed authority (i.e., the actas param, or the origid if actas is not specified). + type: string + origID: + description: An opaque user ID for the authenticated user (ignores actas). + type: string + FeedbackChatExchange: + properties: + timestamp: + type: integer + format: int64 + description: Unix timestamp in millis for the chat request. + agent: + type: string + description: Either DEFAULT (company knowledge) or GPT (world knowledge). + userQuery: + type: string + description: Initial query entered by the user. + searchQuery: + type: string + description: Search query performed by the agent. + resultDocuments: + type: array + description: List of documents read by the agent. + items: + properties: + title: + type: string + url: + type: string + response: + type: string + ManualFeedbackInfo: + properties: + email: + type: string + description: The email address of the user who submitted the Feedback.event.MANUAL_FEEDBACK event. + deprecated: true + source: + type: string + description: The source associated with the Feedback.event.MANUAL_FEEDBACK event. + enum: + - AUTOCOMPLETE + - CALENDAR + - CHAT + - CHAT_GENERAL + - CONCEPT_CARD + - DESKTOP_APP + - DISAMBIGUATION_CARD + - EXPERT_DETECTION + - FEED + - GENERATED_Q_AND_A + - INLINE_MENU + - NATIVE_RESULT + - PRISM + - Q_AND_A + - RELATED_QUESTIONS + - REPORT_ISSUE + - SCIOBOT + - SEARCH + - SIDEBAR + - SUMMARY + - TASKS + - TASK_EXECUTION + issue: + type: string + description: The issue the user indicated in the feedback. + deprecated: true + issues: + type: array + description: The issue(s) the user indicated in the feedback. + items: + type: string + enum: + - AGENT_CANVAS_FAILED + - AGENT_CLARIFYING_QUESTIONS + - AGENT_INTERMEDIATE_STEPS_FAILED + - AGENT_TOOL_CALL_FAILED + - INACCURATE_RESPONSE + - INCOMPLETE_OR_NO_ANSWER + - INCORRECT_CITATION + - MISSING_CITATION + - OTHER + - OUTDATED_RESPONSE + - RESULT_MISSING + - RESULT_SHOULD_NOT_APPEAR + - RESULTS_HELPFUL + - RESULTS_POOR_ORDER + - TOO_MUCH_ONE_KIND + imageUrls: + type: array + items: + type: string + description: URLs of images uploaded by user when providing feedback + query: + type: string + description: The query associated with the Feedback.event.MANUAL_FEEDBACK event. + obscuredQuery: + type: string + description: The query associated with the Feedback.event.MANUAL_FEEDBACK event, but obscured such that the vowels are replaced with special characters. For search feedback events only. + activeTab: + type: string + description: Which tabs the user had chosen at the time of the Feedback.event.MANUAL_FEEDBACK event. For search feedback events only. + comments: + type: string + description: The comments users can optionally add to the Feedback.event.MANUAL_FEEDBACK events. + searchResults: + type: array + items: + type: string + description: The array of search result Glean Document IDs, ordered by top to bottom result. + previousMessages: + type: array + items: + type: string + description: The array of previous messages in a chat session, ordered by oldest to newest. + chatTranscript: + type: array + items: + $ref: "#/components/schemas/FeedbackChatExchange" + description: Array of previous request/response exchanges, ordered by oldest to newest. + numQueriesFromFirstRun: + type: integer + description: How many times this query has been run in the past. + vote: + type: string + description: The vote associated with the Feedback.event.MANUAL_FEEDBACK event. + enum: + - UPVOTE + - DOWNVOTE + rating: + type: integer + description: A rating associated with the user feedback. The value will be between one and the maximum given by ratingScale, inclusive. + ratingKey: + type: string + description: A description of the rating that contextualizes how it appeared to the user, e.g. "satisfied". + ratingScale: + type: integer + description: The scale of comparison for a rating associated with the feedback. Rating values start from one and go up to the maximum specified by ratingScale. For example, a five-option satisfaction rating will have a ratingScale of 5 and a thumbs-up/thumbs-down rating will have a ratingScale of 2. + SideBySideImplementation: + properties: + implementationId: + type: string + description: Unique identifier for this implementation variant. + implementationName: + type: string + description: Human-readable name for this implementation (e.g., "Variant A", "GPT-4", "Claude"). + searchParams: + type: object + description: The search/chat parameters used for this implementation. + additionalProperties: + type: string + response: + type: string + description: The full response generated by this implementation. + responseMetadata: + type: object + description: Metadata about the response (e.g., latency, token count). + properties: + latencyMs: + type: integer + description: Time taken to generate the response in milliseconds. + tokenCount: + type: integer + description: Number of tokens in the response. + modelUsed: + type: string + description: The specific model version used. + ManualFeedbackSideBySideInfo: + properties: + email: + type: string + description: The email address of the user who submitted the side-by-side feedback. + source: + type: string + description: The source associated with the side-by-side feedback event. + enum: + - LIVE_EVAL + - CHAT + - SEARCH + query: + type: string + description: The query or prompt that was evaluated across multiple implementations. + implementations: + type: array + description: Array of implementations that were compared side-by-side. + items: + $ref: "#/components/schemas/SideBySideImplementation" + evaluationSessionId: + type: string + description: Unique identifier for this evaluation session to group related feedback events. + implementationId: + type: string + description: The ID of the implementation this specific feedback event is for. + vote: + type: string + description: The vote for this specific implementation. + enum: + - UPVOTE + - DOWNVOTE + - NEUTRAL + comments: + type: string + description: Specific feedback comments for this implementation. + SeenFeedbackInfo: + properties: + isExplicit: + type: boolean + description: The confidence of the user seeing the object is high because they explicitly interacted with it e.g. answer impression in SERP with additional user interaction. + UserViewInfo: + properties: + docId: + type: string + description: Unique Glean Document ID of the associated document. + docTitle: + type: string + description: Title of associated document. + docUrl: + type: string + description: URL of associated document. + WorkflowFeedbackInfo: + properties: + source: + type: string + enum: + - ZERO_STATE + - LIBRARY + - HOMEPAGE + description: Where the feedback of the workflow originated from + Feedback: + required: + - event + - trackingTokens + properties: + id: + type: string + description: Universally unique identifier of the event. To allow for reliable retransmission, only the earliest received event of a given UUID is considered valid by the server and subsequent are ignored. + category: + type: string + description: 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. + enum: + - ANNOUNCEMENT + - ANSWERS + - ARTIFACTS + - AUTOCOMPLETE + - COLLECTIONS + - FEED + - SEARCH + - CHAT + - NTP + - WORKFLOWS + - SUMMARY + - GENERAL + - PRISM + - PROMPTS + trackingTokens: + type: array + description: A list of server-generated trackingTokens to which this event applies. + items: + type: string + event: + type: string + description: The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`. + x-enumDescriptions: + CLICK: The object's primary link was clicked with the intent to view its full representation. Depending on the object type, this may imply an external navigation or navigating to a new page or view within the Glean app. + CONTAINER_CLICK: A link to the object's parent container (e.g. the folder in which it's located) was clicked. + COPY_LINK: The user copied a link to the primary link. + CREATE: The user creates a document. + DISMISS: The user dismissed the object such that it was hidden from view. + DOWNVOTE: The user gave feedback that the object was not useful. + EMAIL: The user attempted to send an email. + EXECUTE: The user executed the object (e.g. ran a workflow). + FILTER: The user applied a filter. + FIRST_TOKEN: The first token of a streaming response is received. + FOCUS_IN: The user clicked into an interactive element, e.g. the search box. + LAST_TOKEN: The final token of a streaming response is received. + MANUAL_FEEDBACK: The user submitted textual manual feedback regarding the object. + MANUAL_FEEDBACK_SIDE_BY_SIDE: The user submitted comparative feedback for multiple side-by-side implementations. + FEEDBACK_TIME_SAVED: The user submitted feedback about time saved by an agent or workflow. + MARK_AS_READ: The user explicitly marked the content as read. + MESSAGE: The user attempted to send a message using their default messaing app. + MIDDLE_CLICK: The user middle clicked the object's primary link with the intent to open its full representation in a new tab. + PAGE_BLUR: The user puts a page out of focus but keeps it in the background. + PAGE_FOCUS: The user puts a page in focus, meaning it is the first to receive keyboard events. + PAGE_LEAVE: The user leaves a page and it is unloaded (by clicking a link, closing the tab/window, etc). + PREVIEW: The user clicked the object's inline preview affordance. + RIGHT_CLICK: The user right clicked the object's primary link. This may indicate an intent to open it in a new tab or copy it. + SECTION_CLICK: The user clicked a link to a subsection of the primary object. + SEEN: The user has likely seen the object (e.g. took action to make the object visible within the user's viewport). + SELECT: The user explicitly selected something, eg. a chat response variant they prefer. + SHARE: The user shared the object with another user. + SHOW_MORE: The user clicked the object's show more affordance. + UPVOTE: The user gave feedback that the object was useful. + VIEW: The object was visible within the user's viewport. + VISIBLE: The object was visible within the user's viewport. + enum: + - CLICK + - CONTAINER_CLICK + - COPY_LINK + - CREATE + - DISMISS + - DOWNVOTE + - EMAIL + - EXECUTE + - FILTER + - FIRST_TOKEN + - FOCUS_IN + - LAST_TOKEN + - MANUAL_FEEDBACK + - MANUAL_FEEDBACK_SIDE_BY_SIDE + - FEEDBACK_TIME_SAVED + - MARK_AS_READ + - MESSAGE + - MIDDLE_CLICK + - PAGE_BLUR + - PAGE_FOCUS + - PAGE_LEAVE + - PREVIEW + - RELATED_CLICK + - RIGHT_CLICK + - SECTION_CLICK + - SEEN + - SELECT + - SHARE + - SHOW_MORE + - UPVOTE + - VIEW + - VISIBLE + x-speakeasy-enum-descriptions: + CLICK: The object's primary link was clicked with the intent to view its full representation. Depending on the object type, this may imply an external navigation or navigating to a new page or view within the Glean app. + CONTAINER_CLICK: A link to the object's parent container (e.g. the folder in which it's located) was clicked. + COPY_LINK: The user copied a link to the primary link. + CREATE: The user creates a document. + DISMISS: The user dismissed the object such that it was hidden from view. + DOWNVOTE: The user gave feedback that the object was not useful. + EMAIL: The user attempted to send an email. + EXECUTE: The user executed the object (e.g. ran a workflow). + FILTER: The user applied a filter. + FIRST_TOKEN: The first token of a streaming response is received. + FOCUS_IN: The user clicked into an interactive element, e.g. the search box. + LAST_TOKEN: The final token of a streaming response is received. + MANUAL_FEEDBACK: The user submitted textual manual feedback regarding the object. + MANUAL_FEEDBACK_SIDE_BY_SIDE: The user submitted comparative feedback for multiple side-by-side implementations. + FEEDBACK_TIME_SAVED: The user submitted feedback about time saved by an agent or workflow. + MARK_AS_READ: The user explicitly marked the content as read. + MESSAGE: The user attempted to send a message using their default messaing app. + MIDDLE_CLICK: The user middle clicked the object's primary link with the intent to open its full representation in a new tab. + PAGE_BLUR: The user puts a page out of focus but keeps it in the background. + PAGE_FOCUS: The user puts a page in focus, meaning it is the first to receive keyboard events. + PAGE_LEAVE: The user leaves a page and it is unloaded (by clicking a link, closing the tab/window, etc). + PREVIEW: The user clicked the object's inline preview affordance. + RIGHT_CLICK: The user right clicked the object's primary link. This may indicate an intent to open it in a new tab or copy it. + SECTION_CLICK: The user clicked a link to a subsection of the primary object. + SEEN: The user has likely seen the object (e.g. took action to make the object visible within the user's viewport). + SELECT: The user explicitly selected something, eg. a chat response variant they prefer. + SHARE: The user shared the object with another user. + SHOW_MORE: The user clicked the object's show more affordance. + UPVOTE: The user gave feedback that the object was useful. + VIEW: The object was visible within the user's viewport. + VISIBLE: The object was visible within the user's viewport. + position: + type: integer + description: Position of the element in the case that the client controls order (such as feed and autocomplete). + payload: + type: string + description: For type MANUAL_FEEDBACK, contains string of user feedback. For autocomplete, partial query string. For feed, string of user feedback in addition to manual feedback signals extracted from all suggested content. + sessionInfo: + $ref: "#/components/schemas/SessionInfo" + timestamp: + type: string + description: The ISO 8601 timestamp when the event occured. + format: date-time + user: + $ref: "#/components/schemas/User" + pathname: + type: string + description: The path the client was at when the feedback event triggered. + channels: + type: array + description: Where the feedback will be sent, e.g. to Glean, the user's company, or both. If no channels are specified, feedback will go only to Glean. + items: + type: string + enum: + - COMPANY + - GLEAN + url: + type: string + description: The URL the client was at when the feedback event triggered. + uiTree: + description: The UI element tree associated with the event, if any. + items: + type: string + type: array + uiElement: + type: string + description: The UI element associated with the event, if any. + manualFeedbackInfo: + $ref: "#/components/schemas/ManualFeedbackInfo" + manualFeedbackSideBySideInfo: + $ref: "#/components/schemas/ManualFeedbackSideBySideInfo" + seenFeedbackInfo: + $ref: "#/components/schemas/SeenFeedbackInfo" + userViewInfo: + $ref: "#/components/schemas/UserViewInfo" + workflowFeedbackInfo: + $ref: "#/components/schemas/WorkflowFeedbackInfo" + applicationId: + type: string + description: The application ID of the client that sent the feedback event. + agentId: + type: string + description: The agent ID of the client that sent the feedback event. + example: + trackingTokens: + - trackingTokens + event: VIEW + StructuredTextMutableProperties: + required: + - text + properties: + text: + type: string + example: From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. + ConnectorType: + type: string + description: The source from which document content was pulled, e.g. an API crawl or browser history + enum: + - API_CRAWL + - BROWSER_CRAWL + - BROWSER_HISTORY + - BUILTIN + - FEDERATED_SEARCH + - PUSH_API + - WEB_CRAWL + - NATIVE_HISTORY + DocumentContent: + properties: + fullTextList: + type: array + items: + type: string + description: The plaintext content of the document. + Document: + properties: + id: + type: string + description: The Glean Document ID. + datasource: + type: string + description: The app or other repository type from which the document was extracted + connectorType: + $ref: "#/components/schemas/ConnectorType" + docType: + type: string + description: The datasource-specific type of the document (e.g. for Jira issues, this is the issue type such as Bug or Feature Request). + content: + $ref: "#/components/schemas/DocumentContent" + containerDocument: + $ref: "#/components/schemas/Document" + parentDocument: + $ref: "#/components/schemas/Document" + title: + type: string + description: The title of the document. + url: + type: string + description: A permalink for the document. + metadata: + $ref: "#/components/schemas/DocumentMetadata" + sections: + type: array + description: A list of content sub-sections in the document, e.g. text blocks with different headings in a Drive doc or Confluence page. + items: + $ref: "#/components/schemas/DocumentSection" + SearchProviderInfo: + properties: + name: + type: string + description: Name of the search provider. + logoUrl: + type: string + description: URL to the provider's logo. + searchLinkUrlTemplate: + type: string + description: URL template that can be used to perform the suggested search by replacing the {query} placeholder with the query suggestion. + example: + name: Google + logo: https://app.glean.com/images/feather/globe.svg + searchLinkUrlTemplate: https://www.google.com/search?q={query}&hl=en + ResultTab: + properties: + id: + type: string + description: The unique ID of the tab. Can be passed in a search request to get results for that tab. + count: + type: integer + description: The number of results in this tab for the current query. + datasource: + type: string + description: The datasource associated with the tab, if any. + datasourceInstance: + type: string + description: The datasource instance associated with the tab, if any. + FacetFilterValue: + properties: + value: + type: string + example: Spreadsheet + relationType: + type: string + enum: + - EQUALS + - ID_EQUALS + - LT + - GT + - NOT_EQUALS + x-enumDescriptions: + EQUALS: The value is equal to the specified value. + ID_EQUALS: The value is equal to the specified ID. + LT: The value is less than the specified value. + GT: The value is greater than the specified value. + NOT_EQUALS: The value is not equal to the specified value. + example: EQUALS + x-speakeasy-enum-descriptions: + EQUALS: The value is equal to the specified value. + ID_EQUALS: The value is equal to the specified ID. + LT: The value is less than the specified value. + GT: The value is greater than the specified value. + NOT_EQUALS: The value is not equal to the specified value. + isNegated: + type: boolean + deprecated: true + description: DEPRECATED - please use relationType instead + x-glean-deprecated: + id: 75a48c79-b36a-4171-a0a0-4af7189da66e + introduced: "2026-02-05" + message: Use relationType instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use relationType instead" + FacetFilter: + properties: + fieldName: + type: string + example: owner + values: + type: array + items: + $ref: "#/components/schemas/FacetFilterValue" + description: Within a single FacetFilter, the values are to be treated like an OR. For example, fieldName type with values [EQUALS Presentation, EQUALS Spreadsheet] means we want to show a document if it's a Presentation OR a Spreadsheet. + groupName: + type: string + example: Spreadsheet + description: Indicates the value of a facet, if any, that the given facet is grouped under. This is only used for nested facets, for example, fieldName could be owner and groupName would be Spreadsheet if showing all owners for spreadsheets as a nested facet. + example: + fieldName: type + values: + - value: Spreadsheet + relationType: EQUALS + - value: Presentation + relationType: EQUALS + FacetFilterSet: + properties: + filters: + type: array + items: + $ref: "#/components/schemas/FacetFilter" + description: Within a single FacetFilterSet, the filters are treated as AND. For example, owner Sumeet and type Spreadsheet shows documents that are by Sumeet AND are Spreadsheets. + FacetBucketFilter: + properties: + facet: + type: string + description: The facet whose buckets should be filtered. + prefix: + type: string + description: The per-term prefix that facet buckets should be filtered on. + AuthToken: + required: + - accessToken + - datasource + properties: + accessToken: + type: string + datasource: + type: string + scope: + type: string + tokenType: + type: string + authUser: + description: Used by Google to indicate the index of the logged in user. Useful for generating hyperlinks that support multilogin. + type: string + expiration: + description: Unix timestamp when this token expires (in seconds since epoch UTC). + type: integer + format: int64 + example: + accessToken: 123abc + datasource: gmail + scope: email profile https://www.googleapis.com/auth/gmail.readonly + tokenType: Bearer + authUser: "1" + DocumentSpec: + x-multiple-discriminators: true + oneOf: + - type: object + required: + - url + properties: + url: + type: string + x-discriminator: true + description: The URL of the document. + - type: object + required: + - id + properties: + id: + type: string + x-discriminator: true + description: The ID of the document. + - type: object + required: + - contentId + - ugcType + properties: + ugcType: + type: string + enum: + - ANNOUNCEMENTS + - ANSWERS + - COLLECTIONS + - SHORTCUTS + - CHATS + description: The type of the user generated content (UGC datasource). + contentId: + type: integer + x-discriminator: true + description: The numeric id for user generated content. Used for ANNOUNCEMENTS, ANSWERS, COLLECTIONS, SHORTCUTS. + docType: + type: string + description: The specific type of the user generated content type. + - type: object + required: + - ugcType + - ugcId + properties: + ugcType: + type: string + enum: + - ANNOUNCEMENTS + - ANSWERS + - ARTIFACTS + - COLLECTIONS + - SHORTCUTS + - CHATS + description: The type of the user generated content (UGC datasource). + ugcId: + type: string + x-discriminator: true + description: The string id for user generated content. Used for CHATS. + docType: + type: string + description: The specific type of the user generated content type. + RestrictionFilters: + properties: + containerSpecs: + description: "Specifications for containers that should be used as part of the restriction (include/exclude). Memberships are recursively defined for a subset of datasources (currently: SharePoint, OneDrive, Google Drive, and Confluence). Please contact the Glean team to enable this for more datasources. Recursive memberships do not apply for Collections." + type: array + items: + $ref: "#/components/schemas/DocumentSpec" + SearchRequestOptions: + required: + - facetBucketSize + properties: + datasourceFilter: + type: string + description: Filter results to a single datasource name (e.g. gmail, slack). All results are returned if missing. + datasourcesFilter: + type: array + items: + type: string + description: Filter results to one or more datasources (e.g. gmail, slack). All results are returned if missing. + queryOverridesFacetFilters: + type: boolean + description: If true, the operators in the query are taken to override any operators in facetFilters in the case of conflict. This is used to correctly set rewrittenFacetFilters and rewrittenQuery. + facetFilters: + type: array + items: + $ref: "#/components/schemas/FacetFilter" + description: A list of filters for the query. An AND is assumed between different facetFilters. For example, owner Sumeet and type Spreadsheet shows documents that are by Sumeet AND are Spreadsheets. + facetFilterSets: + type: array + items: + $ref: "#/components/schemas/FacetFilterSet" + description: A list of facet filter sets that will be OR'ed together. SearchRequestOptions where both facetFilterSets and facetFilters set are considered as bad request. Callers should set only one of these fields. + facetBucketFilter: + $ref: "#/components/schemas/FacetBucketFilter" + facetBucketSize: + type: integer + description: The maximum number of FacetBuckets to return in each FacetResult. + defaultFacets: + type: array + items: + type: string + description: Facets for which FacetResults should be fetched and that don't apply to a particular datasource. If specified, these values will replace the standard default facets (last_updated_at, from, etc.). The requested facets will be returned alongside datasource-specific facets if searching a single datasource. + authTokens: + type: array + description: Auth tokens which may be used for non-indexed, federated results (e.g. Gmail). + items: + $ref: "#/components/schemas/AuthToken" + fetchAllDatasourceCounts: + type: boolean + description: Hints that the QE should return result counts (via the datasource facet result) for all supported datasources, rather than just those specified in the datasource[s]Filter + responseHints: + type: array + description: Array of hints containing which fields should be populated in the response. + items: + type: string + description: Hints for the response content. + x-enumDescriptions: + ALL_RESULT_COUNTS: Return result counts for each result set which has non-zero results, even when the request itself is limited to a subset. + FACET_RESULTS: Return only facet results. + QUERY_METADATA: Returns result counts for each result set which has non-zero results, as well as other information about the search such as suggested spelling corrections. + RESULTS: Return search result documents. + SPELLCHECK_METADATA: Return metadata pertaining to spellcheck results. + enum: + - ALL_RESULT_COUNTS + - FACET_RESULTS + - QUERY_METADATA + - RESULTS + - SPELLCHECK_METADATA + x-speakeasy-enum-descriptions: + ALL_RESULT_COUNTS: Return result counts for each result set which has non-zero results, even when the request itself is limited to a subset. + FACET_RESULTS: Return only facet results. + QUERY_METADATA: Returns result counts for each result set which has non-zero results, as well as other information about the search such as suggested spelling corrections. + RESULTS: Return search result documents. + SPELLCHECK_METADATA: Return metadata pertaining to spellcheck results. + timezoneOffset: + type: integer + description: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. + disableSpellcheck: + type: boolean + description: Whether or not to disable spellcheck. + disableQueryAutocorrect: + type: boolean + description: Disables automatic adjustment of the input query for spelling corrections or other reasons. + returnLlmContentOverSnippets: + type: boolean + description: Enables expanded content to be returned for LLM usage. The size of content per result returned should be modified using maxSnippetSize. Server may return less or more than what is specified in maxSnippetSize. For more details, see https://developers.glean.com/guides/search/llm-content. + inclusions: + $ref: "#/components/schemas/RestrictionFilters" + description: A list of filters which restrict the search results to only the specified content. + exclusions: + $ref: "#/components/schemas/RestrictionFilters" + description: A list of filters specifying content to avoid getting search results from. Exclusions take precendence over inclusions and other query parameters, such as search operators and search facets. + example: + datasourceFilter: JIRA + datasourcesFilter: + - JIRA + queryOverridesFacetFilters: true + facetFilters: + - fieldName: fieldName + values: + - fieldValues + - fieldValues + - fieldName: fieldName + values: + - fieldValues + - fieldValues + TextRange: + required: + - startIndex + description: A subsection of a given string to which some special formatting should be applied. + properties: + startIndex: + type: integer + description: The inclusive start index of the range. + endIndex: + type: integer + description: The exclusive end index of the range. + type: + type: string + enum: + - BOLD + - CITATION + - HIGHLIGHT + - LINK + url: + type: string + description: The URL associated with the range, if applicable. For example, the linked URL for a LINK range. + document: + $ref: "#/components/schemas/Document" + description: A document corresponding to the range, if applicable. For example, the cited document for a CITATION range. + SearchRequestInputDetails: + properties: + hasCopyPaste: + type: boolean + description: Whether the associated query was at least partially copy-pasted. If subsequent requests are issued after a copy-pasted query is constructed (e.g. with facet modifications), this bit should continue to be set for those requests. + example: + hasCopyPaste: true + QuerySuggestion: + required: + - query + properties: + missingTerm: + type: string + description: A query term missing from the original query on which this suggestion is based. + query: + type: string + description: The query being suggested (e.g. enforcing the missing term from the original query). + searchProviderInfo: + $ref: "#/components/schemas/SearchProviderInfo" + description: Information about the search provider that generated this suggestion. + label: + type: string + description: A user-facing description to display for the suggestion. + datasource: + type: string + description: The datasource associated with the suggestion. + resultTab: + $ref: "#/components/schemas/ResultTab" + description: The result tab associated with the suggestion. + requestOptions: + $ref: "#/components/schemas/SearchRequestOptions" + ranges: + type: array + items: + $ref: "#/components/schemas/TextRange" + description: The bolded ranges within the query of the QuerySuggestion. + inputDetails: + $ref: "#/components/schemas/SearchRequestInputDetails" + example: + query: app:github type:pull author:mortimer + label: Mortimer's PRs + datasource: github + Person: + required: + - name + - obfuscatedId + properties: + name: + type: string + description: The display name. + obfuscatedId: + type: string + description: An opaque identifier that can be used to request metadata for a Person. + relatedDocuments: + type: array + items: + $ref: "#/components/schemas/RelatedDocuments" + description: A list of documents related to this person. + metadata: + $ref: "#/components/schemas/PersonMetadata" + example: + name: George Clooney + obfuscatedId: abc123 + Company: + required: + - name + properties: + name: + type: string + description: User-friendly display name. + profileUrl: + type: string + description: Link to internal company company profile. + websiteUrls: + type: array + description: Link to company's associated websites. + items: + type: string + logoUrl: + type: string + description: The URL of the company's logo. Public, Glean-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). + location: + type: string + description: User facing string representing the company's location. + example: New York City + phone: + type: string + description: Phone number as a number string. + fax: + type: string + description: Fax number as a number string. + industry: + type: string + description: User facing string representing the company's industry. + example: Finances + annualRevenue: + type: number + format: double + description: Average company's annual revenue for reference. + numberOfEmployees: + type: integer + format: int64 + description: Average company's number of employees for reference. + stockSymbol: + type: string + description: Company's stock symbol if company is public. + foundedDate: + type: string + format: date + description: The date when the company was founded. + about: + type: string + description: User facing description of company. + example: Financial, software, data, and media company headquartered in Midtown Manhattan, New York City + DocumentCounts: + type: object + description: A map of {string, int} pairs representing counts of each document type associated with this customer. + additionalProperties: + type: integer + CustomDataValue: + properties: + displayLabel: + type: string + stringValue: + type: string + stringListValue: + type: array + description: list of strings for multi-value properties + items: + type: string + numberValue: + type: number + booleanValue: + type: boolean + CustomData: + type: object + description: Custom fields specific to individual datasources + additionalProperties: + $ref: "#/components/schemas/CustomDataValue" + CustomerMetadata: + properties: + datasourceId: + type: string + description: The user visible id of the salesforce customer account. + customData: + $ref: "#/components/schemas/CustomData" + Customer: + required: + - id + - company + properties: + id: + type: string + description: Unique identifier. + domains: + type: array + description: Link to company's associated website domains. + items: + type: string + company: + $ref: "#/components/schemas/Company" + documentCounts: + $ref: "#/components/schemas/DocumentCounts" + poc: + type: array + description: A list of POC for company. + items: + $ref: "#/components/schemas/Person" + metadata: + $ref: "#/components/schemas/CustomerMetadata" + mergedCustomers: + type: array + description: A list of Customers. + items: + $ref: "#/components/schemas/Customer" + startDate: + type: string + format: date + description: The date when the interaction with customer started. + contractAnnualRevenue: + type: number + format: double + description: Average contract annual revenue with that customer. + notes: + type: string + description: User facing (potentially generated) notes about company. + example: CIO is interested in trying out the product. + RelatedObject: + required: + - id + properties: + id: + type: string + description: The ID of the related object + metadata: + type: object + description: Some metadata of the object which can be displayed, while not having the actual object. + properties: + name: + type: string + description: Placeholder name of the object, not the relationship. + RelatedObjectEdge: + properties: + objects: + type: array + items: + $ref: "#/components/schemas/RelatedObject" + RelatedObjects: + properties: + relatedObjects: + type: object + description: A list of objects related to a source object. + additionalProperties: + $ref: "#/components/schemas/RelatedObjectEdge" + ScopeType: + type: string + description: Describes the scope for a ReadPermission, WritePermission, or GrantPermission object + enum: + - GLOBAL + - OWN + WritePermission: + description: Describes the write permissions levels that a user has for a specific feature + properties: + scopeType: + $ref: "#/components/schemas/ScopeType" + create: + type: boolean + description: True if user has create permission for this feature and scope + update: + type: boolean + description: True if user has update permission for this feature and scope + delete: + type: boolean + description: True if user has delete permission for this feature and scope + ObjectPermissions: + properties: + write: + $ref: "#/components/schemas/WritePermission" + PermissionedObject: + properties: + permissions: + $ref: "#/components/schemas/ObjectPermissions" + description: The permissions the current viewer has with respect to a particular object. + PersonToTeamRelationship: + required: + - person + type: object + description: Metadata about the relationship of a person to a team. + properties: + person: + $ref: "#/components/schemas/Person" + relationship: + type: string + description: The team member's relationship to the team. This defaults to MEMBER if not set. + default: MEMBER + enum: + - MEMBER + - MANAGER + - LEAD + - POINT_OF_CONTACT + - OTHER + customRelationshipStr: + type: string + description: Displayed name for the relationship if relationship is set to `OTHER`. + joinDate: + type: string + format: date-time + description: The team member's start date + TeamEmail: + properties: + email: + type: string + format: email + description: An email address + type: + type: string + default: OTHER + description: An enum of `PRIMARY`, `SECONDARY`, `ONCALL`, `OTHER` + type: object + required: + - email + - type + description: Information about a team's email + CustomFieldValueStr: + properties: + strText: + type: string + description: Text field for string value. + CustomFieldValueHyperlink: + properties: + urlAnchor: + type: string + description: Anchor text for hyperlink. + urlLink: + type: string + description: Link for this URL. + CustomFieldValuePerson: + properties: + person: + $ref: "#/components/schemas/Person" + CustomFieldValue: + oneOf: + - $ref: "#/components/schemas/CustomFieldValueStr" + - $ref: "#/components/schemas/CustomFieldValueHyperlink" + - $ref: "#/components/schemas/CustomFieldValuePerson" + CustomFieldData: + required: + - label + - values + - displayable + properties: + label: + type: string + description: A user-facing label for this field. + values: + type: array + items: + $ref: "#/components/schemas/CustomFieldValue" + displayable: + type: boolean + description: Determines whether the client should display this custom field + default: true + DatasourceProfile: + required: + - datasource + - handle + properties: + datasource: + type: string + example: github + description: The datasource the profile is of. + handle: + type: string + description: The display name of the entity in the given datasource. + url: + type: string + description: URL to view the entity's profile. + nativeAppUrl: + type: string + description: A deep link, if available, into the datasource's native application for the entity's platform (i.e. slack://...). + isUserGenerated: + type: boolean + description: For internal use only. True iff the data source profile was manually added by a user from within Glean (aka not from the original data source) + Team: + allOf: + - $ref: "#/components/schemas/RelatedObjects" + - $ref: "#/components/schemas/PermissionedObject" + - type: object + required: + - id + - name + properties: + id: + type: string + description: Unique identifier + name: + type: string + description: Team name + description: + type: string + description: A description of the team + businessUnit: + type: string + description: Typically the highest level organizational unit; generally applies to bigger companies with multiple distinct businesses. + department: + type: string + description: An organizational unit where everyone has a similar task, e.g. `Engineering`. + photoUrl: + type: string + format: url + description: A link to the team's photo. + bannerUrl: + type: string + format: url + description: A link to the team's banner photo. + externalLink: + type: string + format: uri + description: Link to a team page on the internet or your company's intranet + members: + type: array + description: The members on this team + items: + $ref: "#/components/schemas/PersonToTeamRelationship" + memberCount: + type: integer + description: Number of members on this team (recursive; includes all individuals that belong to this team, and all individuals that belong to a subteam within this team) + emails: + type: array + description: The emails for this team + items: + $ref: "#/components/schemas/TeamEmail" + customFields: + type: array + description: Customizable fields for additional team information. + items: + $ref: "#/components/schemas/CustomFieldData" + datasourceProfiles: + type: array + description: The datasource profiles of the team + items: + $ref: "#/components/schemas/DatasourceProfile" + datasource: + type: string + description: the data source of the team, e.g. GDRIVE + createdFrom: + type: string + description: For teams created from docs, the doc title. Otherwise empty. + lastUpdatedAt: + type: string + format: date-time + description: when this team was last updated. + status: + type: string + description: whether this team is fully processed or there are still unprocessed operations that'll affect it + default: PROCESSED + enum: + - PROCESSED + - QUEUED_FOR_CREATION + - QUEUED_FOR_DELETION + canBeDeleted: + type: boolean + description: can this team be deleted. Some manually ingested teams like GCS_CSV or PUSH_API cannot + default: true + loggingId: + type: string + description: The logging id of the team used in scrubbed logs, client analytics, and metrics. + CustomEntityMetadata: + properties: + customData: + $ref: "#/components/schemas/CustomData" + GroupType: + type: string + description: The type of user group + enum: + - DEPARTMENT + - ALL + - TEAM + - JOB_TITLE + - ROLE_TYPE + - LOCATION + - REGION + - EXTERNAL_GROUP + Group: + required: + - type + - id + properties: + type: + $ref: "#/components/schemas/GroupType" + id: + type: string + description: A unique identifier for the group. May be the same as name. + name: + type: string + description: Name of the group. + datasourceInstance: + type: string + description: Datasource instance if the group belongs to one e.g. external groups. + provisioningId: + type: string + description: identifier for greenlist provisioning, aka sciokey + UserRole: + type: string + description: A user's role with respect to a specific document. + enum: + - OWNER + - VIEWER + - ANSWER_MODERATOR + - EDITOR + - VERIFIER + UserRoleSpecification: + required: + - role + properties: + sourceDocumentSpec: + $ref: "#/components/schemas/DocumentSpec" + description: The document spec of the object this role originates from. The object this role is included with will usually have the same information as this document spec, but if the role is inherited, then the document spec refers to the parent document that the role came from. + person: + $ref: "#/components/schemas/Person" + group: + $ref: "#/components/schemas/Group" + role: + $ref: "#/components/schemas/UserRole" + CustomEntity: + allOf: + - $ref: "#/components/schemas/PermissionedObject" + - type: object + properties: + id: + type: string + description: Unique identifier. + title: + type: string + description: Title or name of the custom entity. + datasource: + type: string + description: The datasource the custom entity is from. + objectType: + type: string + description: The type of the entity. Interpretation is specific to each datasource + metadata: + $ref: "#/components/schemas/CustomEntityMetadata" + roles: + type: array + description: A list of user roles for the custom entity explicitly granted by the owner. + items: + $ref: "#/components/schemas/UserRoleSpecification" + AnswerId: + properties: + id: + type: integer + description: The opaque ID of the Answer. + example: 3 + AnswerDocId: + properties: + docId: + type: string + description: Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. + example: ANSWERS_answer_3 + AnswerMutableProperties: + properties: + question: + type: string + example: Why is the sky blue? + questionVariations: + type: array + description: Additional ways of phrasing this question. + items: + type: string + bodyText: + type: string + description: The plain text answer to the question. + example: From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. + boardId: + type: integer + description: The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. + deprecated: true + x-glean-deprecated: + id: 3729bc64-8859-4159-b93c-ce2d5f0e7304 + introduced: "2026-02-05" + message: Answer Boards no longer supported + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Answer Boards no longer supported" + audienceFilters: + type: array + description: Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. + items: + $ref: "#/components/schemas/FacetFilter" + addedRoles: + type: array + description: A list of user roles for the answer added by the owner. + items: + $ref: "#/components/schemas/UserRoleSpecification" + removedRoles: + type: array + description: A list of user roles for the answer removed by the owner. + items: + $ref: "#/components/schemas/UserRoleSpecification" + roles: + type: array + description: A list of roles for this answer explicitly granted by an owner, editor, or admin. + items: + $ref: "#/components/schemas/UserRoleSpecification" + sourceDocumentSpec: + $ref: "#/components/schemas/DocumentSpec" + sourceType: + type: string + enum: + - DOCUMENT + - ASSISTANT + UgcTrackingSignals: + type: object + properties: + trackingToken: + type: string + description: An opaque token that represents this particular UGC. To be used for `/feedback` reporting. + StructuredText: + allOf: + - $ref: "#/components/schemas/StructuredTextMutableProperties" + - type: object + properties: + structuredList: + type: array + items: + $ref: "#/components/schemas/StructuredTextItem" + description: An array of objects each of which contains either a string or a link which optionally corresponds to a document. + AnswerLike: + properties: + user: + $ref: "#/components/schemas/Person" + createTime: + type: string + format: date-time + description: The time the user liked the answer in ISO format (ISO 8601). + AnswerLikes: + required: + - likedBy + - likedByUser + - numLikes + properties: + likedBy: + type: array + items: + $ref: "#/components/schemas/AnswerLike" + likedByUser: + type: boolean + description: Whether the user in context liked the answer. + numLikes: + type: integer + description: The total number of likes for the answer. + Reminder: + required: + - assignee + - remindAt + properties: + assignee: + $ref: "#/components/schemas/Person" + requestor: + $ref: "#/components/schemas/Person" + remindAt: + type: integer + description: Unix timestamp for when the reminder should trigger (in seconds since epoch UTC). + createdAt: + type: integer + description: Unix timestamp for when the reminder was first created (in seconds since epoch UTC). + reason: + type: string + description: An optional free-text reason for the reminder. This is particularly useful when a reminder is used to ask for verification from another user (for example, "Duplicate", "Incomplete", "Incorrect"). + TimePoint: + properties: + epochSeconds: + type: integer + description: Epoch seconds. Has precedence over daysFromNow. + daysFromNow: + type: integer + description: Number of days in the past, relative to the current date. + Period: + properties: + minDaysFromNow: + type: integer + description: DEPRECATED - The number of days from now in the past to define upper boundary of time period. + deprecated: true + maxDaysFromNow: + type: integer + description: DEPRECATED - The number of days from now in the past to define lower boundary of time period. + deprecated: true + start: + $ref: "#/components/schemas/TimePoint" + end: + $ref: "#/components/schemas/TimePoint" + CountInfo: + required: + - count + properties: + count: + type: integer + description: The counter value + period: + $ref: "#/components/schemas/Period" + org: + type: string + description: The unit of organization over which we did the count aggregation, e.g. org (department) or company + VerificationMetadata: + required: + - documentId + properties: + lastVerifier: + $ref: "#/components/schemas/Person" + lastVerificationTs: + type: integer + description: The unix timestamp of the verification (in seconds since epoch UTC). + expirationTs: + type: integer + description: The unix timestamp of the verification expiration if applicable (in seconds since epoch UTC). + document: + $ref: "#/components/schemas/Document" + reminders: + type: array + items: + $ref: "#/components/schemas/Reminder" + description: Info about all outstanding verification reminders for the document if exists. + lastReminder: + $ref: "#/components/schemas/Reminder" + visitorCount: + type: array + items: + $ref: "#/components/schemas/CountInfo" + description: Number of visitors to the document during included time periods. + candidateVerifiers: + type: array + items: + $ref: "#/components/schemas/Person" + description: List of potential verifiers for the document e.g. old verifiers and/or users with view/edit permissions. + Verification: + required: + - state + properties: + state: + type: string + enum: + - UNVERIFIED + - VERIFIED + - DEPRECATED + description: The verification state for the document. + metadata: + $ref: "#/components/schemas/VerificationMetadata" + CollectionBaseMutableProperties: + required: + - name + properties: + name: + type: string + description: The unique name of the Collection. + description: + type: string + description: A brief summary of the Collection's contents. + addedRoles: + type: array + description: A list of added user roles for the Collection. + items: + $ref: "#/components/schemas/UserRoleSpecification" + removedRoles: + type: array + description: A list of removed user roles for the Collection. + items: + $ref: "#/components/schemas/UserRoleSpecification" + audienceFilters: + type: array + items: + $ref: "#/components/schemas/FacetFilter" + description: Filters which restrict who should see this Collection. Values are taken from the corresponding filters in people search. + Thumbnail: + properties: + photoId: + type: string + description: Photo id if the thumbnail is from splash. + url: + type: string + description: Thumbnail URL. This can be user provided image and/or from downloaded images hosted by Glean. + CollectionMutableProperties: + allOf: + - $ref: "#/components/schemas/CollectionBaseMutableProperties" + - type: object + required: + - name + properties: + icon: + type: string + description: The emoji icon of this Collection. + adminLocked: + type: boolean + description: Indicates whether edits are allowed for everyone or only admins. + parentId: + type: integer + description: The parent of this Collection, or 0 if it's a top-level Collection. + thumbnail: + $ref: "#/components/schemas/Thumbnail" + allowedDatasource: + type: string + description: The datasource type this Collection can hold. + CollectionItemMutableProperties: + properties: + name: + type: string + description: The optional name of the Collection item. + description: + type: string + description: A helpful description of why this CollectionItem is in the Collection that it's in. + icon: + type: string + description: The emoji icon for this CollectionItem. Only used for Text type items. + UserGeneratedContentId: + properties: + id: + type: integer + description: The opaque id of the user generated content. + ShortcutMutableProperties: + properties: + inputAlias: + type: string + description: Link text following go/ prefix as entered by the user. + destinationUrl: + type: string + description: Destination URL for the shortcut. + destinationDocumentId: + type: string + description: Glean Document ID for the URL, if known. + description: + type: string + description: A short, plain text blurb to help people understand the intent of the shortcut. + unlisted: + type: boolean + description: Whether this shortcut is unlisted or not. Unlisted shortcuts are visible to author + admins only. + urlTemplate: + type: string + description: For variable shortcuts, contains the URL template; note, `destinationUrl` contains default URL. + addedRoles: + type: array + description: A list of user roles added for the Shortcut. + items: + $ref: "#/components/schemas/UserRoleSpecification" + removedRoles: + type: array + description: A list of user roles removed for the Shortcut. + items: + $ref: "#/components/schemas/UserRoleSpecification" + ShortcutMetadata: + properties: + createdBy: + $ref: "#/components/schemas/Person" + createTime: + type: string + format: date-time + description: The time the shortcut was created in ISO format (ISO 8601). + updatedBy: + $ref: "#/components/schemas/Person" + updateTime: + type: string + format: date-time + description: The time the shortcut was updated in ISO format (ISO 8601). + destinationDocument: + $ref: "#/components/schemas/Document" + description: Document that corresponds to the destination URL, if applicable. + intermediateUrl: + type: string + description: The URL from which the user is then redirected to the destination URL. Full replacement for https://go/. + viewPrefix: + type: string + description: The part of the shortcut preceding the input alias when used for showing shortcuts to users. Should end with "/". e.g. "go/" for native shortcuts. + isExternal: + type: boolean + description: Indicates whether a shortcut is native or external. + editUrl: + type: string + description: The URL using which the user can access the edit page of the shortcut. + Shortcut: + allOf: + - $ref: "#/components/schemas/UserGeneratedContentId" + - $ref: "#/components/schemas/ShortcutMutableProperties" + - $ref: "#/components/schemas/PermissionedObject" + - $ref: "#/components/schemas/ShortcutMetadata" + - type: object + required: + - inputAlias + properties: + alias: + type: string + description: canonical link text following go/ prefix where hyphen/underscore is removed. + title: + type: string + description: Title for the Go Link + roles: + type: array + description: A list of user roles for the Go Link. + items: + $ref: "#/components/schemas/UserRoleSpecification" + Collection: + allOf: + - $ref: "#/components/schemas/CollectionMutableProperties" + - $ref: "#/components/schemas/PermissionedObject" + - $ref: "#/components/schemas/UgcTrackingSignals" + - type: object + required: + - id + - description + properties: + id: + type: integer + description: The unique ID of the Collection. + createTime: + type: string + format: date-time + updateTime: + type: string + format: date-time + creator: + $ref: "#/components/schemas/Person" + updatedBy: + $ref: "#/components/schemas/Person" + itemCount: + type: integer + description: The number of items currently in the Collection. Separated from the actual items so we can grab the count without items. + childCount: + type: integer + description: The number of children Collections. Separated from the actual children so we can grab the count without children. items: - $ref: "#/components/schemas/ProcessingHistoryEvent" - DebugUserRequest: - type: object - description: Describes the request body of the /debug/{datasource}/user API call - properties: - email: - type: string - description: Email ID of the user to get the status for - example: u1@foo.com - required: - - email - DebugUserResponse: - type: object - description: Describes the response body of the /debug/{datasource}/user API call - properties: - status: - type: object - description: Upload and indexing status of the user - $ref: "#/components/schemas/UserStatusResponse" - uploadedGroups: - type: array - description: List of groups the user is a member of, as uploaded via permissions API. - items: - $ref: "#/components/schemas/DatasourceGroupDefinition" - UserStatusResponse: + type: array + items: + $ref: "#/components/schemas/CollectionItem" + description: The items in this Collection. + pinMetadata: + $ref: "#/components/schemas/CollectionPinnedMetadata" + description: Metadata having what categories this Collection is pinned to and the eligible categories to pin to + shortcuts: + type: array + items: + type: string + description: The names of the shortcuts (Go Links) that point to this Collection. + children: + type: array + items: + $ref: "#/components/schemas/Collection" + description: The children Collections of this Collection. + roles: + type: array + description: A list of user roles for the Collection. + items: + $ref: "#/components/schemas/UserRoleSpecification" + CollectionItem: + allOf: + - $ref: "#/components/schemas/CollectionItemMutableProperties" + - type: object + required: + - collectionId + - itemType + properties: + collectionId: + type: integer + description: The Collection ID of the Collection that this CollectionItem belongs in. + documentId: + type: string + description: If this CollectionItem is indexed, the Glean Document ID of that document. + url: + type: string + description: The URL of this CollectionItem. + itemId: + type: string + description: Unique identifier for the item within the Collection it belongs to. + createdBy: + $ref: "#/components/schemas/Person" + description: The person who added this Collection item. + createdAt: + type: string + format: date-time + description: Unix timestamp for when the item was first added (in seconds since epoch UTC). + document: + $ref: "#/components/schemas/Document" + description: The Document this CollectionItem corresponds to (omitted if item is a non-indexed URL). + shortcut: + $ref: "#/components/schemas/Shortcut" + description: The Shortcut this CollectionItem corresponds to (only included if item URL is for a Go Link). + collection: + $ref: "#/components/schemas/Collection" + description: The Collection this CollectionItem corresponds to (only included if item type is COLLECTION). + itemType: + type: string + enum: + - DOCUMENT + - TEXT + - URL + - COLLECTION + CollectionPinnableCategories: + type: string + description: Categories a Collection can be pinned to. + enum: + - COMPANY_RESOURCE + - DEPARTMENT_RESOURCE + - TEAM_RESOURCE + CollectionPinnableTargets: + type: string + description: What targets can a Collection be pinned to. + enum: + - RESOURCE_CARD + - TEAM_PROFILE_PAGE + CollectionPinTarget: + required: + - category + properties: + category: + $ref: "#/components/schemas/CollectionPinnableCategories" + value: + type: string + description: Optional. If category supports values, then the additional value for the category e.g. department name for DEPARTMENT_RESOURCE, team name/id for TEAM_RESOURCE and so on. + target: + $ref: "#/components/schemas/CollectionPinnableTargets" + CollectionPinMetadata: + required: + - id + - target + properties: + id: + type: integer + description: The ID of the Collection. + target: + $ref: "#/components/schemas/CollectionPinTarget" + CollectionPinnedMetadata: + properties: + existingPins: + type: array + items: + $ref: "#/components/schemas/CollectionPinTarget" + description: List of targets this Collection is pinned to. + eligiblePins: + type: array + items: + $ref: "#/components/schemas/CollectionPinMetadata" + description: List of targets this Collection can be pinned to, excluding the targets this Collection is already pinned to. We also include Collection ID already is pinned to each eligible target, which will be 0 if the target has no pinned Collection. + Answer: + allOf: + - $ref: "#/components/schemas/AnswerId" + - $ref: "#/components/schemas/AnswerDocId" + - $ref: "#/components/schemas/AnswerMutableProperties" + - $ref: "#/components/schemas/PermissionedObject" + - $ref: "#/components/schemas/UgcTrackingSignals" + - type: object + required: + - id + properties: + combinedAnswerText: + $ref: "#/components/schemas/StructuredText" + likes: + $ref: "#/components/schemas/AnswerLikes" + author: + $ref: "#/components/schemas/Person" + createTime: + type: string + format: date-time + description: The time the answer was created in ISO format (ISO 8601). + updateTime: + type: string + format: date-time + description: The time the answer was last updated in ISO format (ISO 8601). + updatedBy: + $ref: "#/components/schemas/Person" + verification: + $ref: "#/components/schemas/Verification" + collections: + type: array + description: The collections to which the answer belongs. + items: + $ref: "#/components/schemas/Collection" + documentCategory: + type: string + description: The document's document_category(.proto). + sourceDocument: + $ref: "#/components/schemas/Document" + FollowupAction: + description: A follow-up action that can be invoked by the user after a response. The action parameters are not included and need to be predicted/filled separately. + properties: + actionRunId: + type: string + description: Unique identifier for this actionRun recommendation event. + actionInstanceId: + type: string + description: The ID of the action instance that will be invoked. + actionId: + type: string + description: The ID of the associated action. + parameters: + type: object + description: Map of assistant predicted parameters and their corresponding values. + additionalProperties: + type: string + recommendationText: + type: string + description: Text to be displayed to the user when recommending the action instance. + actionLabel: + type: string + description: The label to be used when displaying a button to execute this action instance. + userConfirmationRequired: + type: boolean + description: Whether user confirmation is needed before executing this action instance. + GeneratedQna: + properties: + question: + type: string + description: Search query rephrased into a question. + answer: + type: string + description: Answer generated for the given query or the generated question. + followUpPrompts: + type: array + items: + type: string + description: List of all follow-up prompts generated for the given query or the generated question. + followupActions: + description: List of follow-up actions generated for the given query or the generated question. + type: array + items: + $ref: "#/components/schemas/FollowupAction" + ranges: + type: array + items: + $ref: "#/components/schemas/TextRange" + description: Answer subsections to mark with special formatting (citations, bolding etc) + status: + type: string + enum: + - COMPUTING + - DISABLED + - FAILED + - NO_ANSWER + - SKIPPED + - STREAMING + - SUCCEEDED + - TIMEOUT + description: Status of backend generating the answer + cursor: + type: string + description: An opaque cursor representing the search request + trackingToken: + type: string + description: An opaque token that represents this particular result in this particular query. To be used for /feedback reporting. + SearchResult: + required: + - url + allOf: + - $ref: "#/components/schemas/Result" + - type: object + properties: + document: + $ref: "#/components/schemas/Document" + title: + type: string + url: + type: string + nativeAppUrl: + type: string + description: A deep link, if available, into the datasource's native application for the user's platform (e.g. slack://...). + snippets: + type: array + items: + $ref: "#/components/schemas/SearchResultSnippet" + description: Text content from the result document which contains search query terms, if available. + fullText: + type: string + description: The full body text of the result if not already contained in the snippets. Only populated for conversation results (e.g. results from a messaging app such as Slack). + fullTextList: + type: array + description: The full body text of the result if not already contained in the snippets; each item in the array represents a separate line in the original text. Only populated for conversation results (e.g. results from a messaging app such as Slack). + items: + type: string + relatedResults: + type: array + items: + $ref: "#/components/schemas/RelatedDocuments" + description: A list of results related to this search result. Eg. for conversation results it contains individual messages from the conversation document which will be shown on SERP. + clusteredResults: + type: array + description: A list of results that should be displayed as associated with this result. + items: + $ref: "#/components/schemas/SearchResult" + allClusteredResults: + type: array + description: A list of results that should be displayed as associated with this result. + items: + $ref: "#/components/schemas/ClusterGroup" + attachmentCount: + type: integer + description: The total number of attachments. + attachments: + type: array + description: A (potentially partial) list of results representing documents attached to the main result document. + items: + $ref: "#/components/schemas/SearchResult" + backlinkResults: + type: array + description: A list of results that should be displayed as backlinks of this result in reverse chronological order. + items: + $ref: "#/components/schemas/SearchResult" + clusterType: + $ref: "#/components/schemas/ClusterTypeEnum" + mustIncludeSuggestions: + $ref: "#/components/schemas/QuerySuggestionList" + querySuggestion: + $ref: "#/components/schemas/QuerySuggestion" + prominence: + $ref: "#/components/schemas/SearchResultProminenceEnum" + attachmentContext: + type: string + description: Additional context for the relationship between the result and the document it's attached to. + pins: + type: array + description: A list of pins associated with this search result. + items: + $ref: "#/components/schemas/PinDocument" + example: + snippets: + - snippet: snippet + mimeType: mimeType + metadata: + container: container + createTime: "2000-01-23T04:56:07.000Z" + datasource: datasource + author: + name: name + documentId: documentId + updateTime: "2000-01-23T04:56:07.000Z" + mimeType: mimeType + objectType: objectType + title: title + url: https://example.com/foo/bar + nativeAppUrl: slack://foo/bar + mustIncludeSuggestions: + - missingTerm: container + query: container + ExtractedQnA: + properties: + heading: + type: string + description: Heading text that was matched to produce this result. + question: + type: string + description: Question text that was matched to produce this result. + questionResult: + $ref: "#/components/schemas/SearchResult" + CalendarAttendee: + required: + - person + properties: + isOrganizer: + type: boolean + description: Whether or not this attendee is an organizer. + isInGroup: + type: boolean + description: Whether or not this attendee is in a group. Needed temporarily at least to support both flat attendees and tree for compatibility. + person: + $ref: "#/components/schemas/Person" + groupAttendees: + type: array + description: If this attendee is a group, represents the list of individual attendees in the group. + items: + $ref: "#/components/schemas/CalendarAttendee" + responseStatus: + type: string + enum: + - ACCEPTED + - DECLINED + - NO_RESPONSE + - TENTATIVE + CalendarAttendees: + properties: + people: + type: array + items: + $ref: "#/components/schemas/CalendarAttendee" + description: Full details of some of the attendees of this event + isLimit: + type: boolean + description: Whether the total count of the people returned is at the retrieval limit. + total: + type: integer + description: Total number of attendees in this event. + numAccepted: + type: integer + description: Total number of attendees who have accepted this event. + numDeclined: + type: integer + description: Total number of attendees who have declined this event. + numNoResponse: + type: integer + description: Total number of attendees who have not responded to this event. + numTentative: + type: integer + description: Total number of attendees who have responded tentatively (i.e. responded maybe) to this event. + Meeting: + properties: + id: + type: string + title: + type: string + description: + type: string + url: + type: string + startTime: + type: string + format: date-time + endTime: + type: string + format: date-time + attendees: + $ref: "#/components/schemas/CalendarAttendees" + description: The attendee list, including their response status + isCancelled: + type: boolean + description: Whether the meeting has been cancelled + location: + type: string + description: The location/venue of the meeting + responseStatus: + type: string + description: The current user's response status (accepted, declined, tentativelyAccepted, none) + conferenceUri: + type: string + description: The meeting join link (Teams, Zoom, etc.) + conferenceProvider: + type: string + description: The conference provider (e.g., "Microsoft Teams", "Zoom") + AppResult: + required: + - datasource + properties: + datasource: + type: string + description: The app or other repository type this represents + docType: + type: string + description: The datasource-specific type of the document (e.g. for Jira issues, this is the issue type such as Bug or Feature Request). + mimeType: + type: string + description: Mimetype is used to differentiate between sub applications from a datasource (e.g. Sheets, Docs from Gdrive) + iconUrl: + type: string + description: If there is available icon URL. + CodeLine: + properties: + lineNumber: + type: integer + content: + type: string + ranges: + type: array + items: + $ref: "#/components/schemas/TextRange" + description: Index ranges depicting matched sections of the line + Code: + properties: + repoName: + type: string + fileName: + type: string + fileUrl: + type: string + lines: + type: array + items: + $ref: "#/components/schemas/CodeLine" + isLastMatch: + type: boolean + description: Last file match for a repo + example: + repoName: scio + fileName: README.md + matches: + - lineNumber: 1 + content: Welcome to the beginning + ranges: [] + - lineNumber: 2 + content: Second line of the file + ranges: [] + - lineNumber: 3 + content: hello world hello world + ranges: + - startindex: 0 + endIndex: 5 + - startIndex: 12 + endIndex: 17 + QuerySuggestionList: + properties: + suggestions: + type: array + items: + $ref: "#/components/schemas/QuerySuggestion" + person: + $ref: "#/components/schemas/Person" + IconConfig: + description: Defines how to render an icon + properties: + generatedBackgroundColorKey: + type: string + backgroundColor: + type: string + color: + type: string + key: + type: string + iconType: + enum: + - COLLECTION + - CUSTOM + - DATASOURCE + - DATASOURCE_INSTANCE + - FAVICON + - FILE_TYPE + - GENERATED_BACKGROUND + - GLYPH + - MIME_TYPE + - NO_ICON + - PERSON + - REACTIONS + - URL + masked: + type: boolean + description: Whether the icon should be masked based on current theme. + name: + type: string + description: The name of the icon if applicable, e.g. the glyph name for `IconType.GLYPH` icons. + url: + type: string + description: The URL to an image to be displayed if applicable, e.g. the URL for `iconType.URL` icons. + example: + color: "#343CED" + key: person_icon + iconType: GLYPH + name: user + ChatMetadata: + description: Metadata of a Chat a user had with Glean Assistant. This contains no actual conversational content. + properties: + id: + type: string + description: The opaque id of the Chat. + createTime: + type: integer + description: Server Unix timestamp of the creation time (in seconds since epoch UTC). + createdBy: + $ref: "#/components/schemas/Person" + description: The user who created this Chat. + updateTime: + type: integer + description: Server Unix timestamp of the update time (in seconds since epoch UTC). + name: + type: string + description: The name of the Chat. + applicationId: + type: string + description: The ID of the AI App that this Chat is associated to. + applicationName: + type: string + description: The display name of the AI App that this Chat is associated to. + icon: + $ref: "#/components/schemas/IconConfig" + RelatedDocuments: + properties: + relation: + type: string + description: How this document relates to the including entity. + enum: + - ATTACHMENT + - CANONICAL + - CASE + - contact + - CONTACT + - CONVERSATION_MESSAGES + - EXPERT + - FROM + - HIGHLIGHT + - opportunity + - OPPORTUNITY + - RECENT + - SOURCE + - TICKET + - TRANSCRIPT + - WITH + x-enum-varnames: + - ATTACHMENT + - CANONICAL + - CASE + - CONTACT_LOWERCASE + - CONTACT + - CONVERSATION_MESSAGES + - EXPERT + - FROM + - HIGHLIGHT + - OPPORTUNITY_LOWERCASE + - OPPORTUNITY + - RECENT + - SOURCE + - TICKET + - TRANSCRIPT + - WITH + x-enumDescriptions: + CANONICAL: Canonical documents for the entity, such as overview docs, architecture docs elastic. + x-speakeasy-enum-descriptions: + CANONICAL: Canonical documents for the entity, such as overview docs, architecture docs elastic. + associatedEntityId: + type: string + description: Which entity in the response that this entity relates to. Relevant when there are multiple entities associated with the response (such as merged customers) + querySuggestion: + $ref: "#/components/schemas/QuerySuggestion" + documents: + type: array + items: + $ref: "#/components/schemas/Document" + description: A truncated list of documents with this relation. TO BE DEPRECATED. + deprecated: true + x-glean-deprecated: + id: 68de0429-b0cc-4b40-8061-f848788079a2 + introduced: "2026-02-05" + message: Field is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated" + results: + type: array + items: + $ref: "#/components/schemas/SearchResult" + description: A truncated list of documents associated with this relation. To be used in favor of `documents` because it contains a trackingToken. + RelatedQuestion: + properties: + question: + type: string + description: The text of the related question + answer: + type: string + description: The answer for the related question + ranges: + type: array + items: + $ref: "#/components/schemas/TextRange" + description: Subsections of the answer string to which some special formatting should be applied (eg. bold) + EntityType: + type: string + description: The type of entity. + x-include-enum-class-prefix: true + enum: + - PERSON + - PROJECT + - CUSTOMER + Disambiguation: + type: object + description: A disambiguation between multiple entities with the same name + properties: + name: + type: string + description: Name of the ambiguous entity + id: + type: string + description: The unique id of the entity in the knowledge graph + type: + $ref: "#/components/schemas/EntityType" + SearchResultSnippet: + properties: + mimeType: + type: string + description: The mime type of the snippets, currently either text/plain or text/html. + text: + type: string + description: A matching snippet from the document with no highlights. + snippetTextOrdering: + type: integer + description: Used for sorting based off the snippet's location within all_snippetable_text + ranges: + type: array + items: + $ref: "#/components/schemas/TextRange" + description: The bolded ranges within text. + url: + type: string + description: 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: + 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-includeEmpty: true + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use 'text' field instead" + example: + snippet: snippet + mimeType: mimeType + StructuredResult: + description: A single object that can support any object in the work graph. Only a single object will be populated. + properties: + document: + $ref: "#/components/schemas/Document" + person: + $ref: "#/components/schemas/Person" + customer: + $ref: "#/components/schemas/Customer" + team: + $ref: "#/components/schemas/Team" + customEntity: + $ref: "#/components/schemas/CustomEntity" + answer: + $ref: "#/components/schemas/Answer" + generatedQna: + $ref: "#/components/schemas/GeneratedQna" + extractedQnA: + $ref: "#/components/schemas/ExtractedQnA" + meeting: + $ref: "#/components/schemas/Meeting" + app: + $ref: "#/components/schemas/AppResult" + collection: + $ref: "#/components/schemas/Collection" + code: + $ref: "#/components/schemas/Code" + shortcut: + $ref: "#/components/schemas/Shortcut" + querySuggestions: + $ref: "#/components/schemas/QuerySuggestionList" + chat: + $ref: "#/components/schemas/ChatMetadata" + relatedDocuments: + type: array + items: + $ref: "#/components/schemas/RelatedDocuments" + description: A list of documents related to this structured result. + relatedQuestion: + $ref: "#/components/schemas/RelatedQuestion" + disambiguation: + $ref: "#/components/schemas/Disambiguation" + snippets: + description: Any snippets associated to the populated object. + type: array + items: + $ref: "#/components/schemas/SearchResultSnippet" + trackingToken: + type: string + description: An opaque token that represents this particular result in this particular query. To be used for /feedback reporting. + prominence: + type: string + description: The level of visual distinction that should be given to a result. + x-enumDescriptions: + HERO: A high-confidence result that should feature prominently on the page. + PROMOTED: May not be the best result but should be given additional visual distinction. + STANDARD: Should not be distinct from any other results. + enum: + - HERO + - PROMOTED + - STANDARD + x-speakeasy-enum-descriptions: + HERO: A high-confidence result that should feature prominently on the page. + PROMOTED: May not be the best result but should be given additional visual distinction. + STANDARD: Should not be distinct from any other results. + source: + type: string + description: Source context for this result. Possible values depend on the result type. + enum: + - EXPERT_DETECTION + - ENTITY_NLQ + - CALENDAR_EVENT + - AGENT + Result: + properties: + structuredResults: + type: array + description: An array of entities in the work graph retrieved via a data request. + items: + $ref: "#/components/schemas/StructuredResult" + trackingToken: + type: string + description: An opaque token that represents this particular result in this particular query. To be used for /feedback reporting. + ClusterTypeEnum: + type: string + description: The reason for inclusion of clusteredResults. + enum: + - SIMILAR + - FRESHNESS + - TITLE + - CONTENT + - NONE + - THREAD_REPLY + - THREAD_ROOT + - PREFIX + - SUFFIX + - AUTHOR_PREFIX + - AUTHOR_SUFFIX + ClusterGroup: + required: + - visibleCountHint + properties: + clusteredResults: + type: array + description: A list of results that should be displayed as associated with this result. + items: + $ref: "#/components/schemas/SearchResult" + clusterType: + $ref: "#/components/schemas/ClusterTypeEnum" + visibleCountHint: + type: integer + description: The default number of results to display before truncating and showing a "see more" link + SearchResultProminenceEnum: + type: string + description: | + The level of visual distinction that should be given to a result. + x-enumDescriptions: + HERO: A high-confidence result that should feature prominently on the page. + PROMOTED: May not be the best result but should be given additional visual distinction. + STANDARD: Should not be distinct from any other results. + enum: + - HERO + - PROMOTED + - STANDARD + x-speakeasy-enum-descriptions: + HERO: A high-confidence result that should feature prominently on the page. + PROMOTED: May not be the best result but should be given additional visual distinction. + STANDARD: Should not be distinct from any other results. + PinDocumentMutableProperties: + properties: + queries: + type: array + description: The query strings for which the pinned result will show. + items: + type: string + audienceFilters: + type: array + description: Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. + items: + $ref: "#/components/schemas/FacetFilter" + PinDocument: + allOf: + - $ref: "#/components/schemas/PinDocumentMutableProperties" + - type: object + required: + - documentId + properties: + id: + type: string + description: The opaque id of the pin. + documentId: + type: string + description: The document which should be a pinned result. + audienceFilters: + type: array + description: Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. + items: + $ref: "#/components/schemas/FacetFilter" + attribution: + $ref: "#/components/schemas/Person" + updatedBy: + $ref: "#/components/schemas/Person" + createTime: + type: string + format: date-time + updateTime: + type: string + format: date-time + PersonTeam: + description: Use `id` if you index teams via Glean, and use `name` and `externalLink` if you want to use your own team pages + properties: + id: + type: string + description: Unique identifier + name: + type: string + description: Team name + externalLink: + type: string + format: uri + description: Link to a team page on the internet or your company's intranet + relationship: + type: string + description: The team member's relationship to the team. This defaults to MEMBER if not set. + default: MEMBER + enum: + - MEMBER + - MANAGER + - LEAD + - POINT_OF_CONTACT + - OTHER + joinDate: + type: string + format: date-time + description: The team member's start date + StructuredLocation: + type: object + description: Detailed location with information about country, state, city etc. + properties: + deskLocation: + type: string + description: Desk number. + timezone: + type: string + description: Location's timezone, e.g. UTC, PST. + address: + type: string + description: Office address or name. + city: + type: string + description: Name of the city. + state: + type: string + description: State code. + region: + type: string + description: Region information, e.g. NORAM, APAC. + zipCode: + type: string + description: ZIP Code for the address. + country: + type: string + description: Country name. + countryCode: + type: string + description: Alpha-2 or Alpha-3 ISO 3166 country code, e.g. US or USA. + SocialNetwork: + required: + - name + - profileUrl + properties: + name: + type: string + description: Possible values are "twitter", "linkedin". + profileName: + type: string + description: Human-readable profile name. + profileUrl: + type: string + format: url + description: Link to profile. + PersonDistance: + required: + - name + - obfuscatedId + - distance + properties: + name: + type: string + description: The display name. + obfuscatedId: + type: string + description: An opaque identifier that can be used to request metadata for a Person. + distance: + type: number + format: float + description: Distance to person, refer to PeopleDistance pipeline on interpretation of the value. + CommunicationChannel: + type: string + enum: + - COMMUNICATION_CHANNEL_EMAIL + - COMMUNICATION_CHANNEL_SLACK + ChannelInviteInfo: + description: Information regarding the invite status of a person for a particular channel. + properties: + channel: + description: Channel through which the invite was sent + $ref: "#/components/schemas/CommunicationChannel" + isAutoInvite: + description: Bit that tracks if this invite was automatically sent or user-sent + type: boolean + inviter: + description: The person that invited this person. + $ref: "#/components/schemas/Person" + inviteTime: + type: string + format: date-time + description: The time this person was invited in ISO format (ISO 8601). + reminderTime: + type: string + format: date-time + description: The time this person was reminded in ISO format (ISO 8601) if a reminder was sent. + InviteInfo: + description: Information regarding the invite status of a person. + properties: + signUpTime: + type: string + format: date-time + description: The time this person signed up in ISO format (ISO 8601). + invites: + type: array + items: + $ref: "#/components/schemas/ChannelInviteInfo" + description: Latest invites received by the user for each channel + inviter: + 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: + scopeType: + $ref: "#/components/schemas/ScopeType" + ReadPermissions: + description: Describes the read permission levels that a user has for permissioned features. Key must be PermissionedFeatureOrObject + additionalProperties: + type: array + description: List of read permissions (for different scopes but same feature) + items: + $ref: "#/components/schemas/ReadPermission" + WritePermissions: + description: Describes the write permissions levels that a user has for permissioned features. Key must be PermissionedFeatureOrObject + additionalProperties: + type: array + description: List of write permissions (for different scopes but same feature) + items: + $ref: "#/components/schemas/WritePermission" + GrantPermission: + description: Describes the grant permission level that a user has for a specific feature + properties: + scopeType: + $ref: "#/components/schemas/ScopeType" + GrantPermissions: + description: Describes the grant permission levels that a user has for permissioned features. Key must be PermissionedFeatureOrObject + additionalProperties: + type: array + description: List of grant permissions (for different scopes but same feature) + items: + $ref: "#/components/schemas/GrantPermission" + Permissions: + description: |- + Describes the permissions levels that a user has for permissioned features. When the client sends this, Permissions.read and Permissions.write are the additional permissions granted to a user on top of what they have via their roles. + When the server sends this, Permissions.read and Permissions.write are the complete (merged) set of permissions the user has, and Permissions.roles is just for display purposes. + properties: + canAdminSearch: + type: boolean + description: TODO--deprecate in favor of the read and write properties. True if the user has access to /adminsearch + canAdminClientApiGlobalTokens: + type: boolean + description: TODO--deprecate in favor of the read and write properties. True if the user can administrate client API tokens with global scope + canDlp: + type: boolean + description: TODO--deprecate in favor of the read and write properties. True if the user has access to data loss prevention (DLP) features + read: + $ref: "#/components/schemas/ReadPermissions" + write: + $ref: "#/components/schemas/WritePermissions" + grant: + $ref: "#/components/schemas/GrantPermissions" + role: + type: string + description: The roleId of the canonical role a user has. The displayName is equal to the roleId. + roles: + type: array + description: The roleIds of the roles a user has. + items: + type: string + TimeInterval: + required: + - start + - end + properties: + start: + type: string + description: The RFC3339 timestamp formatted start time of this event. + end: + type: string + description: The RFC3339 timestamp formatted end time of this event. + AnonymousEvent: + description: A generic, light-weight calendar event. + type: object + properties: + time: + $ref: "#/components/schemas/TimeInterval" + eventType: + description: The nature of the event, for example "out of office". + type: string + enum: + - DEFAULT + - OUT_OF_OFFICE + Badge: + type: object + description: Displays a user's accomplishment or milestone + properties: + key: + type: string + description: An auto generated unique identifier. + displayName: + type: string + description: The badge name displayed to users + iconConfig: + $ref: "#/components/schemas/IconConfig" + pinned: + type: boolean + description: The badge should be shown on the PersonAttribution + example: + key: deployment_name_new_hire + displayName: New hire + iconConfig: + color: "#343CED" + key: person_icon + iconType: GLYPH + name: user + PersonMetadata: + properties: + type: + type: string + x-enumDescriptions: + FULL_TIME: The person is a current full-time employee of the company. + CONTRACTOR: The person is a current contractor of the company. + NON_EMPLOYEE: The person object represents a non-human actor such as a service or admin account. + FORMER_EMPLOYEE: The person is a previous employee of the company. + enum: + - FULL_TIME + - CONTRACTOR + - NON_EMPLOYEE + - FORMER_EMPLOYEE + example: FULL_TIME + x-speakeasy-enum-descriptions: + FULL_TIME: The person is a current full-time employee of the company. + CONTRACTOR: The person is a current contractor of the company. + NON_EMPLOYEE: The person object represents a non-human actor such as a service or admin account. + FORMER_EMPLOYEE: The person is a previous employee of the company. + firstName: + type: string + description: The first name of the person + lastName: + type: string + description: The last name of the person + title: + type: string + description: Job title. + businessUnit: + type: string + description: Typically the highest level organizational unit; generally applies to bigger companies with multiple distinct businesses. + department: + type: string + description: An organizational unit where everyone has a similar task, e.g. `Engineering`. + teams: + description: Info about the employee's team(s). + type: array + items: + $ref: "#/components/schemas/PersonTeam" + departmentCount: + type: integer + description: The number of people in this person's department. + email: + type: string + description: The user's primary email address + aliasEmails: + type: array + description: Additional email addresses of this user beyond the primary, if any. + items: + type: string + location: + type: string + description: User facing string representing the person's location. + structuredLocation: + $ref: "#/components/schemas/StructuredLocation" + externalProfileLink: + type: string + description: Link to a customer's internal profile page. This is set to '#' when no link is desired. + manager: + $ref: "#/components/schemas/Person" + managementChain: + description: The chain of reporting in the company as far up as it goes. The last entry is this person's direct manager. + type: array + items: + $ref: "#/components/schemas/Person" + phone: + type: string + description: Phone number as a number string. + timezone: + type: string + description: The timezone of the person. E.g. "Pacific Daylight Time". + timezoneOffset: + type: integer + format: int64 + description: The offset of the person's timezone in seconds from UTC. + timezoneIANA: + type: string + description: The IANA timezone identifier, e.g. "America/Los_Angeles". + photoUrl: + type: string + format: url + description: The URL of the person's avatar. Public, glean-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). + uneditedPhotoUrl: + type: string + format: url + description: The original photo URL of the person's avatar before any edits they made are applied + bannerUrl: + type: string + format: url + description: The URL of the person's banner photo. + reports: + type: array + items: + $ref: "#/components/schemas/Person" + startDate: + type: string + description: The date when the employee started. + format: date + endDate: + type: string + format: date + description: If a former employee, the last date of employment. + bio: + type: string + description: Short biography or mission statement of the employee. + pronoun: + type: string + description: She/her, He/his or other pronoun. + orgSizeCount: + type: integer + description: The total recursive size of the people reporting to this person, or 1 + directReportsCount: + type: integer + description: The total number of people who directly report to this person, or 0 + preferredName: + type: string + description: The preferred name of the person, or a nickname. + socialNetwork: + description: List of social network profiles. + type: array + items: + $ref: "#/components/schemas/SocialNetwork" + datasourceProfile: + type: array + description: List of profiles this user has in different datasources / tools that they use. + items: + $ref: "#/components/schemas/DatasourceProfile" + querySuggestions: + $ref: "#/components/schemas/QuerySuggestionList" + peopleDistance: + type: array + items: + $ref: "#/components/schemas/PersonDistance" + description: List of people and distances to those people from this person. Optionally with metadata. + inviteInfo: + $ref: "#/components/schemas/InviteInfo" + isSignedUp: + type: boolean + description: Whether the user has signed into Glean at least once. + lastExtensionUse: + type: string + format: date-time + description: The last time the user has used the Glean extension in ISO 8601 format. + permissions: + $ref: "#/components/schemas/Permissions" + customFields: + type: array + description: User customizable fields for additional people information. + items: + $ref: "#/components/schemas/CustomFieldData" + loggingId: + type: string + description: The logging id of the person used in scrubbed logs, tracking GA metrics. + startDatePercentile: + type: number + format: float + description: Percentage of the company that started strictly after this person. Between [0,100). + busyEvents: + type: array + items: + $ref: "#/components/schemas/AnonymousEvent" + description: Intervals of busy time for this person, along with the type of event they're busy with. + profileBoolSettings: + type: object + additionalProperties: + type: boolean + description: flag settings to indicate user profile settings for certain items + badges: + type: array + items: + $ref: "#/components/schemas/Badge" + description: The badges that a user has earned over their lifetime. + isOrgRoot: + type: boolean + description: Whether this person is a "root" node in their organization's hierarchy. + example: + department: Movies + email: george@example.com + location: Hollywood, CA + phone: 6505551234 + photoUrl: https://example.com/george.jpg + startDate: "2000-01-23" + title: Actor + DocumentVisibility: + type: string + description: The level of visibility of the document as understood by our system. + x-enumDescriptions: + PRIVATE: Only one person is able to see the document. + SPECIFIC_PEOPLE_AND_GROUPS: Only specific people and/or groups can see the document. + DOMAIN_LINK: Anyone in the domain with the link can see the document. + DOMAIN_VISIBLE: Anyone in the domain can search for the document. + PUBLIC_LINK: Anyone with the link can see the document. + PUBLIC_VISIBLE: Anyone on the internet can search for the document. + enum: + - PRIVATE + - SPECIFIC_PEOPLE_AND_GROUPS + - DOMAIN_LINK + - DOMAIN_VISIBLE + - PUBLIC_LINK + - PUBLIC_VISIBLE + x-speakeasy-enum-descriptions: + PRIVATE: Only one person is able to see the document. + SPECIFIC_PEOPLE_AND_GROUPS: Only specific people and/or groups can see the document. + DOMAIN_LINK: Anyone in the domain with the link can see the document. + DOMAIN_VISIBLE: Anyone in the domain can search for the document. + PUBLIC_LINK: Anyone with the link can see the document. + PUBLIC_VISIBLE: Anyone on the internet can search for the document. + Reaction: + properties: + type: + type: string + count: + type: integer + description: The count of the reaction type on the document. + reactors: + type: array + items: + $ref: "#/components/schemas/Person" + reactedByViewer: + type: boolean + description: Whether the user in context reacted with this type to the document. + Share: + description: Search endpoint will only fill out numDays ago since that's all we need to display shared badge; docmetadata endpoint will fill out all the fields so that we can display shared badge tooltip + required: + - numDaysAgo + properties: + numDaysAgo: + type: integer + description: The number of days that has passed since the share happened + sharer: + $ref: "#/components/schemas/Person" + sharingDocument: + $ref: "#/components/schemas/Document" + DocumentInteractions: + properties: + numComments: + type: integer + description: The count of comments (thread replies in the case of slack). + numReactions: + type: integer + description: The count of reactions on the document. + reactions: + type: array + description: To be deprecated in favor of reacts. A (potentially non-exhaustive) list of reactions for the document. + deprecated: true + items: + type: string + x-glean-deprecated: + id: cd754845-6eec-480f-b395-c93478aff563 + introduced: "2026-02-05" + message: Use reacts instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use reacts instead" + reacts: + type: array + items: + $ref: "#/components/schemas/Reaction" + shares: + type: array + items: + $ref: "#/components/schemas/Share" + description: Describes instances of someone posting a link to this document in one of our indexed datasources. + visitorCount: + $ref: "#/components/schemas/CountInfo" + ViewerInfo: + properties: + role: + type: string + enum: + - ANSWER_MODERATOR + - OWNER + - VIEWER + description: DEPRECATED - use permissions instead. Viewer's role on the specific document. + deprecated: true + x-glean-deprecated: + - id: fbc55efe-3e6c-485c-8b60-bab574c3813b + introduced: "2026-02-05" + kind: property + message: Use permissions instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use permissions instead" + lastViewedTime: + type: string + format: date-time + IndexStatus: + properties: + lastCrawledTime: + description: When the document was last crawled + type: string + format: date-time + lastIndexedTime: + description: When the document was last indexed + type: string + format: date-time + DocumentMetadata: + properties: + datasource: + type: string + datasourceInstance: + type: string + description: The datasource instance from which the document was extracted. + objectType: + type: string + description: The type of the result. Interpretation is specific to each datasource. (e.g. for Jira issues, this is the issue type such as Bug or Feature Request). + container: + type: string + description: The name of the container (higher level parent, not direct parent) of the result. Interpretation is specific to each datasource (e.g. Channels for Slack, Project for Jira). cf. parentId + containerId: + type: string + description: The Glean Document ID of the container. Uniquely identifies the container. + superContainerId: + type: string + description: The Glean Document ID of the super container. Super container represents a broader abstraction that contains many containers. For example, whereas container might refer to a folder, super container would refer to a drive. + parentId: + type: string + description: The id of the direct parent of the result. Interpretation is specific to each datasource (e.g. parent issue for Jira). cf. container + mimeType: + type: string + documentId: + type: string + description: The index-wide unique identifier. + loggingId: + type: string + description: A unique identifier used to represent the document in any logging or feedback requests in place of documentId. + documentIdHash: + type: string + description: Hash of the Glean Document ID. + createTime: + type: string + format: date-time + updateTime: + type: string + format: date-time + author: + $ref: "#/components/schemas/Person" + owner: + $ref: "#/components/schemas/Person" + mentionedPeople: + type: array + items: + $ref: "#/components/schemas/Person" + description: A list of people mentioned in the document. + visibility: + $ref: "#/components/schemas/DocumentVisibility" + components: + type: array + description: A list of components this result is associated with. Interpretation is specific to each datasource. (e.g. for Jira issues, these are [components](https://confluence.atlassian.com/jirasoftwarecloud/organizing-work-with-components-764478279.html).) + items: + type: string + status: + type: string + description: The status or disposition of the result. Interpretation is specific to each datasource. (e.g. for Jira issues, this is the issue status such as Done, In Progress or Will Not Fix). + statusCategory: + type: string + description: The status category of the result. Meant to be more general than status. Interpretation is specific to each datasource. + pins: + type: array + description: A list of stars associated with this result. "Pin" is an older name. + items: + $ref: "#/components/schemas/PinDocument" + priority: + type: string + description: The document priority. Interpretation is datasource specific. + assignedTo: + $ref: "#/components/schemas/Person" + updatedBy: + $ref: "#/components/schemas/Person" + labels: + type: array + description: A list of tags for the document. Interpretation is datasource specific. + items: + type: string + collections: + type: array + description: A list of collections that the document belongs to. + items: + $ref: "#/components/schemas/Collection" + datasourceId: + type: string + description: The user-visible datasource specific id (e.g. Salesforce case number for example, GitHub PR number). + interactions: + $ref: "#/components/schemas/DocumentInteractions" + verification: + $ref: "#/components/schemas/Verification" + viewerInfo: + $ref: "#/components/schemas/ViewerInfo" + permissions: + $ref: "#/components/schemas/ObjectPermissions" + visitCount: + $ref: "#/components/schemas/CountInfo" + shortcuts: + type: array + description: A list of shortcuts of which destination URL is for the document. + items: + $ref: "#/components/schemas/Shortcut" + path: + type: string + description: For file datasources like onedrive/github etc this has the path to the file + customData: + $ref: "#/components/schemas/CustomData" + documentCategory: + type: string + description: The document's document_category(.proto). + contactPerson: + $ref: "#/components/schemas/Person" + thumbnail: + $ref: "#/components/schemas/Thumbnail" + description: A thumbnail image representing this document. + indexStatus: + $ref: "#/components/schemas/IndexStatus" + ancestors: + type: array + description: 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. + items: + $ref: "#/components/schemas/Document" + example: + container: container + parentId: JIRA_EN-1337 + createTime: "2000-01-23T04:56:07.000Z" + datasource: datasource + author: + name: name + documentId: documentId + updateTime: "2000-01-23T04:56:07.000Z" + mimeType: mimeType + objectType: Feature Request + components: + - Backend + - Networking + status: + - Done + customData: + someCustomField: someCustomValue + DocumentSection: + type: object + properties: + title: + type: string + description: The title of the document section (e.g. the section header). + url: + type: string + description: The permalink of the document section. + StructuredTextItem: + properties: + link: + type: string + example: https://en.wikipedia.org/wiki/Diffuse_sky_radiation + document: + deprecated: true + description: Deprecated. To be gradually migrated to structuredResult. + $ref: "#/components/schemas/Document" + text: + type: string + example: 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: + $ref: "#/components/schemas/StructuredResult" + AnnouncementMutableProperties: + properties: + startTime: + type: string + format: date-time + description: The date and time at which the announcement becomes active. + endTime: + type: string + format: date-time + description: The date and time at which the announcement expires. + title: + type: string + description: The headline of the announcement. + body: + $ref: "#/components/schemas/StructuredText" + emoji: + type: string + description: An emoji used to indicate the nature of the announcement. + thumbnail: + $ref: "#/components/schemas/Thumbnail" + banner: + $ref: "#/components/schemas/Thumbnail" + description: Optional variant of thumbnail cropped for header background. + audienceFilters: + type: array + description: Filters which restrict who should see the announcement. Values are taken from the corresponding filters in people search. + items: + $ref: "#/components/schemas/FacetFilter" + sourceDocumentId: + type: string + description: The Glean Document ID of the source document this Announcement was created from (e.g. Slack thread). + hideAttribution: + type: boolean + description: Whether or not to hide an author attribution. + channel: + type: string + enum: + - MAIN + - SOCIAL_FEED + description: This determines whether this is a Social Feed post or a regular announcement. + postType: + type: string + enum: + - TEXT + - LINK + description: 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. + isPrioritized: + type: boolean + description: Used by the Social Feed to pin posts to the front of the feed. + viewUrl: + type: string + description: URL for viewing the announcement. It will be set to document URL for announcements from other datasources e.g. simpplr. Can only be written when channel="SOCIAL_FEED". + CreateAnnouncementRequest: + allOf: + - $ref: "#/components/schemas/AnnouncementMutableProperties" + - type: object + required: + - title + - startTime + - endTime + DraftProperties: + properties: + draftId: + type: integer + description: The opaque id of the associated draft. + example: + draftId: 342 + Announcement: + allOf: + - $ref: "#/components/schemas/AnnouncementMutableProperties" + - $ref: "#/components/schemas/DraftProperties" + - $ref: "#/components/schemas/PermissionedObject" + - $ref: "#/components/schemas/UgcTrackingSignals" + - type: object + properties: + id: + type: integer + description: The opaque id of the announcement. + author: + $ref: "#/components/schemas/Person" + createTimestamp: + type: integer + description: Server Unix timestamp of the creation time (in seconds since epoch UTC). + lastUpdateTimestamp: + type: integer + description: Server Unix timestamp of the last update time (in seconds since epoch UTC). + updatedBy: + $ref: "#/components/schemas/Person" + viewerInfo: + type: object + properties: + isDismissed: + type: boolean + description: Whether the viewer has dismissed the announcement. + isRead: + type: boolean + description: Whether the viewer has read the announcement. + sourceDocument: + $ref: "#/components/schemas/Document" + description: The source document if the announcement is created from one. + isPublished: + type: boolean + description: Whether or not the announcement is published. + DeleteAnnouncementRequest: + required: + - id + properties: + id: + type: integer + description: The opaque id of the announcement to be deleted. + UpdateAnnouncementRequest: + allOf: + - $ref: "#/components/schemas/AnnouncementMutableProperties" + - type: object + required: + - id + - title + - startTime + - endTime + properties: + id: + type: integer + description: The opaque id of the announcement. + AddedCollections: + properties: + addedCollections: + type: array + items: + type: integer + description: IDs of Collections to which a document is added. + AnswerCreationData: + allOf: + - $ref: "#/components/schemas/AnswerMutableProperties" + - $ref: "#/components/schemas/AddedCollections" + - type: object + properties: + combinedAnswerText: + $ref: "#/components/schemas/StructuredTextMutableProperties" + CreateAnswerRequest: + required: + - data + properties: + data: + $ref: "#/components/schemas/AnswerCreationData" + DeleteAnswerRequest: + allOf: + - $ref: "#/components/schemas/AnswerId" + - $ref: "#/components/schemas/AnswerDocId" + - type: object + required: + - id + RemovedCollections: + properties: + removedCollections: + type: array + items: + type: integer + description: IDs of Collections from which a document is removed. + EditAnswerRequest: + allOf: + - $ref: "#/components/schemas/AnswerId" + - $ref: "#/components/schemas/AnswerDocId" + - $ref: "#/components/schemas/AnswerMutableProperties" + - $ref: "#/components/schemas/AddedCollections" + - $ref: "#/components/schemas/RemovedCollections" + - type: object + required: + - id + properties: + combinedAnswerText: + $ref: "#/components/schemas/StructuredTextMutableProperties" + GetAnswerRequest: + allOf: + - $ref: "#/components/schemas/AnswerId" + - $ref: "#/components/schemas/AnswerDocId" + AnswerResult: + required: + - answer + properties: + answer: + $ref: "#/components/schemas/Answer" + trackingToken: + type: string + description: Use `answer.trackingToken` instead. + deprecated: true + x-glean-deprecated: + id: 62de643b-f182-4d4d-a2fc-5e2cbfee7320 + introduced: "2026-05-07" + message: Use `answer.trackingToken` instead. + removal: "2027-01-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-05-07, removal scheduled for 2027-01-15: Use `answer.trackingToken` instead." + GetAnswerError: + properties: + errorType: + type: string + enum: + - NO_PERMISSION + - INVALID_ID + answerAuthor: + $ref: "#/components/schemas/Person" + GetAnswerResponse: + properties: + answerResult: + $ref: "#/components/schemas/AnswerResult" + error: + $ref: "#/components/schemas/GetAnswerError" + ListAnswersRequest: + properties: + boardId: + type: integer + description: The Answer Board Id to list answers on. + ListAnswersResponse: + required: + - answers + - answerResults + properties: + answerResults: + type: array + items: + $ref: "#/components/schemas/AnswerResult" + description: List of answers with tracking tokens. + AuthStatus: + type: string + description: The per-user authorization status for a datasource. + enum: + - DISABLED + - AWAITING_AUTH + - AUTHORIZED + - STALE_OAUTH + - SEG_MIGRATION + x-enum-varnames: + - AUTH_STATUS_DISABLED + - AUTH_STATUS_AWAITING_AUTH + - AUTH_STATUS_AUTHORIZED + - AUTH_STATUS_STALE_OAUTH + - AUTH_STATUS_SEG_MIGRATION + UnauthorizedDatasourceInstance: + description: | + A datasource instance that could not return results for this request because the user has not completed or has expired per-user OAuth. + properties: + datasourceInstance: + type: string + description: | + The instance identifier (e.g. "github", "github_enterprise_0", "slack_0"). Matches the instance names used in datasource configuration. + example: slack_0 + displayName: + type: string + description: Human-readable name of the datasource instance for display. + example: Slack + authStatus: + $ref: "#/components/schemas/AuthStatus" + authUrlRelativePath: + type: string + description: | + Relative path to initiate or resume OAuth for the current user and instance, including a one-time authentication token as a query parameter. Clients should prepend their configured Glean backend base URL. + CheckDatasourceAuthResponse: + required: + - unauthorizedDatasourceInstances + properties: + unauthorizedDatasourceInstances: + type: array + description: | + Datasource instances that require per-user OAuth authorization. Empty when all datasources are authorized. + items: + $ref: "#/components/schemas/UnauthorizedDatasourceInstance" + CreateAuthTokenResponse: + required: + - token + - expirationTime + properties: + token: + type: string + description: An authentication token that can be passed to any endpoint via Bearer Authentication + expirationTime: + description: Unix timestamp for when this token expires (in seconds since epoch UTC). + type: integer + format: int64 + ToolSets: + type: object + description: The types of tools that the agent is allowed to use. Only works with FAST and ADVANCED `agent` values + properties: + enableWebSearch: + type: boolean + description: "Whether the agent is allowed to use web search (default: true)." + enableCompanyTools: + type: boolean + description: "Whether the agent is allowed to search internal company resources (default: true)." + AgentConfig: + description: Describes the agent that executes the request. + properties: + agent: + type: string + description: Name of the agent. + x-enumDescriptions: + DEFAULT: Integrates with your company's knowledge. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values + GPT: Communicates directly with the LLM. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values + UNIVERSAL: Uses both company and web knowledge. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values + FAST: Uses an agent powered by the agentic engine that responds faster but may have lower quality results. Requires the agentic engine to be enabled in the deployment. + ADVANCED: Uses an agent powered by the agentic engine that thinks for longer and potentially makes more LLM calls to return higher quality results. Requires the agentic engine to be enabled in the deployment. + AUTO: Uses an agent powered by the agentic engine that routes between reasoning efforts based on the question and context. + enum: + - DEFAULT + - GPT + - UNIVERSAL + - FAST + - ADVANCED + - AUTO + x-speakeasy-enum-descriptions: + DEFAULT: Integrates with your company's knowledge. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values + GPT: Communicates directly with the LLM. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values + UNIVERSAL: Uses both company and web knowledge. This will soon be deprecated in favor of the FAST and ADVANCED `agent` values + FAST: Uses an agent powered by the agentic engine that responds faster but may have lower quality results. Requires the agentic engine to be enabled in the deployment. + ADVANCED: Uses an agent powered by the agentic engine that thinks for longer and potentially makes more LLM calls to return higher quality results. Requires the agentic engine to be enabled in the deployment. + AUTO: Uses an agent powered by the agentic engine that routes between reasoning efforts based on the question and context. + toolSets: + $ref: "#/components/schemas/ToolSets" + mode: + type: string + description: Top level modes to run GleanChat in. + x-enumDescriptions: + DEFAULT: Used if no mode supplied. + QUICK: Deprecated. + enum: + - DEFAULT + - QUICK + x-speakeasy-enum-descriptions: + DEFAULT: Used if no mode supplied. + QUICK: Deprecated. + useImageGeneration: + type: boolean + description: Whether the agent should create an image. + ChatFileStatus: + type: string + description: Current status of the file. + x-include-enum-class-prefix: true + enum: + - PROCESSING + - PROCESSED + - PARTIALLY_PROCESSED + - FAILED + - DELETED + ChatFileFailureReason: + type: string + description: Reason for failed status. + x-include-enum-class-prefix: true + enum: + - PARSE_FAILED + - AV_SCAN_FAILED + - FILE_TOO_SMALL + - FILE_TOO_LARGE + - FILE_EXTENSION_UNSUPPORTED + - FILE_METADATA_VALIDATION_FAIL + - FILE_PROCESSING_TIMED_OUT + - OAUTH_NEEDED + - URL_FETCH_FAILED + - EMPTY_CONTENT + - AUTH_REQUIRED + ChatFileMetadata: + type: object + description: Metadata of a file uploaded by a user for Chat. + properties: + status: + $ref: "#/components/schemas/ChatFileStatus" + uploadTime: + type: integer + format: int64 + description: Upload time, in epoch seconds. + processedSize: + type: integer + format: int64 + description: Size of the processed file in bytes. + failureReason: + $ref: "#/components/schemas/ChatFileFailureReason" + mimeType: + description: MIME type of the file. + type: string + ChatFile: + type: object + description: Structure for file uploaded by a user for Chat. + properties: + id: + type: string + description: Unique identifier of the file. + example: FILE_1234 + url: + type: string + description: Url of the file. + example: www.google.com + name: + type: string + description: Name of the uploaded file. + example: sample.pdf + metadata: + $ref: "#/components/schemas/ChatFileMetadata" + ReferenceRange: + description: Each text range from the response can correspond to an array of snippets from the citation source. + properties: + textRange: + $ref: "#/components/schemas/TextRange" + snippets: + type: array + items: + $ref: "#/components/schemas/SearchResultSnippet" + ChatMessageCitation: + description: Information about the source for a ChatMessage. + properties: + trackingToken: + type: string + description: An opaque token that represents this particular result in this particular ChatMessage. To be used for /feedback reporting. + sourceDocument: + $ref: "#/components/schemas/Document" + sourceFile: + $ref: "#/components/schemas/ChatFile" + sourcePerson: + $ref: "#/components/schemas/Person" + sourceCustomEntity: + $ref: "#/components/schemas/CustomEntity" + referenceRanges: + description: Each reference range and its corresponding snippets + type: array + items: + $ref: "#/components/schemas/ReferenceRange" + displayName: + description: Human understandable name of the tool. Max 50 characters. + type: string + logoUrl: + type: string + description: URL used to fetch the logo. + objectName: + type: string + description: Name of the generated object. This will be used to indicate to the end user what the generated object contains. + example: + - HR ticket + - Email + - Chat message + PersonObject: + required: + - name + - obfuscatedId + properties: + name: + type: string + description: The display name. + obfuscatedId: + type: string + description: An opaque identifier that can be used to request metadata for a Person. + AuthConfig: + description: Config for tool's authentication method. + type: object + properties: + isOnPrem: + type: boolean + description: Whether or not this tool is hosted on-premise. + usesCentralAuth: + type: boolean + description: Whether or not this uses central auth. + type: + type: string + enum: + - NONE + - OAUTH_USER + - OAUTH_ADMIN + - API_KEY + - BASIC_AUTH + - DWD + description: | + 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. + 'OAUTH_USER' uses individual user tokens for external API calls. + 'DWD' refers to domain wide delegation. + grantType: + type: string + enum: + - AUTH_CODE + - CLIENT_CREDENTIALS + description: The type of grant type being used. + status: + type: string + description: Auth status of the tool. + enum: + - AWAITING_AUTH + - AUTHORIZED + - AUTH_DISABLED + client_url: + type: string + format: url + description: The URL where users will be directed to start the OAuth flow. + scopes: + type: array + items: + type: string + description: A list of strings denoting the different scopes or access levels required by the tool. + audiences: + type: array + items: + type: string + description: A list of strings denoting the different audience which can access the tool. + authorization_url: + 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. + token_endpoint_auth_method: + type: string + enum: + - client_secret_post + - client_secret_basic + - none + description: The OAuth 2.0 token endpoint authentication method (RFC 7591). Determines how the client authenticates when exchanging an authorization code for a token. client_secret_post sends credentials as form fields, client_secret_basic sends them via Authorization header, none omits client secret and relies on PKCE only. Values use lowercase to match the OAuth 2.0 wire format (RFC 7591 Section 2). + lastAuthorizedAt: + type: string + format: date-time + description: The time the tool was last authorized in ISO format (ISO 8601). + ToolMetadata: + description: The manifest for a tool that can be used to augment Glean Assistant. + required: + - type + - name + - displayName + - displayDescription + properties: + type: + description: The type of tool. + type: string + enum: + - RETRIEVAL + - ACTION + name: + description: Unique identifier for the tool. Name should be understandable by the LLM, and will be used to invoke a tool. + type: string + displayName: + $ref: "#/components/schemas/displayName" + toolId: + type: string + description: An opaque id which is unique identifier for the tool. + displayDescription: + description: Description of the tool meant for a human. + type: string + logoUrl: + $ref: "#/components/schemas/logoUrl" + objectName: + $ref: "#/components/schemas/objectName" + knowledgeType: + type: string + description: Indicates the kind of knowledge a tool would access or modify. + enum: + - NEUTRAL_KNOWLEDGE + - COMPANY_KNOWLEDGE + - WORLD_KNOWLEDGE + createdBy: + $ref: "#/components/schemas/PersonObject" + lastUpdatedBy: + $ref: "#/components/schemas/PersonObject" + createdAt: + type: string + format: date-time + description: The time the tool was created in ISO format (ISO 8601) + lastUpdatedAt: + type: string + format: date-time + description: The time the tool was last updated in ISO format (ISO 8601) + writeActionType: + type: string + description: 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. + enum: + - REDIRECT + - EXECUTION + - MCP + authType: + type: string + enum: + - NONE + - OAUTH_USER + - OAUTH_ADMIN + - API_KEY + - BASIC_AUTH + - DWD + description: | + 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. + 'OAUTH_USER' uses individual user tokens for external API calls. + 'DWD' refers to domain wide delegation. + auth: + deprecated: true + $ref: "#/components/schemas/AuthConfig" + permissions: + deprecated: true + $ref: "#/components/schemas/ObjectPermissions" + usageInstructions: + description: Usage instructions for the LLM to use this action. + type: string + isSetupFinished: + type: boolean + description: Whether this action has been fully configured and validated. + PossibleValue: + type: object + description: Possible value of a specific parameter + properties: + value: + type: string + description: Possible value + label: + type: string + description: User-friendly label associated with the value + WriteActionParameter: + type: object + properties: + type: + type: string + description: The type of the value (e.g., integer, string, boolean, etc.) + enum: + - UNKNOWN + - INTEGER + - STRING + - BOOLEAN + displayName: + type: string + description: Human readable display name for the key. + value: + type: string + description: The value of the field. + isRequired: + type: boolean + description: Is the parameter a required field. + description: + type: string + description: Description of the parameter. + possibleValues: + type: array + items: + $ref: "#/components/schemas/PossibleValue" + description: Possible values that the parameter can take. + ToolInfo: + type: object + properties: + metadata: + $ref: "#/components/schemas/ToolMetadata" + parameters: + type: object + description: Parameters supported by the tool. + additionalProperties: + $ref: "#/components/schemas/WriteActionParameter" + ChatMessageFragment: + description: Represents a part of a ChatMessage that originates from a single action/tool. It is designed to support rich data formats beyond simple text, allowing for a more dynamic and interactive chat experience. Each fragment can include various types of content, such as text, search queries, action information, and more. Also, each ChatMessageFragment should only have one of structuredResults, querySuggestion, writeAction, followupAction, agentRecommendation, followupRoutingSuggestion or file. + allOf: + - $ref: "#/components/schemas/Result" + - type: object + properties: + text: + type: string + querySuggestion: + description: The search queries issued while responding. + $ref: "#/components/schemas/QuerySuggestion" + file: + description: Files referenced in the message fragment. This is used to construct rich-text messages with file references. + $ref: "#/components/schemas/ChatFile" + action: + description: Basic information about an action. This can be used to construct rich-text messages with action references. + $ref: "#/components/schemas/ToolInfo" + citation: + description: Inline citation. + $ref: "#/components/schemas/ChatMessageCitation" + ChatMessage: + description: A message that is rendered as one coherent unit with one given sender. + properties: + agentConfig: + $ref: "#/components/schemas/AgentConfig" + description: Describes the agent config that generated this message. Populated on responses and not required on requests. + author: + default: USER + enum: + - USER + - GLEAN_AI + citations: + type: array + items: + $ref: "#/components/schemas/ChatMessageCitation" + description: "Deprecated: Use inline citations via ChatMessageFragment.citation instead. For detailed reference information, use ChatMessageCitation.referenceRanges. This field is still populated for backward compatibility." + deprecated: true + x-glean-deprecated: + id: 6446f85e-c90e-4c00-9717-796f9db3dc61 + introduced: "2026-02-06" + message: Use inline citations via ChatMessageFragment.citation and ChatMessageCitation.referenceRanges instead. This field is still populated for backward compatibility. + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-06, removal scheduled for 2026-10-15: Use inline citations via ChatMessageFragment.citation and ChatMessageCitation.referenceRanges instead. This field is still populated for backward compatibility." + uploadedFileIds: + type: array + items: + type: string + description: IDs of files uploaded in the message that are referenced to generate the answer. + fragments: + type: array + description: A list of rich data used to represent the response or formulate a request. These are linearly stitched together to support richer data formats beyond simple text. + items: + $ref: "#/components/schemas/ChatMessageFragment" + ts: + type: string + description: Response timestamp of the message. + messageId: + type: string + description: A unique server-side generated ID used to identify a message, automatically populated for any USER authored messages. + messageTrackingToken: + type: string + description: Opaque tracking token generated server-side. + messageType: + type: string + default: CONTENT + description: 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. + x-enumDescriptions: + UPDATE: An intermediate state message for progress updates. + CONTENT: A user query or response message. + CONTEXT: A message providing context in addition to the user query. + CONTROL: Control signal for message streaming. + CONTROL_START: Control signal indicating the start of a message stream. + CONTROL_FINISH: Control signal indicating the end of a message stream. + CONTROL_CANCEL: Control signal indicating the message stream was cancelled. + CONTROL_RETRY: Indicates the message streaming needed to be retried. + CONTROL_UNKNOWN: Fallback control signal for unrecognized control types. + DEBUG: A debug message. Strictly used internally. + DEBUG_EXTERNAL: A debug message to be used while debugging Action creation. + ERROR: A message that describes an error while processing the request. + HEADING: A heading message used to distinguish different sections of the holistic response. + WARNING: A warning message to be shown to the user. + SERVER_TOOL: A message used to for server-side tool auth/use, for request and response. + enum: + - UPDATE + - CONTENT + - CONTEXT + - CONTROL + - CONTROL_START + - CONTROL_FINISH + - CONTROL_CANCEL + - CONTROL_RETRY + - CONTROL_UNKNOWN + - DEBUG + - DEBUG_EXTERNAL + - ERROR + - HEADING + - WARNING + - SERVER_TOOL + x-speakeasy-enum-descriptions: + UPDATE: An intermediate state message for progress updates. + CONTENT: A user query or response message. + CONTEXT: A message providing context in addition to the user query. + CONTROL: Control signal for message streaming. + CONTROL_START: Control signal indicating the start of a message stream. + CONTROL_FINISH: Control signal indicating the end of a message stream. + CONTROL_CANCEL: Control signal indicating the message stream was cancelled. + CONTROL_RETRY: Indicates the message streaming needed to be retried. + CONTROL_UNKNOWN: Fallback control signal for unrecognized control types. + DEBUG: A debug message. Strictly used internally. + DEBUG_EXTERNAL: A debug message to be used while debugging Action creation. + ERROR: A message that describes an error while processing the request. + HEADING: A heading message used to distinguish different sections of the holistic response. + WARNING: A warning message to be shown to the user. + SERVER_TOOL: A message used to for server-side tool auth/use, for request and response. + hasMoreFragments: + deprecated: true + type: boolean + description: Signals there are additional response fragments incoming. + ChatRequestBase: + required: + - messages + description: The minimal set of fields that form a chat request. + properties: + messages: + type: array + description: A list of chat messages, from most recent to least recent. At least one message must specify a USER author. + items: + $ref: "#/components/schemas/ChatMessage" + sessionInfo: + description: Optional object for tracking the session used by the client and for debugging purposes. + $ref: "#/components/schemas/SessionInfo" + saveChat: + type: boolean + description: Save the current interaction as a Chat for the user to access and potentially continue later. + chatId: + type: string + description: The id of the Chat that context should be retrieved from and messages added to. An empty id starts a new Chat, and the Chat is saved if saveChat is true. + agentConfig: + $ref: "#/components/schemas/AgentConfig" + description: Describes the agent that will execute the request. + ChatRestrictionFilters: + allOf: + - $ref: "#/components/schemas/RestrictionFilters" + - type: object + properties: + documentSpecs: + type: array + items: + $ref: "#/components/schemas/DocumentSpec" + datasourceInstances: + type: array + items: + type: string + ChatRequest: + allOf: + - $ref: "#/components/schemas/ChatRequestBase" + - type: object + properties: + inclusions: + $ref: "#/components/schemas/ChatRestrictionFilters" + description: A list of filters which only allows chat to access certain content. + exclusions: + $ref: "#/components/schemas/ChatRestrictionFilters" + description: A list of filters which disallows chat from accessing certain content. If content is in both inclusions and exclusions, it'll be excluded. + timeoutMillis: + type: integer + description: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. + example: 30000 + applicationId: + type: string + description: The ID of the application this request originates from, used to determine the configuration of underlying chat processes. This should correspond to the ID set during admin setup. If not specified, the default chat experience will be used. + agentId: + type: string + description: The ID of the Agent that should process this chat request. Only Agents with trigger set to 'User chat message' are invokable through this API. If not specified, the default chat experience will be used. + stream: + type: boolean + description: If set, response lines will be streamed one-by-one as they become available. Each will be a ChatResponse, formatted as JSON, and separated by a new line. If false, the entire response will be returned at once. Note that if this is set and the model being used does not support streaming, the model's response will not be streamed, but other messages from the endpoint still will be. + ChatResponse: + description: A single response from the /chat backend. + properties: + messages: + type: array + items: + $ref: "#/components/schemas/ChatMessage" + chatId: + type: string + description: The id of the associated Chat the messages belong to, if one exists. + chat: + $ref: "#/components/schemas/ChatMetadata" + followUpPrompts: + type: array + items: + type: string + description: Follow-up prompts for the user to potentially use + backendTimeMillis: + type: integer + format: int64 + description: Time in milliseconds the backend took to respond to the request. + example: 1100 + chatSessionTrackingToken: + type: string + description: A token that is used to track the session. + DeleteChatsRequest: + required: + - ids + properties: + ids: + type: array + items: + type: string + description: A non-empty list of ids of the Chats to be deleted. + GetChatRequest: + required: + - id + properties: + id: + type: string + description: The id of the Chat to be retrieved. + Chat: + description: A historical representation of a series of chat messages a user had with Glean Assistant. + allOf: + - $ref: "#/components/schemas/ChatMetadata" + - $ref: "#/components/schemas/PermissionedObject" + properties: + messages: + type: array + items: + $ref: "#/components/schemas/ChatMessage" + description: The chat messages within a Chat. + roles: + type: array + items: + $ref: "#/components/schemas/UserRoleSpecification" + description: A list of roles for this Chat. + ChatResult: + properties: + chat: + $ref: "#/components/schemas/Chat" + trackingToken: + type: string + description: An opaque token that represents this particular Chat. To be used for `/feedback` reporting. + GetChatResponse: + properties: + chatResult: + $ref: "#/components/schemas/ChatResult" + ChatMetadataResult: + properties: + chat: + $ref: "#/components/schemas/ChatMetadata" + trackingToken: + type: string + description: An opaque token that represents this particular Chat. To be used for `/feedback` reporting. + ListChatsResponse: + properties: + chatResults: + type: array + 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 + properties: + id: + type: string + description: The id of the Chat application to be retrieved. + ChatApplicationDetails: {} + GetChatApplicationResponse: + properties: + application: + $ref: "#/components/schemas/ChatApplicationDetails" + UploadChatFilesRequest: + required: + - files + properties: + files: + type: array + items: + type: string + format: binary + description: Raw files to be uploaded for chat in binary format. + UploadChatFilesResponse: + properties: + files: + type: array + items: + $ref: "#/components/schemas/ChatFile" + description: Files uploaded for chat. + GetChatFilesRequest: + required: + - fileIds + properties: + fileIds: + type: array + items: + type: string + description: IDs of files to fetch. + GetChatFilesResponse: + properties: + files: + description: A map of file IDs to ChatFile structs. + type: object + additionalProperties: + $ref: "#/components/schemas/ChatFile" + DeleteChatFilesRequest: + required: + - fileIds + properties: + fileIds: + type: array + items: + type: string + description: IDs of files to delete. + Agent: + title: Agent + type: object + required: + - agent_id + - name + - capabilities + properties: + agent_id: + type: string + title: Agent Id + description: The ID of the agent. + example: mho4lwzylcozgoc2 + name: + type: string + title: Agent Name + description: The name of the agent + example: HR Policy Agent + description: + type: string + title: Description + description: The description of the agent. + example: This agent answers questions about the current company HR policies. + metadata: + type: object + title: Metadata + description: The agent metadata. Currently not implemented. + capabilities: + type: object + title: Agent Capabilities + description: |- + Describes features that the agent supports. example: { + "ap.io.messages": true, + "ap.io.streaming": true + } + properties: + ap.io.messages: + type: boolean + title: Messages + description: Whether the agent supports messages as an input. If true, you'll pass `messages` as an input when running the agent. + ap.io.streaming: + type: boolean + title: Streaming + description: Whether the agent supports streaming output. If true, you you can stream agent ouput. All agents currently support streaming. + additionalProperties: true + ErrorResponse: + type: object + description: Error response returned for failed requests + properties: + message: + type: string + description: Client-facing error message describing what went wrong + WorkflowDraftableProperties: + properties: + name: + type: string + description: The name of the workflow. + WorkflowMutableProperties: + type: object + allOf: + - $ref: "#/components/schemas/WorkflowDraftableProperties" + - type: object + EditWorkflowRequest: + allOf: + - $ref: "#/components/schemas/WorkflowMutableProperties" + - type: object + properties: + id: + type: string + description: The workflow ID we want to update. + ActionSummary: + type: object + description: Represents a minimal summary of an action. + required: + - tool_id + - display_name + properties: + tool_id: + type: string + description: The unique identifier of the action. + 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: + type: string + title: Agent Id + description: The ID of the agent. + example: mho4lwzylcozgoc2 + name: + type: string + title: Agent Name + description: The name of the agent. + example: HR Policy Agent + input_schema: + type: object + title: Input Schema + description: The schema for the agent input. In JSON Schema format. + output_schema: + type: object + title: Output Schema + description: The schema for the agent output. In JSON Schema format. + tools: + type: array + title: Tools + description: List of tools that the agent can invoke. Only included when include_tools query parameter is set to true. + items: + $ref: "#/components/schemas/ActionSummary" + type: object + required: + - agent_id + - input_schema + - output_schema + title: AgentSchemas + description: Defines the structure and properties of an agent. + SearchAgentsRequest: + type: object + properties: + name: + type: string + description: Filters on the name of the agent. The keyword search is case-insensitive. If search string is ommited or empty, acts as no filter. + example: HR Policy Agent + SearchAgentsResponse: + type: object + title: Response Search Agents + properties: + agents: + type: array + items: + $ref: "#/components/schemas/Agent" + ContentType: + type: string + enum: + - text + Message: + type: object + properties: + role: + type: string + title: Role + description: The role of the message. + example: USER + content: + title: Content + description: The content of the message. + type: array + items: type: object - description: Describes the user status response body properties: - isActiveUser: - type: boolean - description: Whether the user is active or not - example: true - uploadStatus: - $ref: "#/components/schemas/UploadStatusEnum" - lastUploadedAt: - type: string - description: Time of last successful upload for the user, in ISO 8601 format - example: "2021-08-06T17:58:01.000Z" - UploadStatusEnum: + text: + type: string + type: + $ref: "#/components/schemas/ContentType" + required: + - text + - type + title: MessageTextBlock + AgentRunCreate: + description: "Payload for creating a run. **Important**: If the agent uses an input form trigger, the `input` field is required and must include all fields defined in the form schema. Even fields marked as optional in the UI must be included in the request—use an empty string (`\"\"`) for optional fields without values. Omitting required form fields will result in a 500 error." + type: object + required: + - agent_id + properties: + agent_id: + type: string + title: Agent Id + description: The ID of the agent to run. + input: + type: object + title: Input + description: The input to the agent. Required when the agent uses an input form trigger. + additionalProperties: true + messages: + type: array + items: + $ref: "#/components/schemas/Message" + title: Messages + description: The messages to pass an input to the agent. + metadata: + type: object + title: Metadata + description: The metadata to pass to the agent. + additionalProperties: true + AgentExecutionStatus: + description: The status of the run. One of 'error', 'success'. + type: string + enum: + - error + - success + title: AgentExecutionStatus + AgentRun: + allOf: + - $ref: "#/components/schemas/AgentRunCreate" + - type: object + properties: + status: + $ref: "#/components/schemas/AgentExecutionStatus" + AgentRunWaitResponse: + type: object + properties: + run: + $ref: "#/components/schemas/AgentRun" + title: Run + description: The run information. + messages: + type: array + items: + $ref: "#/components/schemas/Message" + title: Messages + description: The messages returned by the run. + CollectionItemDescriptor: + allOf: + - $ref: "#/components/schemas/CollectionItemMutableProperties" + properties: + url: + type: string + description: The URL of the item being added. + documentId: + type: string + description: The Glean Document ID of the item being added if it's an indexed document. + newNextItemId: + type: string + description: The (optional) ItemId of the next CollectionItem in sequence. If omitted, will be added to the end of the Collection + itemType: + type: string + enum: + - DOCUMENT + - TEXT + - URL + AddCollectionItemsRequest: + required: + - collectionId + properties: + collectionId: + type: number + description: The ID of the Collection to add items to. + addedCollectionItemDescriptors: + type: array + items: + $ref: "#/components/schemas/CollectionItemDescriptor" + description: The CollectionItemDescriptors of the items being added. + AddCollectionItemsError: + properties: + errorType: + type: string + enum: + - EXISTING_ITEM + - CORRUPT_ITEM + AddCollectionItemsResponse: + properties: + collection: + $ref: "#/components/schemas/Collection" + description: The modified Collection. Only CollectionItemMutableProperties are set for each item. + error: + $ref: "#/components/schemas/AddCollectionItemsError" + CreateCollectionRequest: + allOf: + - $ref: "#/components/schemas/CollectionMutableProperties" + - type: object + properties: + newNextItemId: + type: string + description: The (optional) ItemId of the next CollectionItem in sequence. If omitted, will be added to the end of the Collection. Only used if parentId is specified. + CollectionError: + required: + - errorCode + properties: + errorCode: + type: string + enum: + - NAME_EXISTS + - NOT_FOUND + - COLLECTION_PINNED + - CONCURRENT_HIERARCHY_EDIT + - HEIGHT_VIOLATION + - WIDTH_VIOLATION + - NO_PERMISSIONS + - CORRUPT_ITEM + CreateCollectionResponse: + allOf: + - type: object + anyOf: + - required: + - collection + - required: + - error + properties: + collection: + $ref: "#/components/schemas/Collection" + error: + $ref: "#/components/schemas/CollectionError" + DeleteCollectionRequest: + required: + - ids + properties: + ids: + type: array + items: + type: integer + description: The IDs of the Collections to delete. + allowedDatasource: + type: string + description: The datasource allowed in the Collection to be deleted. + DeleteCollectionItemRequest: + required: + - collectionId + - itemId + properties: + collectionId: + type: number + description: The ID of the Collection to remove an item in. + itemId: + type: string + description: The item ID of the CollectionItem to remove from this Collection. + documentId: + type: string + description: The (optional) Glean Document ID of the CollectionItem to remove from this Collection if this is an indexed document. + DeleteCollectionItemResponse: + properties: + collection: + $ref: "#/components/schemas/Collection" + description: The modified Collection. Only CollectionItemMutableProperties are set for each item. + EditCollectionRequest: + allOf: + - $ref: "#/components/schemas/CollectionMutableProperties" + - type: object + required: + - id + properties: + id: + type: integer + description: The ID of the Collection to modify. + EditCollectionResponse: + allOf: + - $ref: "#/components/schemas/Collection" + - $ref: "#/components/schemas/CollectionError" + - type: object + properties: + collection: + $ref: "#/components/schemas/Collection" + error: + $ref: "#/components/schemas/CollectionError" + EditCollectionItemRequest: + required: + - collectionId + - itemId + allOf: + - $ref: "#/components/schemas/CollectionItemMutableProperties" + - type: object + properties: + collectionId: + type: integer + description: The ID of the Collection to edit CollectionItems in. + itemId: + type: string + description: The ID of the CollectionItem to edit. + EditCollectionItemResponse: + properties: + collection: + $ref: "#/components/schemas/Collection" + description: The modified Collection. Only CollectionItemMutableProperties are set for each item. + GetCollectionRequest: + required: + - id + properties: + id: + type: integer + description: The ID of the Collection to be retrieved. + withItems: + type: boolean + description: Whether or not to include the Collection Items in this Collection. Only request if absolutely required, as this is expensive. + withHierarchy: + type: boolean + description: Whether or not to include the top level Collection in this Collection's hierarchy. + allowedDatasource: + type: string + description: The datasource allowed in the Collection returned. + GetCollectionResponse: + properties: + collection: + $ref: "#/components/schemas/Collection" + rootCollection: + $ref: "#/components/schemas/Collection" + error: + $ref: "#/components/schemas/CollectionError" + trackingToken: + type: string + description: Use `collection.trackingToken` instead. + deprecated: true + x-glean-deprecated: + id: 2d6ca3a7-4763-4137-9ebd-740568fe8300 + introduced: "2026-05-07" + message: Use `collection.trackingToken` instead. + removal: "2027-01-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-05-07, removal scheduled for 2027-01-15: Use `collection.trackingToken` instead." + ListCollectionsRequest: + properties: + includeAudience: + type: boolean + description: Whether to include the audience filters with the listed Collections. + includeRoles: + type: boolean + description: Whether to include the editor roles with the listed Collections. + allowedDatasource: + type: string + description: |- + The datasource type this Collection can hold. + ANSWERS - for Collections representing answer boards + ListCollectionsResponse: + required: + - collections + properties: + collections: + type: array + items: + $ref: "#/components/schemas/Collection" + description: List of all Collections, no Collection items are fetched. + GetDocPermissionsRequest: + type: object + properties: + documentId: + type: string + description: The Glean Document ID to retrieve permissions for. + GetDocPermissionsResponse: + type: object + properties: + allowedUserEmails: + type: array + items: + type: string + description: A list of emails of users who have access to the document. If the document is visible to all Glean users, a list with only a single value of 'VISIBLE_TO_ALL'. + GetDocumentsRequest: + required: + - documentSpecs + properties: + documentSpecs: + type: array + items: + $ref: "#/components/schemas/DocumentSpec" + description: The specification for the documents to be retrieved. + includeFields: + description: List of Document fields to return (that aren't returned by default) + type: array + items: type: string - description: Upload status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN enum: - - UPLOADED - - NOT_UPLOADED - - STATUS_UNKNOWN - example: UPLOADED - DebugDocumentLifecycleRequest: - type: object - description: Describes the request body of the /debug/{datasource}/document/events API call. - properties: - objectType: - type: string - description: Object type of the document to get lifecycle events for. - example: Article - docId: - type: string - description: Glean Document ID within the datasource to get lifecycle events for. - example: art123 - startDate: - type: string - description: The start date for events to be fetched. Cannot be more than 30 days (default 7 days) in the past. - example: "2025-05-01" - maxEvents: - type: integer - description: Max number of events to be fetched. Cannot be more than 100 (default 20). - example: 50 - required: - - objectType - - docId - DebugDocumentLifecycleResponse: - type: object - description: Describes the response body of the /debug/{datasource}/document/events API call - properties: - lifeCycleEvents: - type: array - description: List of lifecycle events corresponding to the document - items: - $ref: "#/components/schemas/LifeCycleEvent" - PropertyDefinition: - properties: - name: - type: string - description: The name of the property in the `DocumentMetadata` (e.g. 'createTime', 'updateTime', 'author', 'container'). In the future, this will support custom properties too. - displayLabel: - type: string - description: The user friendly label for the property. - displayLabelPlural: - type: string - description: The user friendly label for the property that will be used if a plural context. - propertyType: - type: string - enum: - - TEXT - - DATE - - INT - - USERID - - PICKLIST - - TEXTLIST - - MULTIPICKLIST - description: The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported. - uiOptions: - type: string - enum: - - NONE - - SEARCH_RESULT - - DOC_HOVERCARD - hideUiFacet: - type: boolean - description: If true then the property will not show up as a facet in the UI. - uiFacetOrder: - type: integer - description: Will be used to set the order of facets in the UI, if present. If set for one facet, must be set for all non-hidden UI facets. Must take on an integer value from 1 (shown at the top) to N (shown last), where N is the number of non-hidden UI facets. These facets will be ordered below the built-in "Type" and "Tag" operators. - skipIndexing: - type: boolean - description: If true then the property will not be indexed for retrieval and ranking. - group: - type: string - description: The unique identifier of the `PropertyGroup` to which this property belongs. - PropertyGroup: - description: A grouping for multiple PropertyDefinition. Grouped properties will be displayed together in the UI. - properties: - name: - type: string - description: The unique identifier of the group. - displayLabel: - type: string - description: The user-friendly group label to display. - ObjectDefinition: - description: The definition for an `DocumentMetadata.objectType` within a datasource. - properties: - name: - type: string - description: Unique identifier for this `DocumentMetadata.objectType`. If omitted, this definition is used as a default for all unmatched `DocumentMetadata.objectType`s in this datasource. - displayLabel: - type: string - description: The user-friendly name of the object for display. - docCategory: - type: string - enum: - - UNCATEGORIZED - - TICKETS - - CRM - - PUBLISHED_CONTENT - - COLLABORATIVE_CONTENT - - QUESTION_ANSWER - - MESSAGING - - CODE_REPOSITORY - - CHANGE_MANAGEMENT - - PEOPLE - - EMAIL - - SSO - - ATS - - KNOWLEDGE_HUB - - EXTERNAL_SHORTCUT - - ENTITY - - CALENDAR - - AGENTS - description: The document category of this object type. - propertyDefinitions: - type: array - items: - $ref: "#/components/schemas/PropertyDefinition" - propertyGroups: - type: array - description: A list of `PropertyGroup`s belonging to this object type, which will group properties to be displayed together in the UI. - items: - $ref: "#/components/schemas/PropertyGroup" - summarizable: - description: Whether or not the object is summarizable - type: boolean - CanonicalizingRegexType: - description: Regular expression to apply to an arbitrary string to transform it into a canonical string. - properties: - matchRegex: - type: string - description: Regular expression to match to an arbitrary string. - rewriteRegex: - type: string - description: Regular expression to transform into a canonical string. - SharedDatasourceConfigNoInstance: - type: object - description: Structure describing shared config properties of a datasource with no multi-instance support. - required: - - name - properties: - name: - type: string - description: Unique identifier of datasource instance to which this config applies. - displayName: - type: string - description: The user-friendly instance label to display. If omitted, falls back to the title-cased `name`. - datasourceCategory: - type: string - enum: - - UNCATEGORIZED - - TICKETS - - CRM - - PUBLISHED_CONTENT - - COLLABORATIVE_CONTENT - - QUESTION_ANSWER - - MESSAGING - - CODE_REPOSITORY - - CHANGE_MANAGEMENT - - PEOPLE - - EMAIL - - SSO - - ATS - - KNOWLEDGE_HUB - - EXTERNAL_SHORTCUT - - ENTITY - - CALENDAR - - AGENTS - default: UNCATEGORIZED - description: 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. - urlRegex: - type: string - description: "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.**" - example: https://example-company.datasource.com/.* - iconUrl: - type: string - description: 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). - objectDefinitions: - type: array - description: The list of top-level `objectType`s for the datasource. - items: - $ref: "#/components/schemas/ObjectDefinition" - suggestionText: - type: string - description: Example text for what to search for in this datasource - homeUrl: - type: string - description: The URL of the landing page for this datasource instance. Should point to the most useful page for users, not the company marketing page. - crawlerSeedUrls: - type: array - description: This only applies to WEB_CRAWL and BROWSER_CRAWL datasources. Defines the seed URLs for crawling. - items: - type: string - iconDarkUrl: - type: string - description: 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). - hideBuiltInFacets: - type: array - description: List of built-in facet types that should be hidden for the datasource. - items: - type: string - enum: - - TYPE - - TAG - - AUTHOR - - OWNER - canonicalizingURLRegex: - type: array - description: 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. - items: - $ref: "#/components/schemas/CanonicalizingRegexType" - canonicalizingTitleRegex: - type: array - description: 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 - items: - $ref: "#/components/schemas/CanonicalizingRegexType" - redlistTitleRegex: - type: string - description: A regex that identifies titles that should not be indexed - connectorType: - allOf: - - $ref: "#/components/schemas/ConnectorType" - type: string - quicklinks: - type: array - description: List of actions for this datasource instance that will show up in autocomplete and app card, e.g. "Create new issue" for jira - items: - $ref: "#/components/schemas/Quicklink" - renderConfigPreset: - type: string - description: 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: - type: array - description: Aliases that can be used as `app` operator-values. - items: - type: string - isOnPrem: - type: boolean - description: Whether or not this datasource is hosted on-premise. - trustUrlRegexForViewActivity: - type: boolean - default: true - description: 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. - includeUtmSource: - type: boolean - description: If true, a utm_source query param will be added to outbound links to this datasource within Glean. - stripFragmentInCanonicalUrl: - type: boolean - default: true - description: If true, the fragment part of the URL will be stripped when converting to a canonical url. - CustomDatasourceConfig: - description: Structure describing config properties of a custom datasource - allOf: - - $ref: "#/components/schemas/SharedDatasourceConfigNoInstance" - - type: object - properties: - identityDatasourceName: - type: string - description: 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. - productAccessGroup: - type: string - description: If the datasource uses a specific product access group, then the name of that group. - isUserReferencedByEmail: - type: boolean - description: whether email is used to reference users in document ACLs and in group memberships. - isEntityDatasource: - type: boolean - default: false - description: True if this datasource is used to push custom entities. - isTestDatasource: - type: boolean - default: false - description: True if this datasource will be used for testing purpose only. Documents from such a datasource wouldn't have any effect on search rankings. - ShortcutProperties: - properties: - inputAlias: - type: string - description: link text following the viewPrefix as entered by the user. For example, if the view prefix is `go/` and the shortened URL is `go/abc`, then `abc` is the inputAlias. - description: - type: string - description: A short, plain text blurb to help people understand the intent of the shortcut. - destinationUrl: - type: string - format: url - description: destination URL for the shortcut. - createdBy: - type: string - description: Email of the user who created this shortcut. - createTime: - type: integer - format: int64 - description: The time the shortcut was created in epoch seconds. - updatedBy: - type: string - description: Email of the user who last updated this shortcut. - updateTime: - type: integer - format: int64 - description: The time the shortcut was updated in epoch seconds. - ExternalShortcut: - allOf: - - $ref: "#/components/schemas/ShortcutProperties" - - type: object - required: - - destinationUrl - - intermediateUrl - - createdBy - - inputAlias - properties: - title: - type: string - description: Title of the golink - intermediateUrl: - type: string - format: url - description: The URL from which the user is then redirected to the destination URL. - decayedVisitScore: - type: number - format: double - description: decayed visits score for ranking - editUrl: - type: string - format: url - description: The URL using which the user can access the edit page of the shortcut. - SharedDatasourceConfig: - description: Structure describing shared config properties of the datasource (including multi-instance support) - allOf: - - $ref: "#/components/schemas/SharedDatasourceConfigNoInstance" - - type: object - properties: - datasourceName: - type: string - description: The (non-unique) name of the datasource of which this config is an instance, e.g. "jira". - instanceOnlyName: - type: string - description: The instance of the datasource for this particular config, e.g. "onprem". - instanceDescription: - type: string - description: A human readable string identifying this instance as compared to its peers, e.g. "github.com/askscio" or "github.askscio.com" - IndexingShortcut: - allOf: - - $ref: "#/components/schemas/ShortcutProperties" - - type: object - required: - - destinationUrl - - createdBy - - inputAlias - properties: - unlisted: - type: boolean - description: Whether this shortcut is unlisted or not. Unlisted shortcuts are visible to author and admins only. - urlTemplate: - type: string - description: For variable shortcuts, contains the URL template; note, `destinationUrl` contains default URL. - SensitiveInfoType: - properties: - likelihoodThreshold: - deprecated: true - type: string - enum: - - LIKELY - - VERY_LIKELY - - POSSIBLE - - UNLIKELY - - VERY_UNLIKELY - infoType: - description: Text representation of an info-type to scan for. - type: string - TimeRange: - properties: - startTime: - type: string - description: start time of the time range, applicable for the CUSTOM type. - format: date-time - endTime: - type: string - description: end time of the time range, applicable for the CUSTOM type. - format: date-time - lastNDaysValue: - type: integer - description: The number of days to look back from the current time, applicable for the LAST_N_DAYS type. - format: int64 - InputOptions: - description: Controls which data-sources and what time-range to include in scans. - properties: - urlGreenlist: - deprecated: true - type: array - description: list of url regex matching documents excluded from report - items: - type: string - datasourcesType: - type: string - description: The types of datasource for which to run the report/policy. - enum: - - ALL - - CUSTOM - datasources: - deprecated: true - type: array - description: List of datasources to consider for report. DEPRECATED - use datasourceInstances instead. - items: - type: string - datasourceInstances: - type: array - description: List of datasource instances to consider for report/policy. - items: - type: string - timePeriodType: - type: string - description: Type of time period for which to run the report/policy. PAST_DAY is deprecated. - enum: - - ALL_TIME - - PAST_YEAR - - PAST_DAY - - CUSTOM - - LAST_N_DAYS - customTimeRange: - $ref: "#/components/schemas/TimeRange" - SharingOptions: - description: Controls how "shared" a document must be to get picked for scans. - properties: - enabled: - deprecated: true - type: boolean - threshold: - description: The minimum number of users the document is shared with. - type: integer - thresholdEnabled: - description: Documents will be filtered based on how many people have access to it. - type: boolean - anyoneWithLinkEnabled: - deprecated: true - type: boolean - anyoneInternalEnabled: - description: Only users within the organization can access the document. - type: boolean - anonymousAccessEnabled: - description: Anyone on the internet can access the document. - type: boolean - userAccessEnabled: - description: Enable user access check - type: boolean - userIds: - type: array - description: Any one of the specified users can access the document. - items: - type: string - ExternalSharingOptions: - deprecated: true - allOf: - - description: DEPRECATED - use `broadSharingOptions` instead. - - $ref: "#/components/schemas/SharingOptions" - - type: object - properties: - domainAccessEnabled: - type: boolean - HotwordProximity: - properties: - windowBefore: - type: integer - windowAfter: - type: integer - Hotword: - properties: - regex: - type: string - proximity: - $ref: "#/components/schemas/HotwordProximity" - SensitiveExpression: - properties: - expression: - description: Sensitive word, phrase, or regular expression. - type: string - hotwords: - description: Zero to three proximate regular expressions necessary to consider an expression as sensitive content. - type: array - items: - $ref: "#/components/schemas/Hotword" - SensitiveContentOptions: - description: Options for defining sensitive content within scanned documents. - properties: - sensitiveInfoTypes: - description: Predefined categories of terms to consider as sensitive content. See https://cloud.google.com/dlp/docs/infotypes-reference for available types. - type: array - items: - $ref: "#/components/schemas/SensitiveInfoType" - sensitiveTerms: - description: list of words and phrases to consider as sensitive content - type: array - items: - $ref: "#/components/schemas/SensitiveExpression" - sensitiveRegexes: - description: list of regular expressions to consider as sensitive content - type: array - items: - $ref: "#/components/schemas/SensitiveExpression" - DlpPersonMetadata: - properties: - firstName: - type: string - description: The first name of the person - email: - type: string - description: The user's primary email address - DlpPerson: - description: Details about the person who created this report/policy. - required: - - name - - obfuscatedId - properties: - name: - type: string - description: The display name. - obfuscatedId: - type: string - description: An opaque identifier that can be used to request metadata for a Person. - metadata: - $ref: "#/components/schemas/DlpPersonMetadata" - AllowlistOptions: - description: Terms that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term in the allow-list, it will not be counted as a violation. - properties: - terms: - type: array - description: list of words and phrases to consider as whitelisted content - items: - type: string - DlpConfig: - description: Detailed configuration of what documents and sensitive content will be scanned. - properties: - version: - description: Synonymous with report/policy id. - type: integer - format: int64 - sensitiveInfoTypes: - deprecated: true - description: DEPRECATED - use `sensitiveContentOptions` instead. - type: array - items: - $ref: "#/components/schemas/SensitiveInfoType" - inputOptions: - description: Options for documents to include or exclude in a report - $ref: "#/components/schemas/InputOptions" - externalSharingOptions: - deprecated: true - description: DEPRECATED - use `broadSharingOptions` instead. - $ref: "#/components/schemas/ExternalSharingOptions" - broadSharingOptions: - description: Options for defining documents to scan for sensitive content. - $ref: "#/components/schemas/SharingOptions" - sensitiveContentOptions: - description: Options for defining sensitive content within scanned documents. - $ref: "#/components/schemas/SensitiveContentOptions" - reportName: - type: string - frequency: - description: Interval between scans. - type: string - createdBy: - description: Person who created this report/policy. - $ref: "#/components/schemas/DlpPerson" - createdAt: - description: Timestamp at which this configuration was created. - type: string - format: iso-date-time - redactQuote: - description: redact quote in findings of the report - type: boolean - autoHideDocs: - description: auto hide documents with findings in the report - type: boolean - allowlistOptions: - description: Options for defining whitelisting content within scanned documents - $ref: "#/components/schemas/AllowlistOptions" - DlpFrequency: + - LAST_VIEWED_AT + - VISITORS_COUNT + - RECENT_SHARES + - DOCUMENT_CONTENT + - CUSTOM_METADATA + DocumentOrError: + x-omit-error-on-success: true + oneOf: + - $ref: "#/components/schemas/Document" + - type: object + required: + - error + properties: + error: + type: string + description: The text for error, reason. + x-is-error-field: true + GetDocumentsResponse: + properties: + documents: + type: object + additionalProperties: + $ref: "#/components/schemas/DocumentOrError" + description: The document details or the error if document is not found. + GetDocumentsByFacetsRequest: + required: + - filterSets + properties: + datasourcesFilter: + type: array + items: + type: string + description: Filter results to one or more datasources (e.g. gmail, slack). All results are returned if missing. + filterSets: + type: array + items: + $ref: "#/components/schemas/FacetFilterSet" + description: A list of facet filter sets that will be OR'ed together. An AND is assumed between different filters in each set. + cursor: + type: string + description: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. + GetDocumentsByFacetsResponse: + properties: + documents: + type: array + items: + $ref: "#/components/schemas/Document" + description: The document details, ordered by score. + hasMoreResults: + type: boolean + description: Whether more results are available. Use cursor to retrieve them. + cursor: + type: string + description: Cursor that indicates the start of the next page of results. To be passed in "more" requests for this query. + InsightsOverviewRequest: + properties: + departments: + type: array + items: + type: string + description: Departments for which Insights are requested. + managerEmails: + type: array + items: + type: string + description: Manager emails whose teams should be filtered for. Empty array means no filtering. + dayRange: + $ref: "#/components/schemas/Period" + description: Time period for which Insights are requested. + InsightsAssistantRequest: + properties: + departments: + type: array + items: + type: string + description: Departments for which Insights are requested. + managerEmails: + type: array + items: + type: string + description: Manager emails whose teams should be filtered for. Empty array means no filtering. + dayRange: + $ref: "#/components/schemas/Period" + description: Time period for which Insights are requested. + AgentsInsightsV2Request: + properties: + agentIds: + type: array + items: + type: string + description: IDs of the Agents for which Insights should be returned. An empty array signifies all. + departments: + type: array + items: + type: string + description: Departments for which Insights are requested. + managerEmails: + type: array + items: + type: string + description: Manager emails whose teams should be filtered for. Empty array means no filtering. + dayRange: + $ref: "#/components/schemas/Period" + description: Time period for which Insights are requested. + McpInsightsRequest: + properties: + departments: + type: array + items: + type: string + description: Departments for which Insights are requested. + managerIds: + type: array + items: + type: string + description: Manager user IDs whose teams should be filtered for. Empty array means no filtering. + managerEmails: + type: array + items: + type: string + description: Manager emails whose teams should be filtered for. Empty array means no filtering. + dayRange: + $ref: "#/components/schemas/Period" + description: Time period for which Insights are requested. + McpBreakdownInsightsRequest: + properties: + departments: + type: array + items: + type: string + description: Departments for which Insights are requested. + managerIds: + type: array + items: + type: string + description: Manager user IDs whose teams should be filtered for. Empty array means no filtering. + managerEmails: + type: array + items: + type: string + description: Manager emails whose teams should be filtered for. Empty array means no filtering. + dayRange: + $ref: "#/components/schemas/Period" + description: Time period for which Insights are requested. + breakdownType: + type: string + enum: + - USERS + - HOST_APPLICATIONS + - TOOLS + - SERVERS + description: Type of breakdown to return. + hostApplications: + type: array + items: + type: string + description: Host applications to filter by. Empty array means all host applications. + tools: + type: array + items: + type: string + description: MCP tools to filter by. Empty array means all tools. + servers: + type: array + items: + type: string + description: MCP servers to filter by. Empty array means all servers. + InsightsRequest: + properties: + overviewRequest: + $ref: "#/components/schemas/InsightsOverviewRequest" + x-visibility: Public + description: If specified, will return data for the Overview section of the Insights Dashboard. + assistantRequest: + $ref: "#/components/schemas/InsightsAssistantRequest" + x-visibility: Public + description: If specified, will return data for the Assistant section of the Insights Dashboard. + agentsRequest: + $ref: "#/components/schemas/AgentsInsightsV2Request" + x-visibility: Public + description: If specified, will return data for the Agents section of the Insights Dashboard. + mcpRequest: + $ref: "#/components/schemas/McpInsightsRequest" + description: If specified, will return data for the MCP section of the Insights Dashboard. + mcpBreakdownRequest: + $ref: "#/components/schemas/McpBreakdownInsightsRequest" + disablePerUserInsights: + type: boolean + description: If true, suppresses the generation of per-user Insights in the response. Default is false. + UserActivityInsight: + required: + - user + - activity + properties: + user: + $ref: "#/components/schemas/Person" + activity: + type: string + enum: + - ALL + - SEARCH + description: Activity e.g. search, home page visit or all. + lastActivityTimestamp: + type: integer + description: Unix timestamp of the last activity (in seconds since epoch UTC). + activityCount: + $ref: "#/components/schemas/CountInfo" + activeDayCount: + $ref: "#/components/schemas/CountInfo" + GleanAssistInsightsResponse: + properties: + lastLogTimestamp: + type: integer + description: Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). + activityInsights: + type: array + items: + $ref: "#/components/schemas/UserActivityInsight" + description: Insights for all active users with respect to set of actions. + totalActiveUsers: + type: integer + description: Total number of active users in the requested period. + datasourceInstances: + type: array + items: + type: string + description: List of datasource instances for which glean assist is enabled. + departments: + type: array + items: + type: string + description: List of departments applicable for users tab. + CurrentActiveUsers: + properties: + monthlyActiveUsers: + type: integer + description: Number of current Monthly Active Users. + weeklyActiveUsers: + type: integer + description: Number of current Weekly Active Users. + InsightsSearchSummary: + allOf: + - $ref: "#/components/schemas/CurrentActiveUsers" + - type: object + properties: + numSearches: + type: integer + description: Total number of searches by users over the specified time period. + numSearchUsers: + type: integer + description: Total number of distinct users who searched over the specified time period. + InsightsChatSummary: + allOf: + - $ref: "#/components/schemas/CurrentActiveUsers" + - type: object + properties: + numChats: + type: integer + description: Total number of chats by users over the specified time period. + numChatUsers: + type: integer + description: Total number of distinct users who used Chat over the specified time period. + InsightsDepartmentsSummary: + allOf: + - $ref: "#/components/schemas/CurrentActiveUsers" + - type: object + properties: + departments: + type: array + items: + type: string + description: Department name(s). + employeeCount: + type: integer + description: Number of current employees in the specified departments, according to the Org Chart. + totalSignups: + type: integer + description: Number of current signed up employees in the specified departments, according to the Org Chart. + searchSummary: + $ref: "#/components/schemas/InsightsSearchSummary" + chatSummary: + $ref: "#/components/schemas/InsightsChatSummary" + searchActiveUsers: + $ref: "#/components/schemas/CurrentActiveUsers" + description: Search-specific active user counts for the specified departments. + assistantActiveUsers: + $ref: "#/components/schemas/CurrentActiveUsers" + description: Assistant-specific active user counts for the specified departments. + agentsActiveUsers: + $ref: "#/components/schemas/CurrentActiveUsers" + description: Agents-specific active user counts for the specified departments. + mcpActiveUsers: + $ref: "#/components/schemas/CurrentActiveUsers" + description: MCP active user counts for the specified departments. + extensionSummary: + $ref: "#/components/schemas/CurrentActiveUsers" + ugcSummary: + $ref: "#/components/schemas/CurrentActiveUsers" + LabeledCountInfo: + required: + - label + properties: + label: + type: string + description: Label for the included count information. + countInfo: + type: array + items: + $ref: "#/components/schemas/CountInfo" + description: List of data points for counts for a given date period. + PerUserInsight: + properties: + person: + $ref: "#/components/schemas/Person" + numSearches: + type: integer + description: Total number of searches by this user over the specified time period. + numChats: + type: integer + description: Total number of chats by this user over the specified time period. + numActiveSessions: + type: integer + description: Total number of active sessions by this user in a Glean client over the specified time period. + numGleanbotUsefulResponses: + type: integer + description: Total number of Gleanbot responses marked useful by this user over the specified time period. + numDaysActive: + type: integer + description: Total number of days this user was an Active User over the specified time period. + numSummarizations: + type: integer + description: Total number of summarized items by this user over the specified time period. + numAiAnswers: + type: integer + description: Total number of AI Answers interacted with by this user over the specified time period. + numAgentRuns: + type: integer + description: Total number of agent runs for this user over the specified time period. + numMcpCalls: + type: integer + description: Total number of MCP calls for this user over the specified time period. + InsightsOverviewResponse: + allOf: + - $ref: "#/components/schemas/InsightsDepartmentsSummary" + - type: object + properties: + lastUpdatedTs: + type: integer + description: Unix timestamp of the last update for the insights data in the response. + searchSessionSatisfaction: + type: number + format: float + description: Search session satisfaction rate, over the specified time period in the specified departments. + deprecated: true + x-glean-deprecated: + id: 2652ea73-3e33-4409-ba8c-bda7b60a2c24 + introduced: "2026-05-13" + message: This property is no longer supported. Please contact Support for alternatives. + removal: "2027-01-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-05-13, removal scheduled for 2027-01-15: This property is no longer supported. Please contact Support for alternatives." + monthlyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + weeklyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + dailyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + searchMonthlyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + searchWeeklyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + searchDailyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + assistantMonthlyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + assistantWeeklyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + assistantDailyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + agentsMonthlyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + agentsWeeklyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + agentsDailyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + mcpMonthlyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + mcpWeeklyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + mcpDailyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + searchesTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + assistantInteractionsTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + agentRunsTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + mcpCallsTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + searchDatasourceCounts: + type: object + additionalProperties: + type: integer + description: Counts of search result clicks, by datasource, over the specified time period in the specified departments. + chatDatasourceCounts: + type: object + additionalProperties: + type: integer + description: Counts of cited documents in chat, by datasource, over the specified time period in the specified departments. + perUserInsights: + type: array + items: + $ref: "#/components/schemas/PerUserInsight" + description: Per-user insights, over the specified time period in the specified departments. All current users in the organization who have signed into Glean at least once are included. + PerUserAssistantInsight: + properties: + person: + $ref: "#/components/schemas/Person" + numChatMessages: + type: integer + description: Total number of chat messages sent by this user over the specified time period. + numSummarizations: + type: integer + description: Total number of summarized items by this user over the specified time period. + numAiAnswers: + type: integer + description: Total number of AI Answers interacted with by this user over the specified time period. + numGleanbotInteractions: + type: integer + description: Total number of Gleanbot responses marked useful by this user over the specified time period. + numDaysActive: + type: integer + description: Total number of days this user was active on the Assistant over the specified time period. + AssistantInsightsResponse: + allOf: + - $ref: "#/components/schemas/CurrentActiveUsers" + - type: object + properties: + lastUpdatedTs: + type: integer + description: Unix timestamp of the last update for the insights data in the response. + monthlyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + weeklyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + dailyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + totalSignups: + type: integer + description: Number of current signed up employees in the specified departments, according to the Org Chart. + chatMessagesTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + summarizationsTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + aiAnswersTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + gleanbotInteractionsTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + perUserInsights: + type: array + items: + $ref: "#/components/schemas/PerUserAssistantInsight" + upvotesTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + downvotesTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + PerAgentInsight: + properties: + agentId: + type: string + description: Agent ID + agentName: + type: string + description: Agent name + icon: + $ref: "#/components/schemas/IconConfig" + description: Agent icon configuration + isDeleted: + type: boolean + description: Indicates whether the agent has been deleted + userCount: + type: integer + description: Total number of users for this agent over the specified time period. + runCount: + type: integer + description: Total number of runs for this agent over the specified time period. + upvoteCount: + type: integer + description: Total number of upvotes for this agent over the specified time period. + downvoteCount: + type: integer + description: Total number of downvotes for this agent over the specified time period. + owner: + $ref: "#/components/schemas/Person" + description: | + The creator/owner of the agent. Absent if agent is deleted or owner is unknown. + AgentUseCaseInsight: + properties: + useCase: + type: string + description: Use case name + runCount: + type: integer + description: Total number of runs for this use case over the specified time period. + trend: + type: number + format: float + description: Percentage change in runs compared to the previous equivalent time period. + topDepartments: + type: string + description: Comma-separated list of the top departments using this use case. + topAgentId: + type: string + description: ID of the most-used agent for this use case. + topAgentName: + type: string + description: Name of the most-used agent for this use case. + topAgentIcon: + $ref: "#/components/schemas/IconConfig" + description: Icon of the most-used agent for this use case. + topAgentIsDeleted: + type: boolean + description: Indicates whether the top agent has been deleted. + AgentsUsageByDepartmentInsight: + properties: + department: + type: string + description: Name of the department + agentAdoptionRate: + type: number + format: float + description: Percentage of employees in the department who have used agents at least once over the specified time period. + userCount: + type: integer + description: Total number of users in this department who have used any agent over the specified time period. + runCount: + type: integer + description: Total number of runs in this department over the specified time period. + agentId: + type: string + description: ID of the agent to be shown in the agent column in this department over the specified time period. + agentName: + type: string + description: Name of the agent to be shown in the agent column in this department over the specified time period. + icon: + $ref: "#/components/schemas/IconConfig" + description: Agent icon configuration + isDeleted: + type: boolean + description: Indicates whether the agent has been deleted + AgentUsersInsight: + properties: + person: + $ref: "#/components/schemas/Person" + departmentName: + type: string + description: Department name + agentsUsedCount: + type: integer + description: Total number of agents used by this user over the specified time period. + averageRunsPerDayCount: + type: number + format: float + description: Average number of runs per day for this user over the specified time period. + agentsCreatedCount: + type: integer + description: Total number of agents created by this user over the specified time period. + runCount: + type: integer + description: Total number of agent runs for this user over the specified time period. + AgentsTimeSavedInsight: + properties: + agentId: + type: string + description: Agent ID + agentName: + type: string + description: Agent name + icon: + $ref: "#/components/schemas/IconConfig" + description: Agent icon configuration + isDeleted: + type: boolean + description: Indicates whether the agent has been deleted + runCount: + type: integer + description: Total number of runs for this agent over the specified time period. + minsPerRun: + type: number + format: float + description: Average minutes saved per run for this agent over the specified time period. + feedbackUserCount: + type: integer + description: Total number of users who provided feedback on time saved for this agent over the specified time period. + AgentsInsightsV2Response: + allOf: + - $ref: "#/components/schemas/CurrentActiveUsers" + - type: object + properties: + monthlyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + weeklyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + dailyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + sharedAgentsCount: + type: integer + description: Total number of shared agents. + topAgentsInsights: + type: array + items: + $ref: "#/components/schemas/PerAgentInsight" + topUseCasesInsights: + type: array + items: + $ref: "#/components/schemas/AgentUseCaseInsight" + agentsUsageByDepartmentInsights: + type: array + items: + $ref: "#/components/schemas/AgentsUsageByDepartmentInsight" + agentUsersInsights: + type: array + items: + $ref: "#/components/schemas/AgentUsersInsight" + agentsTimeSavedInsights: + type: array + items: + $ref: "#/components/schemas/AgentsTimeSavedInsight" + description: Insights for agents time saved over the specified time period. + dailyAgentRunsTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + successfulRunsTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + failedRunsTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + pausedRunsTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + upvotesTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + downvotesTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + McpInsightsResponse: + allOf: + - $ref: "#/components/schemas/CurrentActiveUsers" + - type: object + properties: + dailyActiveUsers: + type: integer + description: Number of current Daily Active Users. + monthlyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + weeklyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + dailyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + overallDailyActiveUserTimeseries: + $ref: "#/components/schemas/LabeledCountInfo" + topHostApplicationsActiveUserTimeseries: + type: array + items: + $ref: "#/components/schemas/LabeledCountInfo" + McpUserBreakdown: + properties: + person: + $ref: "#/components/schemas/Person" + totalCalls: + type: integer + description: Total number of MCP calls made by this user in the specified time period. + hostApplications: + type: array + items: + type: string + description: Host applications used by this user in the specified time period. + tools: + type: array + items: + type: string + description: MCP tools used by this user in the specified time period. + servers: + type: array + items: + type: string + description: MCP servers used by this user in the specified time period. + McpHostApplicationBreakdown: + properties: + hostApplication: + type: string + description: Host application name. + totalCalls: + type: integer + description: Total number of MCP calls made from this host application in the specified time period. + activeUsers: + type: integer + description: Total number of active users from this host application in the specified time period. + McpToolBreakdown: + properties: + tool: + type: string + description: MCP tool name. + totalCalls: + type: integer + description: Total number of MCP calls for this tool in the specified time period. + activeUsers: + type: integer + description: Total number of active users for this tool in the specified time period. + hostApplications: + type: array + items: + type: string + description: Host applications using this tool in the specified time period. + McpServerBreakdown: + properties: + server: + type: string + description: MCP server name. + totalCalls: + type: integer + description: Total number of MCP calls for this server in the specified time period. + activeUsers: + type: integer + description: Total number of active users for this server in the specified time period. + hostApplications: + type: array + items: + type: string + description: Host applications using this server in the specified time period. + McpBreakdownInsightsResponse: + properties: + usersBreakdown: + type: array + items: + $ref: "#/components/schemas/McpUserBreakdown" + hostApplicationsBreakdown: + type: array + items: + $ref: "#/components/schemas/McpHostApplicationBreakdown" + toolsBreakdown: + type: array + items: + $ref: "#/components/schemas/McpToolBreakdown" + serversBreakdown: + type: array + items: + $ref: "#/components/schemas/McpServerBreakdown" + InsightsResponse: + properties: + gleanAssist: + deprecated: true + $ref: "#/components/schemas/GleanAssistInsightsResponse" + x-glean-deprecated: + id: 15850758-4d95-4d98-8d57-39c50663a796 + introduced: "2026-02-05" + message: Field is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated" + overviewResponse: + $ref: "#/components/schemas/InsightsOverviewResponse" + assistantResponse: + $ref: "#/components/schemas/AssistantInsightsResponse" + agentsResponse: + $ref: "#/components/schemas/AgentsInsightsV2Response" + mcpResponse: + $ref: "#/components/schemas/McpInsightsResponse" + mcpBreakdownResponse: + $ref: "#/components/schemas/McpBreakdownInsightsResponse" + MessagesRequest: + required: + - id + - idType + - datasource + properties: + idType: + type: string + enum: + - CHANNEL_NAME + - THREAD_ID + - CONVERSATION_ID + description: Type of the id in the incoming request. + id: + type: string + description: ID corresponding to the requested idType. Note that channel and threads are represented by the underlying datasource's ID and conversations are represented by their document's ID. + workspaceId: + type: string + description: Id for the for the workspace in case of multiple workspaces. + direction: + type: string + enum: + - OLDER + - NEWER + description: The direction of the results asked with respect to the reference timestamp. Missing field defaults to OLDER. Only applicable when using a message_id. + timestampMillis: + type: integer + format: int64 + description: Timestamp in millis of the reference message. Only applicable when using a message_id. + includeRootMessage: + type: boolean + description: Whether to include root message in response. + datasource: + type: string + enum: + - SLACK + - SLACKENTGRID + - MICROSOFTTEAMS + - GCHAT + - FACEBOOKWORKPLACE + description: The type of the data source. + datasourceInstanceDisplayName: + type: string + description: The datasource instance display name from which the document was extracted. This is used for appinstance facet filter for datasources that support multiple instances. + InvalidOperatorValueError: + properties: + key: + description: The operator key that has an invalid value. + type: string + value: + description: The invalid operator value. + type: string + ErrorMessage: + properties: + source: + description: The datasource this message relates to. + type: string + errorMessage: + type: string + ErrorInfo: + properties: + badGmailToken: + type: boolean + description: Indicates the gmail results could not be fetched due to bad token. + badOutlookToken: + type: boolean + description: Indicates the outlook results could not be fetched due to bad token. + invalidOperators: + type: array + description: Indicates results could not be fetched due to invalid operators in the query. + items: + $ref: "#/components/schemas/InvalidOperatorValueError" + errorMessages: + type: array + items: + $ref: "#/components/schemas/ErrorMessage" + federatedSearchRateLimitError: + type: boolean + description: Indicates the federated search results could not be fetched due to rate limiting. + x-speakeasy-name-override: GleanDataError + ResultsResponse: + properties: + trackingToken: + type: string + description: A token that should be passed for additional requests related to this request (such as more results requests). + sessionInfo: + $ref: "#/components/schemas/SessionInfo" + results: + type: array + items: + $ref: "#/components/schemas/SearchResult" + structuredResults: + type: array + items: + $ref: "#/components/schemas/StructuredResult" + generatedQnaResult: + $ref: "#/components/schemas/GeneratedQna" + errorInfo: + $ref: "#/components/schemas/ErrorInfo" + requestID: + type: string + description: A platform-generated request ID to correlate backend logs. + backendTimeMillis: + type: integer + format: int64 + description: Time in milliseconds the backend took to respond to the request. + example: 1100 + BackendExperimentsContext: + properties: + experimentIds: + type: array + items: + type: integer + format: int64 + description: List of experiment ids for the corresponding request. + SearchWarning: + required: + - warningType + properties: + warningType: + type: string + enum: + - LONG_QUERY + - QUOTED_PUNCTUATION + - PUNCTUATION_ONLY + - COPYPASTED_QUOTES + - INVALID_OPERATOR + - MAYBE_INVALID_FACET_QUERY + - TOO_MANY_DATASOURCE_GROUPS + description: The type of the warning. + lastUsedTerm: + type: string + description: The last term we considered in the user's long query. + quotesIgnoredQuery: + type: string + description: The query after ignoring/removing quotes. + ignoredTerms: + type: array + items: + type: string + description: 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. + SearchResponseMetadata: + properties: + rewrittenQuery: + type: string + description: A cleaned up or updated version of the query to be displayed in the query box. Useful for mapping visual facets to search operators. + searchedQuery: + type: string + description: The actual query used to perform search and return results. + searchedQueryWithoutNegation: + type: string + description: The query used to perform search and return results, with negated terms and facets removed. + x-includeEmpty: true + searchedQueryRanges: + type: array + items: + $ref: "#/components/schemas/TextRange" + description: The bolded ranges within the searched query. + originalQuery: + type: string + description: The query text sent by the client in the request. + querySuggestion: + $ref: "#/components/schemas/QuerySuggestion" + description: An alternative query to the one provided that may give better results, e.g. a spelling suggestion. + additionalQuerySuggestions: + $ref: "#/components/schemas/QuerySuggestionList" + description: Other alternative queries that may provide better or more specific results than the original query. + negatedTerms: + type: array + items: + type: string + description: A list of terms that were negated when processing the query. + modifiedQueryWasUsed: + type: boolean + description: A different query was performed than the one requested. + originalQueryHadNoResults: + type: boolean + description: No results were found for the original query. The usage of this bit in conjunction with modifiedQueryWasUsed will dictate whether the full page replacement is 0-result or few-result based. + searchWarning: + $ref: "#/components/schemas/SearchWarning" + triggeredExpertDetection: + type: boolean + description: Whether the query triggered expert detection results in the People tab. + isNoQuotesSuggestion: + type: boolean + description: Whether the query was modified to remove quotes + FacetValue: + properties: + stringValue: + type: string + example: engineering + description: The value that should be set in the FacetFilter when applying this filter to a search request. + integerValue: + type: integer + example: 5 + displayLabel: + type: string + example: engineering + description: An optional user-friendly label to display in place of the facet value. + iconConfig: + $ref: "#/components/schemas/IconConfig" + FacetBucket: + properties: + count: + type: integer + description: Estimated number of results in this facet. + example: 1 + datasource: + type: string + example: jira + description: The datasource the value belongs to. This will be used by the all tab to show types across all datasources. + percentage: + type: integer + description: Estimated percentage of results in this facet. + example: 5 + value: + $ref: "#/components/schemas/FacetValue" + FacetResult: + properties: + sourceName: + type: string + description: The source of this facet (e.g. container_name, type, last_updated_at). + example: container_name + operatorName: + type: string + description: How to display this facet. Currently supportes 'SelectSingle' and 'SelectMultiple'. + example: SelectMultiple + buckets: + type: array + description: A list of unique buckets that exist within this result set. + items: + $ref: "#/components/schemas/FacetBucket" + hasMoreBuckets: + type: boolean + description: Returns true if more buckets exist than those returned. Additional buckets can be retrieve by requesting again with a higher facetBucketSize. + example: false + groupName: + type: string + description: For most facets this will be the empty string, meaning the facet is high-level and applies to all documents for the datasource. When non-empty, this is used to group facets together (i.e. group facets for each doctype for a certain datasource) + example: Service Cloud + ResultsDescription: + properties: + text: + type: string + description: Textual description of the results. Can be shown at the top of SERP, e.g. 'People who write about this topic' for experts in people tab. + iconConfig: + $ref: "#/components/schemas/IconConfig" + description: The config for the icon that's displayed with this description + SearchResponse: + allOf: + - $ref: "#/components/schemas/ResultsResponse" + - $ref: "#/components/schemas/BackendExperimentsContext" + - type: object + properties: + metadata: + $ref: "#/components/schemas/SearchResponseMetadata" + facetResults: + type: array + items: + $ref: "#/components/schemas/FacetResult" + resultTabs: + type: array + items: + $ref: "#/components/schemas/ResultTab" + description: All result tabs available for the current query. Populated if QUERY_METADATA is specified in the request. + resultTabIds: + type: array + items: + type: string + description: The unique IDs of the result tabs to which this response belongs. + resultsDescription: + $ref: "#/components/schemas/ResultsDescription" + rewrittenFacetFilters: + type: array + items: + $ref: "#/components/schemas/FacetFilter" + description: The actual applied facet filters based on the operators and facetFilters in the query. Useful for mapping typed operators to visual facets. + cursor: + type: string + description: Cursor that indicates the start of the next page of results. To be passed in "more" requests for this query. + hasMoreResults: + type: boolean + description: Whether more results are available. Use cursor to retrieve them. + example: + trackingToken: trackingToken + suggestedSpellCorrectedQuery: suggestedSpellCorrectedQuery + hasMoreResults: true + errorInfo: + errorMessages: + - source: gmail + errorMessage: invalid token + - source: slack + errorMessage: expired token + requestID: 5e345ae500ff0befa2b9d1a3ba0001737e7363696f312d323535323137000171756572792d656e64706f696e743a323032303031333074313830343032000100 + results: + - snippets: + - snippet: snippet + mimeType: mimeType + metadata: + container: container + createTime: "2000-01-23T04:56:07.000Z" + datasource: datasource + author: + name: name + documentId: documentId + updateTime: "2000-01-23T04:56:07.000Z" + mimeType: mimeType + objectType: objectType + title: title + url: https://www.example.com/ + - snippets: + - snippet: snippet + mimeType: mimeType + metadata: + container: container + createTime: "2000-01-23T04:56:07.000Z" + datasource: datasource + author: + name: name + documentId: documentId + updateTime: "2000-01-23T04:56:07.000Z" + mimeType: mimeType + objectType: objectType + title: title + url: https://www.example.com/ + facetResults: + - buckets: + - percentage: 5 + count: 1 + value: + stringValue: stringValue + integerValue: 5 + - percentage: 5 + count: 1 + value: + stringValue: stringValue + integerValue: 5 + sourceName: sourceName + operatorName: operatorName + objectType: objectType + - buckets: + - percentage: 5 + count: 1 + value: + stringValue: stringValue + integerValue: 5 + - percentage: 5 + count: 1 + value: + stringValue: stringValue + integerValue: 5 + sourceName: sourceName + operatorName: operatorName + objectType: objectType + rewrittenQuery: rewrittenQuery + rewrittenFacetFilters: + - fieldName: fieldName + values: + - fieldValues + - fieldValues + - fieldName: fieldName + values: + - fieldValues + - fieldValues + MessagesResponse: + required: + - hasMore + properties: + hasMore: + type: boolean + description: Whether there are more results for client to continue requesting. + searchResponse: + $ref: "#/components/schemas/SearchResponse" + rootMessage: + $ref: "#/components/schemas/SearchResult" + EditPinRequest: + allOf: + - $ref: "#/components/schemas/PinDocumentMutableProperties" + - type: object + properties: + id: + type: string + description: The opaque id of the pin to be edited. + GetPinRequest: + properties: + id: + type: string + description: The opaque id of the pin to be fetched. + GetPinResponse: + properties: + pin: + $ref: "#/components/schemas/PinDocument" + ListPinsResponse: + required: + - pins + properties: + pins: + type: array + items: + $ref: "#/components/schemas/PinDocument" + description: List of pinned documents. + PinRequest: + allOf: + - $ref: "#/components/schemas/PinDocumentMutableProperties" + - type: object + properties: + documentId: + type: string + description: The document to be pinned. + Unpin: + properties: + id: + type: string + description: The opaque id of the pin to be unpinned. + ResultsRequest: + properties: + timestamp: + type: string + description: The ISO 8601 timestamp associated with the client request. + format: date-time + trackingToken: + type: string + description: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. + sessionInfo: + $ref: "#/components/schemas/SessionInfo" + sourceDocument: + $ref: "#/components/schemas/Document" + description: The document from which the ResultsRequest is issued, if any. + pageSize: + type: integer + example: 100 + description: Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. + maxSnippetSize: + type: integer + description: Hint to the server about how many characters long a snippet may be. Server may return less or more. + example: 400 + SearchRequest: + required: + - query + allOf: + - $ref: "#/components/schemas/ResultsRequest" + - type: object + properties: + query: + type: string + description: The search terms. + example: vacation policy + cursor: + type: string + description: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. + resultTabIds: + type: array + items: + type: string + description: The unique IDs of the result tabs for which to fetch results. This will have precedence over datasource filters if both are specified and in conflict. + inputDetails: + $ref: "#/components/schemas/SearchRequestInputDetails" + requestOptions: + $ref: "#/components/schemas/SearchRequestOptions" + timeoutMillis: + type: integer + description: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. + example: 5000 + disableSpellcheck: + type: boolean + description: Whether or not to disable spellcheck. + example: + trackingToken: trackingToken + query: vacation policy + pageSize: 10 + requestOptions: + facetFilters: + - fieldName: type + values: + - value: article + relationType: EQUALS + - value: document + relationType: EQUALS + - fieldName: department + values: + - value: engineering + relationType: EQUALS + AutocompleteRequest: + type: object + properties: + trackingToken: + type: string + sessionInfo: + $ref: "#/components/schemas/SessionInfo" + query: + type: string + description: Partially typed query. + example: San Fra + datasourcesFilter: + type: array + items: + type: string + description: Filter results to only those relevant to one or more datasources (e.g. jira, gdrive). Results are unfiltered if missing. + datasource: + type: string + description: Filter to only return results relevant to the given datasource. + resultTypes: + type: array + description: Filter to only return results of the given type(s). All types may be returned if omitted. + items: type: string - description: Interval between scans. DAILY is deprecated. - x-include-enum-class-prefix: true enum: - - ONCE - - DAILY - - WEEKLY - - CONTINUOUS - - NONE - DlpReportStatus: + - ADDITIONAL_DOCUMENT + - APP + - BROWSER_HISTORY + - DATASOURCE + - DOCUMENT + - ENTITY + - GOLINK + - HISTORY + - CHAT_HISTORY + - NEW_CHAT + - OPERATOR + - OPERATOR_VALUE + - QUICKLINK + - SUGGESTION + resultSize: + type: integer + description: | + Maximum number of results to be returned. If no value is provided, the backend will cap at 200. + example: 10 + authTokens: + type: array + description: Auth tokens which may be used for federated results. + items: + $ref: "#/components/schemas/AuthToken" + example: + trackingToken: trackingToken + query: what is a que + datasource: GDRIVE + resultSize: 10 + OperatorScope: + properties: + datasource: + type: string + docType: + type: string + OperatorMetadata: + required: + - name + properties: + name: + type: string + isCustom: + type: boolean + description: Whether this operator is supported by default or something that was created within a workplace app (e.g. custom jira field). + operatorType: + type: string + enum: + - TEXT + - DOUBLE + - DATE + - USER + helpText: + type: string + scopes: + type: array + items: + $ref: "#/components/schemas/OperatorScope" + value: + type: string + description: Raw/canonical value of the operator. Only applies when result is an operator value. + displayValue: + type: string + description: Human readable value of the operator that can be shown to the user. Only applies when result is an operator value. + example: + name: Last Updated + operatorType: DATE + scopes: + - datasource: GDRIVE + docType: Document + - datasource: ZENDESK + Quicklink: + description: An action for a specific datasource that will show up in autocomplete and app card, e.g. "Create new issue" for jira. + properties: + name: + type: string + description: Full action name. Used in autocomplete. + shortName: + type: string + description: Shortened name. Used in app cards. + url: + type: string + description: The URL of the action. + iconConfig: + $ref: "#/components/schemas/IconConfig" + description: The config for the icon for this quicklink + id: + type: string + description: Unique identifier of this quicklink + scopes: + type: array + description: The scopes for which this quicklink is applicable + items: type: string - description: The status of the policy/report. Only ACTIVE status will be picked for scans. - x-include-enum-class-prefix: true enum: - - ACTIVE - - INACTIVE - - CANCELLED - - NONE - DlpReport: - description: Full policy information that will be used for scans. - properties: - id: - type: string - name: - type: string - config: - description: All details of the policy that is needed for a scan. - $ref: "#/components/schemas/DlpConfig" - frequency: - description: The interval between scans. - $ref: "#/components/schemas/DlpFrequency" - status: - description: The status of the policy. - $ref: "#/components/schemas/DlpReportStatus" - createdBy: - description: Person who created this report. - $ref: "#/components/schemas/DlpPerson" - createdAt: - description: Timestamp at which the policy was created. - type: string - format: iso-date-time - lastUpdatedAt: - description: Timestamp at which the policy was last updated. - type: string - format: iso-date-time - autoHideDocs: - description: Auto hide documents with findings in the policy. - type: boolean - lastScanStatus: - type: string - enum: - - PENDING - - SUCCESS - - FAILURE - - CANCELLED - - CANCELLING - - ACTIVE - lastScanStartTime: - description: The timestamp at which the report's last run/scan began. - type: string - format: iso-date-time - updatedBy: - description: Person who last updated this report. - $ref: "#/components/schemas/DlpPerson" - GetDlpReportResponse: - properties: - report: - $ref: "#/components/schemas/DlpReport" - UpdateDlpReportRequest: + - APP_CARD + - AUTOCOMPLETE_EXACT_MATCH + - AUTOCOMPLETE_FUZZY_MATCH + - AUTOCOMPLETE_ZERO_QUERY + - NEW_TAB_PAGE + AutocompleteResult: + required: + - result + - result_type + properties: + result: + type: string + keywords: + type: array + items: + type: string + description: A list of all possible keywords for given result. + resultType: + type: string + enum: + - ADDITIONAL_DOCUMENT + - APP + - BROWSER_HISTORY + - DATASOURCE + - DOCUMENT + - ENTITY + - GOLINK + - HISTORY + - CHAT_HISTORY + - NEW_CHAT + - OPERATOR + - OPERATOR_VALUE + - QUICKLINK + - SUGGESTION + score: + type: number + description: Higher indicates a more confident match. + operatorMetadata: + $ref: "#/components/schemas/OperatorMetadata" + quicklink: + $ref: "#/components/schemas/Quicklink" + document: + $ref: "#/components/schemas/Document" + url: + type: string + structuredResult: + $ref: "#/components/schemas/StructuredResult" + trackingToken: + type: string + description: A token to be passed in /feedback events associated with this autocomplete result. + ranges: + type: array + items: + $ref: "#/components/schemas/TextRange" + description: Subsections of the result string to which some special formatting should be applied (eg. bold) + example: + result: sample result + resultType: DOCUMENT + score: 4.56 + url: https://www.example.com/ + trackingToken: abcd + metadata: + - datasource: confluence + - objectType: page + AutocompleteResultGroup: + description: A subsection of the results list from which distinct sections should be created. + properties: + startIndex: + type: integer + description: The inclusive start index of the range. + endIndex: + type: integer + description: The exclusive end index of the range. + title: + type: string + description: The title of the result group to be displayed. Empty means no title. + AutocompleteResponse: + allOf: + - $ref: "#/components/schemas/BackendExperimentsContext" + - type: object + properties: + trackingToken: + type: string + description: An opaque token that represents this particular set of autocomplete results. To be used for /feedback reporting. + sessionInfo: + $ref: "#/components/schemas/SessionInfo" + results: + type: array + items: + $ref: "#/components/schemas/AutocompleteResult" + groups: + type: array + items: + $ref: "#/components/schemas/AutocompleteResultGroup" + description: Subsections of the results list from which distinct sections should be created. + errorInfo: + $ref: "#/components/schemas/ErrorInfo" + backendTimeMillis: + type: integer + format: int64 + description: Time in milliseconds the backend took to respond to the request. + example: 1100 + example: + trackingToken: trackingToken + ChatZeroStateSuggestionOptions: + properties: + applicationId: + type: string + description: The Chat Application ID this feed request should be scoped to. Empty means there is no Chat Application ID.. + FeedRequestOptions: + required: + - resultSize + properties: + resultSize: + type: integer + description: Number of results asked in response. If a result is a collection, counts as one. + timezoneOffset: + type: integer + description: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. + categoryToResultSize: + type: object + additionalProperties: + type: object properties: - config: - description: The new configuration the policy will follow if provided. - $ref: "#/components/schemas/DlpConfig" - frequency: - description: The new frequency the policy will follow if provided. - $ref: "#/components/schemas/DlpFrequency" - status: - description: The new status the policy will be updated to if provided. - $ref: "#/components/schemas/DlpReportStatus" - autoHideDocs: - description: The new autoHideDoc boolean the policy will be updated to if provided. - type: boolean - reportName: - description: The new name of the policy if provided. - type: string - DlpSimpleResult: + resultSize: + type: integer + description: Mapping from category to number of results asked for the category. + datasourceFilter: + type: array + items: + type: string + description: Datasources for which content should be included. Empty is for all. + chatZeroStateSuggestionOptions: + $ref: "#/components/schemas/ChatZeroStateSuggestionOptions" + FeedRequest: + required: + - refreshType + properties: + categories: + type: array + items: type: string enum: - - SUCCESS - - FAILURE - UpdateDlpReportResponse: - properties: - result: - $ref: "#/components/schemas/DlpSimpleResult" - ListDlpReportsResponse: - properties: - reports: - type: array - items: - $ref: "#/components/schemas/DlpReport" - CreateDlpReportRequest: - properties: - name: - description: Name of the policy being created. - type: string - config: - description: Details on the configuration used in the scans. - $ref: "#/components/schemas/DlpConfig" - frequency: - description: Interval between scans. - $ref: "#/components/schemas/DlpFrequency" - autoHideDocs: - description: Controls whether the policy should hide documents with violations. - type: boolean - CreateDlpReportResponse: - properties: - report: - $ref: "#/components/schemas/DlpReport" - UpdateDlpConfigRequest: - properties: - config: - $ref: "#/components/schemas/DlpConfig" - frequency: - description: Only "ONCE" is supported for reports. - type: string - UpdateDlpConfigResponse: - properties: - result: - $ref: "#/components/schemas/DlpSimpleResult" - reportId: - description: The id of the report that was just created and run. - type: string - ReportStatusResponse: - properties: - status: - type: string - enum: - - PENDING - - SUCCESS - - FAILURE - - CANCELLED - - CANCELLING - - ACTIVE - startTime: - description: The timestamp at which the report's run/scan began. - type: string - format: iso-date-time - DocumentVisibilityOverride: - properties: - docId: - type: string - override: - description: The visibility-override state of the document. - type: string - enum: - - NONE - - HIDE_FROM_ALL - - HIDE_FROM_GROUPS - - HIDE_FROM_ALL_EXCEPT_OWNER - GetDocumentVisibilityOverridesResponse: - properties: - visibilityOverrides: - type: array - items: - $ref: "#/components/schemas/DocumentVisibilityOverride" - UpdateDocumentVisibilityOverridesRequest: - properties: - visibilityOverrides: - type: array - items: - $ref: "#/components/schemas/DocumentVisibilityOverride" - DocumentVisibilityUpdateResult: - allOf: - - $ref: "#/components/schemas/DocumentVisibilityOverride" - - type: object - properties: - success: - description: Whether this document was successfully set to its desired visibility state. - type: boolean - UpdateDocumentVisibilityOverridesResponse: - properties: - results: - description: The documents and whether their visibility was successfully updated. - type: array - items: - $ref: "#/components/schemas/DocumentVisibilityUpdateResult" - ChatRequestStream: - required: - - messages - properties: - saveChat: - type: boolean - description: >- - Save the current interaction as a Chat for the user to access and potentially continue later. - chatId: - type: string - description: >- - The id of the Chat that context should be retrieved from and messages added to. An empty id starts a new Chat, and the Chat is saved if saveChat is true. - messages: - type: array - description: >- - A list of chat messages, from most recent to least recent. It can be assumed that the first chat message in the list is the user's most recent query. - items: - $ref: '#/components/schemas/ChatMessage' - agentConfig: - $ref: '#/components/schemas/AgentConfig' - description: Describes the agent that will execute the request. - inclusions: - $ref: '#/components/schemas/ChatRestrictionFilters' - description: >- - A list of filters which only allows chat to access certain content. - exclusions: - $ref: '#/components/schemas/ChatRestrictionFilters' - description: >- - A list of filters which disallows chat from accessing certain content. If content is in both inclusions and exclusions, it'll be excluded. - timeoutMillis: - type: integer - description: >- - Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. - example: 30000 - applicationId: - type: string - description: >- - The ID of the application this request originates from, used to determine the configuration of underlying chat processes. This should correspond to the ID set during admin setup. If not specified, the default chat experience will be used. - stream: - type: boolean - description: >- - If set, response lines will be streamed one-by-one as they become available. Each will be a ChatResponse, formatted as JSON, and separated by a new line. If false, the entire response will be returned at once. Note that if this is set and the model being used does not support streaming, the model's response will not be streamed, but other messages from the endpoint still will be. - default: true - parameters: + - DOCUMENT_SUGGESTION + - DOCUMENT_SUGGESTION_SCENARIO + - TRENDING_DOCUMENT + - VERIFICATION_REMINDER + - EVENT + - ANNOUNCEMENT + - MENTION + - DATASOURCE_AFFINITY + - RECENT + - COMPANY_RESOURCE + - EXPERIMENTAL + - PEOPLE_CELEBRATIONS + - DISPLAYABLE_LIST + - SOCIAL_LINK + - EXTERNAL_TASKS + - WORKFLOW_COLLECTIONS + - ZERO_STATE_CHAT_SUGGESTION + - ZERO_STATE_CHAT_TOOL_SUGGESTION + - ZERO_STATE_WORKFLOW_CREATED_BY_ME + - ZERO_STATE_WORKFLOW_FAVORITES + - ZERO_STATE_WORKFLOW_POPULAR + - ZERO_STATE_WORKFLOW_RECENT + - ZERO_STATE_WORKFLOW_SUGGESTION + - PERSONALIZED_CHAT_SUGGESTION + - DAILY_DIGEST + - TASK + - PLAN_MY_DAY + - END_MY_DAY + - STARTER_KIT + - MID_DAY_CATCH_UP + - QUERY_SUGGESTION + - COWORK_CUJ_PROMO + - WEEKLY_MEETINGS + - FOLLOW_UP + - MILESTONE_TIMELINE_CHECK + - PROJECT_DISCUSSION_DIGEST + - PROJECT_FOCUS_BLOCK + - PROJECT_NEXT_STEP + - DEMO_CARD + - OOO_PLANNER + - OOO_CATCH_UP + description: Categories of content requested. An allowlist gives flexibility to request content separately or together. + requestOptions: + $ref: "#/components/schemas/FeedRequestOptions" + timeoutMillis: + type: integer + description: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. + example: 5000 + sessionInfo: + $ref: "#/components/schemas/SessionInfo" + DisplayableListFormat: + properties: + format: + type: string + enum: + - LIST + description: defines how to render this particular displayable list card + DisplayableListItemUIConfig: + type: object + description: UI configurations for each item of the list + properties: + showNewIndicator: + type: boolean + description: show a "New" pill next to the item + ConferenceData: + required: + - provider + - uri + properties: + provider: + type: string + enum: + - ZOOM + - HANGOUTS + uri: + type: string + description: A permalink for the conference. + source: + type: string + enum: + - NATIVE_CONFERENCE + - LOCATION + - DESCRIPTION + EventClassificationName: + description: The name for a generated classification of an event. + type: string + enum: + - External Event + EventStrategyName: + type: string + description: The name of method used to surface relevant data for a given calendar event. + enum: + - customerCard + - news + - call + - email + - meetingNotes + - linkedIn + - relevantDocuments + - chatFollowUps + - conversations + EventClassification: + description: A generated classification of a given event. + properties: + name: + $ref: "#/components/schemas/EventClassificationName" + strategies: + type: array + items: + $ref: "#/components/schemas/EventStrategyName" + StructuredLink: + description: The display configuration for a link. + properties: + name: + type: string + description: The display name for the link + url: + type: string + description: The URL for the link. + iconConfig: + $ref: "#/components/schemas/IconConfig" + GeneratedAttachmentContent: + description: Content that has been generated or extrapolated from the documents present in the document field. + properties: + displayHeader: + description: The header describing the generated content. + type: string + text: + description: The content that has been generated. + type: string + example: + displayHeader: Action Items + content: You said you'd send over the design document after the meeting. + GeneratedAttachment: + description: These are attachments that aren't natively present on the event, and have been smartly suggested. + properties: + strategyName: + $ref: "#/components/schemas/EventStrategyName" + documents: + type: array + items: + $ref: "#/components/schemas/Document" + person: + $ref: "#/components/schemas/Person" + customer: + $ref: "#/components/schemas/Customer" + externalLinks: + description: A list of links to external sources outside of Glean. + type: array + items: + $ref: "#/components/schemas/StructuredLink" + content: + type: array + items: + $ref: "#/components/schemas/GeneratedAttachmentContent" + CalendarEvent: + required: + - id + - url + allOf: + - $ref: "#/components/schemas/AnonymousEvent" + - type: object + properties: + id: + type: string + description: The calendar event id + url: + type: string + description: A permalink for this calendar event + attendees: + $ref: "#/components/schemas/CalendarAttendees" + location: + type: string + description: The location that this event is taking place at. + conferenceData: + $ref: "#/components/schemas/ConferenceData" + description: + type: string + description: The HTML description of the event. + datasource: + type: string + description: The app or other repository type from which the event was extracted + hasTranscript: + type: boolean + description: The event has a transcript associated with it enabling features like summarization + transcriptUrl: + type: string + description: A link to the transcript of the event + classifications: + type: array + items: + $ref: "#/components/schemas/EventClassification" + generatedAttachments: + type: array + items: + $ref: "#/components/schemas/GeneratedAttachment" + SectionType: + type: string + description: Type of the section. This defines how the section should be interpreted and rendered in the digest. + x-enumDescriptions: + CHANNEL: A standard section for channel-based digests (e.g. from Slack, Teams). + MENTIONS: A dedicated section that surfaces user mentions (actionable, informative, or all). + TOPIC: A section driven by a generic topic, not tied to any specific channel or instance. + enum: + - CHANNEL + - MENTIONS + - TOPIC + x-speakeasy-enum-descriptions: + CHANNEL: A standard section for channel-based digests (e.g. from Slack, Teams). + MENTIONS: A dedicated section that surfaces user mentions (actionable, informative, or all). + TOPIC: A section driven by a generic topic, not tied to any specific channel or instance. + UpdateType: + type: string + description: Optional type classification for the update. + x-enumDescriptions: + ACTIONABLE: Updates that require user attention or action + INFORMATIVE: Updates that are purely informational + enum: + - ACTIONABLE + - INFORMATIVE + x-speakeasy-enum-descriptions: + ACTIONABLE: Updates that require user attention or action + INFORMATIVE: Updates that are purely informational + DigestUpdate: + type: object + properties: + urls: + type: array + description: List of URLs for similar updates that are grouped together and rendered as a single update. + items: + type: string + url: + type: string + description: URL link to the content or document. + title: + type: string + description: Title or headline of the update. + datasource: + type: string + description: Name or identifier of the data source (e.g., slack, confluence, etc.). + summary: + type: string + description: Brief summary or description of the update content. + type: + $ref: "#/components/schemas/UpdateType" + DigestSection: + type: object + required: + - id + - type + - updates + properties: + id: + type: string + description: Unique identifier for the digest section. + type: + $ref: "#/components/schemas/SectionType" + displayName: + type: string + description: Human-readable name for the digest section. + channelName: + type: string + description: Name of the channel (applicable for CHANNEL type sections). Used to display in the frontend. + channelType: + type: string + description: | + Channel visibility/type for CHANNEL sections. For Slack this is typically one of + PublicChannel, PrivateChannel. Omit if not applicable or unknown. + instanceId: + type: string + description: Instance identifier for the channel or workspace. Used for constructing channel URLs to display in the frontend. + url: + type: string + description: Optional URL for the digest section. Should be populated only if the section is a CHANNEL type section. + updates: + type: array + items: + $ref: "#/components/schemas/DigestUpdate" + description: List of updates within this digest section. + Digest: + type: object + properties: + podcastFileId: + type: string + description: Identifier for the podcast file generated from this digest content. + podcastDuration: + type: number + format: float + description: Duration of the podcast file in seconds. + digestDate: + type: string + description: The date this digest covers, in YYYY-MM-DD format. Represents the specific day for which the digest content and updates were compiled. This can be empty if the digest is not yet available. + example: "2025-09-03" + sections: + type: array + items: + $ref: "#/components/schemas/DigestSection" + description: Array of digest sections from which the podcast was created. + ChatSuggestion: + properties: + query: + type: string + description: The actionable chat query to run when the user selects this suggestion. + cta: + type: string + description: Button text to show for the suggestion action. + feature: + type: string + description: Targeted Glean Chat feature for the suggestion. + sourceDocumentIds: + type: array + items: + type: string + description: Document IDs that grounded the suggestion. + PromptTemplateMutableProperties: + required: + - template + properties: + name: + type: string + description: The user-given identifier for this prompt template. + template: + type: string + description: The actual template string. + applicationId: + type: string + description: The Application Id the prompt template should be created under. Empty for default assistant. + inclusions: + $ref: "#/components/schemas/ChatRestrictionFilters" + description: A list of filters which only allows the prompt template to access certain content. + addedRoles: + type: array + description: A list of added user roles for the Workflow. + items: + $ref: "#/components/schemas/UserRoleSpecification" + removedRoles: + type: array + description: A list of removed user roles for the Workflow. + items: + $ref: "#/components/schemas/UserRoleSpecification" + AttributionProperties: {} + PromptTemplate: + allOf: + - $ref: "#/components/schemas/PromptTemplateMutableProperties" + - $ref: "#/components/schemas/PermissionedObject" + - $ref: "#/components/schemas/AttributionProperties" + - type: object + properties: + id: + type: string + description: Opaque id for this prompt template + author: + $ref: "#/components/schemas/Person" + createTimestamp: + type: integer + description: Server Unix timestamp of the creation time. + lastUpdateTimestamp: + type: integer + description: Server Unix timestamp of the last update time. + lastUpdatedBy: + $ref: "#/components/schemas/Person" + roles: + type: array + description: A list of roles for this prompt template explicitly granted. + items: + $ref: "#/components/schemas/UserRoleSpecification" + UgcType: + enum: + - AGENT_TYPE + - ANNOUNCEMENTS_TYPE + - ANSWERS_TYPE + - CHATS_TYPE + - COLLECTIONS_TYPE + - EMAIL_TYPE + - HTML_CODE_TYPE + - IMAGE_TYPE + - MESSAGE_TYPE + - PAPER_TYPE + - PRISM_VIEWS_TYPE + - PROMPT_TEMPLATES_TYPE + - PINS_TYPE + - SCRIBES_TYPE + - SHORTCUTS_TYPE + - SLIDE_TYPE + - SPREADSHEET_TYPE + - INLINE_HTML_TYPE + - PODCAST_TYPE + - WORKFLOWS_TYPE + FavoriteInfo: + type: object + properties: + ugcType: + $ref: "#/components/schemas/UgcType" + id: + type: string + description: Opaque id of the UGC. + count: + type: integer + x-includeEmpty: true + description: Number of users this object has been favorited by. + favoritedByUser: + type: boolean + x-includeEmpty: true + description: If the requesting user has favorited this object. + PromptTemplateResult: + properties: + promptTemplate: + $ref: "#/components/schemas/PromptTemplate" + trackingToken: + type: string + description: An opaque token that represents this prompt template + favoriteInfo: + $ref: "#/components/schemas/FavoriteInfo" + runCount: + $ref: "#/components/schemas/CountInfo" + description: This tracks how many times this prompt template was run. If user runs a prompt template after modifying the original one, it still counts as a run for the original template. + WorkflowMetadata: + allOf: + - type: object + properties: + author: + $ref: "#/components/schemas/Person" + createTimestamp: + type: integer + description: Server Unix timestamp of the creation time. + lastUpdateTimestamp: + type: integer + description: Server Unix timestamp of the last update time. + lastDraftSavedAt: + type: integer + description: Server Unix timestamp of the last time the draft was saved. + lastDraftSavedBy: + description: The person who last saved the draft. + $ref: "#/components/schemas/Person" + lastDraftGitAuthorId: + type: string + description: ID of the VCS user (e.g. GitHub username) who last saved the draft. Set only by the draft save path via the external Git integration API. + lastUpdatedBy: + $ref: "#/components/schemas/Person" + Workflow: + allOf: + - $ref: "#/components/schemas/PermissionedObject" + - $ref: "#/components/schemas/WorkflowMutableProperties" + - $ref: "#/components/schemas/WorkflowMetadata" + - $ref: "#/components/schemas/AttributionProperties" + - type: object + properties: + id: + type: string + description: The ID of the workflow. + verified: + type: boolean + readOnly: true + description: When present, indicates this workflow is admin-verified. Set via the dedicated admin settings endpoint, not by regular edits. + showOrganizationAsAuthor: + type: boolean + readOnly: true + description: When true, displays organization name instead of author name in agent card. Set via the dedicated admin settings endpoint, not by regular edits. + WorkflowResult: + type: object + required: + - workflow + properties: + workflow: + $ref: "#/components/schemas/Workflow" + UserActivity: + properties: + actor: + $ref: "#/components/schemas/Person" + timestamp: + type: integer + description: Unix timestamp of the activity (in seconds since epoch UTC). + action: + type: string + enum: + - ADD + - ADD_REMINDER + - CLICK + - COMMENT + - DELETE + - DISMISS + - EDIT + - MENTION + - MOVE + - OTHER + - RESTORE + - UNKNOWN + - VERIFY + - VIEW + description: The action for the activity + aggregateVisitCount: + $ref: "#/components/schemas/CountInfo" + FeedEntry: + required: + - title + properties: + entryId: + type: string + description: optional ID associated with a single feed entry (displayable_list_id) + title: + type: string + description: Title for the result. Can be document title, event title and so on. + thumbnail: + $ref: "#/components/schemas/Thumbnail" + createdBy: + $ref: "#/components/schemas/Person" + uiConfig: + allOf: + - $ref: "#/components/schemas/DisplayableListFormat" + - type: object + properties: + additionalFlags: + $ref: "#/components/schemas/DisplayableListItemUIConfig" + justificationType: + type: string + enum: + - FREQUENTLY_ACCESSED + - RECENTLY_ACCESSED + - TRENDING_DOCUMENT + - VERIFICATION_REMINDER + - SUGGESTED_DOCUMENT + - EMPTY_STATE_SUGGESTION + - FRECENCY_SCORED + - SERVER_GENERATED + - USE_CASE + - UPDATE_SINCE_LAST_VIEW + - RECENTLY_STARTED + - EVENT + - USER_MENTION + - ANNOUNCEMENT + - EXTERNAL_ANNOUNCEMENT + - POPULARITY_BASED_TRENDING + - COMPANY_RESOURCE + - EVENT_DOCUMENT_FROM_CONTENT + - EVENT_DOCUMENT_FROM_SEARCH + - VISIT_AFFINITY_SCORED + - SUGGESTED_APP + - SUGGESTED_PERSON + - ACTIVITY_HIGHLIGHT + - SAVED_SEARCH + - SUGGESTED_CHANNEL + - PEOPLE_CELEBRATIONS + - SOCIAL_LINK + - ZERO_STATE_CHAT_SUGGESTION + - ZERO_STATE_CHAT_TOOL_SUGGESTION + - ZERO_STATE_PROMPT_TEMPLATE_SUGGESTION + - ZERO_STATE_STATIC_WORKFLOW_SUGGESTION + - ZERO_STATE_AGENT_SUGGESTION + - PERSONALIZED_CHAT_SUGGESTION + - DAILY_DIGEST + - TASK + - PLAN_MY_DAY + - END_MY_DAY + - STARTER_KIT_EXTENSION + - STARTER_KIT_ORG_CHART + - STARTER_KIT_ADD_DOC + - MEETING_RECAP + - ACTIVE_DISCUSSION + - MID_DAY_CATCH_UP + - QUERY_SUGGESTION + - COWORK_CUJ_PROMO + - WEEKLY_MEETINGS + - FOLLOW_UP + - MILESTONE_TIMELINE_CHECK + - PROJECT_DISCUSSION_DIGEST + - PROJECT_FOCUS_BLOCK + - PROJECT_NEXT_STEP + - DEMO_CARD + - OOO_PLANNER + - OOO_CATCH_UP + description: Type of the justification. + justification: + type: string + description: Server side generated justification string if server provides one. + trackingToken: + type: string + description: An opaque token that represents this particular feed entry in this particular response. To be used for /feedback reporting. + viewUrl: + type: string + description: View URL for the entry if based on links that are not documents in Glean. + document: + $ref: "#/components/schemas/Document" + event: + $ref: "#/components/schemas/CalendarEvent" + announcement: + $ref: "#/components/schemas/Announcement" + digest: + $ref: "#/components/schemas/Digest" + collection: + $ref: "#/components/schemas/Collection" + collectionItem: + $ref: "#/components/schemas/CollectionItem" + person: + $ref: "#/components/schemas/Person" + app: + $ref: "#/components/schemas/AppResult" + chatSuggestion: + $ref: "#/components/schemas/ChatSuggestion" + promptTemplate: + $ref: "#/components/schemas/PromptTemplateResult" + workflow: + $ref: "#/components/schemas/WorkflowResult" + activities: + type: array + items: + $ref: "#/components/schemas/UserActivity" + description: List of activity where each activity has user, action, timestamp. + documentVisitorCount: + $ref: "#/components/schemas/CountInfo" + FeedResult: + required: + - category + - primaryEntry + properties: + category: + type: string + enum: + - DOCUMENT_SUGGESTION + - DOCUMENT_SUGGESTION_SCENARIO + - TRENDING_DOCUMENT + - USE_CASE + - VERIFICATION_REMINDER + - EVENT + - ANNOUNCEMENT + - MENTION + - DATASOURCE_AFFINITY + - RECENT + - COMPANY_RESOURCE + - EXPERIMENTAL + - PEOPLE_CELEBRATIONS + - SOCIAL_LINK + - EXTERNAL_TASKS + - DISPLAYABLE_LIST + - ZERO_STATE_CHAT_SUGGESTION + - ZERO_STATE_CHAT_TOOL_SUGGESTION + - ZERO_STATE_WORKFLOW_CREATED_BY_ME + - ZERO_STATE_WORKFLOW_FAVORITES + - ZERO_STATE_WORKFLOW_POPULAR + - ZERO_STATE_WORKFLOW_RECENT + - ZERO_STATE_WORKFLOW_SUGGESTION + - PERSONALIZED_CHAT_SUGGESTION + - DAILY_DIGEST + - TASK + - PLAN_MY_DAY + - END_MY_DAY + - STARTER_KIT + - MID_DAY_CATCH_UP + - QUERY_SUGGESTION + - COWORK_CUJ_PROMO + - WEEKLY_MEETINGS + - FOLLOW_UP + - MILESTONE_TIMELINE_CHECK + - PROJECT_DISCUSSION_DIGEST + - PROJECT_FOCUS_BLOCK + - PROJECT_NEXT_STEP + - DEMO_CARD + - OOO_PLANNER + - OOO_CATCH_UP + description: Category of the result, one of the requested categories in incoming request. + primaryEntry: + $ref: "#/components/schemas/FeedEntry" + secondaryEntries: + type: array + items: + $ref: "#/components/schemas/FeedEntry" + description: Secondary entries for the result e.g. suggested docs for the calendar, carousel. + rank: + type: integer + description: Rank of the result. Rank is suggested by server. Client side rank may differ. + FeedResponse: + required: + - serverTimestamp + allOf: + - $ref: "#/components/schemas/BackendExperimentsContext" + - type: object + properties: + trackingToken: + type: string + description: An opaque token that represents this particular feed response. + serverTimestamp: + type: integer + description: Server unix timestamp (in seconds since epoch UTC). + results: + type: array + items: + $ref: "#/components/schemas/FeedResult" + facetResults: + type: object + additionalProperties: + type: array + items: + $ref: "#/components/schemas/FacetResult" + description: Map from category to the list of facets that can be used to filter the entry's content. + mentionsTimeWindowInHours: + type: integer + description: The time window (in hours) used for generating user mentions. + RecommendationsRequestOptions: + properties: + datasourceFilter: + type: string + description: Filter results to a single datasource name (e.g. gmail, slack). All results are returned if missing. + datasourcesFilter: + type: array + items: + type: string + description: Filter results to only those relevant to one or more datasources (e.g. jira, gdrive). All results are returned if missing. + facetFilterSets: + type: array + items: + $ref: "#/components/schemas/FacetFilterSet" + description: A list of facet filter sets that will be OR'ed together. + context: + $ref: "#/components/schemas/Document" + description: Content for either a new or unindexed document, or additional content for an indexed document, which may be used to generate recommendations. + resultProminence: + description: The types of prominence wanted in results returned. Default is any type. + type: array + items: + $ref: "#/components/schemas/SearchResultProminenceEnum" + RecommendationsRequest: + allOf: + - $ref: "#/components/schemas/ResultsRequest" + - type: object + properties: + recommendationDocumentSpec: + $ref: "#/components/schemas/DocumentSpec" + description: Retrieve recommendations for this document. Glean Document ID is preferred over URL. + requestOptions: + $ref: "#/components/schemas/RecommendationsRequestOptions" + description: Options for adjusting the request for recommendations. + RecommendationsResponse: + allOf: + - $ref: "#/components/schemas/ResultsResponse" + SortOptions: + type: object + properties: + orderBy: + type: string + enum: + - ASC + - DESC + sortBy: + type: string + ListEntitiesRequest: + type: object + properties: + filter: + type: array + items: + $ref: "#/components/schemas/FacetFilter" + sort: + description: Use EntitiesSortOrder enum for SortOptions.sortBy + type: array + items: + $ref: "#/components/schemas/SortOptions" + entityType: + type: string + default: PEOPLE + enum: + - PEOPLE + - TEAMS + - CUSTOM_ENTITIES + datasource: + type: string + description: The datasource associated with the entity type, most commonly used with CUSTOM_ENTITIES + query: + type: string + description: A query string to search for entities that each entity in the response must conform to. An empty query does not filter any entities. + includeFields: + description: List of entity fields to return (that aren't returned by default) + type: array + items: + type: string + enum: + - PEOPLE + - TEAMS + - PEOPLE_DISTANCE + - PERMISSIONS + - FACETS + - INVITE_INFO + - LAST_EXTENSION_USE + - MANAGEMENT_DETAILS + - UNPROCESSED_TEAMS + pageSize: + type: integer + example: 100 + description: Hint to the server about how many results to send back. Server may return less. + cursor: + type: string + description: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. + source: + type: string + description: A string denoting the search surface from which the endpoint is called. + requestType: + type: string + default: STANDARD + description: The type of request being made. + x-enumDescriptions: + STANDARD: Used by default for all requests and satisfies all standard use cases for list requests. Limited to 10000 entities. + FULL_DIRECTORY: Used exclusively to return a comprehensive list of all people entities in the organization, typically for audit like purposes. The recommended approach is to sort by FIRST_NAME or LAST_NAME, and use pagination for large organizations. + enum: + - STANDARD + - FULL_DIRECTORY + x-speakeasy-enum-descriptions: + STANDARD: Used by default for all requests and satisfies all standard use cases for list requests. Limited to 10000 entities. + FULL_DIRECTORY: Used exclusively to return a comprehensive list of all people entities in the organization, typically for audit like purposes. The recommended approach is to sort by FIRST_NAME or LAST_NAME, and use pagination for large organizations. + EntitiesSortOrder: + type: string + description: Different ways of sorting entities + enum: + - ENTITY_NAME + - FIRST_NAME + - LAST_NAME + - ORG_SIZE_COUNT + - START_DATE + - TEAM_SIZE + - RELEVANCE + ListEntitiesResponse: + type: object + properties: + results: + type: array + items: + $ref: "#/components/schemas/Person" + teamResults: + type: array + items: + $ref: "#/components/schemas/Team" + customEntityResults: + type: array + items: + $ref: "#/components/schemas/CustomEntity" + facetResults: + type: array + items: + $ref: "#/components/schemas/FacetResult" + cursor: + type: string + description: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. + totalCount: + type: integer + description: The total number of entities available + hasMoreResults: + type: boolean + description: Whether or not more entities can be fetched. + sortOptions: + type: array + description: Sort options from EntitiesSortOrder supported for this response. Default is empty list. + items: + $ref: "#/components/schemas/EntitiesSortOrder" + customFacetNames: + type: array + description: list of Person attributes that are custom setup by deployment + items: + type: string + PeopleRequest: + type: object + properties: timezoneOffset: - name: timezoneOffset - in: query - 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 + type: integer + description: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. + obfuscatedIds: + type: array + items: + type: string + description: The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. + emailIds: + type: array + items: + type: string + description: The email IDs to retrieve. The result is the deduplicated union of emailIds and obfuscatedIds. + includeFields: + description: List of PersonMetadata fields to return (that aren't returned by default) + type: array + items: + type: string + enum: + - BADGES + - BUSY_EVENTS + - DOCUMENT_ACTIVITY + - INVITE_INFO + - PEOPLE_DISTANCE + - PERMISSIONS + - PEOPLE_DETAILS + - MANAGEMENT_DETAILS + - PEOPLE_PROFILE_SETTINGS + - PEOPLE_WITHOUT_MANAGER + includeTypes: + description: The types of people entities to include in the response in addition to those returned by default. + x-enumDescriptions: + PEOPLE_WITHOUT_MANAGER: Returns all people without a manager apart from the requested IDs. + INVALID_ENTITIES: Includes invalid entities in the response if any of the requested IDs are invalid. + type: array + items: + type: string + enum: + - PEOPLE_WITHOUT_MANAGER + - INVALID_ENTITIES + x-speakeasy-enum-descriptions: + PEOPLE_WITHOUT_MANAGER: Returns all people without a manager apart from the requested IDs. + INVALID_ENTITIES: Includes invalid entities in the response if any of the requested IDs are invalid. + source: + type: string + description: A string denoting the search surface from which the endpoint is called. + example: + obfuscatedIds: + - abc123 + - abc456 + PeopleResponse: + properties: + results: + type: array + items: + $ref: "#/components/schemas/Person" + description: A Person for each ID in the request, each with PersonMetadata populated. + relatedDocuments: + type: array + items: + $ref: "#/components/schemas/RelatedDocuments" + description: A list of documents related to this people response. This is only included if DOCUMENT_ACTIVITY is requested and only 1 person is included in the request. + errors: + type: array + items: + type: string + description: A list of IDs that could not be found. + CreateShortcutRequest: + required: + - data + properties: + data: + $ref: "#/components/schemas/ShortcutMutableProperties" + ShortcutError: + properties: + errorType: + type: string + enum: + - NO_PERMISSION + - INVALID_ID + - EXISTING_SHORTCUT + - INVALID_CHARS + CreateShortcutResponse: + properties: + shortcut: + $ref: "#/components/schemas/Shortcut" + error: + $ref: "#/components/schemas/ShortcutError" + DeleteShortcutRequest: + allOf: + - $ref: "#/components/schemas/UserGeneratedContentId" + - type: object + required: + - id + GetShortcutRequest: + oneOf: + - $ref: "#/components/schemas/UserGeneratedContentId" + - type: object + required: + - alias + properties: + alias: + type: string + description: The alias for the shortcut, including any arguments for variable shortcuts. + GetShortcutResponse: + properties: + shortcut: + $ref: "#/components/schemas/Shortcut" + description: Shortcut given the input alias with any provided arguments substituted into the destination URL. + error: + $ref: "#/components/schemas/ShortcutError" + ListShortcutsPaginatedRequest: + required: + - pageSize + properties: + includeFields: + description: Array of fields/data to be included in response that are not included by default + type: array + items: + type: string + enum: + - FACETS + - PEOPLE_DETAILS + pageSize: + type: integer + example: 10 + cursor: + type: string + description: A token specifying the position in the overall results to start at. Received from the endpoint and iterated back. Currently being used as page no (as we implement offset pagination) + filters: + type: array + items: + $ref: "#/components/schemas/FacetFilter" + description: A list of filters for the query. An AND is assumed between different filters. We support filters on Go Link name, author, department and type. + sort: + $ref: "#/components/schemas/SortOptions" + description: Specifies fieldname to sort on and order (ASC|DESC) to sort in + query: + type: string + description: Search query that should be a substring in atleast one of the fields (alias , inputAlias, destinationUrl, description). Empty query does not filter shortcuts. + ShortcutsPaginationMetadata: + properties: + cursor: + type: string + description: Cursor indicates the start of the next page of results + hasNextPage: + type: boolean + totalItemCount: + type: integer + ListShortcutsPaginatedResponse: + required: + - shortcuts + - meta + properties: + shortcuts: + type: array + items: + $ref: "#/components/schemas/Shortcut" + description: List of all shortcuts accessible to the user + facetResults: + type: array + items: + $ref: "#/components/schemas/FacetResult" + meta: + $ref: "#/components/schemas/ShortcutsPaginationMetadata" + description: Contains metadata like total item count and whether next page exists + UpdateShortcutRequest: + allOf: + - $ref: "#/components/schemas/UserGeneratedContentId" + - $ref: "#/components/schemas/ShortcutMutableProperties" + - type: object + required: + - id + UpdateShortcutResponse: + properties: + shortcut: + $ref: "#/components/schemas/Shortcut" + error: + $ref: "#/components/schemas/ShortcutError" + SummarizeRequest: + description: Summary of the document + required: + - documentSpecs + properties: + timestamp: + type: string + description: The ISO 8601 timestamp associated with the client request. + format: date-time + query: + type: string + description: Optional query that the summary should be about + preferredSummaryLength: + type: integer + description: Optional length of summary output. If not given, defaults to 500 chars. + documentSpecs: + type: array + items: + $ref: "#/components/schemas/DocumentSpec" + description: Specifications of documents to summarize + trackingToken: + type: string + description: An opaque token that represents this particular result. To be used for /feedback reporting. + Summary: + properties: + text: + type: string + followUpPrompts: + type: array + items: + type: string + description: Follow-up prompts based on the summarized doc + SummarizeResponse: + properties: + error: + type: object + properties: + message: + type: string + summary: + $ref: "#/components/schemas/Summary" + trackingToken: + type: string + description: An opaque token that represents this summary in this particular query. To be used for /feedback reporting. + ReminderRequest: + required: + - documentId + properties: + documentId: + type: string + description: The document which the verification is for new reminders and/or update. + assignee: + type: string + description: The obfuscated id of the person this verification is assigned to. + remindInDays: + type: integer + description: Reminder for the next verifications in terms of days. For deletion, this will be omitted. + reason: + type: string + description: An optional free-text reason for the reminder. This is particularly useful when a reminder is used to ask for verification from another user (for example, "Duplicate", "Incomplete", "Incorrect"). + VerificationFeed: + properties: + documents: + type: array + items: + $ref: "#/components/schemas/Verification" + description: List of document infos that include verification related information for them. + VerifyRequest: + required: + - documentId + properties: + documentId: + type: string + description: The document which is verified. + action: + type: string + enum: + - VERIFY + - DEPRECATE + - UNVERIFY + description: The verification action requested. + ToolParameter: + type: object + properties: + type: + type: string + description: Parameter type (string, number, boolean, object, array) + enum: + - string + - number + - boolean + - object + - array + name: + type: string + description: The name of the parameter + description: + type: string + description: The description of the parameter + isRequired: + type: boolean + description: Whether the parameter is required + possibleValues: + type: array + description: The possible values for the parameter. Can contain only primitive values or arrays of primitive values. + items: + type: string + items: + type: object + description: When type is 'array', this describes the structure of the item in the array. + $ref: "#/components/schemas/ToolParameter" + properties: + type: object + description: When type is 'object', this describes the structure of the object. + additionalProperties: + $ref: "#/components/schemas/ToolParameter" + Tool: + type: object + properties: + type: + type: string + description: Type of tool (READ, WRITE) + enum: + - READ + - WRITE + name: + type: string + description: Unique identifier for the tool + displayName: + type: string + description: Human-readable name + description: + type: string + description: LLM friendly description of the tool + parameters: + type: object + description: The parameters for the tool. Each key is the name of the parameter and the value is the parameter object. + additionalProperties: + $ref: "#/components/schemas/ToolParameter" + ToolsListResponse: + type: object + properties: + tools: + type: array + items: + $ref: "#/components/schemas/Tool" + ToolsCallParameter: + type: object + required: + - name + - value + properties: + name: + type: string + description: The name of the parameter + value: + type: string + description: The value of the parameter (for primitive types) + items: + type: array + description: The value of the parameter (for array types) + items: + $ref: "#/components/schemas/ToolsCallParameter" + properties: + type: object + description: The value of the parameter (for object types) + additionalProperties: + $ref: "#/components/schemas/ToolsCallParameter" + ToolsCallRequest: + type: object + required: + - name + - parameters + properties: + name: + type: string + description: Required name of the tool to execute + parameters: + type: object + description: The parameters for the tool. Each key is the name of the parameter and the value is the parameter object. + additionalProperties: + $ref: "#/components/schemas/ToolsCallParameter" + ToolsCallResponse: + type: object + properties: + rawResponse: + additionalProperties: true + type: object + description: The raw response from the tool + error: + type: string + description: The error message if applicable + ActionAuthType: + type: string + description: | + Authentication mechanism used by an action pack. + - `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool. + - `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually. + - `AUTH_NONE`: Action pack requires no authentication. + enum: + - AUTH_USER_OAUTH + - AUTH_ADMIN + - AUTH_NONE + ActionPackAuthStatus: + type: object + required: + - authenticated + - authType + properties: + authenticated: + type: boolean + description: Whether the calling user is already authenticated to the tool backing the action pack. + authType: + $ref: "#/components/schemas/ActionAuthType" + ActionPackAuthStatusResponse: + type: object + required: + - actionPack + properties: + actionPack: + $ref: "#/components/schemas/ActionPackAuthStatus" + description: | + Action-pack-scoped authentication status. Wrapped under `actionPack` so the response + shape clearly conveys that the status applies to the whole pack and leaves room to add + sibling fields (e.g. per-action status) later without a breaking change. + AuthorizeActionPackRequest: + type: object + required: + - returnUrl + properties: + returnUrl: + type: string + description: | + URL on the customer's domain to redirect the end user's browser back to after the third-party OAuth + callback completes. Must be present in the tenant's return URL allowlist. + AuthorizeActionPackResponse: + type: object + required: + - redirectUrl + properties: + redirectUrl: + type: string + description: | + URL that the customer UI should navigate the end user to in order to begin the third-party OAuth flow. + After the user consents, control returns to `returnUrl` from the request. + IndexDocumentRequest: + type: object + properties: + version: + type: integer + format: int64 + description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. + document: + $ref: '#/components/schemas/DocumentDefinition' + description: Document being added/updated + required: + - document + description: Describes the request body of the /indexdocument API call + IndexDocumentsRequest: + type: object + properties: + uploadId: + type: string + description: Optional id parameter to identify and track a batch of documents. + datasource: + type: string + description: Datasource of the documents + documents: + type: array + items: + $ref: '#/components/schemas/DocumentDefinition' + description: Batch of documents being added/updated + required: + - documents + - datasource + description: Describes the request body of the /indexdocuments API call + UpdatePermissionsRequest: + type: object + properties: + datasource: + type: string + objectType: + type: string + description: The type of the document (Case, KnowledgeArticle for Salesforce for example). It cannot have spaces or _ + id: + type: string + description: The datasource specific id for the document. This field is case insensitive and should not be more than 200 characters in length. + viewURL: + type: string + description: | + The permalink for viewing the document. **Note: viewURL is a required field if id was not set when uploading the document.**' + permissions: + $ref: '#/components/schemas/DocumentPermissionsDefinition' + description: The permissions that define who can view this document in the search results. Please refer to [this](https://developers.glean.com/indexing/documents/permissions) for more details. + required: + - permissions + - datasource + description: Describes the request body of the /updatepermissions API call + GetDocumentCountRequest: + type: object + properties: + datasource: + type: string + description: Datasource name for which document count is needed. + required: + - datasource + description: Describes the request body of the /getdocumentcount API call + GetDocumentCountResponse: + type: object + properties: + documentCount: + type: integer + description: Number of documents corresponding to the specified custom datasource. + description: Describes the response body of the /getdocumentcount API call + GetDocumentStatusRequest: + type: object + properties: + datasource: + type: string + description: Datasource to get fetch document status for + objectType: + type: string + description: Object type of the document to get the status for + docId: + type: string + description: Glean Document ID within the datasource to get the status for. + required: + - datasource + - objectType + - docId + description: Describes the request body for /getdocumentstatus API call + GetDocumentStatusResponse: + type: object + properties: + uploadStatus: + type: string + description: Upload status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN + lastUploadedAt: + type: integer + format: int64 + description: Time of last successful upload, in epoch seconds + indexingStatus: + type: string + description: Indexing status, enum of NOT_INDEXED, INDEXED, STATUS_UNKNOWN + lastIndexedAt: + type: integer + format: int64 + description: Time of last successful indexing, in epoch seconds + description: Describes the response body of the /getdocumentstatus API call + BulkIndexRequest: + type: object + properties: + uploadId: + type: string + description: Unique id that must be used for this bulk upload instance + isFirstPage: + type: boolean + description: true if this is the first page of the upload. Defaults to false + isLastPage: + type: boolean + description: true if this is the last page of the upload. Defaults to false + forceRestartUpload: + type: boolean + description: Flag to discard previous upload attempts and start from scratch. Must be specified with isFirstPage=true + required: + - uploadId + description: Describes the request body of a bulk upload API call + BulkIndexTeamsRequest: + type: object + allOf: + - $ref: '#/components/schemas/BulkIndexRequest' + - type: object + properties: + teams: + type: array + items: + $ref: '#/components/schemas/TeamInfoDefinition' + description: Batch of team information + required: + - teams + description: Describes the request body of the /bulkindexteams API call + BulkIndexEmployeesRequest: + type: object + allOf: + - $ref: '#/components/schemas/BulkIndexRequest' + - type: object + properties: + employees: + type: array + items: + $ref: '#/components/schemas/EmployeeInfoDefinition' + description: Batch of employee information + disableStaleDataDeletionCheck: + type: boolean + description: True if older employee data needs to be force deleted after the upload completes. Defaults to older data being deleted only if the percentage of data being deleted is less than 20%. This must only be set when `isLastPage = true` + required: + - employees + description: Describes the request body of the /bulkindexemployees API call + BulkIndexDocumentsRequest: + type: object + allOf: + - $ref: '#/components/schemas/BulkIndexRequest' + - type: object + properties: + datasource: + type: string + description: Datasource of the documents + documents: + type: array + items: + $ref: '#/components/schemas/DocumentDefinition' + description: Batch of documents for the datasource + disableStaleDocumentDeletionCheck: + type: boolean + description: True if older documents need to be force deleted after the upload completes. Defaults to older documents being deleted asynchronously. This must only be set when `isLastPage = true` + required: + - datasource + - documents + description: Describes the request body of the /bulkindexdocuments API call + ProcessAllDocumentsRequest: + type: object + properties: + datasource: + type: string + description: If provided, process documents only for this custom datasource. Otherwise all uploaded documents are processed. + description: Describes the request body of the /processalldocuments API call + DeleteDocumentRequest: + type: object + properties: + version: + type: integer + format: int64 + description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. + datasource: + type: string + description: datasource of the document + objectType: + type: string + description: object type of the document + id: + type: string + description: The id of the document + required: + - datasource + - id + - objectType + description: Describes the request body of the /deletedocument API call + IndexUserRequest: + type: object + properties: + version: + type: integer + format: int64 + description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. + datasource: + type: string + description: The datasource for which the user is added + user: + $ref: '#/components/schemas/DatasourceUserDefinition' + description: The user to be added or updated + required: + - datasource + - user + description: Describes the request body of the /indexuser API call + GetUserCountRequest: + type: object + properties: + datasource: + type: string + description: Datasource name for which user count is needed. + required: + - datasource + description: Describes the request body of the /getusercount API call + GetUserCountResponse: + type: object + properties: + userCount: + type: integer + description: Number of users corresponding to the specified custom datasource. + description: Describes the response body of the /getusercount API call + BulkIndexUsersRequest: + type: object + properties: + uploadId: + type: string + description: Unique id that must be used for this instance of datasource users upload + isFirstPage: + type: boolean + description: true if this is the first page of the upload. Defaults to false + isLastPage: + type: boolean + description: true if this is the last page of the upload. Defaults to false + forceRestartUpload: + type: boolean + description: Flag to discard previous upload attempts and start from scratch. Must be specified with isFirstPage=true + datasource: + type: string + description: datasource of the users + users: + type: array + items: + $ref: '#/components/schemas/DatasourceUserDefinition' + description: batch of users for the datasource + disableStaleDataDeletionCheck: + type: boolean + description: True if older user data needs to be force deleted after the upload completes. Defaults to older data being deleted only if the percentage of data being deleted is less than a reasonable threshold. This must only be set when `isLastPage = true` + required: + - uploadId + - datasource + - users + description: Describes the request body for the /bulkindexusers API call + GreenlistUsersRequest: + type: object + properties: + datasource: + type: string + description: Datasource which needs to be made visible to users specified in the `emails` field. + emails: + type: array + items: + type: string + format: email + description: The emails of the beta users + required: + - datasource + - emails + description: Describes the request body of the /betausers API call + DatasourceUserDefinition: + type: object + properties: + email: + type: string + userId: + type: string + description: To be supplied if the user id in the datasource is not the email + name: + type: string + isActive: + type: boolean + description: set to false if the user is a former employee or a bot + required: + - email + - name + description: describes a user in the datasource + IndexGroupRequest: + type: object + properties: + version: + type: integer + format: int64 + description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. + datasource: + type: string + description: The datasource for which the group is added + group: + $ref: '#/components/schemas/DatasourceGroupDefinition' + description: The group to be added or updated + required: + - datasource + - group + description: Describes the request body of the /indexgroup API call + BulkIndexGroupsRequest: + type: object + properties: + uploadId: + type: string + description: Unique id that must be used for this instance of datasource groups upload + isFirstPage: + type: boolean + description: true if this is the first page of the upload. Defaults to false + isLastPage: + type: boolean + description: true if this is the last page of the upload. Defaults to false + forceRestartUpload: + type: boolean + description: Flag to discard previous upload attempts and start from scratch. Must be specified with isFirstPage=true + datasource: + type: string + description: datasource of the groups + groups: + type: array + items: + $ref: '#/components/schemas/DatasourceGroupDefinition' + description: batch of groups for the datasource + disableStaleDataDeletionCheck: + type: boolean + description: True if older group data needs to be force deleted after the upload completes. Defaults to older data being deleted only if the percentage of data being deleted is less than a reasonable threshold. This must only be set when `isLastPage = true` + required: + - uploadId + - datasource + - groups + description: Describes the request body for the /bulkindexgroups API call + DatasourceGroupDefinition: + type: object + properties: + name: + type: string + description: name of the group. Should be unique among all groups for the datasource, and cannot have spaces. + required: + - name + description: describes a group in the datasource + IndexMembershipRequest: + type: object + properties: + version: + type: integer + format: int64 + description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. + datasource: + type: string + description: The datasource for which the membership is added + membership: + $ref: '#/components/schemas/DatasourceMembershipDefinition' + description: The membership to be added or updated + required: + - datasource + - membership + description: Describes the request body of the /indexmembership API call + BulkIndexMembershipsRequest: + type: object + properties: + uploadId: + type: string + description: Unique id that must be used for this instance of datasource group memberships upload + isFirstPage: + type: boolean + description: true if this is the first page of the upload. Defaults to false + isLastPage: + type: boolean + description: true if this is the last page of the upload. Defaults to false + forceRestartUpload: + type: boolean + description: Flag to discard previous upload attempts and start from scratch. Must be specified with isFirstPage=true + datasource: + type: string + description: datasource of the memberships + group: + type: string + description: group who's memberships are specified + memberships: + type: array + items: + $ref: '#/components/schemas/DatasourceBulkMembershipDefinition' + description: batch of memberships for the group + required: + - uploadId + - datasource + - memberships + description: Describes the request body for the /bulkindexmemberships API call + ProcessAllMembershipsRequest: + type: object + properties: + datasource: + type: string + description: If provided, process group memberships only for this custom datasource. Otherwise all uploaded memberships are processed. + description: Describes the request body of the /processallmemberships API call + DatasourceMembershipDefinition: + type: object + properties: + groupName: + type: string + description: The group for which the membership is specified + memberUserId: + type: string + description: If the member is a user, then the email or datasource id for the user + memberGroupName: + type: string + description: If the member is a group, then the name of the member group + required: + - groupName + description: describes the membership row of a group. Only one of memberUserId and memberGroupName can be specified. + DatasourceBulkMembershipDefinition: + type: object + properties: + memberUserId: + type: string + description: If the member is a user, then the email or datasource id for the user + memberGroupName: + type: string + description: If the member is a group, then the name of the member group + description: describes the membership row of a group in the bulk uploaded. Only one of memberUserId and memberGroupName can be specified. + DeleteUserRequest: + type: object + properties: + version: + type: integer + format: int64 + description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. + datasource: + type: string + description: The datasource for which the user is removed + email: + type: string + description: The email of the user to be deleted + required: + - datasource + - email + description: Describes the request body of the /deleteuser API call + DeleteGroupRequest: + type: object + properties: + version: + type: integer + format: int64 + description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. + datasource: + type: string + description: The datasource for which the group is removed + groupName: + type: string + description: the name of the group to be deleted + required: + - datasource + - groupName + description: Describes the request body of the /deletegroup API call + DeleteMembershipRequest: + type: object + properties: + version: + type: integer + format: int64 + description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. + datasource: + type: string + description: The datasource for which the membership is removed + membership: + $ref: '#/components/schemas/DatasourceMembershipDefinition' + description: the name of the membership to be deleted + required: + - datasource + - membership + description: Describes the request body of the /deletemembership API call + DeleteEmployeeRequest: + type: object + properties: + version: + type: integer + format: int64 + description: Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done. + employeeEmail: + type: string + description: The deleted employee's email + required: + - employeeEmail + description: Describes the request body of the /deleteemployee API call + DeleteTeamRequest: + type: object + properties: + id: + type: string + description: The deleted team's id + required: + - id + description: Describes the request body of the /deleteteam API call + DocumentDefinition: + type: object + properties: + title: + type: string + description: Document title, in plain text, if present. If not present, the title would be attempted to be extracted from the content. + filename: + type: string + description: Source filename, in plain text, for the document. May be used as a fallback title for the document, if the title is not provided and cannot be extracted from the content. Populate this if there is no explicit title for the document and the content is sourced from a file. + container: + type: string + description: The container name for the content (Folder for example for file content). + containerDatasourceId: + type: string + description: This represents the datasource sepcific id of the container. + containerObjectType: + type: string + description: This represents the object type of the container. It cannot have spaces or _ + datasource: + type: string + objectType: + type: string + description: The type of the document (Case, KnowledgeArticle for Salesforce for example). It cannot have spaces or _ + viewURL: + type: string + description: | + The permalink for viewing the document. **Note: viewURL 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).**' + id: + type: string + description: | + The datasource specific id for the document. This field is case insensitive and should not be more than 200 characters in length. Note: id is a required field for datasources created after 1st March 2025 + summary: + $ref: '#/components/schemas/ContentDefinition' + body: + $ref: '#/components/schemas/ContentDefinition' + author: + $ref: '#/components/schemas/UserReferenceDefinition' + owner: + $ref: '#/components/schemas/UserReferenceDefinition' + description: The current owner of the document, if not the author. + permissions: + $ref: '#/components/schemas/DocumentPermissionsDefinition' + description: The permissions that define who can view this document in the search results. Please refer to [this](https://developers.glean.com/indexing/documents/permissions) for more details. + createdAt: + type: integer + format: int64 + description: The creation time, in epoch seconds. + updatedAt: + type: integer + format: int64 + description: The last update time, in epoch seconds. + updatedBy: + $ref: '#/components/schemas/UserReferenceDefinition' + tags: + type: array + items: + type: string + description: Labels associated with the document. + interactions: + $ref: '#/components/schemas/DocumentInteractionsDefinition' + status: + type: string + additionalUrls: + type: array + items: + type: string + description: Additional variations of the URL that this document points to. + nativeAppUrl: + type: string + description: A deep link, if available, into the datasource's native application for the user's platform (e.g. slack://channel/message). + comments: + type: array + items: + $ref: '#/components/schemas/CommentDefinition' + description: Comments associated with the document. + customProperties: + type: array + items: + $ref: '#/components/schemas/CustomProperty' + description: Additional metadata properties of the document. These can surface as [facets and operators](https://developers.glean.com/indexing/datasource/custom-properties/operators_and_facets). + required: + - datasource + description: Indexable document structure + CommentDefinition: + type: object + properties: + id: + type: string + description: The document specific id for the comment. This field is case insensitive and should not be more than 200 characters in length. + author: + $ref: '#/components/schemas/UserReferenceDefinition' + description: The author of the comment. + content: + $ref: '#/components/schemas/ContentDefinition' + description: The content of the comment. + createdAt: + type: integer + format: int64 + description: The creation time, in epoch seconds. + updatedAt: + type: integer + format: int64 + description: The last updated time, in epoch seconds. + updatedBy: + $ref: '#/components/schemas/UserReferenceDefinition' + description: The user who last updated the comment. + required: + - id + description: Describes a comment on a document + ContentDefinition: + type: object + properties: + mimeType: + type: string + textContent: + type: string + description: text content. Only one of textContent or binary content can be specified + binaryContent: + type: string + description: base64 encoded binary content. Only one of textContent or binary content can be specified + required: + - mimeType + description: Describes text content or base64 encoded binary content + UserReferenceDefinition: + type: object + properties: + email: + type: string + datasourceUserId: + type: string + description: some datasources refer to the user by the datasource user id in the document + name: + type: string + description: Describes how a user is referenced in a document. The user can be referenced by email or by a datasource specific id. + PermissionsGroupIntersectionDefinition: + type: object + properties: + requiredGroups: + type: array + items: + type: string + description: describes a list of groups that are all required in a permissions constraint + DocumentPermissionsDefinition: + type: object + properties: + allowedUsers: + type: array + items: + $ref: '#/components/schemas/UserReferenceDefinition' + description: List of users who can view the document + allowedGroups: + type: array + items: + type: string + description: List of groups that can view the document + allowedGroupIntersections: + type: array + items: + $ref: '#/components/schemas/PermissionsGroupIntersectionDefinition' + description: List of allowed group intersections. This describes a permissions constraint of the form ((GroupA AND GroupB AND GroupC) OR (GroupX AND GroupY) OR ... + allowAnonymousAccess: + type: boolean + description: If true, then any Glean user can view the document + allowAllDatasourceUsersAccess: + type: boolean + description: If true, then any user who has an account in the datasource can view the document. + description: describes the access control details of the document + DocumentInteractionsDefinition: + type: object + properties: + numViews: + type: integer + numLikes: + type: integer + numComments: + type: integer + description: describes the interactions on the document + CheckDocumentAccessRequest: + type: object + properties: + datasource: + type: string + description: Datasource of document to check access for. + objectType: + type: string + description: Object type of document to check access for. + docId: + type: string + description: Glean Document ID to check access for. + userEmail: + type: string + description: Email of user to check access for. + required: + - datasource + - objectType + - docId + - userEmail + description: Describes the request body of the /checkdocumentaccess API call + CheckDocumentAccessResponse: + type: object + properties: + hasAccess: + type: boolean + description: If true, user has access to document for search + description: Describes the response body of the /checkdocumentaccess API call + CustomProperty: + type: object + properties: + name: + type: string + value: + description: Must be a string, a number (for INT properties), or an array of strings. A boolean is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this. + description: Describes the custom properties of the object. + DatasourceConfig: + $ref: '#/components/schemas/SharedDatasourceConfig' + GetDatasourceConfigRequest: + type: object + properties: + datasource: + type: string + description: Datasource name for which config is needed. + required: + - datasource + description: Describes the request body of the /getdatasourceconfig API call + DatasourceConfigList: + properties: + datasourceConfig: + type: array + items: + $ref: '#/components/schemas/SharedDatasourceConfig' + description: Datasource configuration. + required: + - datasourceConfig + description: List of datasource configurations. + RotateTokenResponse: + properties: + rawSecret: + type: string + description: New raw secret + createdAt: + type: integer + format: int64 + description: Unix timestamp in seconds when the new secret value is assigned to the token. The token needs to be rotated before `rotationPeriodMinutes` past the createdAt timestamp otherwise it would be rendered unusable. + rotationPeriodMinutes: + type: integer + format: int64 + description: Refers to the time period in minutes before which this token needs to be rotated. It is required to rotate the token within the specified `rotationPeriodMinutes` after each `/rotatetoken` call, otherwise the tokens would expire. Note that the token would still expire at `expiresAt` timestamp provided during token creation even if the token is being regularly rotated. `rotationPeriodMinutes` property is inherited from the parent token being rotated + description: Describes the response body of the /rotatetoken API call + IndexEmployeeRequest: + type: object + properties: + employee: + $ref: '#/components/schemas/EmployeeInfoDefinition' + description: Info about the employee + version: + type: integer + format: int64 + description: Version number for the employee object. If absent or 0 then no version checks are done + required: + - employee + description: Info about an employee and optional version for that info + IndexEmployeeListRequest: + type: object + properties: + employees: + type: array + items: + $ref: '#/components/schemas/IndexEmployeeRequest' + description: List of employee info and version. + description: Describes the request body of the /indexemployeelist API call + SocialNetworkDefinition: + type: object + properties: + name: + type: string + description: Possible values are "twitter", "linkedin". + profileName: + type: string + description: Human-readable profile name. + profileUrl: + type: string + description: Link to profile. + description: Employee's social network profile + AdditionalFieldDefinition: + type: object + properties: + key: + type: string + description: Key to reference this field, e.g. "languages". Note that the key should be all lowercase alphabetic characters with no numbers, spaces, hyphens or underscores. + value: + type: array + items: + type: object + description: Either a string or HypertextField. When OpenAPI Generator supports oneOf, we can semantically enforce this in the docs. + description: | + List of type string or HypertextField. + + HypertextField is defined as + ``` + { + anchor: string, // Anchor text for the hypertext field. + hyperlink: string, // URL for the hypertext field. + } + ``` + Example: ```{"anchor":"Glean","hyperlink":"https://glean.com"}``` + + When OpenAPI Generator supports oneOf, we will semantically enforce this in the docs. + + **Note**: If using the Python SDK to pass in a list of strings, the value may need to be a list of dictionaries. In that case, the key in that dictionary will be ignored. + Example: ```"languages": [{"lang":"English","lang":"Spanish",...}]```. In this case, the key "lang" will be ignored and can even be passed in as an empty string. + description: Additional information about the employee or team. + HypertextField: + type: object + properties: + anchor: + type: string + description: Anchor text for the hypertext field. + hyperlink: + type: string + description: URL for the hypertext field. + EmployeeInfoDefinition: + type: object + properties: + email: + type: string + description: The employee's email + firstName: + type: string + description: | + The first name of the employee. **Note**: The value cannot be empty + lastName: + type: string + description: | + The last name of the employee. **Note**: The value cannot be empty + preferredName: + type: string + description: The preferred name or nickname of the employee + id: + type: string + description: | + **[Advanced]** A unique universal internal identifier for the employee. This is solely used for understanding manager relationships along with `managerId`. + phoneNumber: + type: string + description: The employee's phone number. + location: + type: string + description: The employee's location (city/office name etc). + deprecated: true + x-glean-deprecated: + id: a7f6fbaa-0eaf-4c0c-a4f5-ab90347f73fd + introduced: "2026-02-05" + message: Field is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated" + structuredLocation: + $ref: '#/components/schemas/StructuredLocation' + description: Detailed location with information about country, state, city etc. + title: + type: string + description: The employee's role title. + photoUrl: + type: string + format: uri + description: The employee's profile pic + businessUnit: + type: string + description: Typically the highest level organizational unit; generally applies to bigger companies with multiple distinct businesses. + department: + type: string + description: An organizational unit where everyone has a similar task, e.g. `Engineering`. + datasourceProfiles: + type: array + items: + $ref: '#/components/schemas/DatasourceProfile' + description: The datasource profiles of the employee, e.g. `Slack`,`Github`. + teams: + type: array + items: + $ref: '#/components/schemas/EmployeeTeamInfo' + description: Info about the employee's team(s) + startDate: + type: string + format: date + description: The date when the employee started + endDate: + type: string + format: date + description: If a former employee, the last date of employment. + bio: + type: string + description: Short biography or mission statement of the employee. + pronoun: + type: string + description: She/her, He/his or other pronoun. + alsoKnownAs: + type: array + items: + type: string + description: Other names associated with the employee. + profileUrl: + type: string + description: Link to internal company person profile. + socialNetworks: + type: array + items: + $ref: '#/components/schemas/SocialNetworkDefinition' + description: List of social network profiles. + managerEmail: + type: string + description: The email of the employee's manager + managerId: + type: string + description: | + **[Advanced]** A unique universal internal identifier for the employee's manager. This is solely used in conjunction with `id`. + type: + type: string + description: The type of the employee, an enum of `FULL_TIME`, `CONTRACTOR`, `NON_EMPLOYEE` + default: FULL_TIME + relationships: + type: array + items: + $ref: '#/components/schemas/EntityRelationship' + description: List of unidirectional relationships with other employees. E.g. this employee (`A`) is a CHIEF_OF_STAFF to another employee (`B`); or this employee (`A`) is an EXECUTIVE_ASSISTANT of another employee (`C`). The mapping should be attached to `A`'s profile. + status: + type: string + description: The status of the employee, an enum of `CURRENT`, `FUTURE`, `EX` + default: CURRENT + additionalFields: + type: array + items: + $ref: '#/components/schemas/AdditionalFieldDefinition' + description: List of additional fields with more information about the employee. + required: + - department + - email + description: Describes employee info + EmployeeAndVersionDefinition: + type: object + properties: + employee: + $ref: '#/components/schemas/EmployeeInfoDefinition' + description: Info about the employee + version: + type: integer + format: int64 + description: Version number for the employee object. If absent or 0 then no version checks are done + required: + - info + description: describes info about an employee and optional version for that info + EmployeeTeamInfo: + type: object + properties: + id: + type: string + description: unique identifier for this team + name: + type: string + description: Team name + url: + type: string + format: uri + description: Link to internal company team page + description: Information about which team an employee belongs to + EntityRelationship: + type: object + properties: + name: + type: string + description: The title or type of relationship. Currently an enum of `CHIEF_OF_STAFF`, `EXECUTIVE_ASSISTANT` + email: + type: string + description: Email of the person with whom the relationship exists. Per the example above, either `B` or `C`'s email depending on the relationship. + required: + - name + - email + description: Describes a relationship edge between a source and destination entity + TeamMember: + type: object + properties: + email: + type: string + format: email + description: The member's email + relationship: + type: string + description: The member's relationship to the team, an enum of `MEMBER`, `MANAGER`, `LEAD`, `POINT_OF_CONTACT`, `OTHER` + default: MEMBER + join_date: + type: string + format: date + description: The member's start date + required: + - email + description: Information about a team's member + TeamInfoDefinition: + type: object + properties: + id: + type: string + description: The unique ID of the team + name: + type: string + description: Human-readable team name + description: + type: string + description: The description of this team + businessUnit: + type: string + description: Typically the highest level organizational unit; generally applies to bigger companies with multiple distinct businesses. + department: + type: string + description: An organizational unit where everyone has a similar task, e.g. `Engineering`. + photoUrl: + type: string + format: uri + description: A link to the team's photo + externalLink: + type: string + format: uri + description: | + A link to an external team page. If set, team results will link to it. + emails: + type: array + items: + $ref: '#/components/schemas/TeamEmail' + description: The emails of the team + datasourceProfiles: + type: array + items: + $ref: '#/components/schemas/DatasourceProfile' + description: The datasource profiles of the team, e.g. `Slack`,`Github`. + members: + type: array + items: + $ref: '#/components/schemas/TeamMember' + description: The members of the team + additionalFields: + type: array + items: + $ref: '#/components/schemas/AdditionalFieldDefinition' + description: List of additional fields with more information about the team. + required: + - id + - members + - name + description: Information about an employee's team + IndexTeamRequest: + type: object + properties: + team: + $ref: '#/components/schemas/TeamInfoDefinition' + description: Info about the team + version: + type: integer + format: int64 + description: Version number for the team object. If absent or 0 then no version checks are done + required: + - team + description: Info about a team and optional version for that info + BulkIndexShortcutsRequest: + type: object + allOf: + - $ref: '#/components/schemas/BulkIndexRequest' + - type: object + properties: + shortcuts: + type: array + items: + $ref: '#/components/schemas/ExternalShortcut' + description: Batch of shortcuts information + required: + - shortcuts + description: Describes the request body of the /bulkindexshortcuts API call + UploadShortcutsRequest: + type: object + allOf: + - $ref: '#/components/schemas/BulkIndexRequest' + - type: object + properties: + shortcuts: + type: array + items: + $ref: '#/components/schemas/IndexingShortcut' + description: Batch of shortcuts information + required: + - shortcuts + description: Describes the request body of the /uploadshortcuts API call + DebugDatasourceStatusResponse: + type: object + properties: + documents: + type: object + properties: + bulkUploadHistory: + $ref: '#/components/schemas/BulkUploadHistoryEventList' + type: object + counts: + type: object + properties: + uploaded: + type: array + items: + $ref: '#/components/schemas/DatasourceObjectTypeDocumentCountEntry' + description: | + A list of object types and corresponding upload counts. Note: This data may be cached and could be up to 3 hours stale. + indexed: + type: array + items: + $ref: '#/components/schemas/DatasourceObjectTypeDocumentCountEntry' + description: The number of documents indexed, grouped by objectType + processingHistory: + $ref: '#/components/schemas/ProcessingHistoryEventList' + identity: + type: object + properties: + processingHistory: + $ref: '#/components/schemas/ProcessingHistoryEventList' + users: + $ref: '#/components/schemas/DebugDatasourceStatusIdentityResponseComponent' + groups: + $ref: '#/components/schemas/DebugDatasourceStatusIdentityResponseComponent' + memberships: + $ref: '#/components/schemas/DebugDatasourceStatusIdentityResponseComponent' + datasourceVisibility: + type: string + enum: + - ENABLED_FOR_ALL + - ENABLED_FOR_TEST_GROUP + - NOT_ENABLED + description: The visibility of the datasource, an enum of VISIBLE_TO_ALL, VISIBLE_TO_TEST_GROUP, NOT_VISIBLE + example: ENABLED_FOR_ALL + description: Describes the response body of the /debug/{datasource}/status API call + DebugDatasourceStatusIdentityResponseComponent: + type: object + properties: + bulkUploadHistory: + $ref: '#/components/schemas/BulkUploadHistoryEventList' + type: object + counts: + type: object + properties: + uploaded: + type: integer + description: The number of users/groups/memberships uploaded + example: 15 + DatasourceObjectTypeDocumentCountEntry: + type: object + properties: + objectType: + type: string + description: The object type of the document + example: Article + count: + type: integer + description: The number of documents of the corresponding objectType + example: 15 + BulkUploadHistoryEvent: + type: object + properties: + uploadId: + type: string + description: The unique ID of the upload + example: upload-id-content-1707403081 + startTime: + type: string + description: The start time of the upload in ISO 8601 format + example: "2021-08-06T17:58:01.000Z" + endTime: + type: string + description: The end time of the upload in ISO 8601 format, 'NA' if the upload is still active + example: "2021-08-06T18:58:01.000Z" + status: + type: string + enum: + - ACTIVE + - SUCCESSFUL + description: The status of the upload, an enum of ACTIVE, SUCCESSFUL + example: SUCCESSFUL + processingState: + type: string + enum: + - UNAVAILABLE + - UPLOAD STARTED + - UPLOAD IN PROGRESS + - UPLOAD COMPLETED + - DELETION PAUSED + - INDEXING COMPLETED + description: The current state of the upload, an enum of UNAVAILABLE, UPLOAD STARTED, UPLOAD IN PROGRESS, UPLOAD COMPLETED, DELETION PAUSED, INDEXING COMPLETED + example: UPLOAD COMPLETED + description: Information about a successful bulk upload + BulkUploadHistoryEventList: + type: array + items: + $ref: '#/components/schemas/BulkUploadHistoryEvent' + description: Information about active and recent successful uploads for the datasource + DebugDocumentRequest: + type: object + properties: + objectType: + type: string + description: Object type of the document to get the status for. + example: Article + docId: + type: string + description: Glean Document ID within the datasource to get the status for. + example: art123 + required: + - objectType + - docId + description: Describes the request body of the /debug/{datasource}/document API call. + DebugDocumentResponse: + type: object + properties: + status: + $ref: '#/components/schemas/DocumentStatusResponse' + type: object + description: Upload and indexing status of the document + uploadedPermissions: + $ref: '#/components/schemas/DocumentPermissionsDefinition' + description: Describes the response body of the /debug/{datasource}/document API call + DebugDocumentsRequest: + type: object + properties: + debugDocuments: + type: array + items: + $ref: '#/components/schemas/DebugDocumentRequest' + description: Documents to fetch debug information for + required: + - debugDocuments + description: Describes the request body of the /debug/{datasource}/documents API call. + DebugDocumentsResponseItem: + type: object + properties: + docId: + type: string + description: Id of the document + objectType: + type: string + description: objectType of the document + debugInfo: + $ref: '#/components/schemas/DebugDocumentResponse' + type: object + description: Debug information of the document + description: Describes the response body of a single document in the /debug/{datasource}/documents API call + DebugDocumentsResponse: + type: object + properties: + documentStatuses: + type: array + items: + $ref: '#/components/schemas/DebugDocumentsResponseItem' + description: List of document ids/urls and their debug information + description: Describes the response body of a single document in the /debug/{datasource}/documents API call + DocumentStatusResponse: + type: object + properties: + uploadStatus: + type: string + description: Upload status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN + example: UPLOADED + lastUploadedAt: + type: string + description: Time of last successful upload for the document, in ISO 8601 format + example: "2021-08-06T17:58:01.000Z" + indexingStatus: + type: string + description: Indexing status, enum of NOT_INDEXED, INDEXED, STATUS_UNKNOWN + example: INDEXED + lastIndexedAt: + type: string + description: Time of last successful indexing for the document, in ISO 8601 format + example: "2021-08-06T17:58:01.000Z" + permissionIdentityStatus: + type: string + description: Permission identity status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN (Always unknown if `identityDatasourceName` is set). Document visibility may be affected status is `NOT_UPLOADED`. + example: UPLOADED + description: Describes the document status response body + LifeCycleEvent: + type: object + properties: + event: + type: string + enum: + - UPLOADED + - INDEXED + - DELETION_REQUESTED + - DELETED + description: Type of event + example: INDEXED + timestamp: + type: string + description: Timestamp of the event + example: "2021-08-06T17:58:01.000Z" + ProcessingHistoryEvent: + type: object + properties: + startTime: + type: string + description: The start time of the processing in ISO 8601 format + example: "2021-08-06T17:58:01.000Z" + endTime: + type: string + description: The end time of the processing in ISO 8601 format, 'NA' if still in progress + example: "2021-08-06T18:58:01.000Z" + description: Processing history event for a datasource + ProcessingHistoryEventList: + type: array + items: + $ref: '#/components/schemas/ProcessingHistoryEvent' + description: Information about processing history for the datasource + DebugUserRequest: + type: object + properties: + email: + type: string + description: Email ID of the user to get the status for + example: u1@foo.com + required: + - email + description: Describes the request body of the /debug/{datasource}/user API call + DebugUserResponse: + type: object + properties: + status: + $ref: '#/components/schemas/UserStatusResponse' + type: object + description: Upload and indexing status of the user + uploadedGroups: + type: array + items: + $ref: '#/components/schemas/DatasourceGroupDefinition' + description: List of groups the user is a member of, as uploaded via permissions API. + description: Describes the response body of the /debug/{datasource}/user API call + UserStatusResponse: + type: object + properties: + isActiveUser: + type: boolean + description: Whether the user is active or not + example: true + uploadStatus: + $ref: '#/components/schemas/UploadStatusEnum' + lastUploadedAt: + type: string + description: Time of last successful upload for the user, in ISO 8601 format + example: "2021-08-06T17:58:01.000Z" + description: Describes the user status response body + UploadStatusEnum: + type: string + enum: + - UPLOADED + - NOT_UPLOADED + - STATUS_UNKNOWN + description: Upload status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN + example: UPLOADED + DebugDocumentLifecycleRequest: + type: object + properties: + objectType: + type: string + description: Object type of the document to get lifecycle events for. + example: Article + docId: + type: string + description: Glean Document ID within the datasource to get lifecycle events for. + example: art123 + startDate: + type: string + description: The start date for events to be fetched. Cannot be more than 30 days (default 7 days) in the past. + example: "2025-05-01" + maxEvents: + type: integer + description: Max number of events to be fetched. Cannot be more than 100 (default 20). + example: 50 + required: + - objectType + - docId + description: Describes the request body of the /debug/{datasource}/document/events API call. + DebugDocumentLifecycleResponse: + type: object + properties: + lifeCycleEvents: + type: array + items: + $ref: '#/components/schemas/LifeCycleEvent' + description: List of lifecycle events corresponding to the document + description: Describes the response body of the /debug/{datasource}/document/events API call + CustomMetadataPutRequest: + type: object + properties: + customMetadata: + type: array + items: + $ref: '#/components/schemas/CustomProperty' + description: Array of custom metadata key-value pairs + required: + - customMetadata + description: Request body for adding or updating custom metadata on a document + CustomMetadataSchema: + type: object + properties: + metadataKeys: + type: array + items: + $ref: '#/components/schemas/CustomMetadataPropertyDefinition' + description: Array of metadata key definitions + required: + - metadataKeys + description: Schema for custom metadata containing metadata key definitions + SuccessResponse: + type: object + properties: + success: + type: boolean + description: Indicates if the operation was successful + default: true + description: Success response for custom metadata operations + ErrorInfoResponse: + type: object + properties: + error: + type: string + description: Error message describing what went wrong + message: + type: string + description: Additional details about the error + required: + - error + description: Error response for custom metadata operations + PropertyDefinition: + properties: + name: + type: string + description: The name of the property in the `DocumentMetadata` (e.g. 'createTime', 'updateTime', 'author', 'container'). In the future, this will support custom properties too. + displayLabel: + type: string + description: The user friendly label for the property. + displayLabelPlural: + type: string + description: The user friendly label for the property that will be used if a plural context. + propertyType: + type: string + enum: + - TEXT + - DATE + - INT + - USERID + - PICKLIST + - TEXTLIST + - MULTIPICKLIST + description: The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported. + uiOptions: + type: string + enum: + - NONE + - SEARCH_RESULT + - DOC_HOVERCARD + hideUiFacet: + type: boolean + description: If true then the property will not show up as a facet in the UI. + uiFacetOrder: + type: integer + description: Will be used to set the order of facets in the UI, if present. If set for one facet, must be set for all non-hidden UI facets. Must take on an integer value from 1 (shown at the top) to N (shown last), where N is the number of non-hidden UI facets. These facets will be ordered below the built-in "Type" and "Tag" operators. + skipIndexing: + type: boolean + description: If true then the property will not be indexed for retrieval and ranking. + group: + type: string + description: The unique identifier of the `PropertyGroup` to which this property belongs. + PropertyGroup: + properties: + name: + type: string + description: The unique identifier of the group. + displayLabel: + type: string + description: The user-friendly group label to display. + description: A grouping for multiple PropertyDefinition. Grouped properties will be displayed together in the UI. + ObjectDefinition: + properties: + name: + type: string + description: Unique identifier for this `DocumentMetadata.objectType`. If omitted, this definition is used as a default for all unmatched `DocumentMetadata.objectType`s in this datasource. + displayLabel: + type: string + description: The user-friendly name of the object for display. + docCategory: + type: string + enum: + - UNCATEGORIZED + - TICKETS + - CRM + - PUBLISHED_CONTENT + - COLLABORATIVE_CONTENT + - QUESTION_ANSWER + - MESSAGING + - CODE_REPOSITORY + - CHANGE_MANAGEMENT + - PEOPLE + - EMAIL + - SSO + - ATS + - KNOWLEDGE_HUB + - EXTERNAL_SHORTCUT + - ENTITY + - CALENDAR + - AGENTS + description: The document category of this object type. + propertyDefinitions: + type: array + items: + $ref: '#/components/schemas/PropertyDefinition' + propertyGroups: + type: array + items: + $ref: '#/components/schemas/PropertyGroup' + description: A list of `PropertyGroup`s belonging to this object type, which will group properties to be displayed together in the UI. + summarizable: + type: boolean + description: Whether or not the object is summarizable + description: The definition for an `DocumentMetadata.objectType` within a datasource. + CanonicalizingRegexType: + properties: + matchRegex: + type: string + description: Regular expression to match to an arbitrary string. + rewriteRegex: + type: string + description: Regular expression to transform into a canonical string. + description: Regular expression to apply to an arbitrary string to transform it into a canonical string. + SharedDatasourceConfigNoInstance: + type: object + properties: + name: + type: string + description: Unique identifier of datasource instance to which this config applies. + displayName: + type: string + description: The user-friendly instance label to display. If omitted, falls back to the title-cased `name`. + datasourceCategory: + type: string + enum: + - UNCATEGORIZED + - TICKETS + - CRM + - PUBLISHED_CONTENT + - COLLABORATIVE_CONTENT + - QUESTION_ANSWER + - MESSAGING + - CODE_REPOSITORY + - CHANGE_MANAGEMENT + - PEOPLE + - EMAIL + - SSO + - ATS + - KNOWLEDGE_HUB + - EXTERNAL_SHORTCUT + - ENTITY + - CALENDAR + - AGENTS + description: 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. + default: UNCATEGORIZED + urlRegex: + type: string + description: '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.**' + example: https://example-company.datasource.com/.* + iconUrl: + type: string + description: 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). + objectDefinitions: + type: array + items: + $ref: '#/components/schemas/ObjectDefinition' + description: The list of top-level `objectType`s for the datasource. + suggestionText: + type: string + description: Example text for what to search for in this datasource + homeUrl: + type: string + description: The URL of the landing page for this datasource instance. Should point to the most useful page for users, not the company marketing page. + crawlerSeedUrls: + type: array + items: + type: string + description: This only applies to WEB_CRAWL and BROWSER_CRAWL datasources. Defines the seed URLs for crawling. + iconDarkUrl: + type: string + description: 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). + hideBuiltInFacets: + type: array + items: + type: string + enum: + - TYPE + - TAG + - AUTHOR + - OWNER + description: List of built-in facet types that should be hidden for the datasource. + canonicalizingURLRegex: + type: array + items: + $ref: '#/components/schemas/CanonicalizingRegexType' + description: 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. + canonicalizingTitleRegex: + type: array + items: + $ref: '#/components/schemas/CanonicalizingRegexType' + description: 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 + redlistTitleRegex: + type: string + description: A regex that identifies titles that should not be indexed + connectorType: + type: string + allOf: + - $ref: '#/components/schemas/ConnectorType' + deprecated: false + quicklinks: + type: array + items: + $ref: '#/components/schemas/Quicklink' + description: List of actions for this datasource instance that will show up in autocomplete and app card, e.g. "Create new issue" for jira + renderConfigPreset: + type: string + description: 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: + type: array + items: + type: string + description: Aliases that can be used as `app` operator-values. + isOnPrem: + type: boolean + description: Whether or not this datasource is hosted on-premise. + trustUrlRegexForViewActivity: + type: boolean + description: 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. + default: true + includeUtmSource: + type: boolean + description: If true, a utm_source query param will be added to outbound links to this datasource within Glean. + stripFragmentInCanonicalUrl: + type: boolean + description: If true, the fragment part of the URL will be stripped when converting to a canonical url. + default: true + required: + - name + description: Structure describing shared config properties of a datasource with no multi-instance support. + CustomDatasourceConfig: + allOf: + - $ref: '#/components/schemas/SharedDatasourceConfigNoInstance' + - type: object + properties: + identityDatasourceName: + type: string + description: 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. + productAccessGroup: + type: string + description: If the datasource uses a specific product access group, then the name of that group. + isUserReferencedByEmail: + type: boolean + description: whether email is used to reference users in document ACLs and in group memberships. + isEntityDatasource: + type: boolean + description: True if this datasource is used to push custom entities. + default: false + isTestDatasource: + type: boolean + description: True if this datasource will be used for testing purpose only. Documents from such a datasource wouldn't have any effect on search rankings. + default: false + description: Structure describing config properties of a custom datasource + ShortcutProperties: + properties: + inputAlias: + type: string + description: link text following the viewPrefix as entered by the user. For example, if the view prefix is `go/` and the shortened URL is `go/abc`, then `abc` is the inputAlias. + description: + type: string + description: A short, plain text blurb to help people understand the intent of the shortcut. + destinationUrl: + type: string + format: url + description: destination URL for the shortcut. + createdBy: + type: string + description: Email of the user who created this shortcut. + createTime: + type: integer + format: int64 + description: The time the shortcut was created in epoch seconds. + updatedBy: + type: string + description: Email of the user who last updated this shortcut. + updateTime: + type: integer + format: int64 + description: The time the shortcut was updated in epoch seconds. + ExternalShortcut: + allOf: + - $ref: '#/components/schemas/ShortcutProperties' + - type: object + required: + - destinationUrl + - intermediateUrl + - createdBy + - inputAlias + properties: + title: + type: string + description: Title of the golink + intermediateUrl: + type: string + format: url + description: The URL from which the user is then redirected to the destination URL. + decayedVisitScore: + type: number + format: double + description: decayed visits score for ranking + editUrl: + type: string + format: url + description: The URL using which the user can access the edit page of the shortcut. + SharedDatasourceConfig: + allOf: + - $ref: '#/components/schemas/SharedDatasourceConfigNoInstance' + - type: object + properties: + datasourceName: + type: string + description: The (non-unique) name of the datasource of which this config is an instance, e.g. "jira". + instanceOnlyName: + type: string + description: The instance of the datasource for this particular config, e.g. "onprem". + instanceDescription: + type: string + description: A human readable string identifying this instance as compared to its peers, e.g. "github.com/askscio" or "github.askscio.com" + description: Structure describing shared config properties of the datasource (including multi-instance support) + IndexingShortcut: + allOf: + - $ref: '#/components/schemas/ShortcutProperties' + - type: object + required: + - destinationUrl + - createdBy + - inputAlias + properties: + unlisted: + type: boolean + description: Whether this shortcut is unlisted or not. Unlisted shortcuts are visible to author and admins only. + urlTemplate: + type: string + description: For variable shortcuts, contains the URL template; note, `destinationUrl` contains default URL. + SensitiveInfoType: + properties: + likelihoodThreshold: + type: string + enum: + - LIKELY + - VERY_LIKELY + - POSSIBLE + - UNLIKELY + - VERY_UNLIKELY + deprecated: true + x-glean-deprecated: + - id: d45039ec-d6f6-47ba-93b7-ab2307b07f84 + introduced: "2026-02-05" + kind: property + message: Field is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated" + infoType: + type: string + description: Text representation of an info-type to scan for. + TimeRange: + properties: + startTime: + type: string + format: date-time + description: start time of the time range, applicable for the CUSTOM type. + endTime: + type: string + format: date-time + description: end time of the time range, applicable for the CUSTOM type. + lastNDaysValue: + type: integer + format: int64 + description: The number of days to look back from the current time, applicable for the LAST_N_DAYS type. + InputOptions: + properties: + urlGreenlist: + type: array + items: + type: string + description: list of url regex matching documents excluded from report + deprecated: true + x-glean-deprecated: + id: e022aaa5-56e6-4b57-bca3-b11943da76a0 + introduced: "2026-02-05" + message: Field is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated" + datasourcesType: + type: string + enum: + - ALL + - CUSTOM + description: The types of datasource for which to run the report/policy. + datasources: + type: array + items: + type: string + description: List of datasources to consider for report. DEPRECATED - use datasourceInstances instead. + deprecated: true + x-glean-deprecated: + id: 97e35970-e0ed-4248-be13-2af8c22e7894 + introduced: "2026-02-05" + message: Use datasourceInstances instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use datasourceInstances instead" + datasourceInstances: + type: array + items: + type: string + description: List of datasource instances to consider for report/policy. + timePeriodType: + type: string + enum: + - ALL_TIME + - PAST_YEAR + - PAST_DAY + - CUSTOM + - LAST_N_DAYS + description: Type of time period for which to run the report/policy. PAST_DAY is deprecated. + customTimeRange: + $ref: '#/components/schemas/TimeRange' + subsetDocIdsToScan: + type: array + items: + type: string + description: Subset of document IDs to scan. If empty, all documents matching other scope criteria will be scanned. + description: Controls which data-sources and what time-range to include in scans. + SharingOptions: + properties: + enabled: + type: boolean + deprecated: true + x-glean-deprecated: + id: e9260be6-209b-4ce2-a4b3-f7f22879dd86 + introduced: "2026-02-05" + message: Field is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated" + threshold: + type: integer + description: The minimum number of users the document is shared with. + thresholdEnabled: + type: boolean + description: Documents will be filtered based on how many people have access to it. + anyoneWithLinkEnabled: + type: boolean + deprecated: true + x-glean-deprecated: + id: 30646ced-e0db-43ef-8412-64a67c5d0f53 + introduced: "2026-02-05" + message: Field is deprecated + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated" + anyoneInternalEnabled: + type: boolean + description: Only users within the organization can access the document. + anonymousAccessEnabled: + type: boolean + description: Anyone on the internet can access the document. + userAccessEnabled: + type: boolean + description: Enable user access check + userIds: + type: array + items: + type: string + description: Any one of the specified users can access the document. + description: Controls how "shared" a document must be to get picked for scans. + ExternalSharingOptions: + allOf: + - description: DEPRECATED - use `broadSharingOptions` instead. + - $ref: '#/components/schemas/SharingOptions' + - type: object + properties: + domainAccessEnabled: + type: boolean + deprecated: true + x-glean-deprecated: + id: 7c9e4a1d-3f8b-4e2c-9a5d-6b0f1c8e2d4a + introduced: "2026-02-05" + message: Use broadSharingOptions instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use broadSharingOptions instead" + HotwordProximity: + properties: + windowBefore: + type: integer + windowAfter: + type: integer + Hotword: + properties: + regex: + type: string + proximity: + $ref: '#/components/schemas/HotwordProximity' + SensitiveExpression: + properties: + expression: + type: string + description: Sensitive word, phrase, or regular expression. + hotwords: + type: array + items: + $ref: '#/components/schemas/Hotword' + description: Zero to three proximate regular expressions necessary to consider an expression as sensitive content. + CustomSensitiveRuleType: + type: string + enum: + - REGEX + - TERM + - INFO_TYPE + description: Type of the custom sensitive rule. + CustomSensitiveRule: + properties: + id: + type: string + description: Identifier for the custom sensitive expression. + value: + type: string + description: The value of the custom sensitive rule. For REGEX type, this is the regex pattern; for TERM type, it is the term to match; and for INFO_TYPE type, it refers to predefined categories of sensitive content. See https://cloud.google.com/dlp/docs/infotypes-reference for available options. + type: + $ref: '#/components/schemas/CustomSensitiveRuleType' + likelihoodThreshold: + type: string + enum: + - LIKELY + - VERY_LIKELY + - POSSIBLE + - UNLIKELY + - VERY_UNLIKELY + description: Likelihood threshold for BUILT_IN infotypes (e.g., LIKELY, VERY_LIKELY). Only applicable for BUILT_IN type. + CustomSensitiveExpression: + properties: + id: + type: string + description: Identifier for the custom sensitive expression. + keyword: + $ref: '#/components/schemas/CustomSensitiveRule' + description: The keyword to match against. + evaluationExpression: + type: string + description: The expression to evaluate the keyword match. + SensitiveContentOptions: + properties: + sensitiveInfoTypes: + type: array + items: + $ref: '#/components/schemas/SensitiveInfoType' + description: DEPRECATED - use 'customSensitiveExpressions' instead. + deprecated: true + x-glean-deprecated: + id: 3497cb1c-f7aa-42d8-81b8-309c3adeed84 + introduced: "2026-02-05" + message: Use customSensitiveExpressions instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead" + sensitiveTerms: + type: array + items: + $ref: '#/components/schemas/SensitiveExpression' + description: DEPRECATED - use 'customSensitiveExpressions' instead. + deprecated: true + x-glean-deprecated: + id: b0713b37-472e-4c29-80ba-6f5d6f2b449c + introduced: "2026-02-05" + message: Use customSensitiveExpressions instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead" + sensitiveRegexes: + type: array + items: + $ref: '#/components/schemas/SensitiveExpression' + description: DEPRECATED - use 'customSensitiveExpressions' instead. + deprecated: true + x-glean-deprecated: + id: a26e1920-36b6-4c0f-981f-57b09a9ebce3 + introduced: "2026-02-05" + message: Use customSensitiveExpressions instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead" + customSensitiveExpressions: + type: array + items: + $ref: '#/components/schemas/CustomSensitiveExpression' + description: list of custom sensitive expressions to consider as sensitive content + description: Options for defining sensitive content within scanned documents. + DlpPersonMetadata: + properties: + firstName: + type: string + description: The first name of the person + email: + type: string + description: The user's primary email address + DlpPerson: + properties: + name: + type: string + description: The display name. + obfuscatedId: + type: string + description: An opaque identifier that can be used to request metadata for a Person. + metadata: + $ref: '#/components/schemas/DlpPersonMetadata' + required: + - name + - obfuscatedId + description: Details about the person who created this report/policy. + AllowlistOptions: + properties: + terms: + type: array + items: + type: string + description: list of words and phrases to consider as whitelisted content + description: Terms that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term in the allow-list, it will not be counted as a violation. + DlpConfig: + properties: + version: + type: integer + format: int64 + description: Synonymous with report/policy id. + sensitiveInfoTypes: + type: array + items: + $ref: '#/components/schemas/SensitiveInfoType' + description: DEPRECATED - use `sensitiveContentOptions` instead. + deprecated: true + x-glean-deprecated: + id: 60d6d182-e9d0-448d-af75-137f68bbdcbf + introduced: "2026-02-05" + message: Use sensitiveContentOptions instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use sensitiveContentOptions instead" + inputOptions: + $ref: '#/components/schemas/InputOptions' + description: Options for documents to include or exclude in a report + externalSharingOptions: + $ref: '#/components/schemas/ExternalSharingOptions' + description: DEPRECATED - use `broadSharingOptions` instead. + deprecated: true + x-glean-deprecated: + id: 6484ec17-a133-4176-b2ce-28e25b0e9065 + introduced: "2026-02-05" + message: Use broadSharingOptions instead + removal: "2026-10-15" + x-speakeasy-deprecation-message: "Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use broadSharingOptions instead" + broadSharingOptions: + $ref: '#/components/schemas/SharingOptions' + description: Options for defining documents to scan for sensitive content. + sensitiveContentOptions: + $ref: '#/components/schemas/SensitiveContentOptions' + description: Options for defining sensitive content within scanned documents. + reportName: + type: string + frequency: + type: string + description: Interval between scans. + createdBy: + $ref: '#/components/schemas/DlpPerson' + description: Person who created this report/policy. + createdAt: + type: string + format: iso-date-time + description: Timestamp at which this configuration was created. + redactQuote: + type: boolean + description: redact quote in findings of the report + autoHideDocs: + type: boolean + description: auto hide documents with findings in the report + allowlistOptions: + $ref: '#/components/schemas/AllowlistOptions' + description: Options for defining whitelisting content within scanned documents + description: Detailed configuration of what documents and sensitive content will be scanned. + DlpFrequency: + type: string + enum: + - ONCE + - DAILY + - WEEKLY + - CONTINUOUS + - NONE + description: Interval between scans. DAILY is deprecated. + x-include-enum-class-prefix: true + DlpReportStatus: + type: string + enum: + - ACTIVE + - INACTIVE + - CANCELLED + - NONE + description: The status of the policy/report. Only ACTIVE status will be picked for scans. + x-include-enum-class-prefix: true + DlpReport: + properties: + id: + type: string + name: + type: string + config: + $ref: '#/components/schemas/DlpConfig' + description: All details of the policy that is needed for a scan. + frequency: + $ref: '#/components/schemas/DlpFrequency' + description: The interval between scans. + status: + $ref: '#/components/schemas/DlpReportStatus' + description: The status of the policy. + createdBy: + $ref: '#/components/schemas/DlpPerson' + description: Person who created this report. + createdAt: + type: string + format: iso-date-time + description: Timestamp at which the policy was created. + lastUpdatedAt: + type: string + format: iso-date-time + description: Timestamp at which the policy was last updated. + autoHideDocs: + type: boolean + description: Auto hide documents with findings in the policy. + lastScanStatus: + type: string + enum: + - PENDING + - SUCCESS + - FAILURE + - CANCELLED + - CANCELLING + - ACTIVE + lastScanStartTime: + type: string + format: iso-date-time + description: The timestamp at which the report's last run/scan began. + updatedBy: + $ref: '#/components/schemas/DlpPerson' + description: Person who last updated this report. + description: Full policy information that will be used for scans. + GetDlpReportResponse: + properties: + report: + $ref: '#/components/schemas/DlpReport' + UpdateDlpReportRequest: + properties: + config: + $ref: '#/components/schemas/DlpConfig' + description: The new configuration the policy will follow if provided. + frequency: + $ref: '#/components/schemas/DlpFrequency' + description: The new frequency the policy will follow if provided. + status: + $ref: '#/components/schemas/DlpReportStatus' + description: The new status the policy will be updated to if provided. + autoHideDocs: + type: boolean + description: The new autoHideDoc boolean the policy will be updated to if provided. + reportName: + type: string + description: The new name of the policy if provided. + DlpSimpleResult: + type: string + enum: + - SUCCESS + - FAILURE + UpdateDlpReportResponse: + properties: + result: + $ref: '#/components/schemas/DlpSimpleResult' + ListDlpReportsResponse: + properties: + reports: + type: array + items: + $ref: '#/components/schemas/DlpReport' + CreateDlpReportRequest: + properties: + name: + type: string + description: Name of the policy being created. + config: + $ref: '#/components/schemas/DlpConfig' + description: Details on the configuration used in the scans. + frequency: + $ref: '#/components/schemas/DlpFrequency' + description: Interval between scans. + autoHideDocs: + type: boolean + description: Controls whether the policy should hide documents with violations. + CreateDlpReportResponse: + properties: + report: + $ref: '#/components/schemas/DlpReport' + UpdateDlpConfigRequest: + properties: + config: + $ref: '#/components/schemas/DlpConfig' + frequency: + type: string + description: Only "ONCE" is supported for reports. + UpdateDlpConfigResponse: + properties: + result: + $ref: '#/components/schemas/DlpSimpleResult' + reportId: + type: string + description: The id of the report that was just created and run. + ReportStatusResponse: + properties: + status: + type: string + enum: + - PENDING + - SUCCESS + - FAILURE + - CANCELLED + - CANCELLING + - ACTIVE + startTime: + type: string + format: iso-date-time + description: The timestamp at which the report's run/scan began. + DocumentVisibilityOverride: + properties: + docId: + type: string + override: + type: string + enum: + - NONE + - HIDE_FROM_ALL + - HIDE_FROM_GROUPS + - HIDE_FROM_ALL_EXCEPT_OWNER + description: The visibility-override state of the document. + GetDocumentVisibilityOverridesResponse: + properties: + visibilityOverrides: + type: array + items: + $ref: '#/components/schemas/DocumentVisibilityOverride' + UpdateDocumentVisibilityOverridesRequest: + properties: + visibilityOverrides: + type: array + items: + $ref: '#/components/schemas/DocumentVisibilityOverride' + DocumentVisibilityUpdateResult: + allOf: + - $ref: '#/components/schemas/DocumentVisibilityOverride' + - type: object + properties: + success: + type: boolean + description: Whether this document was successfully set to its desired visibility state. + UpdateDocumentVisibilityOverridesResponse: + properties: + results: + type: array + items: + $ref: '#/components/schemas/DocumentVisibilityUpdateResult' + description: The documents and whether their visibility was successfully updated. + DlpSeverity: + type: string + enum: + - UNSPECIFIED + - LOW + - MEDIUM + - HIGH + description: Severity levels for DLP findings and analyses. + x-include-enum-class-prefix: true + DlpIssueStatus: + type: string + enum: + - OPEN + - CLOSED + - IN_PROGRESS + - RESOLVED + description: Status of a DLP issue. + x-include-enum-class-prefix: true + TimeRangeFilter: + properties: + timePeriodType: + type: string + enum: + - PAST_DAY + - PAST_WEEK + - PAST_MONTH + - PAST_YEAR + - CUSTOM + description: The type of time period for which to filter findings. + customTimeRange: + $ref: '#/components/schemas/TimeRange' + DlpFindingFilter: + properties: + infoType: + type: string + regexId: + type: string + reportId: + type: string + datasource: + type: string + visibility: + type: string + documentIds: + type: array + items: + type: string + severity: + $ref: '#/components/schemas/DlpSeverity' + documentSeverity: + type: array + items: + $ref: '#/components/schemas/DlpSeverity' + statuses: + type: array + items: + $ref: '#/components/schemas/DlpIssueStatus' + timeRange: + $ref: '#/components/schemas/TimeRangeFilter' + archived: + type: boolean + DlpIssueFilter: + properties: + searchText: + type: string + description: Text to search for in issue fields. + statuses: + type: array + items: + $ref: '#/components/schemas/DlpIssueStatus' + description: Filter by one or more issue statuses. + assigneeId: + type: string + description: Filter by assignee user ID. + infoType: + type: string + regexId: + type: string + reportIds: + type: array + items: + type: string + description: Filter by one or more report/policy IDs. + docId: + type: string + datasource: + type: string + visibility: + type: string + severities: + type: array + items: + $ref: '#/components/schemas/DlpSeverity' + description: Filter by one or more severity levels. + timeRange: + $ref: '#/components/schemas/TimeRangeFilter' + description: Filter for DLP issues. Includes document-level filters and issue-specific filters. + ExportInfo: + properties: + createdBy: + $ref: '#/components/schemas/DlpPerson' + description: person who triggered this export + startTime: + type: string + format: iso-date-time + description: Timestamp at which this export started. + endTime: + type: string + format: iso-date-time + description: Timestamp at which this export completed. + exportId: + type: string + description: The ID of the export + fileName: + type: string + description: The name of the file to export the findings to + exportType: + type: string + enum: + - FINDINGS + - DOCUMENTS + - ISSUES + description: The type of export to perform + filter: + $ref: '#/components/schemas/DlpFindingFilter' + description: The filters used to export the findings. Set for FINDINGS and DOCUMENTS exports. + issueFilter: + $ref: '#/components/schemas/DlpIssueFilter' + description: The filters used for ISSUES exports. + status: + type: string + enum: + - PENDING + - COMPLETED + - FAILED + description: The status of the export + exportSize: + type: integer + format: int64 + description: The size of the exported file in bytes + ListDlpFindingsExportsResponse: + properties: + exports: + type: array + items: + $ref: '#/components/schemas/ExportInfo' + DlpExportFindingsRequest: + properties: + exportType: + type: string + enum: + - FINDINGS + - DOCUMENTS + - ISSUES + description: The type of export to perform + filter: + $ref: '#/components/schemas/DlpFindingFilter' + issueFilter: + $ref: '#/components/schemas/DlpIssueFilter' + description: Filter for ISSUE-level exports. Used when exportType is ISSUES. + fileName: + type: string + description: The name of the file to export the findings to + fieldScope: + type: string + enum: + - ALL + - EXCLUDE_SENSITIVE + - CUSTOM + description: Controls which fields to include in the export + fieldsToExclude: + type: array + 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. + DatasourceCredentialStatus: + type: string + enum: + - VALID + - VALID_WITH_WARNINGS + - VALIDATING + - INVALID + - MISSING + description: | + Lifecycle state of the credentials installed for a datasource instance. Mirrors the internal admin Status enum so the handler can surface the same health signals already tracked today. EXPIRING_SOON is represented as VALID_WITH_WARNINGS (with detail in `message`); EXPIRED is surfaced as INVALID plus a non-null `expiresAt` in the past. + DatasourceCredentialStatusResponse: + type: object + properties: + status: + $ref: '#/components/schemas/DatasourceCredentialStatus' + lastRotatedAt: + type: string + format: date-time + description: When the credentials were last rotated. Omitted when not known. + expiresAt: + type: string + format: date-time + description: | + When the active credentials expire. Omitted when not known or not applicable to this credential type. + message: + type: string + description: Optional human-readable detail about the current credential status. + required: + - status + description: Status of the credentials currently installed for a datasource instance. + RotateDatasourceCredentialsRequest: + type: object + properties: + credentials: + $ref: '#/components/schemas/DatasourceInstanceConfiguration' + required: + - credentials + description: | + Request to rotate the credentials used by a datasource instance. Replaces the active credential material with the supplied values. + `credentials.values` must contain only keys recognized as credential material for the datasource type (for example `clientSecret` for OAuth, `apiToken` for API-token auth, `privateKey` for certificate auth). Unrecognized keys, or keys that correspond to non-credential configuration, cause a 400; use the configure endpoint to change non-credential config. + ChatRequestStream: + required: + - messages + properties: + saveChat: + type: boolean + description: >- + Save the current interaction as a Chat for the user to access and potentially continue later. + chatId: + type: string + description: >- + The id of the Chat that context should be retrieved from and messages added to. An empty id starts a new Chat, and the Chat is saved if saveChat is true. + messages: + type: array + description: >- + A list of chat messages, from most recent to least recent. It can be assumed that the first chat message in the list is the user's most recent query. + items: + $ref: '#/components/schemas/ChatMessage' + agentConfig: + $ref: '#/components/schemas/AgentConfig' + description: Describes the agent that will execute the request. + inclusions: + $ref: '#/components/schemas/ChatRestrictionFilters' + description: >- + A list of filters which only allows chat to access certain content. + exclusions: + $ref: '#/components/schemas/ChatRestrictionFilters' + description: >- + A list of filters which disallows chat from accessing certain content. If content is in both inclusions and exclusions, it'll be excluded. + timeoutMillis: + type: integer + description: >- + Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. + example: 30000 + applicationId: + type: string + description: >- + The ID of the application this request originates from, used to determine the configuration of underlying chat processes. This should correspond to the ID set during admin setup. If not specified, the default chat experience will be used. + stream: + type: boolean + description: >- + If set, response lines will be streamed one-by-one as they become available. Each will be a ChatResponse, formatted as JSON, and separated by a new line. If false, the entire response will be returned at once. Note that if this is set and the model being used does not support streaming, the model's response will not be streamed, but other messages from the endpoint still will be. + default: true + CustomMetadataPropertyDefinition: + type: object + description: The definition for a key within a Custom Metadata schema. Only the fields applicable to Custom Metadata are exposed. + properties: + name: + type: string + description: The name of the metadata key. + propertyType: + type: string + enum: + - TEXT + - PICKLIST + - TEXTLIST + - MULTIPICKLIST + description: The type of metadata key. This governs the search and faceting behavior. + skipIndexing: + type: boolean + description: If true then the property will not be indexed for retrieval and ranking. + required: + - name + - propertyType + parameters: + locale: + name: locale + in: query + description: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + required: false + schema: + type: string + timezoneOffset: + name: timezoneOffset + in: query + 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 + datasourceInstanceId: + name: datasourceInstanceId + in: path + description: The full datasource instance identifier (e.g. o365sharepoint_abc123) + required: true + schema: + type: string + example: o365sharepoint_abc123 + responses: + SuccessResponse: + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessResponse' + BadRequestError: + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInfoResponse' + UnauthorizedError: + description: Not Authorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInfoResponse' + NotFoundError: + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInfoResponse' + TooManyRequestsError: + description: Too Many Requests + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInfoResponse' + InternalServerError: + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorInfoResponse' x-tagGroups: - - name: Search & Generative AI - tags: - - Chat - - Search - - Summarize - - Tools - - name: Connected Content - tags: - - Calendar - - Documents - - Entities - - Messages - - name: User Generated Content - tags: - - Announcements - - Answers - - Collections - - Displayable Lists - - Images - - Pins - - Shortcuts - - Verification - - name: General - tags: - - Activity - - Authentication - - Insights - - User + - name: Search & Generative AI + tags: + - Chat + - Search + - Summarize + - Tools + - name: Connected Content + tags: + - Calendar + - Documents + - Entities + - Messages + - name: User Generated Content + tags: + - Announcements + - Answers + - Collections + - Displayable Lists + - Images + - Pins + - Shortcuts + - Verification + - name: General + tags: + - Activity + - Authentication + - Insights + - User tags: - - name: Datasources - description: Manage datasources. - - name: Documents - description: Index documents from a datasource. - - name: People - description: Index employee people data. - - name: Permissions - description: Manage users, groups and membership. - - name: Authentication - description: Manage indexing API tokens. + - name: Datasources + description: Manage datasources. + - name: Documents + description: Index documents from a datasource. + - name: People + description: Index employee people data. + - name: Permissions + description: Manage users, groups and membership. + - name: Authentication + description: Manage indexing API tokens. diff --git a/.speakeasy/tests.arazzo.yaml b/.speakeasy/tests.arazzo.yaml index b1d83128..48029e67 100644 --- a/.speakeasy/tests.arazzo.yaml +++ b/.speakeasy/tests.arazzo.yaml @@ -158406,3 +158406,302 @@ workflows: } type: simple x-speakeasy-test-group: client_shortcuts + - workflowId: listfindingsexports + steps: + - stepId: test + operationId: listfindingsexports + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {} + type: simple + x-speakeasy-test-group: Governance + x-speakeasy-test-rebuild: true + - workflowId: downloadfindingsexport + steps: + - stepId: test + operationId: downloadfindingsexport + parameters: + - name: id + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == text/csv; charset=UTF-8 + - context: $response.body + condition: | + "" + type: simple + x-speakeasy-test-group: Governance + x-speakeasy-test-rebuild: true + - workflowId: checkdatasourceauth + steps: + - stepId: test + operationId: checkdatasourceauth + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"unauthorizedDatasourceInstances":[{"datasourceInstance":"slack_0","displayName":"Slack"}]} + 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 + - workflowId: getChatFile + steps: + - stepId: test + operationId: getChatFile + parameters: + - name: fileId + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/octet-stream + - context: $response.body + condition: | + "x-file: example.file" + type: simple + x-speakeasy-test-group: Chat_SDK + x-speakeasy-test-rebuild: true + - workflowId: getPersonPhoto + steps: + - stepId: test + operationId: getPersonPhoto + parameters: + - name: person_id + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == image/png + - context: $response.body + condition: | + "x-file: example.file" + type: simple + x-speakeasy-test-group: Entities + x-speakeasy-test-rebuild: true + - workflowId: getActionPackAuthStatus + steps: + - stepId: test + operationId: getActionPackAuthStatus + parameters: + - name: actionPackId + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"actionPack":{"authenticated":true,"authType":"AUTH_USER_OAUTH"}} + type: simple + x-speakeasy-test-group: Tools + x-speakeasy-test-rebuild: true + - workflowId: authorizeActionPack + steps: + - stepId: test + operationId: authorizeActionPack + parameters: + - name: actionPackId + in: path + value: + requestBody: + contentType: application/json + payload: + returnUrl: https://merry-allocation.org/ + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"redirectUrl":"https://unconscious-diversity.net"} + type: simple + x-speakeasy-test-group: Tools + x-speakeasy-test-rebuild: true + - workflowId: put_/rest/api/index/document/{docId}/custom-metadata/{groupName} + steps: + - stepId: test + operationId: put_/rest/api/index/document/{docId}/custom-metadata/{groupName} + parameters: + - name: docId + in: path + value: + - name: groupName + in: path + value: + requestBody: + contentType: application/json + payload: + customMetadata: [] + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"success":true} + type: simple + x-speakeasy-test-group: customMetadata + x-speakeasy-test-rebuild: true + - workflowId: delete_/rest/api/index/document/{docId}/custom-metadata/{groupName} + steps: + - stepId: test + operationId: delete_/rest/api/index/document/{docId}/custom-metadata/{groupName} + parameters: + - name: docId + in: path + value: + - name: groupName + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"success":true} + type: simple + x-speakeasy-test-group: customMetadata + x-speakeasy-test-rebuild: true + - workflowId: get_/rest/api/index/custom-metadata/schema/{groupName} + steps: + - stepId: test + operationId: get_/rest/api/index/custom-metadata/schema/{groupName} + parameters: + - name: groupName + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"metadataKeys":[]} + type: simple + x-speakeasy-test-group: customMetadata + x-speakeasy-test-rebuild: true + - workflowId: put_/rest/api/index/custom-metadata/schema/{groupName} + steps: + - stepId: test + operationId: put_/rest/api/index/custom-metadata/schema/{groupName} + parameters: + - name: groupName + in: path + value: + requestBody: + contentType: application/json + payload: + metadataKeys: [] + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"success":true} + type: simple + x-speakeasy-test-group: customMetadata + x-speakeasy-test-rebuild: true + - workflowId: delete_/rest/api/index/custom-metadata/schema/{groupName} + steps: + - stepId: test + operationId: delete_/rest/api/index/custom-metadata/schema/{groupName} + parameters: + - name: groupName + in: path + value: + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"success":true} + type: simple + x-speakeasy-test-group: customMetadata + x-speakeasy-test-rebuild: true + - workflowId: getDatasourceCredentialStatus + steps: + - stepId: test + operationId: getDatasourceCredentialStatus + parameters: + - name: datasourceInstanceId + in: path + value: o365sharepoint_abc123 + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"status":"VALID"} + type: simple + x-speakeasy-test-group: Datasources + x-speakeasy-test-rebuild: true + - workflowId: rotateDatasourceCredentials + steps: + - stepId: test + operationId: rotateDatasourceCredentials + parameters: + - name: datasourceInstanceId + in: path + value: o365sharepoint_abc123 + requestBody: + contentType: application/json + payload: + credentials: + values: + key: {} + successCriteria: + - condition: $statusCode == 200 + - condition: $response.header.Content-Type == application/json + - context: $response.body + condition: | + {"status":"MISSING"} + type: simple + x-speakeasy-test-group: Datasources + x-speakeasy-test-rebuild: true diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 568ba9fe..92827bbf 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,12 +1,11 @@ -speakeasyVersion: 1.650.0 +speakeasyVersion: 1.770.0 sources: Glean API: sourceNamespace: glean-api-specs - sourceRevisionDigest: sha256:6e09038391ad70d5f9b70c63b3284e81624f1cd18b512456e1ef14583adba00f - sourceBlobDigest: sha256:62b0b08fedd634cc54f3083a149d42af7b4b534cbe8da080c65eaa8377fdcddd + sourceRevisionDigest: sha256:500649ecd919cc2dcfeb6c54fe552ddcf8628a42b2f67a2ef0f206ad8561a56c + sourceBlobDigest: sha256:cb8902f4548ad637f07f6be9b7ef3f0d5fda8fe6f6540c7eea338bf4dde98413 tags: - latest - - speakeasy-sdk-regen-1763969825 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:6e09038391ad70d5f9b70c63b3284e81624f1cd18b512456e1ef14583adba00f - sourceBlobDigest: sha256:62b0b08fedd634cc54f3083a149d42af7b4b534cbe8da080c65eaa8377fdcddd + sourceRevisionDigest: sha256:500649ecd919cc2dcfeb6c54fe552ddcf8628a42b2f67a2ef0f206ad8561a56c + sourceBlobDigest: sha256:cb8902f4548ad637f07f6be9b7ef3f0d5fda8fe6f6540c7eea338bf4dde98413 codeSamplesNamespace: glean-api-specs-python-code-samples - codeSamplesRevisionDigest: sha256:380bfe75991017e623736785201d21cac9de54b2bab5d9bfa09699ac73829ad6 + codeSamplesRevisionDigest: sha256:cc23275cb351da5ef6256061aed3868dab2d09e7764658ea22e4958928b42d8c workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index 86366845..203405ee 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Each namespace has its own authentication requirements and access patterns. Whil from glean.api_client import Glean import os -with Glean(api_token="client-token", instance="instance-name") as glean: +with Glean(api_token="client-token", server_url="https://mycompany-be.glean.com") as glean: search_response = glean.client.search.query(query="search term") print(search_response) @@ -26,7 +26,7 @@ with Glean(api_token="client-token", instance="instance-name") as glean: from glean.api_client import Glean, models import os -with Glean(api_token="indexing-token", instance="instance-name") as glean: +with Glean(api_token="indexing-token", server_url="https://mycompany-be.glean.com") as glean: document_response = glean.indexing.documents.index( document=models.Document( id="doc-123", @@ -56,6 +56,7 @@ Remember that each namespace requires its own authentication token type as descr * [Custom HTTP Client](#custom-http-client) * [Resource Management](#resource-management) * [Debugging](#debugging) + * [Experimental Features and Deprecation Testing](#experimental-features-and-deprecation-testing) * [Development](#development) * [Maturity](#maturity) * [Contributions](#contributions) @@ -336,38 +337,50 @@ For more information on obtaining the appropriate token type, please contact you
Available methods -#### [client.activity](docs/sdks/clientactivity/README.md) +### [Agents](docs/sdks/agents/README.md) + +* [edit_agent](docs/sdks/agents/README.md#edit_agent) - Edit an agent + +### [Authentication](docs/sdks/authentication/README.md) + +* [checkdatasourceauth](docs/sdks/authentication/README.md#checkdatasourceauth) - Check datasource authorization + +### [Chat](docs/sdks/chatsdk/README.md) + +* [get_chat_file](docs/sdks/chatsdk/README.md#get_chat_file) - Download a chat file + +### [Client.Activity](docs/sdks/clientactivity/README.md) * [report](docs/sdks/clientactivity/README.md#report) - Report document activity * [feedback](docs/sdks/clientactivity/README.md#feedback) - Report client activity -#### [client.agents](docs/sdks/agents/README.md) +### [Client.Agents](docs/sdks/clientagents/README.md) -* [retrieve](docs/sdks/agents/README.md#retrieve) - Retrieve an agent -* [retrieve_schemas](docs/sdks/agents/README.md#retrieve_schemas) - List an agent's schemas -* [list](docs/sdks/agents/README.md#list) - Search agents -* [run_stream](docs/sdks/agents/README.md#run_stream) - Create an agent run and stream the response -* [run](docs/sdks/agents/README.md#run) - Create an agent run and wait for the response +* [retrieve](docs/sdks/clientagents/README.md#retrieve) - Retrieve an agent +* [retrieve_schemas](docs/sdks/clientagents/README.md#retrieve_schemas) - List an agent's schemas +* [list](docs/sdks/clientagents/README.md#list) - Search agents +* [run_stream](docs/sdks/clientagents/README.md#run_stream) - Create an agent run and stream the response +* [run](docs/sdks/clientagents/README.md#run) - Create an agent run and wait for the response -#### [client.announcements](docs/sdks/announcements/README.md) +### [Client.Announcements](docs/sdks/announcements/README.md) * [create](docs/sdks/announcements/README.md#create) - Create Announcement * [delete](docs/sdks/announcements/README.md#delete) - Delete Announcement * [update](docs/sdks/announcements/README.md#update) - Update Announcement -#### [client.answers](docs/sdks/answers/README.md) +### [Client.Answers](docs/sdks/answers/README.md) * [create](docs/sdks/answers/README.md#create) - Create Answer * [delete](docs/sdks/answers/README.md#delete) - Delete Answer * [update](docs/sdks/answers/README.md#update) - Update Answer * [retrieve](docs/sdks/answers/README.md#retrieve) - Read Answer -* [list](docs/sdks/answers/README.md#list) - List Answers +* [~~list~~](docs/sdks/answers/README.md#list) - List Answers :warning: **Deprecated** -#### [client.authentication](docs/sdks/clientauthentication/README.md) +### [Client.Authentication](docs/sdks/clientauthentication/README.md) * [create_token](docs/sdks/clientauthentication/README.md#create_token) - Create authentication token -#### [client.chat](docs/sdks/clientchat/README.md) +### [Client.Chat](docs/sdks/clientchat/README.md) * [create](docs/sdks/clientchat/README.md#create) - Chat * [delete_all](docs/sdks/clientchat/README.md#delete_all) - Deletes all saved Chats owned by a user @@ -375,12 +388,12 @@ For more information on obtaining the appropriate token type, please contact you * [retrieve](docs/sdks/clientchat/README.md#retrieve) - Retrieves a Chat * [list](docs/sdks/clientchat/README.md#list) - Retrieves all saved Chats * [retrieve_application](docs/sdks/clientchat/README.md#retrieve_application) - Gets the metadata for a custom Chat application -* [upload_files](docs/sdks/clientchat/README.md#upload_files) - Upload files for Chat. -* [retrieve_files](docs/sdks/clientchat/README.md#retrieve_files) - Get files uploaded by a user for Chat. -* [delete_files](docs/sdks/clientchat/README.md#delete_files) - Delete files uploaded by a user for chat. +* [upload_files](docs/sdks/clientchat/README.md#upload_files) - Upload files for Chat +* [retrieve_files](docs/sdks/clientchat/README.md#retrieve_files) - Get files uploaded by a user for Chat +* [delete_files](docs/sdks/clientchat/README.md#delete_files) - Delete files uploaded by a user for chat * [create_stream](docs/sdks/clientchat/README.md#create_stream) - Chat -#### [client.collections](docs/sdks/collections/README.md) +### [Client.Collections](docs/sdks/collections/README.md) * [add_items](docs/sdks/collections/README.md#add_items) - Add Collection item * [create](docs/sdks/collections/README.md#create) - Create Collection @@ -391,19 +404,19 @@ For more information on obtaining the appropriate token type, please contact you * [retrieve](docs/sdks/collections/README.md#retrieve) - Read Collection * [list](docs/sdks/collections/README.md#list) - List Collections -#### [client.documents](docs/sdks/clientdocuments/README.md) +### [Client.Documents](docs/sdks/clientdocuments/README.md) * [retrieve_permissions](docs/sdks/clientdocuments/README.md#retrieve_permissions) - Read document permissions * [retrieve](docs/sdks/clientdocuments/README.md#retrieve) - Read documents * [retrieve_by_facets](docs/sdks/clientdocuments/README.md#retrieve_by_facets) - Read documents by facets * [summarize](docs/sdks/clientdocuments/README.md#summarize) - Summarize documents -#### [client.entities](docs/sdks/entities/README.md) +### [Client.Entities](docs/sdks/cliententities/README.md) -* [list](docs/sdks/entities/README.md#list) - List entities -* [read_people](docs/sdks/entities/README.md#read_people) - Read people +* [list](docs/sdks/cliententities/README.md#list) - List entities +* [read_people](docs/sdks/cliententities/README.md#read_people) - Read people -#### [client.governance.data.policies](docs/sdks/policies/README.md) +### [Client.Governance.Data.Policies](docs/sdks/policies/README.md) * [retrieve](docs/sdks/policies/README.md#retrieve) - Gets specified policy * [update](docs/sdks/policies/README.md#update) - Updates an existing policy @@ -411,26 +424,26 @@ For more information on obtaining the appropriate token type, please contact you * [create](docs/sdks/policies/README.md#create) - Creates new policy * [download](docs/sdks/policies/README.md#download) - Downloads violations CSV for policy -#### [client.governance.data.reports](docs/sdks/reports/README.md) +### [Client.Governance.Data.Reports](docs/sdks/reports/README.md) * [create](docs/sdks/reports/README.md#create) - Creates new one-time report * [download](docs/sdks/reports/README.md#download) - Downloads violations CSV for report * [status](docs/sdks/reports/README.md#status) - Fetches report run status -#### [client.governance.documents.visibilityoverrides](docs/sdks/visibilityoverrides/README.md) +### [Client.Governance.Documents.Visibilityoverrides](docs/sdks/visibilityoverrides/README.md) * [list](docs/sdks/visibilityoverrides/README.md#list) - Fetches documents visibility * [create](docs/sdks/visibilityoverrides/README.md#create) - Hide or unhide docs -#### [client.insights](docs/sdks/insights/README.md) +### [Client.Insights](docs/sdks/insights/README.md) * [retrieve](docs/sdks/insights/README.md#retrieve) - Get insights -#### [client.messages](docs/sdks/messages/README.md) +### [Client.Messages](docs/sdks/messages/README.md) * [retrieve](docs/sdks/messages/README.md#retrieve) - Read messages -#### [client.pins](docs/sdks/pins/README.md) +### [Client.Pins](docs/sdks/pins/README.md) * [update](docs/sdks/pins/README.md#update) - Update pin * [retrieve](docs/sdks/pins/README.md#retrieve) - Read pin @@ -438,7 +451,7 @@ For more information on obtaining the appropriate token type, please contact you * [create](docs/sdks/pins/README.md#create) - Create pin * [remove](docs/sdks/pins/README.md#remove) - Delete pin -#### [client.search](docs/sdks/search/README.md) +### [Client.Search](docs/sdks/search/README.md) * [query_as_admin](docs/sdks/search/README.md#query_as_admin) - Search the index (admin) * [autocomplete](docs/sdks/search/README.md#autocomplete) - Autocomplete @@ -446,7 +459,7 @@ For more information on obtaining the appropriate token type, please contact you * [recommendations](docs/sdks/search/README.md#recommendations) - Recommend documents * [query](docs/sdks/search/README.md#query) - Search -#### [client.shortcuts](docs/sdks/clientshortcuts/README.md) +### [Client.Shortcuts](docs/sdks/clientshortcuts/README.md) * [create](docs/sdks/clientshortcuts/README.md#create) - Create shortcut * [delete](docs/sdks/clientshortcuts/README.md#delete) - Delete shortcut @@ -454,32 +467,58 @@ For more information on obtaining the appropriate token type, please contact you * [list](docs/sdks/clientshortcuts/README.md#list) - List shortcuts * [update](docs/sdks/clientshortcuts/README.md#update) - Update shortcut -#### [client.tools](docs/sdks/tools/README.md) +### [Client.Tools](docs/sdks/clienttools/README.md) -* [list](docs/sdks/tools/README.md#list) - List available tools -* [run](docs/sdks/tools/README.md#run) - Execute the specified tool +* [list](docs/sdks/clienttools/README.md#list) - List available tools +* [run](docs/sdks/clienttools/README.md#run) - Execute the specified tool -#### [client.verification](docs/sdks/clientverification/README.md) +### [Client.Verification](docs/sdks/clientverification/README.md) * [add_reminder](docs/sdks/clientverification/README.md#add_reminder) - Create verification * [list](docs/sdks/clientverification/README.md#list) - List verifications * [verify](docs/sdks/clientverification/README.md#verify) - Update verification -#### [indexing.authentication](docs/sdks/indexingauthentication/README.md) +### [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 +* [get_datasource_credential_status](docs/sdks/datasources/README.md#get_datasource_credential_status) - Get datasource instance credential status +* [rotate_datasource_credentials](docs/sdks/datasources/README.md#rotate_datasource_credentials) - Rotate datasource instance credentials + +### [Entities](docs/sdks/entities/README.md) + +* [get_person_photo](docs/sdks/entities/README.md#get_person_photo) - Get person photo + +### [Governance](docs/sdks/governance/README.md) + +* [createfindingsexport](docs/sdks/governance/README.md#createfindingsexport) - Creates findings export +* [listfindingsexports](docs/sdks/governance/README.md#listfindingsexports) - Lists findings exports +* [downloadfindingsexport](docs/sdks/governance/README.md#downloadfindingsexport) - Downloads findings export +* [deletefindingsexport](docs/sdks/governance/README.md#deletefindingsexport) - Deletes findings export + +### [Indexing.Authentication](docs/sdks/indexingauthentication/README.md) * [rotate_token](docs/sdks/indexingauthentication/README.md#rotate_token) - Rotate token -#### [indexing.datasource](docs/sdks/indexingdatasource/README.md) +### [Indexing.CustomMetadata](docs/sdks/custommetadata/README.md) + +* [upsert](docs/sdks/custommetadata/README.md#upsert) - Add or update custom metadata +* [delete](docs/sdks/custommetadata/README.md#delete) - Remove custom metadata +* [get_schema](docs/sdks/custommetadata/README.md#get_schema) - Retrieve metadata schema +* [upsert_schema](docs/sdks/custommetadata/README.md#upsert_schema) - Create or update metadata schema +* [delete_schema](docs/sdks/custommetadata/README.md#delete_schema) - Remove metadata schema + +### [Indexing.Datasource](docs/sdks/indexingdatasource/README.md) * [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) +### [Indexing.Documents](docs/sdks/indexingdocuments/README.md) * [add_or_update](docs/sdks/indexingdocuments/README.md#add_or_update) - Index document * [index](docs/sdks/indexingdocuments/README.md#index) - Index documents @@ -494,20 +533,20 @@ For more information on obtaining the appropriate token type, please contact you * [~~status~~](docs/sdks/indexingdocuments/README.md#status) - Get document upload and indexing status :warning: **Deprecated** * [~~count~~](docs/sdks/indexingdocuments/README.md#count) - Get document count :warning: **Deprecated** -#### [indexing.people](docs/sdks/people/README.md) +### [Indexing.People](docs/sdks/people/README.md) * [debug](docs/sdks/people/README.md#debug) - Beta: Get user information * [~~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 * [delete_team](docs/sdks/people/README.md#delete_team) - Delete team * [bulk_index_teams](docs/sdks/people/README.md#bulk_index_teams) - Bulk index teams -#### [indexing.permissions](docs/sdks/indexingpermissions/README.md) +### [Indexing.Permissions](docs/sdks/indexingpermissions/README.md) * [update_permissions](docs/sdks/indexingpermissions/README.md#update_permissions) - Update document permissions * [index_user](docs/sdks/indexingpermissions/README.md#index_user) - Index user @@ -522,11 +561,21 @@ For more information on obtaining the appropriate token type, please contact you * [delete_membership](docs/sdks/indexingpermissions/README.md#delete_membership) - Delete membership * [authorize_beta_users](docs/sdks/indexingpermissions/README.md#authorize_beta_users) - Beta users -#### [indexing.shortcuts](docs/sdks/indexingshortcuts/README.md) +### [Indexing.Shortcuts](docs/sdks/indexingshortcuts/README.md) * [bulk_index](docs/sdks/indexingshortcuts/README.md#bulk_index) - Bulk index external shortcuts * [upload](docs/sdks/indexingshortcuts/README.md#upload) - Upload shortcuts +### [Tools](docs/sdks/tools/README.md) + +* [get_action_pack_auth_status](docs/sdks/tools/README.md#get_action_pack_auth_status) - Get end-user authentication status for an action pack. +* [authorize_action_pack](docs/sdks/tools/README.md#authorize_action_pack) - Start the OAuth authorization flow for an action pack. + +### [Troubleshooting](docs/sdks/troubleshooting/README.md) + +* [post_api_index_v1_debug_datasource_document_events](docs/sdks/troubleshooting/README.md#post_api_index_v1_debug_datasource_document_events) - Beta: Get document lifecycle events + +
@@ -824,6 +873,25 @@ with Glean( # Use the SDK ... +``` + +### Override Server URL Per-Operation + +The server URL can also be overridden on a per-operation basis, provided a server list was specified for the operation. For example: +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.indexing.custom_metadata.upsert(doc_id="", group_name="", custom_metadata=[], server_url="https://instance-name-be.glean.com") + + # Handle response + print(res) + ``` @@ -953,6 +1021,62 @@ s = Glean(debug_logger=logging.getLogger("glean.api_client")) You can also enable a default debug logger by setting an environment variable `GLEAN_DEBUG` to true. +## Experimental Features and Deprecation Testing + +The SDK provides options to test upcoming API changes before they become the default behavior. This is useful for: + +- **Testing experimental features** before they are generally available +- **Preparing for deprecations** by excluding deprecated endpoints ahead of their removal + +### Configuration Options + +You can configure these options either via environment variables or SDK constructor options: + +#### Using Environment Variables + +```python +import os + +# Set environment variables before initializing the SDK +os.environ["X_GLEAN_EXCLUDE_DEPRECATED_AFTER"] = "2026-10-15" +os.environ["X_GLEAN_INCLUDE_EXPERIMENTAL"] = "true" + +from glean.api_client import Glean + +glean = Glean( + api_token=os.environ.get("GLEAN_API_TOKEN", ""), + server_url="https://mycompany-be.glean.com", +) +``` + +#### Using SDK Constructor Options + +```python +import os + +from glean.api_client import Glean + +glean = Glean( + api_token=os.environ.get("GLEAN_API_TOKEN", ""), + server_url="https://mycompany-be.glean.com", + exclude_deprecated_after="2026-10-15", + include_experimental=True, +) +``` + +### Option Reference + +| Option | Environment Variable | Type | Description | +| ------ | -------------------- | ---- | ----------- | +| `exclude_deprecated_after` | `X_GLEAN_EXCLUDE_DEPRECATED_AFTER` | `str` (date) | Exclude API endpoints that will be deprecated after this date (format: `YYYY-MM-DD`). Use this to test your integration against upcoming deprecations. | +| `include_experimental` | `X_GLEAN_INCLUDE_EXPERIMENTAL` | `bool` | When `True`, enables experimental API features that are not yet generally available. Use this to preview and test new functionality. | + +> [!NOTE] +> Environment variables take precedence over SDK constructor options when both are set. + +> [!WARNING] +> Experimental features may change or be removed without notice. Do not rely on experimental features in production environments. + # Development diff --git a/RELEASES.md b/RELEASES.md index 6a728752..87ea457d 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -448,4 +448,304 @@ Based on: ### Generated - [python v0.11.22] . ### Releases -- [PyPI v0.11.22] https://pypi.org/project/glean/0.11.22 - . \ No newline at end of file +- [PyPI v0.11.22] https://pypi.org/project/glean/0.11.22 - . + +## 2025-12-10 17:52:37 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.675.2 (2.778.5) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.11.23] . +### Releases +- [PyPI v0.11.23] https://pypi.org/project/glean-api-client/0.11.23 - . + +## 2025-12-11 14:34:49 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.675.4 (2.779.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.11.24] . +### Releases +- [PyPI v0.11.24] https://pypi.org/project/glean-api-client/0.11.24 - . + +## 2025-12-12 06:44:46 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.675.4 (2.779.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.11.25] . +### Releases +- [PyPI v0.11.25] https://pypi.org/project/glean-api-client/0.11.25 - . + +## 2026-01-14 01:54:32 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.685.0 (2.794.1) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.11.26] . +### Releases +- [PyPI v0.11.26] https://pypi.org/project/glean-api-client/0.11.26 - . + +## 2026-01-16 01:51:23 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.686.0 (2.796.1) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.11.27] . +### Releases +- [PyPI v0.11.27] https://pypi.org/project/glean-api-client/0.11.27 - . + +## 2026-02-05 02:09:47 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.704.0 (2.806.4) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.0] . +### Releases +- [PyPI v0.12.0] https://pypi.org/project/glean-api-client/0.12.0 - . + +## 2026-02-06 02:10:01 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.706.1 (2.809.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.1] . +### Releases +- [PyPI v0.12.1] https://pypi.org/project/glean-api-client/0.12.1 - . + +## 2026-02-06 20:25:52 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.708.0 (2.811.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.2] . +### Releases +- [PyPI v0.12.2] https://pypi.org/project/glean-api-client/0.12.2 - . + +## 2026-02-09 08:15:10 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.709.1 (2.812.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.3] . +### Releases +- [PyPI v0.12.3] https://pypi.org/project/glean-api-client/0.12.3 - . + +## 2026-02-09 17:35:34 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.709.1 (2.812.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.4] . +### Releases +- [PyPI v0.12.4] https://pypi.org/project/glean-api-client/0.12.4 - . + +## 2026-02-10 17:09:12 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.709.3 (2.814.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.5] . +### Releases +- [PyPI v0.12.5] https://pypi.org/project/glean-api-client/0.12.5 - . + +## 2026-02-18 02:24:12 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.722.0 (2.829.1) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.6] . +### Releases +- [PyPI v0.12.6] https://pypi.org/project/glean-api-client/0.12.6 - . + +## 2026-02-19 15:47:56 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.722.7 (2.832.9) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.7] . +### Releases +- [PyPI v0.12.7] https://pypi.org/project/glean-api-client/0.12.7 - . + +## 2026-02-20 02:10:28 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.722.7 (2.832.9) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.8] . +### Releases +- [PyPI v0.12.8] https://pypi.org/project/glean-api-client/0.12.8 - . + +## 2026-03-09 18:33:28 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.750.0 (2.856.1) 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 - . + +## 2026-03-11 09:01:27 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.751.0 (2.858.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.10] . +### Releases +- [PyPI v0.12.10] https://pypi.org/project/glean-api-client/0.12.10 - . + +## 2026-03-16 02:33:55 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.755.0 (2.865.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.11] . +### Releases +- [PyPI v0.12.11] https://pypi.org/project/glean-api-client/0.12.11 - . + +## 2026-03-17 02:12:41 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.755.1 (2.865.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.12] . +### Releases +- [PyPI v0.12.12] https://pypi.org/project/glean-api-client/0.12.12 - . + +## 2026-03-18 02:24:18 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.757.0 (2.866.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.13] . +### Releases +- [PyPI v0.12.13] https://pypi.org/project/glean-api-client/0.12.13 - . + +## 2026-03-19 14:04:02 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.757.1 (2.866.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.14] . +### Releases +- [PyPI v0.12.14] https://pypi.org/project/glean-api-client/0.12.14 - . + +## 2026-03-23 09:42:32 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.759.1 (2.869.10) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.15] . +### Releases +- [PyPI v0.12.15] https://pypi.org/project/glean-api-client/0.12.15 - . + +## 2026-03-23 19:42:07 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.759.1 (2.869.10) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.16] . +### Releases +- [PyPI v0.12.16] https://pypi.org/project/glean-api-client/0.12.16 - . + +## 2026-03-25 02:23:37 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.759.2 (2.869.23) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.17] . +### Releases +- [PyPI v0.12.17] https://pypi.org/project/glean-api-client/0.12.17 - . + +## 2026-03-27 02:31:31 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.759.3 (2.869.25) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.18] . +### Releases +- [PyPI v0.12.18] https://pypi.org/project/glean-api-client/0.12.18 - . + +## 2026-04-06 17:39:23 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.761.1 (2.879.6) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.19] . +### Releases +- [PyPI v0.12.19] https://pypi.org/project/glean-api-client/0.12.19 - . + +## 2026-04-09 02:28:47 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.761.1 (2.879.6) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.20] . +### Releases +- [PyPI v0.12.20] https://pypi.org/project/glean-api-client/0.12.20 - . + +## 2026-04-13 17:28:50 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.761.3 (2.879.11) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.21] . +### Releases +- [PyPI v0.12.21] https://pypi.org/project/glean-api-client/0.12.21 - . + +## 2026-04-15 08:37:31 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.761.5 (2.879.13) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.22] . +### Releases +- [PyPI v0.12.22] https://pypi.org/project/glean-api-client/0.12.22 - . + +## 2026-04-20 02:49:34 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.761.8 (2.881.2) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.12.23] . +### Releases +- [PyPI v0.12.23] https://pypi.org/project/glean-api-client/0.12.23 - . + +## 2026-06-05 03:53:55 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.770.0 (2.893.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.13.0] . +### Releases +- [PyPI v0.13.0] https://pypi.org/project/glean-api-client/0.13.0 - . \ No newline at end of file diff --git a/docs/errors/errorinforesponse.md b/docs/errors/errorinforesponse.md new file mode 100644 index 00000000..09e01a60 --- /dev/null +++ b/docs/errors/errorinforesponse.md @@ -0,0 +1,11 @@ +# ErrorInfoResponse + +Error response for custom metadata operations + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `error` | *str* | :heavy_check_mark: | Error message describing what went wrong | +| `message` | *Optional[str]* | :heavy_minus_sign: | Additional details about the error | \ 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 f1df02d4..7c4c0d90 100644 --- a/docs/errors/gleandataerror.md +++ b/docs/errors/gleandataerror.md @@ -3,9 +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 | \ 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/actionauthtype.md b/docs/models/actionauthtype.md new file mode 100644 index 00000000..d288ff5c --- /dev/null +++ b/docs/models/actionauthtype.md @@ -0,0 +1,26 @@ +# ActionAuthType + +Authentication mechanism used by an action pack. + - `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool. + - `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually. + - `AUTH_NONE`: Action pack requires no authentication. + + +## Example Usage + +```python +from glean.api_client.models import ActionAuthType + +value = ActionAuthType.AUTH_USER_OAUTH + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ----------------- | ----------------- | +| `AUTH_USER_OAUTH` | AUTH_USER_OAUTH | +| `AUTH_ADMIN` | AUTH_ADMIN | +| `AUTH_NONE` | AUTH_NONE | \ No newline at end of file diff --git a/docs/models/actionpackauthstatus.md b/docs/models/actionpackauthstatus.md new file mode 100644 index 00000000..70a7b624 --- /dev/null +++ b/docs/models/actionpackauthstatus.md @@ -0,0 +1,9 @@ +# ActionPackAuthStatus + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `authenticated` | *bool* | :heavy_check_mark: | Whether the calling user is already authenticated to the tool backing the action pack. | +| `auth_type` | [models.ActionAuthType](../models/actionauthtype.md) | :heavy_check_mark: | Authentication mechanism used by an action pack.
- `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool.
- `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually.
- `AUTH_NONE`: Action pack requires no authentication.
| \ No newline at end of file diff --git a/docs/models/actionpackauthstatusresponse.md b/docs/models/actionpackauthstatusresponse.md new file mode 100644 index 00000000..af0cfc2e --- /dev/null +++ b/docs/models/actionpackauthstatusresponse.md @@ -0,0 +1,8 @@ +# ActionPackAuthStatusResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `action_pack` | [models.ActionPackAuthStatus](../models/actionpackauthstatus.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/actionsummary.md b/docs/models/actionsummary.md new file mode 100644 index 00000000..fc60149c --- /dev/null +++ b/docs/models/actionsummary.md @@ -0,0 +1,16 @@ +# ActionSummary + +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. | +| `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..761a12fe 100644 --- a/docs/models/addcollectionitemserrorerrortype.md +++ b/docs/models/addcollectionitemserrorerrortype.md @@ -1,8 +1,19 @@ # AddCollectionItemsErrorErrorType +## Example Usage + +```python +from glean.api_client.models import AddCollectionItemsErrorErrorType + +value = AddCollectionItemsErrorErrorType.EXISTING_ITEM + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values | Name | Value | | --------------- | --------------- | -| `EXISTING_ITEM` | EXISTING_ITEM | \ No newline at end of file +| `EXISTING_ITEM` | EXISTING_ITEM | +| `CORRUPT_ITEM` | CORRUPT_ITEM | \ No newline at end of file diff --git a/docs/models/addcollectionitemsrequestrequest.md b/docs/models/addcollectionitemsrequestrequest.md new file mode 100644 index 00000000..06b734c8 --- /dev/null +++ b/docs/models/addcollectionitemsrequestrequest.md @@ -0,0 +1,9 @@ +# AddcollectionitemsRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `add_collection_items_request` | [models.AddCollectionItemsRequest](../models/addcollectionitemsrequest.md) | :heavy_check_mark: | Data describing the add operation. | \ No newline at end of file diff --git a/docs/models/addverificationreminderrequest.md b/docs/models/addverificationreminderrequest.md new file mode 100644 index 00000000..ac943c10 --- /dev/null +++ b/docs/models/addverificationreminderrequest.md @@ -0,0 +1,9 @@ +# AddverificationreminderRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `reminder_request` | [models.ReminderRequest](../models/reminderrequest.md) | :heavy_check_mark: | Details about the reminder. | \ No newline at end of file diff --git a/docs/models/adminsearchrequest.md b/docs/models/adminsearchrequest.md new file mode 100644 index 00000000..608a7bad --- /dev/null +++ b/docs/models/adminsearchrequest.md @@ -0,0 +1,9 @@ +# AdminsearchRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | | +| `search_request` | [models.SearchRequest](../models/searchrequest.md) | :heavy_check_mark: | Admin search request | {
"trackingToken": "trackingToken",
"query": "vacation policy",
"pageSize": 10,
"requestOptions": {
"facetFilters": [
{
"fieldName": "type",
"values": [
{
"value": "article",
"relationType": "EQUALS"
},
{
"value": "document",
"relationType": "EQUALS"
}
]
},
{
"fieldName": "department",
"values": [
{
"value": "engineering",
"relationType": "EQUALS"
}
]
}
]
}
} | \ No newline at end of file diff --git a/docs/models/agentenum.md b/docs/models/agentenum.md index b80a0fea..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 @@ -11,4 +21,5 @@ Name of the agent. | `GPT` | GPT | | `UNIVERSAL` | UNIVERSAL | | `FAST` | FAST | -| `ADVANCED` | ADVANCED | \ No newline at end of file +| `ADVANCED` | ADVANCED | +| `AUTO` | AUTO | \ No newline at end of file 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/agentrun.md b/docs/models/agentrun.md index ba0e0f9a..534e9371 100644 --- a/docs/models/agentrun.md +++ b/docs/models/agentrun.md @@ -1,14 +1,14 @@ # AgentRun -Payload for creating a run. +Payload for creating a run. **Important**: If the agent uses an input form trigger, the `input` field is required and must include all fields defined in the form schema. Even fields marked as optional in the UI must be included in the request—use an empty string (`""`) for optional fields without values. Omitting required form fields will result in a 500 error. ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent to run. | -| `input` | Dict[str, *Any*] | :heavy_minus_sign: | The input to the agent. | -| `messages` | List[[models.Message](../models/message.md)] | :heavy_minus_sign: | The messages to pass an input to the agent. | -| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | The metadata to pass to the agent. | -| `status` | [Optional[models.AgentExecutionStatus]](../models/agentexecutionstatus.md) | :heavy_minus_sign: | The status of the run. One of 'error', 'success'. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent to run. | +| `input` | Dict[str, *Any*] | :heavy_minus_sign: | The input to the agent. Required when the agent uses an input form trigger. | +| `messages` | List[[models.Message](../models/message.md)] | :heavy_minus_sign: | The messages to pass an input to the agent. | +| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | The metadata to pass to the agent. | +| `status` | [Optional[models.AgentExecutionStatus]](../models/agentexecutionstatus.md) | :heavy_minus_sign: | The status of the run. One of 'error', 'success'. | \ No newline at end of file diff --git a/docs/models/agentruncreate.md b/docs/models/agentruncreate.md index 8c52882a..46d31de6 100644 --- a/docs/models/agentruncreate.md +++ b/docs/models/agentruncreate.md @@ -1,13 +1,13 @@ # AgentRunCreate -Payload for creating a run. +Payload for creating a run. **Important**: If the agent uses an input form trigger, the `input` field is required and must include all fields defined in the form schema. Even fields marked as optional in the UI must be included in the request—use an empty string (`""`) for optional fields without values. Omitting required form fields will result in a 500 error. ## Fields -| Field | Type | Required | Description | -| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent to run. | -| `input` | Dict[str, *Any*] | :heavy_minus_sign: | The input to the agent. | -| `messages` | List[[models.Message](../models/message.md)] | :heavy_minus_sign: | The messages to pass an input to the agent. | -| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | The metadata to pass to the agent. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent to run. | +| `input` | Dict[str, *Any*] | :heavy_minus_sign: | The input to the agent. Required when the agent uses an input form trigger. | +| `messages` | List[[models.Message](../models/message.md)] | :heavy_minus_sign: | The messages to pass an input to the agent. | +| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | The metadata to pass to the agent. | \ No newline at end of file diff --git a/docs/models/agentschemas.md b/docs/models/agentschemas.md index 3535a940..4ccba78f 100644 --- a/docs/models/agentschemas.md +++ b/docs/models/agentschemas.md @@ -5,8 +5,10 @@ Defines the structure and properties of an agent. ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | -| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | mho4lwzylcozgoc2 | -| `input_schema` | [models.InputSchema](../models/inputschema.md) | :heavy_check_mark: | The schema for the agent input. In JSON Schema format. | | -| `output_schema` | [models.OutputSchema](../models/outputschema.md) | :heavy_check_mark: | The schema for the agent output. In JSON Schema format. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | mho4lwzylcozgoc2 | +| `name` | *Optional[str]* | :heavy_minus_sign: | The name of the agent. | HR Policy Agent | +| `input_schema` | [models.InputSchema](../models/inputschema.md) | :heavy_check_mark: | The schema for the agent input. In JSON Schema format. | | +| `output_schema` | [models.OutputSchema](../models/outputschema.md) | :heavy_check_mark: | The schema for the agent output. In JSON Schema format. | | +| `tools` | List[[models.ActionSummary](../models/actionsummary.md)] | :heavy_minus_sign: | List of tools that the agent can invoke. Only included when include_tools query parameter is set to true. | | \ No newline at end of file diff --git a/docs/models/agentsinsightsv2request.md b/docs/models/agentsinsightsv2request.md index fc4a769f..0218c6fa 100644 --- a/docs/models/agentsinsightsv2request.md +++ b/docs/models/agentsinsightsv2request.md @@ -7,4 +7,5 @@ | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | | `agent_ids` | List[*str*] | :heavy_minus_sign: | IDs of the Agents for which Insights should be returned. An empty array signifies all. | | `departments` | List[*str*] | :heavy_minus_sign: | Departments for which Insights are requested. | +| `manager_emails` | List[*str*] | :heavy_minus_sign: | Manager emails whose teams should be filtered for. Empty array means no filtering. | | `day_range` | [Optional[models.Period]](../models/period.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/agentsinsightsv2response.md b/docs/models/agentsinsightsv2response.md index c0812335..bde7e4fd 100644 --- a/docs/models/agentsinsightsv2response.md +++ b/docs/models/agentsinsightsv2response.md @@ -5,15 +5,20 @@ | Field | Type | Required | Description | | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users, in the specified departments. | -| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users, in the specified departments. | +| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users. | +| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users. | | `monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | | `weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | | `daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | | `shared_agents_count` | *Optional[int]* | :heavy_minus_sign: | Total number of shared agents. | | `top_agents_insights` | List[[models.PerAgentInsight](../models/peragentinsight.md)] | :heavy_minus_sign: | N/A | +| `top_use_cases_insights` | List[[models.AgentUseCaseInsight](../models/agentusecaseinsight.md)] | :heavy_minus_sign: | N/A | | `agents_usage_by_department_insights` | List[[models.AgentsUsageByDepartmentInsight](../models/agentsusagebydepartmentinsight.md)] | :heavy_minus_sign: | N/A | | `agent_users_insights` | List[[models.AgentUsersInsight](../models/agentusersinsight.md)] | :heavy_minus_sign: | N/A | +| `agents_time_saved_insights` | List[[models.AgentsTimeSavedInsight](../models/agentstimesavedinsight.md)] | :heavy_minus_sign: | Insights for agents time saved over the specified time period. | | `daily_agent_runs_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `successful_runs_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `failed_runs_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `paused_runs_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | | `upvotes_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | | `downvotes_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/agentstimesavedinsight.md b/docs/models/agentstimesavedinsight.md new file mode 100644 index 00000000..552714b4 --- /dev/null +++ b/docs/models/agentstimesavedinsight.md @@ -0,0 +1,14 @@ +# AgentsTimeSavedInsight + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `agent_id` | *Optional[str]* | :heavy_minus_sign: | Agent ID | | +| `agent_name` | *Optional[str]* | :heavy_minus_sign: | Agent name | | +| `icon` | [Optional[models.IconConfig]](../models/iconconfig.md) | :heavy_minus_sign: | Defines how to render an icon | {
"color": "#343CED",
"key": "person_icon",
"iconType": "GLYPH",
"name": "user"
} | +| `is_deleted` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether the agent has been deleted | | +| `run_count` | *Optional[int]* | :heavy_minus_sign: | Total number of runs for this agent over the specified time period. | | +| `mins_per_run` | *Optional[float]* | :heavy_minus_sign: | Average minutes saved per run for this agent over the specified time period. | | +| `feedback_user_count` | *Optional[int]* | :heavy_minus_sign: | Total number of users who provided feedback on time saved for this agent over the specified time period. | | \ No newline at end of file diff --git a/docs/models/agentusecaseinsight.md b/docs/models/agentusecaseinsight.md new file mode 100644 index 00000000..88a6bd23 --- /dev/null +++ b/docs/models/agentusecaseinsight.md @@ -0,0 +1,15 @@ +# AgentUseCaseInsight + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `use_case` | *Optional[str]* | :heavy_minus_sign: | Use case name | | +| `run_count` | *Optional[int]* | :heavy_minus_sign: | Total number of runs for this use case over the specified time period. | | +| `trend` | *Optional[float]* | :heavy_minus_sign: | Percentage change in runs compared to the previous equivalent time period. | | +| `top_departments` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of the top departments using this use case. | | +| `top_agent_id` | *Optional[str]* | :heavy_minus_sign: | ID of the most-used agent for this use case. | | +| `top_agent_name` | *Optional[str]* | :heavy_minus_sign: | Name of the most-used agent for this use case. | | +| `top_agent_icon` | [Optional[models.IconConfig]](../models/iconconfig.md) | :heavy_minus_sign: | Defines how to render an icon | {
"color": "#343CED",
"key": "person_icon",
"iconType": "GLYPH",
"name": "user"
} | +| `top_agent_is_deleted` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether the top agent has been deleted. | | \ No newline at end of file diff --git a/docs/models/aiappactioncounts.md b/docs/models/aiappactioncounts.md deleted file mode 100644 index cb0b5e37..00000000 --- a/docs/models/aiappactioncounts.md +++ /dev/null @@ -1,16 +0,0 @@ -# AiAppActionCounts - -Map from action to frequency. - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| `total_slackbot_responses` | *Optional[int]* | :heavy_minus_sign: | Total number of Slackbot responses, both proactive and reactive. | -| `total_slackbot_responses_shared` | *Optional[int]* | :heavy_minus_sign: | Total number of Slackbot responses shared publicly (upvoted). | -| `total_slackbot_responses_not_helpful` | *Optional[int]* | :heavy_minus_sign: | Total number of Slackbot responses rejected as not helpful (downvoted). | -| `total_chat_messages` | *Optional[int]* | :heavy_minus_sign: | Total number of Chat messages sent in requested period. | -| `total_upvotes` | *Optional[int]* | :heavy_minus_sign: | Total number of Chat messages which received upvotes by the user. | -| `total_downvotes` | *Optional[int]* | :heavy_minus_sign: | Total number of Chat messages which received downvotes by the user. | -| `__pydantic_extra__` | Dict[str, *int*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/aiappsinsightsresponse.md b/docs/models/aiappsinsightsresponse.md deleted file mode 100644 index 81de9209..00000000 --- a/docs/models/aiappsinsightsresponse.md +++ /dev/null @@ -1,12 +0,0 @@ -# AiAppsInsightsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `last_log_timestamp` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). | -| `ai_app_insights` | List[[models.UserActivityInsight](../models/useractivityinsight.md)] | :heavy_minus_sign: | N/A | -| `total_active_users` | *Optional[int]* | :heavy_minus_sign: | Total number of active users on the Ai App in the requested period. | -| `action_counts` | [Optional[models.AiAppActionCounts]](../models/aiappactioncounts.md) | :heavy_minus_sign: | Map from action to frequency. | -| `departments` | List[*str*] | :heavy_minus_sign: | list of departments applicable for users tab. | \ No newline at end of file diff --git a/docs/models/aiinsightsresponse.md b/docs/models/aiinsightsresponse.md deleted file mode 100644 index 670dbf43..00000000 --- a/docs/models/aiinsightsresponse.md +++ /dev/null @@ -1,19 +0,0 @@ -# AiInsightsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `last_log_timestamp` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). | -| `assistant_insights` | List[[models.UserActivityInsight](../models/useractivityinsight.md)] | :heavy_minus_sign: | N/A | -| `total_active_assistant_users` | *Optional[int]* | :heavy_minus_sign: | Total number of Active Assistant users (chat, summary, AIA) in requested period. | -| `total_chat_messages` | *Optional[int]* | :heavy_minus_sign: | Total number of Chat messages sent in requested period. | -| `total_ai_summarizations` | *Optional[int]* | :heavy_minus_sign: | Total number of AI Document Summarizations invoked in the requested period. | -| `total_ai_answers` | *Optional[int]* | :heavy_minus_sign: | Total number of AI Answers generated in the requested period. | -| `total_upvotes` | *Optional[int]* | :heavy_minus_sign: | Total number of Chat messages which received upvotes by the user. | -| `total_downvotes` | *Optional[int]* | :heavy_minus_sign: | Total number of Chat messages which received downvotes by the user. | -| `total_gleanbot_responses` | *Optional[int]* | :heavy_minus_sign: | Total number of Gleanbot responses, both proactive and reactive. | -| `total_gleanbot_responses_shared` | *Optional[int]* | :heavy_minus_sign: | Total number of Gleanbot responses shared publicly (upvoted). | -| `total_gleanbot_responses_not_helpful` | *Optional[int]* | :heavy_minus_sign: | Total number of Glean responses rejected as not helpful (downvoted). | -| `departments` | List[*str*] | :heavy_minus_sign: | list of departments applicable for users tab. | \ No newline at end of file diff --git a/docs/models/announcement.md b/docs/models/announcement.md index dc590582..ccd458aa 100644 --- a/docs/models/announcement.md +++ b/docs/models/announcement.md @@ -21,6 +21,7 @@ | `view_url` | *Optional[str]* | :heavy_minus_sign: | URL for viewing the announcement. It will be set to document URL for announcements from other datasources e.g. simpplr. Can only be written when channel="SOCIAL_FEED". | | | `draft_id` | *Optional[int]* | :heavy_minus_sign: | The opaque id of the associated draft. | | | `permissions` | [Optional[models.ObjectPermissions]](../models/objectpermissions.md) | :heavy_minus_sign: | N/A | | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular UGC. To be used for `/feedback` reporting. | | | `id` | *Optional[int]* | :heavy_minus_sign: | The opaque id of the announcement. | | | `author` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | | `create_timestamp` | *Optional[int]* | :heavy_minus_sign: | Server Unix timestamp of the creation time (in seconds since epoch UTC). | | 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/answer.md b/docs/models/answer.md index 1bb86be7..70996a33 100644 --- a/docs/models/answer.md +++ b/docs/models/answer.md @@ -3,29 +3,29 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The opaque ID of the Answer. | 3 | -| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | -| `question` | *Optional[str]* | :heavy_minus_sign: | N/A | Why is the sky blue? | -| `question_variations` | List[*str*] | :heavy_minus_sign: | Additional ways of phrasing this question. | | -| `body_text` | *Optional[str]* | :heavy_minus_sign: | The plain text answer to the question. | From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. | -| ~~`board_id`~~ | *Optional[int]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. | | -| `audience_filters` | List[[models.FacetFilter](../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. | | -| `added_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer added by the owner. | | -| `removed_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer removed by the owner. | | -| `roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of roles for this answer explicitly granted by an owner, editor, or admin. | | -| `source_document_spec` | [Optional[models.DocumentSpecUnion]](../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | -| `source_type` | [Optional[models.AnswerSourceType]](../models/answersourcetype.md) | :heavy_minus_sign: | N/A | | -| `permissions` | [Optional[models.ObjectPermissions]](../models/objectpermissions.md) | :heavy_minus_sign: | N/A | | -| `combined_answer_text` | [Optional[models.StructuredText]](../models/structuredtext.md) | :heavy_minus_sign: | N/A | | -| `likes` | [Optional[models.AnswerLikes]](../models/answerlikes.md) | :heavy_minus_sign: | N/A | | -| `author` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | -| `create_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The time the answer was created in ISO format (ISO 8601). | | -| `update_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The time the answer was last updated in ISO format (ISO 8601). | | -| `updated_by` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | -| `verification` | [Optional[models.Verification]](../models/verification.md) | :heavy_minus_sign: | N/A | | -| `board` | [Optional[models.AnswerBoard]](../models/answerboard.md) | :heavy_minus_sign: | N/A | | -| `collections` | List[[models.Collection](../models/collection.md)] | :heavy_minus_sign: | The collections to which the answer belongs. | | -| `document_category` | *Optional[str]* | :heavy_minus_sign: | The document's document_category(.proto). | | -| `source_document` | [Optional[models.Document]](../models/document.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | The opaque ID of the Answer. | 3 | +| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | +| `question` | *Optional[str]* | :heavy_minus_sign: | N/A | Why is the sky blue? | +| `question_variations` | List[*str*] | :heavy_minus_sign: | Additional ways of phrasing this question. | | +| `body_text` | *Optional[str]* | :heavy_minus_sign: | The plain text answer to the question. | From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. | +| ~~`board_id`~~ | *Optional[int]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Answer Boards no longer supported.

The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. | | +| `audience_filters` | List[[models.FacetFilter](../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. | | +| `added_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer added by the owner. | | +| `removed_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer removed by the owner. | | +| `roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of roles for this answer explicitly granted by an owner, editor, or admin. | | +| `source_document_spec` | [Optional[models.DocumentSpecUnion]](../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | +| `source_type` | [Optional[models.AnswerSourceType]](../models/answersourcetype.md) | :heavy_minus_sign: | N/A | | +| `permissions` | [Optional[models.ObjectPermissions]](../models/objectpermissions.md) | :heavy_minus_sign: | N/A | | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular UGC. To be used for `/feedback` reporting. | | +| `combined_answer_text` | [Optional[models.StructuredText]](../models/structuredtext.md) | :heavy_minus_sign: | N/A | | +| `likes` | [Optional[models.AnswerLikes]](../models/answerlikes.md) | :heavy_minus_sign: | N/A | | +| `author` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | +| `create_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The time the answer was created in ISO format (ISO 8601). | | +| `update_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The time the answer was last updated in ISO format (ISO 8601). | | +| `updated_by` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | +| `verification` | [Optional[models.Verification]](../models/verification.md) | :heavy_minus_sign: | N/A | | +| `collections` | List[[models.Collection](../models/collection.md)] | :heavy_minus_sign: | The collections to which the answer belongs. | | +| `document_category` | *Optional[str]* | :heavy_minus_sign: | The document's document_category(.proto). | | +| `source_document` | [Optional[models.Document]](../models/document.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/answerboard.md b/docs/models/answerboard.md deleted file mode 100644 index d14c09fb..00000000 --- a/docs/models/answerboard.md +++ /dev/null @@ -1,20 +0,0 @@ -# AnswerBoard - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -| `name` | *str* | :heavy_check_mark: | The unique name of the Collection. | | -| `description` | *str* | :heavy_check_mark: | A brief summary of the Collection's contents. | | -| `added_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of added user roles for the Collection. | | -| `removed_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of removed user roles for the Collection. | | -| `audience_filters` | List[[models.FacetFilter](../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see this Collection. Values are taken from the corresponding filters in people search. | | -| `permissions` | [Optional[models.ObjectPermissions]](../models/objectpermissions.md) | :heavy_minus_sign: | N/A | | -| `id` | *int* | :heavy_check_mark: | The unique ID of the Answer Board. | | -| `create_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | | -| `update_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | | -| `creator` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | -| `updated_by` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | -| `item_count` | *Optional[int]* | :heavy_minus_sign: | The number of items currently in the Answer Board. Separated from the actual items so we can grab the count without items. | | -| `roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the Answer Board. | | \ No newline at end of file diff --git a/docs/models/answercreationdata.md b/docs/models/answercreationdata.md index d373c0f9..d9670ace 100644 --- a/docs/models/answercreationdata.md +++ b/docs/models/answercreationdata.md @@ -3,17 +3,17 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `question` | *Optional[str]* | :heavy_minus_sign: | N/A | Why is the sky blue? | -| `question_variations` | List[*str*] | :heavy_minus_sign: | Additional ways of phrasing this question. | | -| `body_text` | *Optional[str]* | :heavy_minus_sign: | The plain text answer to the question. | From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. | -| ~~`board_id`~~ | *Optional[int]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. | | -| `audience_filters` | List[[models.FacetFilter](../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. | | -| `added_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer added by the owner. | | -| `removed_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer removed by the owner. | | -| `roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of roles for this answer explicitly granted by an owner, editor, or admin. | | -| `source_document_spec` | [Optional[models.DocumentSpecUnion]](../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | -| `source_type` | [Optional[models.AnswerCreationDataSourceType]](../models/answercreationdatasourcetype.md) | :heavy_minus_sign: | N/A | | -| `added_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections to which a document is added. | | -| `combined_answer_text` | [Optional[models.StructuredTextMutableProperties]](../models/structuredtextmutableproperties.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `question` | *Optional[str]* | :heavy_minus_sign: | N/A | Why is the sky blue? | +| `question_variations` | List[*str*] | :heavy_minus_sign: | Additional ways of phrasing this question. | | +| `body_text` | *Optional[str]* | :heavy_minus_sign: | The plain text answer to the question. | From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. | +| ~~`board_id`~~ | *Optional[int]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Answer Boards no longer supported.

The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. | | +| `audience_filters` | List[[models.FacetFilter](../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. | | +| `added_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer added by the owner. | | +| `removed_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer removed by the owner. | | +| `roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of roles for this answer explicitly granted by an owner, editor, or admin. | | +| `source_document_spec` | [Optional[models.DocumentSpecUnion]](../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | +| `source_type` | [Optional[models.AnswerCreationDataSourceType]](../models/answercreationdatasourcetype.md) | :heavy_minus_sign: | N/A | | +| `added_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections to which a document is added. | | +| `combined_answer_text` | [Optional[models.StructuredTextMutableProperties]](../models/structuredtextmutableproperties.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file 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/answerresult.md b/docs/models/answerresult.md index ef148e0a..5e2a6758 100644 --- a/docs/models/answerresult.md +++ b/docs/models/answerresult.md @@ -3,7 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -| `answer` | [models.Answer](../models/answer.md) | :heavy_check_mark: | N/A | -| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular Answer. To be used for `/feedback` reporting. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `answer` | [models.Answer](../models/answer.md) | :heavy_check_mark: | N/A | +| ~~`tracking_token`~~ | *Optional[str]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-05-07, removal scheduled for 2027-01-15: Use `answer.trackingToken` instead..

Use `answer.trackingToken` instead. | \ No newline at end of file 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/assistantactivitytype.md b/docs/models/assistantactivitytype.md deleted file mode 100644 index 9502cc83..00000000 --- a/docs/models/assistantactivitytype.md +++ /dev/null @@ -1,11 +0,0 @@ -# AssistantActivityType - - -## Values - -| Name | Value | -| ------------------- | ------------------- | -| `GLEAN_CHAT` | GLEAN_CHAT | -| `AI_SUMMARY` | AI_SUMMARY | -| `AI_ANSWER` | AI_ANSWER | -| `GLEANBOT_RESPONSE` | GLEANBOT_RESPONSE | \ No newline at end of file diff --git a/docs/models/assistantinsightsresponse.md b/docs/models/assistantinsightsresponse.md index 022c4ee4..d5cc0973 100644 --- a/docs/models/assistantinsightsresponse.md +++ b/docs/models/assistantinsightsresponse.md @@ -5,8 +5,8 @@ | Field | Type | Required | Description | | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users, in the specified departments. | -| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users, in the specified departments. | +| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users. | +| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users. | | `last_updated_ts` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp of the last update for the insights data in the response. | | `monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | | `weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | diff --git a/docs/models/authconfig.md b/docs/models/authconfig.md index 4f7c0191..e28f8770 100644 --- a/docs/models/authconfig.md +++ b/docs/models/authconfig.md @@ -5,15 +5,17 @@ Config for tool's authentication method. ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `is_on_prem` | *Optional[bool]* | :heavy_minus_sign: | Whether or not this tool is hosted on-premise. | -| `uses_central_auth` | *Optional[bool]* | :heavy_minus_sign: | Whether or not this uses central auth. | -| `type` | [Optional[models.AuthConfigType]](../models/authconfigtype.md) | :heavy_minus_sign: | 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.
'OAUTH_USER' uses individual user tokens for external API calls.
'DWD' refers to domain wide delegation.
| -| `grant_type` | [Optional[models.GrantType]](../models/granttype.md) | :heavy_minus_sign: | The type of grant type being used. | -| `status` | [Optional[models.AuthConfigStatus]](../models/authconfigstatus.md) | :heavy_minus_sign: | Auth status of the tool. | -| `client_url` | *Optional[str]* | :heavy_minus_sign: | The URL where users will be directed to start the OAuth flow. | -| `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. | -| `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 +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `is_on_prem` | *Optional[bool]* | :heavy_minus_sign: | Whether or not this tool is hosted on-premise. | +| `uses_central_auth` | *Optional[bool]* | :heavy_minus_sign: | Whether or not this uses central auth. | +| `type` | [Optional[models.AuthConfigType]](../models/authconfigtype.md) | :heavy_minus_sign: | 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.
'OAUTH_USER' uses individual user tokens for external API calls.
'DWD' refers to domain wide delegation.
| +| `grant_type` | [Optional[models.GrantType]](../models/granttype.md) | :heavy_minus_sign: | The type of grant type being used. | +| `status` | [Optional[models.AuthConfigStatus]](../models/authconfigstatus.md) | :heavy_minus_sign: | Auth status of the tool. | +| `client_url` | *Optional[str]* | :heavy_minus_sign: | The URL where users will be directed to start the OAuth flow. | +| `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. | +| `token_endpoint_auth_method` | [Optional[models.TokenEndpointAuthMethod]](../models/tokenendpointauthmethod.md) | :heavy_minus_sign: | The OAuth 2.0 token endpoint authentication method (RFC 7591). Determines how the client authenticates when exchanging an authorization code for a token. client_secret_post sends credentials as form fields, client_secret_basic sends them via Authorization header, none omits client secret and relies on PKCE only. Values use lowercase to match the OAuth 2.0 wire format (RFC 7591 Section 2). | +| `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/authorizeactionpackrequest.md b/docs/models/authorizeactionpackrequest.md new file mode 100644 index 00000000..1b8864fe --- /dev/null +++ b/docs/models/authorizeactionpackrequest.md @@ -0,0 +1,8 @@ +# AuthorizeActionPackRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `return_url` | *str* | :heavy_check_mark: | URL on the customer's domain to redirect the end user's browser back to after the third-party OAuth
callback completes. Must be present in the tenant's return URL allowlist.
| \ No newline at end of file diff --git a/docs/models/authorizeactionpackrequestrequest.md b/docs/models/authorizeactionpackrequestrequest.md new file mode 100644 index 00000000..8b8fbeb8 --- /dev/null +++ b/docs/models/authorizeactionpackrequestrequest.md @@ -0,0 +1,9 @@ +# AuthorizeActionPackRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `action_pack_id` | *str* | :heavy_check_mark: | ID of the action pack to query or authorize. | +| `authorize_action_pack_request` | [models.AuthorizeActionPackRequest](../models/authorizeactionpackrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/authorizeactionpackresponse.md b/docs/models/authorizeactionpackresponse.md new file mode 100644 index 00000000..24363138 --- /dev/null +++ b/docs/models/authorizeactionpackresponse.md @@ -0,0 +1,8 @@ +# AuthorizeActionPackResponse + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `redirect_url` | *str* | :heavy_check_mark: | URL that the customer UI should navigate the end user to in order to begin the third-party OAuth flow.
After the user consents, control returns to `returnUrl` from the request.
| \ No newline at end of file diff --git a/docs/models/authstatus.md b/docs/models/authstatus.md new file mode 100644 index 00000000..f686ee27 --- /dev/null +++ b/docs/models/authstatus.md @@ -0,0 +1,24 @@ +# AuthStatus + +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 + +| Name | Value | +| --------------- | --------------- | +| `DISABLED` | DISABLED | +| `AWAITING_AUTH` | AWAITING_AUTH | +| `AUTHORIZED` | AUTHORIZED | +| `STALE_OAUTH` | STALE_OAUTH | +| `SEG_MIGRATION` | SEG_MIGRATION | \ No newline at end of file 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/autocompleterequestrequest.md b/docs/models/autocompleterequestrequest.md new file mode 100644 index 00000000..f52bd9ee --- /dev/null +++ b/docs/models/autocompleterequestrequest.md @@ -0,0 +1,9 @@ +# AutocompleteRequestRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | | +| `autocomplete_request` | [models.AutocompleteRequest](../models/autocompleterequest.md) | :heavy_check_mark: | Autocomplete request | {
"trackingToken": "trackingToken",
"query": "what is a que",
"datasource": "GDRIVE",
"resultSize": 10
} | \ No newline at end of file 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/breakdowntype.md b/docs/models/breakdowntype.md new file mode 100644 index 00000000..dbe36727 --- /dev/null +++ b/docs/models/breakdowntype.md @@ -0,0 +1,21 @@ +# BreakdownType + +Type of breakdown to return. + +## Example Usage + +```python +from glean.api_client.models import BreakdownType + +value = BreakdownType.USERS +``` + + +## Values + +| Name | Value | +| ------------------- | ------------------- | +| `USERS` | USERS | +| `HOST_APPLICATIONS` | HOST_APPLICATIONS | +| `TOOLS` | TOOLS | +| `SERVERS` | SERVERS | \ No newline at end of file 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 eee5850d..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 @@ -13,4 +23,8 @@ Reason for failed status. | `FILE_TOO_LARGE` | FILE_TOO_LARGE | | `FILE_EXTENSION_UNSUPPORTED` | FILE_EXTENSION_UNSUPPORTED | | `FILE_METADATA_VALIDATION_FAIL` | FILE_METADATA_VALIDATION_FAIL | -| `FILE_PROCESSING_TIMED_OUT` | FILE_PROCESSING_TIMED_OUT | \ No newline at end of file +| `FILE_PROCESSING_TIMED_OUT` | FILE_PROCESSING_TIMED_OUT | +| `OAUTH_NEEDED` | OAUTH_NEEDED | +| `URL_FETCH_FAILED` | URL_FETCH_FAILED | +| `EMPTY_CONTENT` | EMPTY_CONTENT | +| `AUTH_REQUIRED` | AUTH_REQUIRED | \ No newline at end of file diff --git a/docs/models/chatfilestatus.md b/docs/models/chatfilestatus.md index ebbb1951..d531ff5b 100644 --- a/docs/models/chatfilestatus.md +++ b/docs/models/chatfilestatus.md @@ -2,12 +2,23 @@ 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 -| Name | Value | -| ------------ | ------------ | -| `PROCESSING` | PROCESSING | -| `PROCESSED` | PROCESSED | -| `FAILED` | FAILED | -| `DELETED` | DELETED | \ No newline at end of file +| Name | Value | +| --------------------- | --------------------- | +| `PROCESSING` | PROCESSING | +| `PROCESSED` | PROCESSED | +| `PARTIALLY_PROCESSED` | PARTIALLY_PROCESSED | +| `FAILED` | FAILED | +| `DELETED` | DELETED | \ No newline at end of file diff --git a/docs/models/chatmessage.md b/docs/models/chatmessage.md index 7d770c5a..7134cbbb 100644 --- a/docs/models/chatmessage.md +++ b/docs/models/chatmessage.md @@ -5,15 +5,15 @@ A message that is rendered as one coherent unit with one given sender. ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `agent_config` | [Optional[models.AgentConfig]](../models/agentconfig.md) | :heavy_minus_sign: | Describes the agent that executes the request. | -| `author` | [Optional[models.Author]](../models/author.md) | :heavy_minus_sign: | N/A | -| `citations` | List[[models.ChatMessageCitation](../models/chatmessagecitation.md)] | :heavy_minus_sign: | A list of Citations that were used to generate the response. | -| `uploaded_file_ids` | List[*str*] | :heavy_minus_sign: | IDs of files uploaded in the message that are referenced to generate the answer. | -| `fragments` | List[[models.ChatMessageFragment](../models/chatmessagefragment.md)] | :heavy_minus_sign: | A list of rich data used to represent the response or formulate a request. These are linearly stitched together to support richer data formats beyond simple text. | -| `ts` | *Optional[str]* | :heavy_minus_sign: | Response timestamp of the message. | -| `message_id` | *Optional[str]* | :heavy_minus_sign: | A unique server-side generated ID used to identify a message, automatically populated for any USER authored messages. | -| `message_tracking_token` | *Optional[str]* | :heavy_minus_sign: | Opaque tracking token generated server-side. | -| `message_type` | [Optional[models.MessageType]](../models/messagetype.md) | :heavy_minus_sign: | 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. | -| ~~`has_more_fragments`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Signals there are additional response fragments incoming. | \ No newline at end of file +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `agent_config` | [Optional[models.AgentConfig]](../models/agentconfig.md) | :heavy_minus_sign: | Describes the agent that executes the request. | +| `author` | [Optional[models.Author]](../models/author.md) | :heavy_minus_sign: | N/A | +| ~~`citations`~~ | List[[models.ChatMessageCitation](../models/chatmessagecitation.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-06, removal scheduled for 2026-10-15: Use inline citations via ChatMessageFragment.citation and ChatMessageCitation.referenceRanges instead. This field is still populated for backward compatibility..

Deprecated: Use inline citations via ChatMessageFragment.citation instead. For detailed reference information, use ChatMessageCitation.referenceRanges. This field is still populated for backward compatibility. | +| `uploaded_file_ids` | List[*str*] | :heavy_minus_sign: | IDs of files uploaded in the message that are referenced to generate the answer. | +| `fragments` | List[[models.ChatMessageFragment](../models/chatmessagefragment.md)] | :heavy_minus_sign: | A list of rich data used to represent the response or formulate a request. These are linearly stitched together to support richer data formats beyond simple text. | +| `ts` | *Optional[str]* | :heavy_minus_sign: | Response timestamp of the message. | +| `message_id` | *Optional[str]* | :heavy_minus_sign: | A unique server-side generated ID used to identify a message, automatically populated for any USER authored messages. | +| `message_tracking_token` | *Optional[str]* | :heavy_minus_sign: | Opaque tracking token generated server-side. | +| `message_type` | [Optional[models.MessageType]](../models/messagetype.md) | :heavy_minus_sign: | 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. | +| ~~`has_more_fragments`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Signals there are additional response fragments incoming. | \ No newline at end of file diff --git a/docs/models/chatmessagecitation.md b/docs/models/chatmessagecitation.md index 976651ca..842f2730 100644 --- a/docs/models/chatmessagecitation.md +++ b/docs/models/chatmessagecitation.md @@ -11,4 +11,5 @@ Information about the source for a ChatMessage. | `source_document` | [Optional[models.Document]](../models/document.md) | :heavy_minus_sign: | N/A | | | `source_file` | [Optional[models.ChatFile]](../models/chatfile.md) | :heavy_minus_sign: | Structure for file uploaded by a user for Chat. | | | `source_person` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | +| `source_custom_entity` | [Optional[models.CustomEntity]](../models/customentity.md) | :heavy_minus_sign: | N/A | | | `reference_ranges` | List[[models.ReferenceRange](../models/referencerange.md)] | :heavy_minus_sign: | Each reference range and its corresponding snippets | | \ No newline at end of file diff --git a/docs/models/chatrequestrequest.md b/docs/models/chatrequestrequest.md index 733a2720..743e1fd1 100644 --- a/docs/models/chatrequestrequest.md +++ b/docs/models/chatrequestrequest.md @@ -3,7 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `chat_request` | [models.ChatRequest](../models/chatrequest.md) | :heavy_check_mark: | Includes chat history for Glean AI to respond to. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `chat_request` | [models.ChatRequest](../models/chatrequest.md) | :heavy_check_mark: | Includes chat history for Glean AI to respond to. | \ No newline at end of file diff --git a/docs/models/chatresponse.md b/docs/models/chatresponse.md index c1e42aeb..5c844077 100644 --- a/docs/models/chatresponse.md +++ b/docs/models/chatresponse.md @@ -5,10 +5,11 @@ 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. | | \ 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. | | +| `chat` | [Optional[models.ChatMetadata]](../models/chatmetadata.md) | :heavy_minus_sign: | Metadata of a Chat a user had with Glean Assistant. This contains no actual conversational content. | | +| `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/chatsuggestion.md b/docs/models/chatsuggestion.md index 7d749127..e18aae7b 100644 --- a/docs/models/chatsuggestion.md +++ b/docs/models/chatsuggestion.md @@ -6,4 +6,6 @@ | Field | Type | Required | Description | | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | | `query` | *Optional[str]* | :heavy_minus_sign: | The actionable chat query to run when the user selects this suggestion. | -| `feature` | *Optional[str]* | :heavy_minus_sign: | Targeted Glean Chat feature for the suggestion. | \ No newline at end of file +| `cta` | *Optional[str]* | :heavy_minus_sign: | Button text to show for the suggestion action. | +| `feature` | *Optional[str]* | :heavy_minus_sign: | Targeted Glean Chat feature for the suggestion. | +| `source_document_ids` | List[*str*] | :heavy_minus_sign: | Document IDs that grounded the suggestion. | \ No newline at end of file diff --git a/docs/models/checkdatasourceauthresponse.md b/docs/models/checkdatasourceauthresponse.md new file mode 100644 index 00000000..be60699c --- /dev/null +++ b/docs/models/checkdatasourceauthresponse.md @@ -0,0 +1,8 @@ +# CheckDatasourceAuthResponse + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `unauthorized_datasource_instances` | List[[models.UnauthorizedDatasourceInstance](../models/unauthorizeddatasourceinstance.md)] | :heavy_check_mark: | Datasource instances that require per-user OAuth authorization. Empty when all datasources are authorized.
| \ 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/collection.md b/docs/models/collection.md index f5984328..e029a031 100644 --- a/docs/models/collection.md +++ b/docs/models/collection.md @@ -16,6 +16,7 @@ | `thumbnail` | [Optional[models.Thumbnail]](../models/thumbnail.md) | :heavy_minus_sign: | N/A | | | `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource type this Collection can hold. | | | `permissions` | [Optional[models.ObjectPermissions]](../models/objectpermissions.md) | :heavy_minus_sign: | N/A | | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular UGC. To be used for `/feedback` reporting. | | | `id` | *int* | :heavy_check_mark: | The unique ID of the Collection. | | | `create_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | | | `update_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | | diff --git a/docs/models/collectionerrorerrorcode.md b/docs/models/collectionerrorerrorcode.md index 7903ee61..2aedaf4a 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 @@ -11,4 +21,5 @@ | `CONCURRENT_HIERARCHY_EDIT` | CONCURRENT_HIERARCHY_EDIT | | `HEIGHT_VIOLATION` | HEIGHT_VIOLATION | | `WIDTH_VIOLATION` | WIDTH_VIOLATION | -| `NO_PERMISSIONS` | NO_PERMISSIONS | \ No newline at end of file +| `NO_PERMISSIONS` | NO_PERMISSIONS | +| `CORRUPT_ITEM` | CORRUPT_ITEM | \ No newline at end of file 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/contentinsightsresponse.md b/docs/models/contentinsightsresponse.md deleted file mode 100644 index 54d206ac..00000000 --- a/docs/models/contentinsightsresponse.md +++ /dev/null @@ -1,12 +0,0 @@ -# ContentInsightsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `last_log_timestamp` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). | -| `document_insights` | List[[models.DocumentInsight](../models/documentinsight.md)] | :heavy_minus_sign: | Insights for documents. | -| `departments` | List[*str*] | :heavy_minus_sign: | list of departments applicable for contents tab. | -| `min_department_size_threshold` | *Optional[int]* | :heavy_minus_sign: | Min threshold in size of departments while populating results, otherwise 0. | -| `min_visitor_threshold` | *Optional[int]* | :heavy_minus_sign: | Minimum number of visitors to a document required to be included in insights. | \ No newline at end of file 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/createannouncementrequestrequest.md b/docs/models/createannouncementrequestrequest.md new file mode 100644 index 00000000..69fa43dd --- /dev/null +++ b/docs/models/createannouncementrequestrequest.md @@ -0,0 +1,9 @@ +# CreateannouncementRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `create_announcement_request` | [models.CreateAnnouncementRequest](../models/createannouncementrequest.md) | :heavy_check_mark: | Announcement content | \ No newline at end of file diff --git a/docs/models/createanswerrequestrequest.md b/docs/models/createanswerrequestrequest.md new file mode 100644 index 00000000..297b5967 --- /dev/null +++ b/docs/models/createanswerrequestrequest.md @@ -0,0 +1,9 @@ +# CreateanswerRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `create_answer_request` | [models.CreateAnswerRequest](../models/createanswerrequest.md) | :heavy_check_mark: | CreateAnswer request | \ No newline at end of file diff --git a/docs/models/createcollectionrequestrequest.md b/docs/models/createcollectionrequestrequest.md new file mode 100644 index 00000000..7eaa07b6 --- /dev/null +++ b/docs/models/createcollectionrequestrequest.md @@ -0,0 +1,9 @@ +# CreatecollectionRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `create_collection_request` | [models.CreateCollectionRequest](../models/createcollectionrequest.md) | :heavy_check_mark: | Collection content plus any additional metadata for the request. | \ No newline at end of file diff --git a/docs/models/createshortcutrequestrequest.md b/docs/models/createshortcutrequestrequest.md new file mode 100644 index 00000000..558b5abf --- /dev/null +++ b/docs/models/createshortcutrequestrequest.md @@ -0,0 +1,9 @@ +# CreateshortcutRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `create_shortcut_request` | [models.CreateShortcutRequest](../models/createshortcutrequest.md) | :heavy_check_mark: | CreateShortcut request | \ No newline at end of file diff --git a/docs/models/currentactiveusers.md b/docs/models/currentactiveusers.md index 3852b41c..f5cb3add 100644 --- a/docs/models/currentactiveusers.md +++ b/docs/models/currentactiveusers.md @@ -3,7 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | -| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users, in the specified departments. | -| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users, in the specified departments. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------- | --------------------------------------- | --------------------------------------- | --------------------------------------- | +| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users. | +| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users. | \ No newline at end of file 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/custommetadatapropertydefinition.md b/docs/models/custommetadatapropertydefinition.md new file mode 100644 index 00000000..302418b2 --- /dev/null +++ b/docs/models/custommetadatapropertydefinition.md @@ -0,0 +1,12 @@ +# CustomMetadataPropertyDefinition + +The definition for a key within a Custom Metadata schema. Only the fields applicable to Custom Metadata are exposed. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `name` | *str* | :heavy_check_mark: | The name of the metadata key. | +| `property_type` | [models.CustomMetadataPropertyDefinitionPropertyType](../models/custommetadatapropertydefinitionpropertytype.md) | :heavy_check_mark: | The type of metadata key. This governs the search and faceting behavior. | +| `skip_indexing` | *Optional[bool]* | :heavy_minus_sign: | If true then the property will not be indexed for retrieval and ranking. | \ No newline at end of file diff --git a/docs/models/custommetadatapropertydefinitionpropertytype.md b/docs/models/custommetadatapropertydefinitionpropertytype.md new file mode 100644 index 00000000..39018720 --- /dev/null +++ b/docs/models/custommetadatapropertydefinitionpropertytype.md @@ -0,0 +1,23 @@ +# CustomMetadataPropertyDefinitionPropertyType + +The type of metadata key. This governs the search and faceting behavior. + +## Example Usage + +```python +from glean.api_client.models import CustomMetadataPropertyDefinitionPropertyType + +value = CustomMetadataPropertyDefinitionPropertyType.TEXT + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| --------------- | --------------- | +| `TEXT` | TEXT | +| `PICKLIST` | PICKLIST | +| `TEXTLIST` | TEXTLIST | +| `MULTIPICKLIST` | MULTIPICKLIST | \ No newline at end of file diff --git a/docs/models/custommetadataputrequest.md b/docs/models/custommetadataputrequest.md new file mode 100644 index 00000000..cce52d05 --- /dev/null +++ b/docs/models/custommetadataputrequest.md @@ -0,0 +1,10 @@ +# CustomMetadataPutRequest + +Request body for adding or updating custom metadata on a document + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `custom_metadata` | List[[models.CustomProperty](../models/customproperty.md)] | :heavy_check_mark: | Array of custom metadata key-value pairs | \ No newline at end of file diff --git a/docs/models/custommetadataschema.md b/docs/models/custommetadataschema.md new file mode 100644 index 00000000..0795bcb5 --- /dev/null +++ b/docs/models/custommetadataschema.md @@ -0,0 +1,10 @@ +# CustomMetadataSchema + +Schema for custom metadata containing metadata key definitions + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `metadata_keys` | List[[models.CustomMetadataPropertyDefinition](../models/custommetadatapropertydefinition.md)] | :heavy_check_mark: | Array of metadata key definitions | \ No newline at end of file diff --git a/docs/models/customproperty.md b/docs/models/customproperty.md index 3b363fbe..415897d4 100644 --- a/docs/models/customproperty.md +++ b/docs/models/customproperty.md @@ -5,7 +5,7 @@ Describes the custom properties of the object. ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `value` | *Optional[Any]* | :heavy_minus_sign: | Must either be a string or an array of strings. An integer, boolean, etc. is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `value` | *Optional[Any]* | :heavy_minus_sign: | Must be a string, a number (for INT properties), or an array of strings. A boolean is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this. | \ No newline at end of file diff --git a/docs/models/customsensitiveexpression.md b/docs/models/customsensitiveexpression.md new file mode 100644 index 00000000..2ec75dcd --- /dev/null +++ b/docs/models/customsensitiveexpression.md @@ -0,0 +1,10 @@ +# CustomSensitiveExpression + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `id` | *Optional[str]* | :heavy_minus_sign: | Identifier for the custom sensitive expression. | +| `keyword` | [Optional[models.CustomSensitiveRule]](../models/customsensitiverule.md) | :heavy_minus_sign: | N/A | +| `evaluation_expression` | *Optional[str]* | :heavy_minus_sign: | The expression to evaluate the keyword match. | \ No newline at end of file diff --git a/docs/models/customsensitiverule.md b/docs/models/customsensitiverule.md new file mode 100644 index 00000000..04ae799b --- /dev/null +++ b/docs/models/customsensitiverule.md @@ -0,0 +1,11 @@ +# CustomSensitiveRule + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | Identifier for the custom sensitive expression. | +| `value` | *Optional[str]* | :heavy_minus_sign: | The value of the custom sensitive rule. For REGEX type, this is the regex pattern; for TERM type, it is the term to match; and for INFO_TYPE type, it refers to predefined categories of sensitive content. See https://cloud.google.com/dlp/docs/infotypes-reference for available options. | +| `type` | [Optional[models.CustomSensitiveRuleType]](../models/customsensitiveruletype.md) | :heavy_minus_sign: | Type of the custom sensitive rule. | +| `likelihood_threshold` | [Optional[models.CustomSensitiveRuleLikelihoodThreshold]](../models/customsensitiverulelikelihoodthreshold.md) | :heavy_minus_sign: | Likelihood threshold for BUILT_IN infotypes (e.g., LIKELY, VERY_LIKELY). Only applicable for BUILT_IN type. | \ No newline at end of file diff --git a/docs/models/customsensitiverulelikelihoodthreshold.md b/docs/models/customsensitiverulelikelihoodthreshold.md new file mode 100644 index 00000000..fae76418 --- /dev/null +++ b/docs/models/customsensitiverulelikelihoodthreshold.md @@ -0,0 +1,24 @@ +# CustomSensitiveRuleLikelihoodThreshold + +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 + +| Name | Value | +| --------------- | --------------- | +| `LIKELY` | LIKELY | +| `VERY_LIKELY` | VERY_LIKELY | +| `POSSIBLE` | POSSIBLE | +| `UNLIKELY` | UNLIKELY | +| `VERY_UNLIKELY` | VERY_UNLIKELY | \ No newline at end of file diff --git a/docs/models/customsensitiveruletype.md b/docs/models/customsensitiveruletype.md new file mode 100644 index 00000000..6961690d --- /dev/null +++ b/docs/models/customsensitiveruletype.md @@ -0,0 +1,22 @@ +# CustomSensitiveRuleType + +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 + +| Name | Value | +| ----------- | ----------- | +| `REGEX` | REGEX | +| `TERM` | TERM | +| `INFO_TYPE` | INFO_TYPE | \ No newline at end of file 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/insightsagentsrequestoptions.md b/docs/models/datasourceconfigurationresponse.md similarity index 58% rename from docs/models/insightsagentsrequestoptions.md rename to docs/models/datasourceconfigurationresponse.md index 98c92da5..ba3be132 100644 --- a/docs/models/insightsagentsrequestoptions.md +++ b/docs/models/datasourceconfigurationresponse.md @@ -1,8 +1,11 @@ -# InsightsAgentsRequestOptions +# 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 | | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `agent_ids` | List[*str*] | :heavy_minus_sign: | IDs of the Agents for which Insights should be returned. An empty array signifies all. | \ No newline at end of file +| `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/datasourcecredentialstatus.md b/docs/models/datasourcecredentialstatus.md new file mode 100644 index 00000000..546c77b9 --- /dev/null +++ b/docs/models/datasourcecredentialstatus.md @@ -0,0 +1,25 @@ +# DatasourceCredentialStatus + +Lifecycle state of the credentials installed for a datasource instance. Mirrors the internal admin Status enum so the handler can surface the same health signals already tracked today. EXPIRING_SOON is represented as VALID_WITH_WARNINGS (with detail in `message`); EXPIRED is surfaced as INVALID plus a non-null `expiresAt` in the past. + + +## Example Usage + +```python +from glean.api_client.models import DatasourceCredentialStatus + +value = DatasourceCredentialStatus.VALID + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| --------------------- | --------------------- | +| `VALID` | VALID | +| `VALID_WITH_WARNINGS` | VALID_WITH_WARNINGS | +| `VALIDATING` | VALIDATING | +| `INVALID` | INVALID | +| `MISSING` | MISSING | \ No newline at end of file diff --git a/docs/models/datasourcecredentialstatusresponse.md b/docs/models/datasourcecredentialstatusresponse.md new file mode 100644 index 00000000..29641fd5 --- /dev/null +++ b/docs/models/datasourcecredentialstatusresponse.md @@ -0,0 +1,13 @@ +# DatasourceCredentialStatusResponse + +Status of the credentials currently installed for a datasource instance. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `status` | [models.DatasourceCredentialStatus](../models/datasourcecredentialstatus.md) | :heavy_check_mark: | Lifecycle state of the credentials installed for a datasource instance. Mirrors the internal admin Status enum so the handler can surface the same health signals already tracked today. EXPIRING_SOON is represented as VALID_WITH_WARNINGS (with detail in `message`); EXPIRED is surfaced as INVALID plus a non-null `expiresAt` in the past.
| +| `last_rotated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | When the credentials were last rotated. Omitted when not known. | +| `expires_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | When the active credentials expire. Omitted when not known or not applicable to this credential type.
| +| `message` | *Optional[str]* | :heavy_minus_sign: | Optional human-readable detail about the current credential status. | \ 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/debugdocumentlifecyclerequest.md b/docs/models/debugdocumentlifecyclerequest.md new file mode 100644 index 00000000..f17f8e7e --- /dev/null +++ b/docs/models/debugdocumentlifecyclerequest.md @@ -0,0 +1,13 @@ +# DebugDocumentLifecycleRequest + +Describes the request body of the /debug/{datasource}/document/events API call. + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `object_type` | *str* | :heavy_check_mark: | Object type of the document to get lifecycle events for. | Article | +| `doc_id` | *str* | :heavy_check_mark: | Glean Document ID within the datasource to get lifecycle events for. | art123 | +| `start_date` | *Optional[str]* | :heavy_minus_sign: | The start date for events to be fetched. Cannot be more than 30 days (default 7 days) in the past. | 2025-05-01 | +| `max_events` | *Optional[int]* | :heavy_minus_sign: | Max number of events to be fetched. Cannot be more than 100 (default 20). | 50 | \ No newline at end of file diff --git a/docs/models/debugdocumentlifecycleresponse.md b/docs/models/debugdocumentlifecycleresponse.md new file mode 100644 index 00000000..401d2b6c --- /dev/null +++ b/docs/models/debugdocumentlifecycleresponse.md @@ -0,0 +1,10 @@ +# DebugDocumentLifecycleResponse + +Describes the response body of the /debug/{datasource}/document/events API call + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `life_cycle_events` | List[[models.LifeCycleEvent](../models/lifecycleevent.md)] | :heavy_minus_sign: | List of lifecycle events corresponding to the document | \ No newline at end of file diff --git a/docs/models/deleteallchatsrequest.md b/docs/models/deleteallchatsrequest.md index f98987ba..01ac00c0 100644 --- a/docs/models/deleteallchatsrequest.md +++ b/docs/models/deleteallchatsrequest.md @@ -3,6 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | \ No newline at end of file diff --git a/docs/models/deleteannouncementrequestrequest.md b/docs/models/deleteannouncementrequestrequest.md new file mode 100644 index 00000000..689b1e04 --- /dev/null +++ b/docs/models/deleteannouncementrequestrequest.md @@ -0,0 +1,9 @@ +# DeleteannouncementRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `delete_announcement_request` | [models.DeleteAnnouncementRequest](../models/deleteannouncementrequest.md) | :heavy_check_mark: | Delete announcement request | \ No newline at end of file diff --git a/docs/models/deleteanswerrequestrequest.md b/docs/models/deleteanswerrequestrequest.md new file mode 100644 index 00000000..05520c6f --- /dev/null +++ b/docs/models/deleteanswerrequestrequest.md @@ -0,0 +1,9 @@ +# DeleteanswerRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `delete_answer_request` | [models.DeleteAnswerRequest](../models/deleteanswerrequest.md) | :heavy_check_mark: | DeleteAnswer request | \ No newline at end of file diff --git a/docs/models/deletechatfilesrequestrequest.md b/docs/models/deletechatfilesrequestrequest.md index 4c37d7ca..4aa1d9f2 100644 --- a/docs/models/deletechatfilesrequestrequest.md +++ b/docs/models/deletechatfilesrequestrequest.md @@ -3,7 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `delete_chat_files_request` | [models.DeleteChatFilesRequest](../models/deletechatfilesrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `delete_chat_files_request` | [models.DeleteChatFilesRequest](../models/deletechatfilesrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/deletechatsrequestrequest.md b/docs/models/deletechatsrequestrequest.md index 24814ad3..9f0ae5c5 100644 --- a/docs/models/deletechatsrequestrequest.md +++ b/docs/models/deletechatsrequestrequest.md @@ -3,7 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `delete_chats_request` | [models.DeleteChatsRequest](../models/deletechatsrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `delete_chats_request` | [models.DeleteChatsRequest](../models/deletechatsrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/deletecollectionitemrequestrequest.md b/docs/models/deletecollectionitemrequestrequest.md new file mode 100644 index 00000000..3c1c904e --- /dev/null +++ b/docs/models/deletecollectionitemrequestrequest.md @@ -0,0 +1,9 @@ +# DeletecollectionitemRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `delete_collection_item_request` | [models.DeleteCollectionItemRequest](../models/deletecollectionitemrequest.md) | :heavy_check_mark: | Data describing the delete operation. | \ No newline at end of file diff --git a/docs/models/deletecollectionrequestrequest.md b/docs/models/deletecollectionrequestrequest.md new file mode 100644 index 00000000..b7767151 --- /dev/null +++ b/docs/models/deletecollectionrequestrequest.md @@ -0,0 +1,9 @@ +# DeletecollectionRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `delete_collection_request` | [models.DeleteCollectionRequest](../models/deletecollectionrequest.md) | :heavy_check_mark: | DeleteCollection request | \ No newline at end of file diff --git a/docs/models/deletefindingsexportrequest.md b/docs/models/deletefindingsexportrequest.md new file mode 100644 index 00000000..29ba755b --- /dev/null +++ b/docs/models/deletefindingsexportrequest.md @@ -0,0 +1,8 @@ +# DeletefindingsexportRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | +| `id` | *int* | :heavy_check_mark: | The ID of the export to delete. | \ No newline at end of file diff --git a/docs/models/deleterestapiindexcustommetadataschemagroupnamerequest.md b/docs/models/deleterestapiindexcustommetadataschemagroupnamerequest.md new file mode 100644 index 00000000..fc0cdd0a --- /dev/null +++ b/docs/models/deleterestapiindexcustommetadataschemagroupnamerequest.md @@ -0,0 +1,8 @@ +# DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group schema | \ No newline at end of file diff --git a/docs/models/deleterestapiindexdocumentdocidcustommetadatagroupnamerequest.md b/docs/models/deleterestapiindexdocumentdocidcustommetadatagroupnamerequest.md new file mode 100644 index 00000000..2214e13e --- /dev/null +++ b/docs/models/deleterestapiindexdocumentdocidcustommetadatagroupnamerequest.md @@ -0,0 +1,9 @@ +# DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `doc_id` | *str* | :heavy_check_mark: | Unique Glean identifier of the document | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group as specified while adding schema | \ No newline at end of file diff --git a/docs/models/deleteshortcutrequestrequest.md b/docs/models/deleteshortcutrequestrequest.md new file mode 100644 index 00000000..8c355d07 --- /dev/null +++ b/docs/models/deleteshortcutrequestrequest.md @@ -0,0 +1,9 @@ +# DeleteshortcutRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `delete_shortcut_request` | [models.DeleteShortcutRequest](../models/deleteshortcutrequest.md) | :heavy_check_mark: | DeleteShortcut request | \ No newline at end of file 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/dlpconfig.md b/docs/models/dlpconfig.md index 1aeca220..eec4bb28 100644 --- a/docs/models/dlpconfig.md +++ b/docs/models/dlpconfig.md @@ -5,18 +5,18 @@ Detailed configuration of what documents and sensitive content will be scanned. ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `version` | *Optional[int]* | :heavy_minus_sign: | Synonymous with report/policy id. | -| ~~`sensitive_info_types`~~ | List[[models.SensitiveInfoType](../models/sensitiveinfotype.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

DEPRECATED - use `sensitiveContentOptions` instead. | -| `input_options` | [Optional[models.InputOptions]](../models/inputoptions.md) | :heavy_minus_sign: | Controls which data-sources and what time-range to include in scans. | -| ~~`external_sharing_options`~~ | [Optional[models.ExternalSharingOptions]](../models/externalsharingoptions.md) | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible. | -| `broad_sharing_options` | [Optional[models.SharingOptions]](../models/sharingoptions.md) | :heavy_minus_sign: | Controls how "shared" a document must be to get picked for scans. | -| `sensitive_content_options` | [Optional[models.SensitiveContentOptions]](../models/sensitivecontentoptions.md) | :heavy_minus_sign: | Options for defining sensitive content within scanned documents. | -| `report_name` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `frequency` | *Optional[str]* | :heavy_minus_sign: | Interval between scans. | -| `created_by` | [Optional[models.DlpPerson]](../models/dlpperson.md) | :heavy_minus_sign: | Details about the person who created this report/policy. | -| `created_at` | *Optional[str]* | :heavy_minus_sign: | Timestamp at which this configuration was created. | -| `redact_quote` | *Optional[bool]* | :heavy_minus_sign: | redact quote in findings of the report | -| `auto_hide_docs` | *Optional[bool]* | :heavy_minus_sign: | auto hide documents with findings in the report | -| `allowlist_options` | [Optional[models.AllowlistOptions]](../models/allowlistoptions.md) | :heavy_minus_sign: | Terms that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term in the allow-list, it will not be counted as a violation. | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `version` | *Optional[int]* | :heavy_minus_sign: | Synonymous with report/policy id. | +| ~~`sensitive_info_types`~~ | List[[models.SensitiveInfoType](../models/sensitiveinfotype.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use sensitiveContentOptions instead.

DEPRECATED - use `sensitiveContentOptions` instead. | +| `input_options` | [Optional[models.InputOptions]](../models/inputoptions.md) | :heavy_minus_sign: | Controls which data-sources and what time-range to include in scans. | +| ~~`external_sharing_options`~~ | [Optional[models.ExternalSharingOptions]](../models/externalsharingoptions.md) | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use broadSharingOptions instead. | +| `broad_sharing_options` | [Optional[models.SharingOptions]](../models/sharingoptions.md) | :heavy_minus_sign: | Controls how "shared" a document must be to get picked for scans. | +| `sensitive_content_options` | [Optional[models.SensitiveContentOptions]](../models/sensitivecontentoptions.md) | :heavy_minus_sign: | Options for defining sensitive content within scanned documents. | +| `report_name` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `frequency` | *Optional[str]* | :heavy_minus_sign: | Interval between scans. | +| `created_by` | [Optional[models.DlpPerson]](../models/dlpperson.md) | :heavy_minus_sign: | Details about the person who created this report/policy. | +| `created_at` | *Optional[str]* | :heavy_minus_sign: | Timestamp at which this configuration was created. | +| `redact_quote` | *Optional[bool]* | :heavy_minus_sign: | redact quote in findings of the report | +| `auto_hide_docs` | *Optional[bool]* | :heavy_minus_sign: | auto hide documents with findings in the report | +| `allowlist_options` | [Optional[models.AllowlistOptions]](../models/allowlistoptions.md) | :heavy_minus_sign: | Terms that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term in the allow-list, it will not be counted as a violation. | \ No newline at end of file diff --git a/docs/models/dlpexportfindingsrequest.md b/docs/models/dlpexportfindingsrequest.md new file mode 100644 index 00000000..3b8f7ff6 --- /dev/null +++ b/docs/models/dlpexportfindingsrequest.md @@ -0,0 +1,13 @@ +# DlpExportFindingsRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `export_type` | [Optional[models.DlpExportFindingsRequestExportType]](../models/dlpexportfindingsrequestexporttype.md) | :heavy_minus_sign: | The type of export to perform | +| `filter_` | [Optional[models.DlpFindingFilter]](../models/dlpfindingfilter.md) | :heavy_minus_sign: | N/A | +| `issue_filter` | [Optional[models.DlpIssueFilter]](../models/dlpissuefilter.md) | :heavy_minus_sign: | Filter for DLP issues. Includes document-level filters and issue-specific filters. | +| `file_name` | *Optional[str]* | :heavy_minus_sign: | The name of the file to export the findings to | +| `field_scope` | [Optional[models.FieldScope]](../models/fieldscope.md) | :heavy_minus_sign: | Controls which fields to include in the export | +| `fields_to_exclude` | List[*str*] | :heavy_minus_sign: | List of field names to exclude from the export | \ No newline at end of file diff --git a/docs/models/dlpexportfindingsrequestexporttype.md b/docs/models/dlpexportfindingsrequestexporttype.md new file mode 100644 index 00000000..7e9aee47 --- /dev/null +++ b/docs/models/dlpexportfindingsrequestexporttype.md @@ -0,0 +1,20 @@ +# DlpExportFindingsRequestExportType + +The type of export to perform + +## Example Usage + +```python +from glean.api_client.models import DlpExportFindingsRequestExportType + +value = DlpExportFindingsRequestExportType.FINDINGS +``` + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `FINDINGS` | FINDINGS | +| `DOCUMENTS` | DOCUMENTS | +| `ISSUES` | ISSUES | \ No newline at end of file diff --git a/docs/models/dlpfindingfilter.md b/docs/models/dlpfindingfilter.md new file mode 100644 index 00000000..24d1a901 --- /dev/null +++ b/docs/models/dlpfindingfilter.md @@ -0,0 +1,18 @@ +# DlpFindingFilter + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `info_type` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `regex_id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `report_id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `datasource` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `visibility` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `document_ids` | List[*str*] | :heavy_minus_sign: | N/A | +| `severity` | [Optional[models.DlpSeverity]](../models/dlpseverity.md) | :heavy_minus_sign: | Severity levels for DLP findings and analyses. | +| `document_severity` | List[[models.DlpSeverity](../models/dlpseverity.md)] | :heavy_minus_sign: | N/A | +| `statuses` | List[[models.DlpIssueStatus](../models/dlpissuestatus.md)] | :heavy_minus_sign: | N/A | +| `time_range` | [Optional[models.TimeRangeFilter]](../models/timerangefilter.md) | :heavy_minus_sign: | N/A | +| `archived` | *Optional[bool]* | :heavy_minus_sign: | N/A | \ No newline at end of file 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/dlpissuefilter.md b/docs/models/dlpissuefilter.md new file mode 100644 index 00000000..9769c134 --- /dev/null +++ b/docs/models/dlpissuefilter.md @@ -0,0 +1,20 @@ +# DlpIssueFilter + +Filter for DLP issues. Includes document-level filters and issue-specific filters. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `search_text` | *Optional[str]* | :heavy_minus_sign: | Text to search for in issue fields. | +| `statuses` | List[[models.DlpIssueStatus](../models/dlpissuestatus.md)] | :heavy_minus_sign: | Filter by one or more issue statuses. | +| `assignee_id` | *Optional[str]* | :heavy_minus_sign: | Filter by assignee user ID. | +| `info_type` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `regex_id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `report_ids` | List[*str*] | :heavy_minus_sign: | Filter by one or more report/policy IDs. | +| `doc_id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `datasource` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `visibility` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `severities` | List[[models.DlpSeverity](../models/dlpseverity.md)] | :heavy_minus_sign: | Filter by one or more severity levels. | +| `time_range` | [Optional[models.TimeRangeFilter]](../models/timerangefilter.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/dlpissuestatus.md b/docs/models/dlpissuestatus.md new file mode 100644 index 00000000..26c2139d --- /dev/null +++ b/docs/models/dlpissuestatus.md @@ -0,0 +1,23 @@ +# DlpIssueStatus + +Status of a DLP issue. + +## Example Usage + +```python +from glean.api_client.models import DlpIssueStatus + +value = DlpIssueStatus.OPEN + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ------------- | ------------- | +| `OPEN` | OPEN | +| `CLOSED` | CLOSED | +| `IN_PROGRESS` | IN_PROGRESS | +| `RESOLVED` | RESOLVED | \ No newline at end of file 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 new file mode 100644 index 00000000..4083ea25 --- /dev/null +++ b/docs/models/dlpseverity.md @@ -0,0 +1,23 @@ +# DlpSeverity + +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 + +| Name | Value | +| ------------- | ------------- | +| `UNSPECIFIED` | UNSPECIFIED | +| `LOW` | LOW | +| `MEDIUM` | MEDIUM | +| `HIGH` | HIGH | \ No newline at end of file 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/documentdefinition.md b/docs/models/documentdefinition.md index 497f8be3..c1c884b1 100644 --- a/docs/models/documentdefinition.md +++ b/docs/models/documentdefinition.md @@ -28,5 +28,6 @@ Indexable document structure | `interactions` | [Optional[models.DocumentInteractionsDefinition]](../models/documentinteractionsdefinition.md) | :heavy_minus_sign: | describes the interactions on the document | | `status` | *Optional[str]* | :heavy_minus_sign: | N/A | | `additional_urls` | List[*str*] | :heavy_minus_sign: | Additional variations of the URL that this document points to. | +| `native_app_url` | *Optional[str]* | :heavy_minus_sign: | A deep link, if available, into the datasource's native application for the user's platform (e.g. slack://channel/message). | | `comments` | List[[models.CommentDefinition](../models/commentdefinition.md)] | :heavy_minus_sign: | Comments associated with the document. | | `custom_properties` | List[[models.CustomProperty](../models/customproperty.md)] | :heavy_minus_sign: | Additional metadata properties of the document. These can surface as [facets and operators](https://developers.glean.com/indexing/datasource/custom-properties/operators_and_facets). | \ No newline at end of file diff --git a/docs/models/documentinsight.md b/docs/models/documentinsight.md deleted file mode 100644 index 278e30df..00000000 --- a/docs/models/documentinsight.md +++ /dev/null @@ -1,10 +0,0 @@ -# DocumentInsight - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | -| `document` | [models.Document](../models/document.md) | :heavy_check_mark: | N/A | -| `view_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | -| `visitor_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/documentinteractions.md b/docs/models/documentinteractions.md index 42713431..6c5eb1a1 100644 --- a/docs/models/documentinteractions.md +++ b/docs/models/documentinteractions.md @@ -3,11 +3,11 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `num_comments` | *Optional[int]* | :heavy_minus_sign: | The count of comments (thread replies in the case of slack). | -| `num_reactions` | *Optional[int]* | :heavy_minus_sign: | The count of reactions on the document. | -| ~~`reactions`~~ | List[*str*] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

To be deprecated in favor of reacts. A (potentially non-exhaustive) list of reactions for the document. | -| `reacts` | List[[models.Reaction](../models/reaction.md)] | :heavy_minus_sign: | N/A | -| `shares` | List[[models.Share](../models/share.md)] | :heavy_minus_sign: | Describes instances of someone posting a link to this document in one of our indexed datasources. | -| `visitor_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `num_comments` | *Optional[int]* | :heavy_minus_sign: | The count of comments (thread replies in the case of slack). | +| `num_reactions` | *Optional[int]* | :heavy_minus_sign: | The count of reactions on the document. | +| ~~`reactions`~~ | List[*str*] | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use reacts instead.

To be deprecated in favor of reacts. A (potentially non-exhaustive) list of reactions for the document. | +| `reacts` | List[[models.Reaction](../models/reaction.md)] | :heavy_minus_sign: | N/A | +| `shares` | List[[models.Share](../models/share.md)] | :heavy_minus_sign: | Describes instances of someone posting a link to this document in one of our indexed datasources. | +| `visitor_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | \ No newline at end of file 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..fea16d9d 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 @@ -9,6 +19,7 @@ The type of the user generated content (UGC datasource). | --------------- | --------------- | | `ANNOUNCEMENTS` | ANNOUNCEMENTS | | `ANSWERS` | ANSWERS | +| `ARTIFACTS` | ARTIFACTS | | `COLLECTIONS` | COLLECTIONS | | `SHORTCUTS` | SHORTCUTS | | `CHATS` | CHATS | \ No newline at end of file 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/downloadfindingsexportrequest.md b/docs/models/downloadfindingsexportrequest.md new file mode 100644 index 00000000..b8b85477 --- /dev/null +++ b/docs/models/downloadfindingsexportrequest.md @@ -0,0 +1,8 @@ +# DownloadfindingsexportRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | +| `id` | *str* | :heavy_check_mark: | The ID of the export to download. | \ No newline at end of file diff --git a/docs/models/editagentrequest.md b/docs/models/editagentrequest.md new file mode 100644 index 00000000..41e6d8ed --- /dev/null +++ b/docs/models/editagentrequest.md @@ -0,0 +1,11 @@ +# EditAgentRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | +| `edit_workflow_request` | [models.EditWorkflowRequest](../models/editworkflowrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/editanswerrequest.md b/docs/models/editanswerrequest.md index 36f51e20..3b3680d3 100644 --- a/docs/models/editanswerrequest.md +++ b/docs/models/editanswerrequest.md @@ -3,20 +3,20 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The opaque ID of the Answer. | 3 | -| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | -| `question` | *Optional[str]* | :heavy_minus_sign: | N/A | Why is the sky blue? | -| `question_variations` | List[*str*] | :heavy_minus_sign: | Additional ways of phrasing this question. | | -| `body_text` | *Optional[str]* | :heavy_minus_sign: | The plain text answer to the question. | From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. | -| ~~`board_id`~~ | *Optional[int]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. | | -| `audience_filters` | List[[models.FacetFilter](../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. | | -| `added_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer added by the owner. | | -| `removed_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer removed by the owner. | | -| `roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of roles for this answer explicitly granted by an owner, editor, or admin. | | -| `source_document_spec` | [Optional[models.DocumentSpecUnion]](../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | -| `source_type` | [Optional[models.EditAnswerRequestSourceType]](../models/editanswerrequestsourcetype.md) | :heavy_minus_sign: | N/A | | -| `added_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections to which a document is added. | | -| `removed_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections from which a document is removed. | | -| `combined_answer_text` | [Optional[models.StructuredTextMutableProperties]](../models/structuredtextmutableproperties.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | The opaque ID of the Answer. | 3 | +| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | +| `question` | *Optional[str]* | :heavy_minus_sign: | N/A | Why is the sky blue? | +| `question_variations` | List[*str*] | :heavy_minus_sign: | Additional ways of phrasing this question. | | +| `body_text` | *Optional[str]* | :heavy_minus_sign: | The plain text answer to the question. | From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. | +| ~~`board_id`~~ | *Optional[int]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Answer Boards no longer supported.

The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. | | +| `audience_filters` | List[[models.FacetFilter](../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. | | +| `added_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer added by the owner. | | +| `removed_roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer removed by the owner. | | +| `roles` | List[[models.UserRoleSpecification](../models/userrolespecification.md)] | :heavy_minus_sign: | A list of roles for this answer explicitly granted by an owner, editor, or admin. | | +| `source_document_spec` | [Optional[models.DocumentSpecUnion]](../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | +| `source_type` | [Optional[models.EditAnswerRequestSourceType]](../models/editanswerrequestsourcetype.md) | :heavy_minus_sign: | N/A | | +| `added_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections to which a document is added. | | +| `removed_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections from which a document is removed. | | +| `combined_answer_text` | [Optional[models.StructuredTextMutableProperties]](../models/structuredtextmutableproperties.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/editanswerrequestrequest.md b/docs/models/editanswerrequestrequest.md new file mode 100644 index 00000000..07d1c826 --- /dev/null +++ b/docs/models/editanswerrequestrequest.md @@ -0,0 +1,9 @@ +# EditanswerRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `edit_answer_request` | [models.EditAnswerRequest](../models/editanswerrequest.md) | :heavy_check_mark: | EditAnswer request | \ No newline at end of file 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/editcollectionitemrequestrequest.md b/docs/models/editcollectionitemrequestrequest.md new file mode 100644 index 00000000..a43167ab --- /dev/null +++ b/docs/models/editcollectionitemrequestrequest.md @@ -0,0 +1,9 @@ +# EditcollectionitemRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `edit_collection_item_request` | [models.EditCollectionItemRequest](../models/editcollectionitemrequest.md) | :heavy_check_mark: | Edit Collection Items request | \ No newline at end of file diff --git a/docs/models/editcollectionrequestrequest.md b/docs/models/editcollectionrequestrequest.md new file mode 100644 index 00000000..b806bc37 --- /dev/null +++ b/docs/models/editcollectionrequestrequest.md @@ -0,0 +1,9 @@ +# EditcollectionRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `edit_collection_request` | [models.EditCollectionRequest](../models/editcollectionrequest.md) | :heavy_check_mark: | Collection content plus any additional metadata for the request. | \ No newline at end of file diff --git a/docs/models/editcollectionresponse.md b/docs/models/editcollectionresponse.md index 5dfbdfba..4feaf8e2 100644 --- a/docs/models/editcollectionresponse.md +++ b/docs/models/editcollectionresponse.md @@ -16,6 +16,7 @@ | `thumbnail` | [Optional[models.Thumbnail]](../models/thumbnail.md) | :heavy_minus_sign: | N/A | | | `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource type this Collection can hold. | | | `permissions` | [Optional[models.ObjectPermissions]](../models/objectpermissions.md) | :heavy_minus_sign: | N/A | | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular UGC. To be used for `/feedback` reporting. | | | `id` | *int* | :heavy_check_mark: | The unique ID of the Collection. | | | `create_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | | | `update_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | | diff --git a/docs/models/editcollectionresponseerrorcode.md b/docs/models/editcollectionresponseerrorcode.md index e6f6a8fa..bc8f34aa 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 @@ -11,4 +21,5 @@ | `CONCURRENT_HIERARCHY_EDIT` | CONCURRENT_HIERARCHY_EDIT | | `HEIGHT_VIOLATION` | HEIGHT_VIOLATION | | `WIDTH_VIOLATION` | WIDTH_VIOLATION | -| `NO_PERMISSIONS` | NO_PERMISSIONS | \ No newline at end of file +| `NO_PERMISSIONS` | NO_PERMISSIONS | +| `CORRUPT_ITEM` | CORRUPT_ITEM | \ No newline at end of file diff --git a/docs/models/editpinrequestrequest.md b/docs/models/editpinrequestrequest.md new file mode 100644 index 00000000..5a6db80b --- /dev/null +++ b/docs/models/editpinrequestrequest.md @@ -0,0 +1,9 @@ +# EditpinRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `edit_pin_request` | [models.EditPinRequest](../models/editpinrequest.md) | :heavy_check_mark: | Edit pins request | \ No newline at end of file diff --git a/docs/models/editworkflowrequest.md b/docs/models/editworkflowrequest.md new file mode 100644 index 00000000..3577eaa2 --- /dev/null +++ b/docs/models/editworkflowrequest.md @@ -0,0 +1,9 @@ +# EditWorkflowRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | +| `name` | *Optional[str]* | :heavy_minus_sign: | The name of the workflow. | +| `id` | *Optional[str]* | :heavy_minus_sign: | The workflow ID we want to update. | \ No newline at end of file diff --git a/docs/models/employeeinfodefinition.md b/docs/models/employeeinfodefinition.md index b22b23bd..c6c8ed10 100644 --- a/docs/models/employeeinfodefinition.md +++ b/docs/models/employeeinfodefinition.md @@ -13,7 +13,7 @@ Describes employee info | `preferred_name` | *Optional[str]* | :heavy_minus_sign: | The preferred name or nickname of the employee | | `id` | *Optional[str]* | :heavy_minus_sign: | **[Advanced]** A unique universal internal identifier for the employee. This is solely used for understanding manager relationships along with `managerId`.
| | `phone_number` | *Optional[str]* | :heavy_minus_sign: | The employee's phone number. | -| ~~`location`~~ | *Optional[str]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

The employee's location (city/office name etc). | +| ~~`location`~~ | *Optional[str]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated.

The employee's location (city/office name etc). | | `structured_location` | [Optional[models.StructuredLocation]](../models/structuredlocation.md) | :heavy_minus_sign: | Detailed location with information about country, state, city etc. | | `title` | *Optional[str]* | :heavy_minus_sign: | The employee's role title. | | `photo_url` | *Optional[str]* | :heavy_minus_sign: | The employee's profile pic | 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/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/exportinfo.md b/docs/models/exportinfo.md new file mode 100644 index 00000000..606ef59e --- /dev/null +++ b/docs/models/exportinfo.md @@ -0,0 +1,17 @@ +# ExportInfo + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `created_by` | [Optional[models.DlpPerson]](../models/dlpperson.md) | :heavy_minus_sign: | Details about the person who created this report/policy. | +| `start_time` | *Optional[str]* | :heavy_minus_sign: | Timestamp at which this export started. | +| `end_time` | *Optional[str]* | :heavy_minus_sign: | Timestamp at which this export completed. | +| `export_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the export | +| `file_name` | *Optional[str]* | :heavy_minus_sign: | The name of the file to export the findings to | +| `export_type` | [Optional[models.ExportInfoExportType]](../models/exportinfoexporttype.md) | :heavy_minus_sign: | The type of export to perform | +| `filter_` | [Optional[models.DlpFindingFilter]](../models/dlpfindingfilter.md) | :heavy_minus_sign: | N/A | +| `issue_filter` | [Optional[models.DlpIssueFilter]](../models/dlpissuefilter.md) | :heavy_minus_sign: | Filter for DLP issues. Includes document-level filters and issue-specific filters. | +| `status` | [Optional[models.ExportInfoStatus]](../models/exportinfostatus.md) | :heavy_minus_sign: | The status of the export | +| `export_size` | *Optional[int]* | :heavy_minus_sign: | The size of the exported file in bytes | \ No newline at end of file diff --git a/docs/models/exportinfoexporttype.md b/docs/models/exportinfoexporttype.md new file mode 100644 index 00000000..fd269c2f --- /dev/null +++ b/docs/models/exportinfoexporttype.md @@ -0,0 +1,22 @@ +# ExportInfoExportType + +The type of export to perform + +## Example Usage + +```python +from glean.api_client.models import ExportInfoExportType + +value = ExportInfoExportType.FINDINGS + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `FINDINGS` | FINDINGS | +| `DOCUMENTS` | DOCUMENTS | +| `ISSUES` | ISSUES | \ No newline at end of file diff --git a/docs/models/exportinfostatus.md b/docs/models/exportinfostatus.md new file mode 100644 index 00000000..f257dc52 --- /dev/null +++ b/docs/models/exportinfostatus.md @@ -0,0 +1,22 @@ +# ExportInfoStatus + +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 + +| Name | Value | +| ----------- | ----------- | +| `PENDING` | PENDING | +| `COMPLETED` | COMPLETED | +| `FAILED` | FAILED | \ No newline at end of file diff --git a/docs/models/externalsharingoptions.md b/docs/models/externalsharingoptions.md index 967c5f81..96a8d1eb 100644 --- a/docs/models/externalsharingoptions.md +++ b/docs/models/externalsharingoptions.md @@ -2,19 +2,19 @@ Controls how "shared" a document must be to get picked for scans. -> :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-05, removal scheduled for 2026-10-15: Use broadSharingOptions instead. ## Fields -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | -| ~~`enabled`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible. | -| `threshold` | *Optional[int]* | :heavy_minus_sign: | The minimum number of users the document is shared with. | -| `threshold_enabled` | *Optional[bool]* | :heavy_minus_sign: | Documents will be filtered based on how many people have access to it. | -| ~~`anyone_with_link_enabled`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible. | -| `anyone_internal_enabled` | *Optional[bool]* | :heavy_minus_sign: | Only users within the organization can access the document. | -| `anonymous_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | Anyone on the internet can access the document. | -| `user_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | Enable user access check | -| `user_ids` | List[*str*] | :heavy_minus_sign: | Any one of the specified users can access the document. | -| `domain_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| ~~`enabled`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. | +| `threshold` | *Optional[int]* | :heavy_minus_sign: | The minimum number of users the document is shared with. | +| `threshold_enabled` | *Optional[bool]* | :heavy_minus_sign: | Documents will be filtered based on how many people have access to it. | +| ~~`anyone_with_link_enabled`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. | +| `anyone_internal_enabled` | *Optional[bool]* | :heavy_minus_sign: | Only users within the organization can access the document. | +| `anonymous_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | Anyone on the internet can access the document. | +| `user_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | Enable user access check | +| `user_ids` | List[*str*] | :heavy_minus_sign: | Any one of the specified users can access the document. | +| `domain_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/facetfiltervalue.md b/docs/models/facetfiltervalue.md index 74ab3a85..84c21704 100644 --- a/docs/models/facetfiltervalue.md +++ b/docs/models/facetfiltervalue.md @@ -3,8 +3,8 @@ ## Fields -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `value` | *Optional[str]* | :heavy_minus_sign: | N/A | Spreadsheet | -| `relation_type` | [Optional[models.RelationType]](../models/relationtype.md) | :heavy_minus_sign: | N/A | EQUALS | -| ~~`is_negated`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

DEPRECATED - please use relationType instead | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `value` | *Optional[str]* | :heavy_minus_sign: | N/A | Spreadsheet | +| `relation_type` | [Optional[models.RelationType]](../models/relationtype.md) | :heavy_minus_sign: | N/A | EQUALS | +| ~~`is_negated`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use relationType instead.

DEPRECATED - please use relationType instead | | \ No newline at end of file diff --git a/docs/models/feedback.md b/docs/models/feedback.md index 6fe107ab..635bde27 100644 --- a/docs/models/feedback.md +++ b/docs/models/feedback.md @@ -8,7 +8,7 @@ | `id` | *Optional[str]* | :heavy_minus_sign: | Universally unique identifier of the event. To allow for reliable retransmission, only the earliest received event of a given UUID is considered valid by the server and subsequent are ignored. | | `category` | [Optional[models.FeedbackCategory]](../models/feedbackcategory.md) | :heavy_minus_sign: | 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. | | `tracking_tokens` | List[*str*] | :heavy_check_mark: | A list of server-generated trackingTokens to which this event applies. | -| `event` | [models.Event](../models/event.md) | :heavy_check_mark: | The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`. | +| `event` | [models.FeedbackEvent](../models/feedbackevent.md) | :heavy_check_mark: | The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`. | | `position` | *Optional[int]* | :heavy_minus_sign: | Position of the element in the case that the client controls order (such as feed and autocomplete). | | `payload` | *Optional[str]* | :heavy_minus_sign: | For type MANUAL_FEEDBACK, contains string of user feedback. For autocomplete, partial query string. For feed, string of user feedback in addition to manual feedback signals extracted from all suggested content. | | `session_info` | [Optional[models.SessionInfo]](../models/sessioninfo.md) | :heavy_minus_sign: | N/A | diff --git a/docs/models/feedbackcategory.md b/docs/models/feedbackcategory.md index 0cd81ec7..53cf5fdb 100644 --- a/docs/models/feedbackcategory.md +++ b/docs/models/feedbackcategory.md @@ -2,12 +2,22 @@ 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 | Name | Value | | -------------- | -------------- | | `ANNOUNCEMENT` | ANNOUNCEMENT | +| `ANSWERS` | ANSWERS | +| `ARTIFACTS` | ARTIFACTS | | `AUTOCOMPLETE` | AUTOCOMPLETE | | `COLLECTIONS` | COLLECTIONS | | `FEED` | FEED | 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/event.md b/docs/models/feedbackevent.md similarity index 92% rename from docs/models/event.md rename to docs/models/feedbackevent.md index 399107aa..e64b3749 100644 --- a/docs/models/event.md +++ b/docs/models/feedbackevent.md @@ -1,7 +1,15 @@ -# Event +# FeedbackEvent 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 FeedbackEvent + +value = FeedbackEvent.CLICK +``` + ## Values @@ -21,6 +29,7 @@ The action the user took within a Glean client with respect to the object referr | `LAST_TOKEN` | LAST_TOKEN | | `MANUAL_FEEDBACK` | MANUAL_FEEDBACK | | `MANUAL_FEEDBACK_SIDE_BY_SIDE` | MANUAL_FEEDBACK_SIDE_BY_SIDE | +| `FEEDBACK_TIME_SAVED` | FEEDBACK_TIME_SAVED | | `MARK_AS_READ` | MARK_AS_READ | | `MESSAGE` | MESSAGE | | `MIDDLE_CLICK` | MIDDLE_CLICK | diff --git a/docs/models/feedrequestcategory.md b/docs/models/feedrequestcategory.md index b6590356..a4e28a08 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 @@ -29,4 +37,20 @@ | `ZERO_STATE_WORKFLOW_RECENT` | ZERO_STATE_WORKFLOW_RECENT | | `ZERO_STATE_WORKFLOW_SUGGESTION` | ZERO_STATE_WORKFLOW_SUGGESTION | | `PERSONALIZED_CHAT_SUGGESTION` | PERSONALIZED_CHAT_SUGGESTION | -| `DAILY_DIGEST` | DAILY_DIGEST | \ No newline at end of file +| `DAILY_DIGEST` | DAILY_DIGEST | +| `TASK` | TASK | +| `PLAN_MY_DAY` | PLAN_MY_DAY | +| `END_MY_DAY` | END_MY_DAY | +| `STARTER_KIT` | STARTER_KIT | +| `MID_DAY_CATCH_UP` | MID_DAY_CATCH_UP | +| `QUERY_SUGGESTION` | QUERY_SUGGESTION | +| `COWORK_CUJ_PROMO` | COWORK_CUJ_PROMO | +| `WEEKLY_MEETINGS` | WEEKLY_MEETINGS | +| `FOLLOW_UP` | FOLLOW_UP | +| `MILESTONE_TIMELINE_CHECK` | MILESTONE_TIMELINE_CHECK | +| `PROJECT_DISCUSSION_DIGEST` | PROJECT_DISCUSSION_DIGEST | +| `PROJECT_FOCUS_BLOCK` | PROJECT_FOCUS_BLOCK | +| `PROJECT_NEXT_STEP` | PROJECT_NEXT_STEP | +| `DEMO_CARD` | DEMO_CARD | +| `OOO_PLANNER` | OOO_PLANNER | +| `OOO_CATCH_UP` | OOO_CATCH_UP | \ No newline at end of file diff --git a/docs/models/feedrequestrequest.md b/docs/models/feedrequestrequest.md new file mode 100644 index 00000000..e662bffd --- /dev/null +++ b/docs/models/feedrequestrequest.md @@ -0,0 +1,9 @@ +# FeedRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `feed_request` | [models.FeedRequest](../models/feedrequest.md) | :heavy_check_mark: | Includes request params, client data and more for making user's feed. | \ No newline at end of file diff --git a/docs/models/feedresultcategory.md b/docs/models/feedresultcategory.md index 5de26d31..5d0a0beb 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 @@ -31,4 +41,20 @@ Category of the result, one of the requested categories in incoming request. | `ZERO_STATE_WORKFLOW_RECENT` | ZERO_STATE_WORKFLOW_RECENT | | `ZERO_STATE_WORKFLOW_SUGGESTION` | ZERO_STATE_WORKFLOW_SUGGESTION | | `PERSONALIZED_CHAT_SUGGESTION` | PERSONALIZED_CHAT_SUGGESTION | -| `DAILY_DIGEST` | DAILY_DIGEST | \ No newline at end of file +| `DAILY_DIGEST` | DAILY_DIGEST | +| `TASK` | TASK | +| `PLAN_MY_DAY` | PLAN_MY_DAY | +| `END_MY_DAY` | END_MY_DAY | +| `STARTER_KIT` | STARTER_KIT | +| `MID_DAY_CATCH_UP` | MID_DAY_CATCH_UP | +| `QUERY_SUGGESTION` | QUERY_SUGGESTION | +| `COWORK_CUJ_PROMO` | COWORK_CUJ_PROMO | +| `WEEKLY_MEETINGS` | WEEKLY_MEETINGS | +| `FOLLOW_UP` | FOLLOW_UP | +| `MILESTONE_TIMELINE_CHECK` | MILESTONE_TIMELINE_CHECK | +| `PROJECT_DISCUSSION_DIGEST` | PROJECT_DISCUSSION_DIGEST | +| `PROJECT_FOCUS_BLOCK` | PROJECT_FOCUS_BLOCK | +| `PROJECT_NEXT_STEP` | PROJECT_NEXT_STEP | +| `DEMO_CARD` | DEMO_CARD | +| `OOO_PLANNER` | OOO_PLANNER | +| `OOO_CATCH_UP` | OOO_CATCH_UP | \ No newline at end of file diff --git a/docs/models/fieldscope.md b/docs/models/fieldscope.md new file mode 100644 index 00000000..3c3c097a --- /dev/null +++ b/docs/models/fieldscope.md @@ -0,0 +1,20 @@ +# FieldScope + +Controls which fields to include in the export + +## Example Usage + +```python +from glean.api_client.models import FieldScope + +value = FieldScope.ALL +``` + + +## Values + +| Name | Value | +| ------------------- | ------------------- | +| `ALL` | ALL | +| `EXCLUDE_SENSITIVE` | EXCLUDE_SENSITIVE | +| `CUSTOM` | CUSTOM | \ No newline at end of file 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/getactionpackauthstatusrequest.md b/docs/models/getactionpackauthstatusrequest.md new file mode 100644 index 00000000..60ccf15d --- /dev/null +++ b/docs/models/getactionpackauthstatusrequest.md @@ -0,0 +1,8 @@ +# GetActionPackAuthStatusRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | +| `action_pack_id` | *str* | :heavy_check_mark: | ID of the action pack to query or authorize. | \ No newline at end of file diff --git a/docs/models/getagentrequest.md b/docs/models/getagentrequest.md index 2b1bcba3..7418c2ce 100644 --- a/docs/models/getagentrequest.md +++ b/docs/models/getagentrequest.md @@ -3,7 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | \ No newline at end of file diff --git a/docs/models/getagentschemasrequest.md b/docs/models/getagentschemasrequest.md index 925f9ef5..110d7172 100644 --- a/docs/models/getagentschemasrequest.md +++ b/docs/models/getagentschemasrequest.md @@ -3,7 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | \ No newline at end of file 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/getanswerrequestrequest.md b/docs/models/getanswerrequestrequest.md new file mode 100644 index 00000000..3502669e --- /dev/null +++ b/docs/models/getanswerrequestrequest.md @@ -0,0 +1,9 @@ +# GetanswerRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `get_answer_request` | [models.GetAnswerRequest](../models/getanswerrequest.md) | :heavy_check_mark: | GetAnswer request | \ No newline at end of file diff --git a/docs/models/getchatapplicationrequestrequest.md b/docs/models/getchatapplicationrequestrequest.md index 6920abdc..79cddc37 100644 --- a/docs/models/getchatapplicationrequestrequest.md +++ b/docs/models/getchatapplicationrequestrequest.md @@ -3,7 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `get_chat_application_request` | [models.GetChatApplicationRequest](../models/getchatapplicationrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `get_chat_application_request` | [models.GetChatApplicationRequest](../models/getchatapplicationrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/getchatfilerequest.md b/docs/models/getchatfilerequest.md new file mode 100644 index 00000000..c4a020cc --- /dev/null +++ b/docs/models/getchatfilerequest.md @@ -0,0 +1,9 @@ +# GetChatFileRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `file_id` | *str* | :heavy_check_mark: | Identifier of the chat file to download. | +| `preview` | *Optional[bool]* | :heavy_minus_sign: | When true and the file is a PDF, the response is served inline (Content-Disposition: inline) instead of as an attachment.
| \ No newline at end of file diff --git a/docs/models/getchatfilesrequestrequest.md b/docs/models/getchatfilesrequestrequest.md index b9c9dbd2..886c639f 100644 --- a/docs/models/getchatfilesrequestrequest.md +++ b/docs/models/getchatfilesrequestrequest.md @@ -3,7 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `get_chat_files_request` | [models.GetChatFilesRequest](../models/getchatfilesrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `get_chat_files_request` | [models.GetChatFilesRequest](../models/getchatfilesrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/getchatrequestrequest.md b/docs/models/getchatrequestrequest.md index 95fa7077..e810c575 100644 --- a/docs/models/getchatrequestrequest.md +++ b/docs/models/getchatrequestrequest.md @@ -3,7 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `get_chat_request` | [models.GetChatRequest](../models/getchatrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `get_chat_request` | [models.GetChatRequest](../models/getchatrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/getcollectionrequestrequest.md b/docs/models/getcollectionrequestrequest.md new file mode 100644 index 00000000..63737249 --- /dev/null +++ b/docs/models/getcollectionrequestrequest.md @@ -0,0 +1,9 @@ +# GetcollectionRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `get_collection_request` | [models.GetCollectionRequest](../models/getcollectionrequest.md) | :heavy_check_mark: | GetCollection request | \ No newline at end of file diff --git a/docs/models/getcollectionresponse.md b/docs/models/getcollectionresponse.md index e146e4fb..e4795b0d 100644 --- a/docs/models/getcollectionresponse.md +++ b/docs/models/getcollectionresponse.md @@ -3,9 +3,9 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | -| `collection` | [Optional[models.Collection]](../models/collection.md) | :heavy_minus_sign: | N/A | -| `root_collection` | [Optional[models.Collection]](../models/collection.md) | :heavy_minus_sign: | N/A | -| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular Collection. To be used for `/feedback` reporting. | -| `error` | [Optional[models.CollectionError]](../models/collectionerror.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `collection` | [Optional[models.Collection]](../models/collection.md) | :heavy_minus_sign: | N/A | +| `root_collection` | [Optional[models.Collection]](../models/collection.md) | :heavy_minus_sign: | N/A | +| `error` | [Optional[models.CollectionError]](../models/collectionerror.md) | :heavy_minus_sign: | N/A | +| ~~`tracking_token`~~ | *Optional[str]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-05-07, removal scheduled for 2027-01-15: Use `collection.trackingToken` instead..

Use `collection.trackingToken` instead. | \ No newline at end of file diff --git a/docs/models/getdatasourcecredentialstatusrequest.md b/docs/models/getdatasourcecredentialstatusrequest.md new file mode 100644 index 00000000..07c45dd2 --- /dev/null +++ b/docs/models/getdatasourcecredentialstatusrequest.md @@ -0,0 +1,8 @@ +# GetDatasourceCredentialStatusRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `datasource_instance_id` | *str* | :heavy_check_mark: | The full datasource instance identifier (e.g. o365sharepoint_abc123) | o365sharepoint_abc123 | \ No newline at end of file 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/getdocpermissionsrequestrequest.md b/docs/models/getdocpermissionsrequestrequest.md new file mode 100644 index 00000000..3f91457d --- /dev/null +++ b/docs/models/getdocpermissionsrequestrequest.md @@ -0,0 +1,9 @@ +# GetdocpermissionsRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `get_doc_permissions_request` | [models.GetDocPermissionsRequest](../models/getdocpermissionsrequest.md) | :heavy_check_mark: | Document permissions request | \ No newline at end of file diff --git a/docs/models/getdocumentsbyfacetsrequestrequest.md b/docs/models/getdocumentsbyfacetsrequestrequest.md new file mode 100644 index 00000000..6fb44cfc --- /dev/null +++ b/docs/models/getdocumentsbyfacetsrequestrequest.md @@ -0,0 +1,9 @@ +# GetdocumentsbyfacetsRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `get_documents_by_facets_request` | [Optional[models.GetDocumentsByFacetsRequest]](../models/getdocumentsbyfacetsrequest.md) | :heavy_minus_sign: | Information about facet conditions for documents to be retrieved. | \ No newline at end of file diff --git a/docs/models/getdocumentsrequestincludefield.md b/docs/models/getdocumentsrequestincludefield.md index 47e11f89..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 @@ -8,4 +16,5 @@ | `LAST_VIEWED_AT` | LAST_VIEWED_AT | | `VISITORS_COUNT` | VISITORS_COUNT | | `RECENT_SHARES` | RECENT_SHARES | -| `DOCUMENT_CONTENT` | DOCUMENT_CONTENT | \ No newline at end of file +| `DOCUMENT_CONTENT` | DOCUMENT_CONTENT | +| `CUSTOM_METADATA` | CUSTOM_METADATA | \ No newline at end of file diff --git a/docs/models/getdocumentsrequestrequest.md b/docs/models/getdocumentsrequestrequest.md new file mode 100644 index 00000000..d1c6b7a4 --- /dev/null +++ b/docs/models/getdocumentsrequestrequest.md @@ -0,0 +1,9 @@ +# GetdocumentsRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `get_documents_request` | [Optional[models.GetDocumentsRequest]](../models/getdocumentsrequest.md) | :heavy_minus_sign: | Information about documents requested. | \ No newline at end of file diff --git a/docs/models/getpersonphotorequest.md b/docs/models/getpersonphotorequest.md new file mode 100644 index 00000000..a81c0243 --- /dev/null +++ b/docs/models/getpersonphotorequest.md @@ -0,0 +1,9 @@ +# GetPersonPhotoRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `person_id` | *str* | :heavy_check_mark: | The obfuscated ID of the person whose photo to retrieve. | +| `ds` | *Optional[str]* | :heavy_minus_sign: | Optional datasource override for crawled photos (e.g. AZURE, GDRIVE, OKTA). When omitted, the datasource is derived from the person's stored photo URL or the deployment's primary person datasource.
| \ No newline at end of file diff --git a/docs/models/getpersonphotoresponse.md b/docs/models/getpersonphotoresponse.md new file mode 100644 index 00000000..a8fca12e --- /dev/null +++ b/docs/models/getpersonphotoresponse.md @@ -0,0 +1,9 @@ +# GetPersonPhotoResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | +| `result` | [models.GetPersonPhotoResponseResult](../models/getpersonphotoresponseresult.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/getpersonphotoresponseresult.md b/docs/models/getpersonphotoresponseresult.md new file mode 100644 index 00000000..39cfd737 --- /dev/null +++ b/docs/models/getpersonphotoresponseresult.md @@ -0,0 +1,17 @@ +# GetPersonPhotoResponseResult + + +## Supported Types + +### `httpx.Response` + +```python +value: httpx.Response = /* values here */ +``` + +### `httpx.Response` + +```python +value: httpx.Response = /* values here */ +``` + diff --git a/docs/models/getpinrequestrequest.md b/docs/models/getpinrequestrequest.md new file mode 100644 index 00000000..ac7a1f22 --- /dev/null +++ b/docs/models/getpinrequestrequest.md @@ -0,0 +1,9 @@ +# GetpinRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `get_pin_request` | [models.GetPinRequest](../models/getpinrequest.md) | :heavy_check_mark: | Get pin request | \ No newline at end of file diff --git a/docs/models/getrestapiindexcustommetadataschemagroupnamerequest.md b/docs/models/getrestapiindexcustommetadataschemagroupnamerequest.md new file mode 100644 index 00000000..8ad9325e --- /dev/null +++ b/docs/models/getrestapiindexcustommetadataschemagroupnamerequest.md @@ -0,0 +1,8 @@ +# GetRestAPIIndexCustomMetadataSchemaGroupNameRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group schema | \ No newline at end of file diff --git a/docs/models/getshortcutrequest.md b/docs/models/getshortcutrequest.md index af868a75..9da57465 100644 --- a/docs/models/getshortcutrequest.md +++ b/docs/models/getshortcutrequest.md @@ -1,8 +1,17 @@ # GetShortcutRequest -## Fields +## Supported Types + +### `models.UserGeneratedContentID` + +```python +value: models.UserGeneratedContentID = /* values here */ +``` + +### `models.GetShortcutRequest1` + +```python +value: models.GetShortcutRequest1 = /* values here */ +``` -| Field | Type | Required | Description | -| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | -| `alias` | *str* | :heavy_check_mark: | The alias for the shortcut, including any arguments for variable shortcuts. | \ No newline at end of file diff --git a/docs/models/getshortcutrequest1.md b/docs/models/getshortcutrequest1.md new file mode 100644 index 00000000..e8d23716 --- /dev/null +++ b/docs/models/getshortcutrequest1.md @@ -0,0 +1,8 @@ +# GetShortcutRequest1 + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `alias` | *str* | :heavy_check_mark: | The alias for the shortcut, including any arguments for variable shortcuts. | \ No newline at end of file diff --git a/docs/models/getshortcutrequestrequest.md b/docs/models/getshortcutrequestrequest.md new file mode 100644 index 00000000..79056b95 --- /dev/null +++ b/docs/models/getshortcutrequestrequest.md @@ -0,0 +1,9 @@ +# GetshortcutRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `get_shortcut_request` | [models.GetShortcutRequest](../models/getshortcutrequest.md) | :heavy_check_mark: | GetShortcut request | \ No newline at end of file diff --git a/docs/models/getshortcutrequestunion.md b/docs/models/getshortcutrequestunion.md deleted file mode 100644 index 43835d51..00000000 --- a/docs/models/getshortcutrequestunion.md +++ /dev/null @@ -1,17 +0,0 @@ -# GetShortcutRequestUnion - - -## Supported Types - -### `models.UserGeneratedContentID` - -```python -value: models.UserGeneratedContentID = /* values here */ -``` - -### `models.GetShortcutRequest` - -```python -value: models.GetShortcutRequest = /* values here */ -``` - diff --git a/docs/models/gleandataerror.md b/docs/models/gleandataerror.md index f1df02d4..7c4c0d90 100644 --- a/docs/models/gleandataerror.md +++ b/docs/models/gleandataerror.md @@ -3,9 +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 | \ 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/inputoptions.md b/docs/models/inputoptions.md index 64e37bbe..b45ddba5 100644 --- a/docs/models/inputoptions.md +++ b/docs/models/inputoptions.md @@ -5,11 +5,12 @@ Controls which data-sources and what time-range to include in scans. ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| ~~`url_greenlist`~~ | List[*str*] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

list of url regex matching documents excluded from report | -| `datasources_type` | [Optional[models.DatasourcesType]](../models/datasourcestype.md) | :heavy_minus_sign: | The types of datasource for which to run the report/policy. | -| ~~`datasources`~~ | List[*str*] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

List of datasources to consider for report. DEPRECATED - use datasourceInstances instead. | -| `datasource_instances` | List[*str*] | :heavy_minus_sign: | List of datasource instances to consider for report/policy. | -| `time_period_type` | [Optional[models.TimePeriodType]](../models/timeperiodtype.md) | :heavy_minus_sign: | Type of time period for which to run the report/policy. PAST_DAY is deprecated. | -| `custom_time_range` | [Optional[models.TimeRange]](../models/timerange.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ~~`url_greenlist`~~ | List[*str*] | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated.

list of url regex matching documents excluded from report | +| `datasources_type` | [Optional[models.DatasourcesType]](../models/datasourcestype.md) | :heavy_minus_sign: | The types of datasource for which to run the report/policy. | +| ~~`datasources`~~ | List[*str*] | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use datasourceInstances instead.

List of datasources to consider for report. DEPRECATED - use datasourceInstances instead. | +| `datasource_instances` | List[*str*] | :heavy_minus_sign: | List of datasource instances to consider for report/policy. | +| `time_period_type` | [Optional[models.InputOptionsTimePeriodType]](../models/inputoptionstimeperiodtype.md) | :heavy_minus_sign: | Type of time period for which to run the report/policy. PAST_DAY is deprecated. | +| `custom_time_range` | [Optional[models.TimeRange]](../models/timerange.md) | :heavy_minus_sign: | N/A | +| `subset_doc_ids_to_scan` | List[*str*] | :heavy_minus_sign: | Subset of document IDs to scan. If empty, all documents matching other scope criteria will be scanned. | \ No newline at end of file diff --git a/docs/models/timeperiodtype.md b/docs/models/inputoptionstimeperiodtype.md similarity index 58% rename from docs/models/timeperiodtype.md rename to docs/models/inputoptionstimeperiodtype.md index eb606293..26843791 100644 --- a/docs/models/timeperiodtype.md +++ b/docs/models/inputoptionstimeperiodtype.md @@ -1,7 +1,17 @@ -# TimePeriodType +# InputOptionsTimePeriodType 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/insightsaiapprequestoptions.md b/docs/models/insightsaiapprequestoptions.md deleted file mode 100644 index 596378b6..00000000 --- a/docs/models/insightsaiapprequestoptions.md +++ /dev/null @@ -1,8 +0,0 @@ -# InsightsAiAppRequestOptions - - -## Fields - -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | -| `ai_app_ids` | List[*str*] | :heavy_minus_sign: | IDs of the AI Apps for which Insights should be returned. An empty array signifies all. | \ No newline at end of file diff --git a/docs/models/insightsassistantrequest.md b/docs/models/insightsassistantrequest.md index 83e8e5b1..5bca0572 100644 --- a/docs/models/insightsassistantrequest.md +++ b/docs/models/insightsassistantrequest.md @@ -3,7 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | -| `departments` | List[*str*] | :heavy_minus_sign: | Departments for which Insights are requested. | -| `day_range` | [Optional[models.Period]](../models/period.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `departments` | List[*str*] | :heavy_minus_sign: | Departments for which Insights are requested. | +| `manager_emails` | List[*str*] | :heavy_minus_sign: | Manager emails whose teams should be filtered for. Empty array means no filtering. | +| `day_range` | [Optional[models.Period]](../models/period.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/insightschatsummary.md b/docs/models/insightschatsummary.md index ecbd7385..21fc84d4 100644 --- a/docs/models/insightschatsummary.md +++ b/docs/models/insightschatsummary.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users, in the specified departments. | -| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users, in the specified departments. | +| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users. | +| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users. | | `num_chats` | *Optional[int]* | :heavy_minus_sign: | Total number of chats by users over the specified time period. | | `num_chat_users` | *Optional[int]* | :heavy_minus_sign: | Total number of distinct users who used Chat over the specified time period. | \ No newline at end of file diff --git a/docs/models/insightsoverviewrequest.md b/docs/models/insightsoverviewrequest.md index 90e12f31..b6fc7e69 100644 --- a/docs/models/insightsoverviewrequest.md +++ b/docs/models/insightsoverviewrequest.md @@ -3,7 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | -| `departments` | List[*str*] | :heavy_minus_sign: | Departments for which Insights are requested. | -| `day_range` | [Optional[models.Period]](../models/period.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `departments` | List[*str*] | :heavy_minus_sign: | Departments for which Insights are requested. | +| `manager_emails` | List[*str*] | :heavy_minus_sign: | Manager emails whose teams should be filtered for. Empty array means no filtering. | +| `day_range` | [Optional[models.Period]](../models/period.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/insightsoverviewresponse.md b/docs/models/insightsoverviewresponse.md index 6cd38a87..56bb2b24 100644 --- a/docs/models/insightsoverviewresponse.md +++ b/docs/models/insightsoverviewresponse.md @@ -3,22 +3,42 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users, in the specified departments. | -| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users, in the specified departments. | -| `departments` | List[*str*] | :heavy_minus_sign: | Department name(s). | -| `employee_count` | *Optional[int]* | :heavy_minus_sign: | Number of current employees in the specified departments, according to the Org Chart. | -| `total_signups` | *Optional[int]* | :heavy_minus_sign: | Number of current signed up employees in the specified departments, according to the Org Chart. | -| `search_summary` | [Optional[models.InsightsSearchSummary]](../models/insightssearchsummary.md) | :heavy_minus_sign: | N/A | -| `chat_summary` | [Optional[models.InsightsChatSummary]](../models/insightschatsummary.md) | :heavy_minus_sign: | N/A | -| `extension_summary` | [Optional[models.CurrentActiveUsers]](../models/currentactiveusers.md) | :heavy_minus_sign: | N/A | -| `ugc_summary` | [Optional[models.CurrentActiveUsers]](../models/currentactiveusers.md) | :heavy_minus_sign: | N/A | -| `last_updated_ts` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp of the last update for the insights data in the response. | -| `search_session_satisfaction` | *Optional[float]* | :heavy_minus_sign: | Search session satisfaction rate, over the specified time period in the specified departments. | -| `monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | -| `weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | -| `daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | -| `search_datasource_counts` | Dict[str, *int*] | :heavy_minus_sign: | Counts of search result clicks, by datasource, over the specified time period in the specified departments. | -| `chat_datasource_counts` | Dict[str, *int*] | :heavy_minus_sign: | Counts of cited documents in chat, by datasource, over the specified time period in the specified departments. | -| `per_user_insights` | List[[models.PerUserInsight](../models/peruserinsight.md)] | :heavy_minus_sign: | Per-user insights, over the specified time period in the specified departments. All current users in the organization who have signed into Glean at least once are included. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users. | +| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users. | +| `departments` | List[*str*] | :heavy_minus_sign: | Department name(s). | +| `employee_count` | *Optional[int]* | :heavy_minus_sign: | Number of current employees in the specified departments, according to the Org Chart. | +| `total_signups` | *Optional[int]* | :heavy_minus_sign: | Number of current signed up employees in the specified departments, according to the Org Chart. | +| `search_summary` | [Optional[models.InsightsSearchSummary]](../models/insightssearchsummary.md) | :heavy_minus_sign: | N/A | +| `chat_summary` | [Optional[models.InsightsChatSummary]](../models/insightschatsummary.md) | :heavy_minus_sign: | N/A | +| `search_active_users` | [Optional[models.CurrentActiveUsers]](../models/currentactiveusers.md) | :heavy_minus_sign: | N/A | +| `assistant_active_users` | [Optional[models.CurrentActiveUsers]](../models/currentactiveusers.md) | :heavy_minus_sign: | N/A | +| `agents_active_users` | [Optional[models.CurrentActiveUsers]](../models/currentactiveusers.md) | :heavy_minus_sign: | N/A | +| `mcp_active_users` | [Optional[models.CurrentActiveUsers]](../models/currentactiveusers.md) | :heavy_minus_sign: | N/A | +| `extension_summary` | [Optional[models.CurrentActiveUsers]](../models/currentactiveusers.md) | :heavy_minus_sign: | N/A | +| `ugc_summary` | [Optional[models.CurrentActiveUsers]](../models/currentactiveusers.md) | :heavy_minus_sign: | N/A | +| `last_updated_ts` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp of the last update for the insights data in the response. | +| ~~`search_session_satisfaction`~~ | *Optional[float]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-05-13, removal scheduled for 2027-01-15: This property is no longer supported. Please contact Support for alternatives..

Search session satisfaction rate, over the specified time period in the specified departments. | +| `monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `search_monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `search_weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `search_daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `assistant_monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `assistant_weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `assistant_daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `agents_monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `agents_weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `agents_daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `mcp_monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `mcp_weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `mcp_daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `searches_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `assistant_interactions_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `agent_runs_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `mcp_calls_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `search_datasource_counts` | Dict[str, *int*] | :heavy_minus_sign: | Counts of search result clicks, by datasource, over the specified time period in the specified departments. | +| `chat_datasource_counts` | Dict[str, *int*] | :heavy_minus_sign: | Counts of cited documents in chat, by datasource, over the specified time period in the specified departments. | +| `per_user_insights` | List[[models.PerUserInsight](../models/peruserinsight.md)] | :heavy_minus_sign: | Per-user insights, over the specified time period in the specified departments. All current users in the organization who have signed into Glean at least once are included. | \ No newline at end of file diff --git a/docs/models/insightsrequest.md b/docs/models/insightsrequest.md index b9c2ea45..9bb517e8 100644 --- a/docs/models/insightsrequest.md +++ b/docs/models/insightsrequest.md @@ -3,15 +3,11 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `overview_request` | [Optional[models.InsightsOverviewRequest]](../models/insightsoverviewrequest.md) | :heavy_minus_sign: | N/A | -| `assistant_request` | [Optional[models.InsightsAssistantRequest]](../models/insightsassistantrequest.md) | :heavy_minus_sign: | N/A | -| `agents_request` | [Optional[models.AgentsInsightsV2Request]](../models/agentsinsightsv2request.md) | :heavy_minus_sign: | N/A | -| `disable_per_user_insights` | *Optional[bool]* | :heavy_minus_sign: | If true, suppresses the generation of per-user Insights in the response. Default is false. | -| ~~`categories`~~ | List[[models.InsightsRequestCategory](../models/insightsrequestcategory.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Categories of data requested. Request can include single or multiple types. | -| ~~`departments`~~ | List[*str*] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Departments that the data is requested for. If this is empty, corresponds to whole company. | -| `day_range` | [Optional[models.Period]](../models/period.md) | :heavy_minus_sign: | N/A | -| `ai_app_request_options` | [Optional[models.InsightsAiAppRequestOptions]](../models/insightsaiapprequestoptions.md) | :heavy_minus_sign: | N/A | -| `agents_request_options` | [Optional[models.InsightsAgentsRequestOptions]](../models/insightsagentsrequestoptions.md) | :heavy_minus_sign: | N/A | -| ~~`assistant_activity_types`~~ | List[[models.AssistantActivityType](../models/assistantactivitytype.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Types of activity that should count in the definition of an Assistant Active User. Affects only insights for AI category. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `overview_request` | [Optional[models.InsightsOverviewRequest]](../models/insightsoverviewrequest.md) | :heavy_minus_sign: | N/A | +| `assistant_request` | [Optional[models.InsightsAssistantRequest]](../models/insightsassistantrequest.md) | :heavy_minus_sign: | N/A | +| `agents_request` | [Optional[models.AgentsInsightsV2Request]](../models/agentsinsightsv2request.md) | :heavy_minus_sign: | N/A | +| `mcp_request` | [Optional[models.McpInsightsRequest]](../models/mcpinsightsrequest.md) | :heavy_minus_sign: | N/A | +| `mcp_breakdown_request` | [Optional[models.McpBreakdownInsightsRequest]](../models/mcpbreakdowninsightsrequest.md) | :heavy_minus_sign: | N/A | +| `disable_per_user_insights` | *Optional[bool]* | :heavy_minus_sign: | If true, suppresses the generation of per-user Insights in the response. Default is false. | \ No newline at end of file diff --git a/docs/models/insightsrequestcategory.md b/docs/models/insightsrequestcategory.md deleted file mode 100644 index f5831a04..00000000 --- a/docs/models/insightsrequestcategory.md +++ /dev/null @@ -1,21 +0,0 @@ -# InsightsRequestCategory - - -## Values - -| Name | Value | -| ---------------------------- | ---------------------------- | -| `AGENTS` | AGENTS | -| `AGENT_USERS` | AGENT_USERS | -| `TOP_AGENTS` | TOP_AGENTS | -| `AGENTS_USAGE_BY_DEPARTMENT` | AGENTS_USAGE_BY_DEPARTMENT | -| `AI` | AI | -| `AI_APPS` | AI_APPS | -| `ANNOUNCEMENTS` | ANNOUNCEMENTS | -| `ANSWERS` | ANSWERS | -| `COLLECTIONS` | COLLECTIONS | -| `CONTENT` | CONTENT | -| `GLEAN_ASSIST` | GLEAN_ASSIST | -| `QUERIES` | QUERIES | -| `SHORTCUTS` | SHORTCUTS | -| `USERS` | USERS | \ No newline at end of file diff --git a/docs/models/insightsrequestrequest.md b/docs/models/insightsrequestrequest.md new file mode 100644 index 00000000..42aaa5da --- /dev/null +++ b/docs/models/insightsrequestrequest.md @@ -0,0 +1,9 @@ +# InsightsRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `insights_request` | [models.InsightsRequest](../models/insightsrequest.md) | :heavy_check_mark: | Includes request parameters for insights requests. | \ No newline at end of file diff --git a/docs/models/insightsresponse.md b/docs/models/insightsresponse.md index dcb429dc..7e11a8a1 100644 --- a/docs/models/insightsresponse.md +++ b/docs/models/insightsresponse.md @@ -3,21 +3,11 @@ ## Fields -| Field | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ~~`timeseries`~~ | List[[models.LabeledCountInfo](../models/labeledcountinfo.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

List of timeseries to make charts (if applicable). | -| `users` | [Optional[models.UserInsightsResponse]](../models/userinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `content` | [Optional[models.ContentInsightsResponse]](../models/contentinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `queries` | [Optional[models.QueryInsightsResponse]](../models/queryinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `collections` | [Optional[models.ContentInsightsResponse]](../models/contentinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `collections_v2` | [Optional[models.ContentInsightsResponse]](../models/contentinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `shortcuts` | [Optional[models.ShortcutInsightsResponse]](../models/shortcutinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `announcements` | [Optional[models.ContentInsightsResponse]](../models/contentinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `answers` | [Optional[models.ContentInsightsResponse]](../models/contentinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `ai` | [Optional[models.AiInsightsResponse]](../models/aiinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `ai_apps` | [Optional[models.AiAppsInsightsResponse]](../models/aiappsinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `glean_assist` | [Optional[models.GleanAssistInsightsResponse]](../models/gleanassistinsightsresponse.md) | :heavy_minus_sign: | N/A | -| ~~`departments`~~ | List[*str*] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

list of all departments. | -| `overview_response` | [Optional[models.InsightsOverviewResponse]](../models/insightsoverviewresponse.md) | :heavy_minus_sign: | N/A | -| `assistant_response` | [Optional[models.AssistantInsightsResponse]](../models/assistantinsightsresponse.md) | :heavy_minus_sign: | N/A | -| `agents_response` | [Optional[models.AgentsInsightsV2Response]](../models/agentsinsightsv2response.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `glean_assist` | [Optional[models.GleanAssistInsightsResponse]](../models/gleanassistinsightsresponse.md) | :heavy_minus_sign: | N/A | +| `overview_response` | [Optional[models.InsightsOverviewResponse]](../models/insightsoverviewresponse.md) | :heavy_minus_sign: | N/A | +| `assistant_response` | [Optional[models.AssistantInsightsResponse]](../models/assistantinsightsresponse.md) | :heavy_minus_sign: | N/A | +| `agents_response` | [Optional[models.AgentsInsightsV2Response]](../models/agentsinsightsv2response.md) | :heavy_minus_sign: | N/A | +| `mcp_response` | [Optional[models.McpInsightsResponse]](../models/mcpinsightsresponse.md) | :heavy_minus_sign: | N/A | +| `mcp_breakdown_response` | [Optional[models.McpBreakdownInsightsResponse]](../models/mcpbreakdowninsightsresponse.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/insightssearchsummary.md b/docs/models/insightssearchsummary.md index d527f436..940085a0 100644 --- a/docs/models/insightssearchsummary.md +++ b/docs/models/insightssearchsummary.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | -| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users, in the specified departments. | -| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users, in the specified departments. | +| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users. | +| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users. | | `num_searches` | *Optional[int]* | :heavy_minus_sign: | Total number of searches by users over the specified time period. | | `num_search_users` | *Optional[int]* | :heavy_minus_sign: | Total number of distinct users who searched over the specified time period. | \ No newline at end of file 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..42033090 100644 --- a/docs/models/issue.md +++ b/docs/models/issue.md @@ -1,18 +1,30 @@ # Issue +## Example Usage + +```python +from glean.api_client.models import Issue + +value = Issue.AGENT_CANVAS_FAILED +``` + ## Values -| Name | Value | -| -------------------------- | -------------------------- | -| `INACCURATE_RESPONSE` | INACCURATE_RESPONSE | -| `INCOMPLETE_OR_NO_ANSWER` | INCOMPLETE_OR_NO_ANSWER | -| `INCORRECT_CITATION` | INCORRECT_CITATION | -| `MISSING_CITATION` | MISSING_CITATION | -| `OTHER` | OTHER | -| `OUTDATED_RESPONSE` | OUTDATED_RESPONSE | -| `RESULT_MISSING` | RESULT_MISSING | -| `RESULT_SHOULD_NOT_APPEAR` | RESULT_SHOULD_NOT_APPEAR | -| `RESULTS_HELPFUL` | RESULTS_HELPFUL | -| `RESULTS_POOR_ORDER` | RESULTS_POOR_ORDER | -| `TOO_MUCH_ONE_KIND` | TOO_MUCH_ONE_KIND | \ No newline at end of file +| Name | Value | +| --------------------------------- | --------------------------------- | +| `AGENT_CANVAS_FAILED` | AGENT_CANVAS_FAILED | +| `AGENT_CLARIFYING_QUESTIONS` | AGENT_CLARIFYING_QUESTIONS | +| `AGENT_INTERMEDIATE_STEPS_FAILED` | AGENT_INTERMEDIATE_STEPS_FAILED | +| `AGENT_TOOL_CALL_FAILED` | AGENT_TOOL_CALL_FAILED | +| `INACCURATE_RESPONSE` | INACCURATE_RESPONSE | +| `INCOMPLETE_OR_NO_ANSWER` | INCOMPLETE_OR_NO_ANSWER | +| `INCORRECT_CITATION` | INCORRECT_CITATION | +| `MISSING_CITATION` | MISSING_CITATION | +| `OTHER` | OTHER | +| `OUTDATED_RESPONSE` | OUTDATED_RESPONSE | +| `RESULT_MISSING` | RESULT_MISSING | +| `RESULT_SHOULD_NOT_APPEAR` | RESULT_SHOULD_NOT_APPEAR | +| `RESULTS_HELPFUL` | RESULTS_HELPFUL | +| `RESULTS_POOR_ORDER` | RESULTS_POOR_ORDER | +| `TOO_MUCH_ONE_KIND` | TOO_MUCH_ONE_KIND | \ No newline at end of file diff --git a/docs/models/justificationtype.md b/docs/models/justificationtype.md index 4bcceecf..adf5b69b 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 @@ -40,4 +50,24 @@ Type of the justification. | `ZERO_STATE_STATIC_WORKFLOW_SUGGESTION` | ZERO_STATE_STATIC_WORKFLOW_SUGGESTION | | `ZERO_STATE_AGENT_SUGGESTION` | ZERO_STATE_AGENT_SUGGESTION | | `PERSONALIZED_CHAT_SUGGESTION` | PERSONALIZED_CHAT_SUGGESTION | -| `DAILY_DIGEST` | DAILY_DIGEST | \ No newline at end of file +| `DAILY_DIGEST` | DAILY_DIGEST | +| `TASK` | TASK | +| `PLAN_MY_DAY` | PLAN_MY_DAY | +| `END_MY_DAY` | END_MY_DAY | +| `STARTER_KIT_EXTENSION` | STARTER_KIT_EXTENSION | +| `STARTER_KIT_ORG_CHART` | STARTER_KIT_ORG_CHART | +| `STARTER_KIT_ADD_DOC` | STARTER_KIT_ADD_DOC | +| `MEETING_RECAP` | MEETING_RECAP | +| `ACTIVE_DISCUSSION` | ACTIVE_DISCUSSION | +| `MID_DAY_CATCH_UP` | MID_DAY_CATCH_UP | +| `QUERY_SUGGESTION` | QUERY_SUGGESTION | +| `COWORK_CUJ_PROMO` | COWORK_CUJ_PROMO | +| `WEEKLY_MEETINGS` | WEEKLY_MEETINGS | +| `FOLLOW_UP` | FOLLOW_UP | +| `MILESTONE_TIMELINE_CHECK` | MILESTONE_TIMELINE_CHECK | +| `PROJECT_DISCUSSION_DIGEST` | PROJECT_DISCUSSION_DIGEST | +| `PROJECT_FOCUS_BLOCK` | PROJECT_FOCUS_BLOCK | +| `PROJECT_NEXT_STEP` | PROJECT_NEXT_STEP | +| `DEMO_CARD` | DEMO_CARD | +| `OOO_PLANNER` | OOO_PLANNER | +| `OOO_CATCH_UP` | OOO_CATCH_UP | \ No newline at end of file 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/lifecycleevent.md b/docs/models/lifecycleevent.md new file mode 100644 index 00000000..4f9776b7 --- /dev/null +++ b/docs/models/lifecycleevent.md @@ -0,0 +1,9 @@ +# LifeCycleEvent + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `event` | [Optional[models.LifeCycleEventEvent]](../models/lifecycleeventevent.md) | :heavy_minus_sign: | Type of event | INDEXED | +| `timestamp` | *Optional[str]* | :heavy_minus_sign: | Timestamp of the event | 2021-08-06T17:58:01.000Z | \ No newline at end of file diff --git a/docs/models/lifecycleeventevent.md b/docs/models/lifecycleeventevent.md new file mode 100644 index 00000000..29e4fb1a --- /dev/null +++ b/docs/models/lifecycleeventevent.md @@ -0,0 +1,23 @@ +# LifeCycleEventEvent + +Type of event + +## Example Usage + +```python +from glean.api_client.models import LifeCycleEventEvent + +value = LifeCycleEventEvent.UPLOADED + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| -------------------- | -------------------- | +| `UPLOADED` | UPLOADED | +| `INDEXED` | INDEXED | +| `DELETION_REQUESTED` | DELETION_REQUESTED | +| `DELETED` | DELETED | \ No newline at end of file diff --git a/docs/models/likelihoodthreshold.md b/docs/models/likelihoodthreshold.md deleted file mode 100644 index 81a5bd2e..00000000 --- a/docs/models/likelihoodthreshold.md +++ /dev/null @@ -1,14 +0,0 @@ -# ~~LikelihoodThreshold~~ - -> :warning: **DEPRECATED**: This will be removed in a future release, please migrate away from it as soon as possible. - - -## Values - -| Name | Value | -| --------------- | --------------- | -| `LIKELY` | LIKELY | -| `VERY_LIKELY` | VERY_LIKELY | -| `POSSIBLE` | POSSIBLE | -| `UNLIKELY` | UNLIKELY | -| `VERY_UNLIKELY` | VERY_UNLIKELY | \ No newline at end of file diff --git a/docs/models/listanswersrequestrequest.md b/docs/models/listanswersrequestrequest.md new file mode 100644 index 00000000..cbe66c04 --- /dev/null +++ b/docs/models/listanswersrequestrequest.md @@ -0,0 +1,9 @@ +# ListanswersRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `list_answers_request` | [models.ListAnswersRequest](../models/listanswersrequest.md) | :heavy_check_mark: | ListAnswers request | \ No newline at end of file diff --git a/docs/models/listchatsrequest.md b/docs/models/listchatsrequest.md index 2b5b4b0e..9a0d7259 100644 --- a/docs/models/listchatsrequest.md +++ b/docs/models/listchatsrequest.md @@ -3,6 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | \ No newline at end of file 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/listcollectionsrequestrequest.md b/docs/models/listcollectionsrequestrequest.md new file mode 100644 index 00000000..1ccd21f3 --- /dev/null +++ b/docs/models/listcollectionsrequestrequest.md @@ -0,0 +1,9 @@ +# ListcollectionsRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `list_collections_request` | [models.ListCollectionsRequest](../models/listcollectionsrequest.md) | :heavy_check_mark: | ListCollections request | \ No newline at end of file diff --git a/docs/models/listdlpfindingsexportsresponse.md b/docs/models/listdlpfindingsexportsresponse.md new file mode 100644 index 00000000..c5f7958e --- /dev/null +++ b/docs/models/listdlpfindingsexportsresponse.md @@ -0,0 +1,8 @@ +# ListDlpFindingsExportsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | +| `exports` | List[[models.ExportInfo](../models/exportinfo.md)] | :heavy_minus_sign: | N/A | \ 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/listentitiesrequestrequest.md b/docs/models/listentitiesrequestrequest.md new file mode 100644 index 00000000..ec6cdd01 --- /dev/null +++ b/docs/models/listentitiesrequestrequest.md @@ -0,0 +1,9 @@ +# ListentitiesRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `list_entities_request` | [models.ListEntitiesRequest](../models/listentitiesrequest.md) | :heavy_check_mark: | List people request | \ No newline at end of file diff --git a/docs/models/listpinsrequest.md b/docs/models/listpinsrequest.md index 4c0c3889..49bbce57 100644 --- a/docs/models/listpinsrequest.md +++ b/docs/models/listpinsrequest.md @@ -1,9 +1,9 @@ # ListpinsRequest -List pins request - ## Fields -| Field | Type | Required | Description | -| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `request_body` | [models.ListpinsRequestBody](../models/listpinsrequestbody.md) | :heavy_check_mark: | List pins request | \ No newline at end of file diff --git a/docs/models/listpinsrequestbody.md b/docs/models/listpinsrequestbody.md new file mode 100644 index 00000000..ad2e4cbd --- /dev/null +++ b/docs/models/listpinsrequestbody.md @@ -0,0 +1,9 @@ +# ListpinsRequestBody + +List pins request + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file 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/listshortcutsrequest.md b/docs/models/listshortcutsrequest.md new file mode 100644 index 00000000..5ddc952c --- /dev/null +++ b/docs/models/listshortcutsrequest.md @@ -0,0 +1,9 @@ +# ListshortcutsRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `list_shortcuts_paginated_request` | [models.ListShortcutsPaginatedRequest](../models/listshortcutspaginatedrequest.md) | :heavy_check_mark: | Filters, sorters, paging params required for pagination | \ No newline at end of file diff --git a/docs/models/listverificationsrequest.md b/docs/models/listverificationsrequest.md index 6852a725..320d1323 100644 --- a/docs/models/listverificationsrequest.md +++ b/docs/models/listverificationsrequest.md @@ -3,6 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | -| `count` | *Optional[int]* | :heavy_minus_sign: | Maximum number of documents to return | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `count` | *Optional[int]* | :heavy_minus_sign: | Maximum number of documents to return | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | \ No newline at end of file diff --git a/docs/models/manualfeedbackinfosource.md b/docs/models/manualfeedbackinfosource.md index 04f11e1b..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 @@ -27,4 +35,5 @@ The source associated with the Feedback.event.MANUAL_FEEDBACK event. | `SEARCH` | SEARCH | | `SIDEBAR` | SIDEBAR | | `SUMMARY` | SUMMARY | -| `TASKS` | TASKS | \ No newline at end of file +| `TASKS` | TASKS | +| `TASK_EXECUTION` | TASK_EXECUTION | \ No newline at end of file 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/mcpbreakdowninsightsrequest.md b/docs/models/mcpbreakdowninsightsrequest.md new file mode 100644 index 00000000..dfc79947 --- /dev/null +++ b/docs/models/mcpbreakdowninsightsrequest.md @@ -0,0 +1,15 @@ +# McpBreakdownInsightsRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `departments` | List[*str*] | :heavy_minus_sign: | Departments for which Insights are requested. | +| `manager_ids` | List[*str*] | :heavy_minus_sign: | Manager user IDs whose teams should be filtered for. Empty array means no filtering. | +| `manager_emails` | List[*str*] | :heavy_minus_sign: | Manager emails whose teams should be filtered for. Empty array means no filtering. | +| `day_range` | [Optional[models.Period]](../models/period.md) | :heavy_minus_sign: | N/A | +| `breakdown_type` | [Optional[models.BreakdownType]](../models/breakdowntype.md) | :heavy_minus_sign: | Type of breakdown to return. | +| `host_applications` | List[*str*] | :heavy_minus_sign: | Host applications to filter by. Empty array means all host applications. | +| `tools` | List[*str*] | :heavy_minus_sign: | MCP tools to filter by. Empty array means all tools. | +| `servers` | List[*str*] | :heavy_minus_sign: | MCP servers to filter by. Empty array means all servers. | \ No newline at end of file diff --git a/docs/models/mcpbreakdowninsightsresponse.md b/docs/models/mcpbreakdowninsightsresponse.md new file mode 100644 index 00000000..94328ff4 --- /dev/null +++ b/docs/models/mcpbreakdowninsightsresponse.md @@ -0,0 +1,11 @@ +# McpBreakdownInsightsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `users_breakdown` | List[[models.McpUserBreakdown](../models/mcpuserbreakdown.md)] | :heavy_minus_sign: | N/A | +| `host_applications_breakdown` | List[[models.McpHostApplicationBreakdown](../models/mcphostapplicationbreakdown.md)] | :heavy_minus_sign: | N/A | +| `tools_breakdown` | List[[models.McpToolBreakdown](../models/mcptoolbreakdown.md)] | :heavy_minus_sign: | N/A | +| `servers_breakdown` | List[[models.McpServerBreakdown](../models/mcpserverbreakdown.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/mcphostapplicationbreakdown.md b/docs/models/mcphostapplicationbreakdown.md new file mode 100644 index 00000000..22ebec84 --- /dev/null +++ b/docs/models/mcphostapplicationbreakdown.md @@ -0,0 +1,10 @@ +# McpHostApplicationBreakdown + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| `host_application` | *Optional[str]* | :heavy_minus_sign: | Host application name. | +| `total_calls` | *Optional[int]* | :heavy_minus_sign: | Total number of MCP calls made from this host application in the specified time period. | +| `active_users` | *Optional[int]* | :heavy_minus_sign: | Total number of active users from this host application in the specified time period. | \ No newline at end of file diff --git a/docs/models/mcpinsightsrequest.md b/docs/models/mcpinsightsrequest.md new file mode 100644 index 00000000..dbf8e029 --- /dev/null +++ b/docs/models/mcpinsightsrequest.md @@ -0,0 +1,11 @@ +# McpInsightsRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `departments` | List[*str*] | :heavy_minus_sign: | Departments for which Insights are requested. | +| `manager_ids` | List[*str*] | :heavy_minus_sign: | Manager user IDs whose teams should be filtered for. Empty array means no filtering. | +| `manager_emails` | List[*str*] | :heavy_minus_sign: | Manager emails whose teams should be filtered for. Empty array means no filtering. | +| `day_range` | [Optional[models.Period]](../models/period.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/mcpinsightsresponse.md b/docs/models/mcpinsightsresponse.md new file mode 100644 index 00000000..f52735b7 --- /dev/null +++ b/docs/models/mcpinsightsresponse.md @@ -0,0 +1,15 @@ +# McpInsightsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `monthly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Monthly Active Users. | +| `weekly_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Weekly Active Users. | +| `daily_active_users` | *Optional[int]* | :heavy_minus_sign: | Number of current Daily Active Users. | +| `monthly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `weekly_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `overall_daily_active_user_timeseries` | [Optional[models.LabeledCountInfo]](../models/labeledcountinfo.md) | :heavy_minus_sign: | N/A | +| `top_host_applications_active_user_timeseries` | List[[models.LabeledCountInfo](../models/labeledcountinfo.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/mcpserverbreakdown.md b/docs/models/mcpserverbreakdown.md new file mode 100644 index 00000000..d69d4ca3 --- /dev/null +++ b/docs/models/mcpserverbreakdown.md @@ -0,0 +1,11 @@ +# McpServerBreakdown + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `server` | *Optional[str]* | :heavy_minus_sign: | MCP server name. | +| `total_calls` | *Optional[int]* | :heavy_minus_sign: | Total number of MCP calls for this server in the specified time period. | +| `active_users` | *Optional[int]* | :heavy_minus_sign: | Total number of active users for this server in the specified time period. | +| `host_applications` | List[*str*] | :heavy_minus_sign: | Host applications using this server in the specified time period. | \ No newline at end of file diff --git a/docs/models/mcptoolbreakdown.md b/docs/models/mcptoolbreakdown.md new file mode 100644 index 00000000..8eade300 --- /dev/null +++ b/docs/models/mcptoolbreakdown.md @@ -0,0 +1,11 @@ +# McpToolBreakdown + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `tool` | *Optional[str]* | :heavy_minus_sign: | MCP tool name. | +| `total_calls` | *Optional[int]* | :heavy_minus_sign: | Total number of MCP calls for this tool in the specified time period. | +| `active_users` | *Optional[int]* | :heavy_minus_sign: | Total number of active users for this tool in the specified time period. | +| `host_applications` | List[*str*] | :heavy_minus_sign: | Host applications using this tool in the specified time period. | \ No newline at end of file diff --git a/docs/models/mcpuserbreakdown.md b/docs/models/mcpuserbreakdown.md new file mode 100644 index 00000000..1c4e22ef --- /dev/null +++ b/docs/models/mcpuserbreakdown.md @@ -0,0 +1,12 @@ +# McpUserBreakdown + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `person` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | +| `total_calls` | *Optional[int]* | :heavy_minus_sign: | Total number of MCP calls made by this user in the specified time period. | | +| `host_applications` | List[*str*] | :heavy_minus_sign: | Host applications used by this user in the specified time period. | | +| `tools` | List[*str*] | :heavy_minus_sign: | MCP tools used by this user in the specified time period. | | +| `servers` | List[*str*] | :heavy_minus_sign: | MCP servers used by this user in the specified time period. | | \ No newline at end of file diff --git a/docs/models/meeting.md b/docs/models/meeting.md index 80770e91..977c94c1 100644 --- a/docs/models/meeting.md +++ b/docs/models/meeting.md @@ -3,12 +3,17 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `description` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `url` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `start_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | -| `end_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | -| `attendees` | [Optional[models.CalendarAttendees]](../models/calendarattendees.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `description` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `url` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `start_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | +| `end_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | +| `attendees` | [Optional[models.CalendarAttendees]](../models/calendarattendees.md) | :heavy_minus_sign: | N/A | +| `is_cancelled` | *Optional[bool]* | :heavy_minus_sign: | Whether the meeting has been cancelled | +| `location` | *Optional[str]* | :heavy_minus_sign: | The location/venue of the meeting | +| `response_status` | *Optional[str]* | :heavy_minus_sign: | The current user's response status (accepted, declined, tentativelyAccepted, none) | +| `conference_uri` | *Optional[str]* | :heavy_minus_sign: | The meeting join link (Teams, Zoom, etc.) | +| `conference_provider` | *Optional[str]* | :heavy_minus_sign: | The conference provider (e.g., "Microsoft Teams", "Zoom") | \ No newline at end of file diff --git a/docs/models/messagesrequestrequest.md b/docs/models/messagesrequestrequest.md new file mode 100644 index 00000000..8acae398 --- /dev/null +++ b/docs/models/messagesrequestrequest.md @@ -0,0 +1,9 @@ +# MessagesRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `messages_request` | [models.MessagesRequest](../models/messagesrequest.md) | :heavy_check_mark: | Includes request params such as the id for channel/message and direction. | \ No newline at end of file diff --git a/docs/models/messagetype.md b/docs/models/messagetype.md index bbaf0ff5..8f91442a 100644 --- a/docs/models/messagetype.md +++ b/docs/models/messagetype.md @@ -2,17 +2,33 @@ 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 -| Name | Value | -| ---------------- | ---------------- | -| `UPDATE` | UPDATE | -| `CONTENT` | CONTENT | -| `CONTEXT` | CONTEXT | -| `DEBUG` | DEBUG | -| `DEBUG_EXTERNAL` | DEBUG_EXTERNAL | -| `ERROR` | ERROR | -| `HEADING` | HEADING | -| `WARNING` | WARNING | -| `SERVER_TOOL` | SERVER_TOOL | \ No newline at end of file +| Name | Value | +| ----------------- | ----------------- | +| `UPDATE` | UPDATE | +| `CONTENT` | CONTENT | +| `CONTEXT` | CONTEXT | +| `CONTROL` | CONTROL | +| `CONTROL_START` | CONTROL_START | +| `CONTROL_FINISH` | CONTROL_FINISH | +| `CONTROL_CANCEL` | CONTROL_CANCEL | +| `CONTROL_RETRY` | CONTROL_RETRY | +| `CONTROL_UNKNOWN` | CONTROL_UNKNOWN | +| `DEBUG` | DEBUG | +| `DEBUG_EXTERNAL` | DEBUG_EXTERNAL | +| `ERROR` | ERROR | +| `HEADING` | HEADING | +| `WARNING` | WARNING | +| `SERVER_TOOL` | SERVER_TOOL | \ No newline at end of file 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/peoplerequestrequest.md b/docs/models/peoplerequestrequest.md new file mode 100644 index 00000000..a7ddc183 --- /dev/null +++ b/docs/models/peoplerequestrequest.md @@ -0,0 +1,9 @@ +# PeopleRequestRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | | +| `people_request` | [models.PeopleRequest](../models/peoplerequest.md) | :heavy_check_mark: | People request | {
"obfuscatedIds": [
"abc123",
"abc456"
]
} | \ No newline at end of file diff --git a/docs/models/peragentinsight.md b/docs/models/peragentinsight.md index 8e12e9f5..c8b05348 100644 --- a/docs/models/peragentinsight.md +++ b/docs/models/peragentinsight.md @@ -12,4 +12,5 @@ | `user_count` | *Optional[int]* | :heavy_minus_sign: | Total number of users for this agent over the specified time period. | | | `run_count` | *Optional[int]* | :heavy_minus_sign: | Total number of runs for this agent over the specified time period. | | | `upvote_count` | *Optional[int]* | :heavy_minus_sign: | Total number of upvotes for this agent over the specified time period. | | -| `downvote_count` | *Optional[int]* | :heavy_minus_sign: | Total number of downvotes for this agent over the specified time period. | | \ No newline at end of file +| `downvote_count` | *Optional[int]* | :heavy_minus_sign: | Total number of downvotes for this agent over the specified time period. | | +| `owner` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | \ No newline at end of file diff --git a/docs/models/personmetadata.md b/docs/models/personmetadata.md index 5591311f..3bf2f124 100644 --- a/docs/models/personmetadata.md +++ b/docs/models/personmetadata.md @@ -23,6 +23,7 @@ | `phone` | *Optional[str]* | :heavy_minus_sign: | Phone number as a number string. | | | `timezone` | *Optional[str]* | :heavy_minus_sign: | The timezone of the person. E.g. "Pacific Daylight Time". | | | `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the person's timezone in seconds from UTC. | | +| `timezone_iana` | *Optional[str]* | :heavy_minus_sign: | The IANA timezone identifier, e.g. "America/Los_Angeles". | | | `photo_url` | *Optional[str]* | :heavy_minus_sign: | The URL of the person's avatar. Public, glean-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). | | | `unedited_photo_url` | *Optional[str]* | :heavy_minus_sign: | The original photo URL of the person's avatar before any edits they made are applied | | | `banner_url` | *Optional[str]* | :heavy_minus_sign: | The URL of the person's banner photo. | | 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/peruserinsight.md b/docs/models/peruserinsight.md index 35bdd010..623d8c42 100644 --- a/docs/models/peruserinsight.md +++ b/docs/models/peruserinsight.md @@ -10,4 +10,8 @@ | `num_chats` | *Optional[int]* | :heavy_minus_sign: | Total number of chats by this user over the specified time period. | | | `num_active_sessions` | *Optional[int]* | :heavy_minus_sign: | Total number of active sessions by this user in a Glean client over the specified time period. | | | `num_gleanbot_useful_responses` | *Optional[int]* | :heavy_minus_sign: | Total number of Gleanbot responses marked useful by this user over the specified time period. | | -| `num_days_active` | *Optional[int]* | :heavy_minus_sign: | Total number of days this user was an Active User over the specified time period. | | \ No newline at end of file +| `num_days_active` | *Optional[int]* | :heavy_minus_sign: | Total number of days this user was an Active User over the specified time period. | | +| `num_summarizations` | *Optional[int]* | :heavy_minus_sign: | Total number of summarized items by this user over the specified time period. | | +| `num_ai_answers` | *Optional[int]* | :heavy_minus_sign: | Total number of AI Answers interacted with by this user over the specified time period. | | +| `num_agent_runs` | *Optional[int]* | :heavy_minus_sign: | Total number of agent runs for this user over the specified time period. | | +| `num_mcp_calls` | *Optional[int]* | :heavy_minus_sign: | Total number of MCP calls for this user over the specified time period. | | \ No newline at end of file diff --git a/docs/models/pinrequestrequest.md b/docs/models/pinrequestrequest.md new file mode 100644 index 00000000..a24b8b95 --- /dev/null +++ b/docs/models/pinrequestrequest.md @@ -0,0 +1,9 @@ +# PinRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `pin_request` | [models.PinRequest](../models/pinrequest.md) | :heavy_check_mark: | Details about the document and query for the pin. | \ No newline at end of file diff --git a/docs/models/postapiindexv1debugdatasourcedocumenteventsrequest.md b/docs/models/postapiindexv1debugdatasourcedocumenteventsrequest.md new file mode 100644 index 00000000..9f2b3c97 --- /dev/null +++ b/docs/models/postapiindexv1debugdatasourcedocumenteventsrequest.md @@ -0,0 +1,9 @@ +# PostAPIIndexV1DebugDatasourceDocumentEventsRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `datasource` | *str* | :heavy_check_mark: | The datasource to which the document belongs | +| `debug_document_lifecycle_request` | [models.DebugDocumentLifecycleRequest](../models/debugdocumentlifecyclerequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file 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/propertydefinition.md b/docs/models/propertydefinition.md index 9872d4c1..e34ed621 100644 --- a/docs/models/propertydefinition.md +++ b/docs/models/propertydefinition.md @@ -8,7 +8,7 @@ | `name` | *Optional[str]* | :heavy_minus_sign: | The name of the property in the `DocumentMetadata` (e.g. 'createTime', 'updateTime', 'author', 'container'). In the future, this will support custom properties too. | | `display_label` | *Optional[str]* | :heavy_minus_sign: | The user friendly label for the property. | | `display_label_plural` | *Optional[str]* | :heavy_minus_sign: | The user friendly label for the property that will be used if a plural context. | -| `property_type` | [Optional[models.PropertyType]](../models/propertytype.md) | :heavy_minus_sign: | The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported. | +| `property_type` | [Optional[models.PropertyDefinitionPropertyType]](../models/propertydefinitionpropertytype.md) | :heavy_minus_sign: | The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported. | | `ui_options` | [Optional[models.UIOptions]](../models/uioptions.md) | :heavy_minus_sign: | N/A | | `hide_ui_facet` | *Optional[bool]* | :heavy_minus_sign: | If true then the property will not show up as a facet in the UI. | | `ui_facet_order` | *Optional[int]* | :heavy_minus_sign: | Will be used to set the order of facets in the UI, if present. If set for one facet, must be set for all non-hidden UI facets. Must take on an integer value from 1 (shown at the top) to N (shown last), where N is the number of non-hidden UI facets. These facets will be ordered below the built-in "Type" and "Tag" operators. | diff --git a/docs/models/propertytype.md b/docs/models/propertydefinitionpropertytype.md similarity index 66% rename from docs/models/propertytype.md rename to docs/models/propertydefinitionpropertytype.md index 6ec9b3d3..732480e5 100644 --- a/docs/models/propertytype.md +++ b/docs/models/propertydefinitionpropertytype.md @@ -1,7 +1,17 @@ -# PropertyType +# PropertyDefinitionPropertyType 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 PropertyDefinitionPropertyType + +value = PropertyDefinitionPropertyType.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/putrestapiindexcustommetadataschemagroupnamerequest.md b/docs/models/putrestapiindexcustommetadataschemagroupnamerequest.md new file mode 100644 index 00000000..342fa724 --- /dev/null +++ b/docs/models/putrestapiindexcustommetadataschemagroupnamerequest.md @@ -0,0 +1,9 @@ +# PutRestAPIIndexCustomMetadataSchemaGroupNameRequest + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group schema | +| `custom_metadata_schema` | [models.CustomMetadataSchema](../models/custommetadataschema.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/putrestapiindexdocumentdocidcustommetadatagroupnamerequest.md b/docs/models/putrestapiindexdocumentdocidcustommetadatagroupnamerequest.md new file mode 100644 index 00000000..5af8c617 --- /dev/null +++ b/docs/models/putrestapiindexdocumentdocidcustommetadatagroupnamerequest.md @@ -0,0 +1,10 @@ +# PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `doc_id` | *str* | :heavy_check_mark: | Unique Glean identifier of the document | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group as specified while adding schema | +| `custom_metadata_put_request` | [models.CustomMetadataPutRequest](../models/custommetadataputrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/queryinsight.md b/docs/models/queryinsight.md deleted file mode 100644 index 6e9a3cc0..00000000 --- a/docs/models/queryinsight.md +++ /dev/null @@ -1,13 +0,0 @@ -# QueryInsight - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | -| `query` | *str* | :heavy_check_mark: | The query string the information is about. | -| `search_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | -| `searchor_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | -| `search_with_click_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | -| `click_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | -| `similar_queries` | List[[models.QueryInsight](../models/queryinsight.md)] | :heavy_minus_sign: | list of similar queries to current one. | \ No newline at end of file diff --git a/docs/models/queryinsightsresponse.md b/docs/models/queryinsightsresponse.md deleted file mode 100644 index 2780966e..00000000 --- a/docs/models/queryinsightsresponse.md +++ /dev/null @@ -1,12 +0,0 @@ -# QueryInsightsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `last_log_timestamp` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). | -| `query_insights` | List[[models.QueryInsight](../models/queryinsight.md)] | :heavy_minus_sign: | Insights for queries. | -| `low_performing_query_insights` | List[[models.QueryInsight](../models/queryinsight.md)] | :heavy_minus_sign: | Insights for low performing queries without good results. | -| `departments` | List[*str*] | :heavy_minus_sign: | list of departments applicable for queries tab. | -| `min_visitor_threshold` | *Optional[int]* | :heavy_minus_sign: | Min threshold in number of visitors while populating results, otherwise 0. | \ No newline at end of file diff --git a/docs/models/querysuggestion.md b/docs/models/querysuggestion.md index 2a088ba2..ebd5621b 100644 --- a/docs/models/querysuggestion.md +++ b/docs/models/querysuggestion.md @@ -10,6 +10,7 @@ | `search_provider_info` | [Optional[models.SearchProviderInfo]](../models/searchproviderinfo.md) | :heavy_minus_sign: | N/A | {
"name": "Google",
"logo": "https://app.glean.com/images/feather/globe.svg",
"searchLinkUrlTemplate": "https://www.google.com/search?q={query}\u0026hl=en"
} | | `label` | *Optional[str]* | :heavy_minus_sign: | A user-facing description to display for the suggestion. | | | `datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource associated with the suggestion. | | +| `result_tab` | [Optional[models.ResultTab]](../models/resulttab.md) | :heavy_minus_sign: | N/A | | | `request_options` | [Optional[models.SearchRequestOptions]](../models/searchrequestoptions.md) | :heavy_minus_sign: | N/A | {
"datasourceFilter": "JIRA",
"datasourcesFilter": [
"JIRA"
],
"queryOverridesFacetFilters": true,
"facetFilters": [
{
"fieldName": "fieldName",
"values": [
"fieldValues",
"fieldValues"
]
},
{
"fieldName": "fieldName",
"values": [
"fieldValues",
"fieldValues"
]
}
]
} | | `ranges` | List[[models.TextRange](../models/textrange.md)] | :heavy_minus_sign: | The bolded ranges within the query of the QuerySuggestion. | | | `input_details` | [Optional[models.SearchRequestInputDetails]](../models/searchrequestinputdetails.md) | :heavy_minus_sign: | N/A | {
"hasCopyPaste": true
} | \ No newline at end of file diff --git a/docs/models/recommendationsrequestrequest.md b/docs/models/recommendationsrequestrequest.md new file mode 100644 index 00000000..763a6dba --- /dev/null +++ b/docs/models/recommendationsrequestrequest.md @@ -0,0 +1,9 @@ +# RecommendationsRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `recommendations_request` | [models.RecommendationsRequest](../models/recommendationsrequest.md) | :heavy_check_mark: | Recommendations request | \ No newline at end of file diff --git a/docs/models/relateddocuments.md b/docs/models/relateddocuments.md index 62296266..0002a5a9 100644 --- a/docs/models/relateddocuments.md +++ b/docs/models/relateddocuments.md @@ -3,10 +3,10 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `relation` | [Optional[models.Relation]](../models/relation.md) | :heavy_minus_sign: | How this document relates to the including entity. | | -| `associated_entity_id` | *Optional[str]* | :heavy_minus_sign: | Which entity in the response that this entity relates to. Relevant when there are multiple entities associated with the response (such as merged customers) | | -| `query_suggestion` | [Optional[models.QuerySuggestion]](../models/querysuggestion.md) | :heavy_minus_sign: | N/A | {
"query": "app:github type:pull author:mortimer",
"label": "Mortimer's PRs",
"datasource": "github"
} | -| ~~`documents`~~ | List[[models.Document](../models/document.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

A truncated list of documents with this relation. TO BE DEPRECATED. | | -| `results` | List[[models.SearchResult](../models/searchresult.md)] | :heavy_minus_sign: | A truncated list of documents associated with this relation. To be used in favor of `documents` because it contains a trackingToken. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `relation` | [Optional[models.Relation]](../models/relation.md) | :heavy_minus_sign: | How this document relates to the including entity. | | +| `associated_entity_id` | *Optional[str]* | :heavy_minus_sign: | Which entity in the response that this entity relates to. Relevant when there are multiple entities associated with the response (such as merged customers) | | +| `query_suggestion` | [Optional[models.QuerySuggestion]](../models/querysuggestion.md) | :heavy_minus_sign: | N/A | {
"query": "app:github type:pull author:mortimer",
"label": "Mortimer's PRs",
"datasource": "github"
} | +| ~~`documents`~~ | List[[models.Document](../models/document.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated.

A truncated list of documents with this relation. TO BE DEPRECATED. | | +| `results` | List[[models.SearchResult](../models/searchresult.md)] | :heavy_minus_sign: | A truncated list of documents associated with this relation. To be used in favor of `documents` because it contains a trackingToken. | | \ No newline at end of file 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 3a788dbf..f039c916 100644 --- a/docs/models/role.md +++ b/docs/models/role.md @@ -2,7 +2,17 @@ DEPRECATED - use permissions instead. Viewer's role on the specific document. -> :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-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/rotatedatasourcecredentialsrequest.md b/docs/models/rotatedatasourcecredentialsrequest.md new file mode 100644 index 00000000..2074cc10 --- /dev/null +++ b/docs/models/rotatedatasourcecredentialsrequest.md @@ -0,0 +1,12 @@ +# RotateDatasourceCredentialsRequest + +Request to rotate the credentials used by a datasource instance. Replaces the active credential material with the supplied values. +`credentials.values` must contain only keys recognized as credential material for the datasource type (for example `clientSecret` for OAuth, `apiToken` for API-token auth, `privateKey` for certificate auth). Unrecognized keys, or keys that correspond to non-credential configuration, cause a 400; use the configure endpoint to change non-credential config. + + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `credentials` | [models.DatasourceInstanceConfiguration](../models/datasourceinstanceconfiguration.md) | :heavy_check_mark: | Configuration for a datasource instance | \ No newline at end of file diff --git a/docs/models/rotatedatasourcecredentialsrequestrequest.md b/docs/models/rotatedatasourcecredentialsrequestrequest.md new file mode 100644 index 00000000..4a176545 --- /dev/null +++ b/docs/models/rotatedatasourcecredentialsrequestrequest.md @@ -0,0 +1,9 @@ +# RotateDatasourceCredentialsRequestRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `datasource_instance_id` | *str* | :heavy_check_mark: | The full datasource instance identifier (e.g. o365sharepoint_abc123) | o365sharepoint_abc123 | +| `rotate_datasource_credentials_request` | [models.RotateDatasourceCredentialsRequest](../models/rotatedatasourcecredentialsrequest.md) | :heavy_check_mark: | N/A | | \ No newline at end of file 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/searchrequestrequest.md b/docs/models/searchrequestrequest.md new file mode 100644 index 00000000..79efc8a7 --- /dev/null +++ b/docs/models/searchrequestrequest.md @@ -0,0 +1,9 @@ +# SearchRequestRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | | +| `search_request` | [models.SearchRequest](../models/searchrequest.md) | :heavy_check_mark: | Search request | {
"trackingToken": "trackingToken",
"query": "vacation policy",
"pageSize": 10,
"requestOptions": {
"facetFilters": [
{
"fieldName": "type",
"values": [
{
"value": "article",
"relationType": "EQUALS"
},
{
"value": "document",
"relationType": "EQUALS"
}
]
},
{
"fieldName": "department",
"values": [
{
"value": "engineering",
"relationType": "EQUALS"
}
]
}
]
}
} | \ No newline at end of file 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/sensitivecontentoptions.md b/docs/models/sensitivecontentoptions.md index 3df874d1..f0eae79c 100644 --- a/docs/models/sensitivecontentoptions.md +++ b/docs/models/sensitivecontentoptions.md @@ -5,8 +5,9 @@ Options for defining sensitive content within scanned documents. ## Fields -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | -| `sensitive_info_types` | List[[models.SensitiveInfoType](../models/sensitiveinfotype.md)] | :heavy_minus_sign: | Predefined categories of terms to consider as sensitive content. See https://cloud.google.com/dlp/docs/infotypes-reference for available types. | -| `sensitive_terms` | List[[models.SensitiveExpression](../models/sensitiveexpression.md)] | :heavy_minus_sign: | list of words and phrases to consider as sensitive content | -| `sensitive_regexes` | List[[models.SensitiveExpression](../models/sensitiveexpression.md)] | :heavy_minus_sign: | list of regular expressions to consider as sensitive content | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ~~`sensitive_info_types`~~ | List[[models.SensitiveInfoType](../models/sensitiveinfotype.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead.

DEPRECATED - use 'customSensitiveExpressions' instead. | +| ~~`sensitive_terms`~~ | List[[models.SensitiveExpression](../models/sensitiveexpression.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead.

DEPRECATED - use 'customSensitiveExpressions' instead. | +| ~~`sensitive_regexes`~~ | List[[models.SensitiveExpression](../models/sensitiveexpression.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead.

DEPRECATED - use 'customSensitiveExpressions' instead. | +| `custom_sensitive_expressions` | List[[models.CustomSensitiveExpression](../models/customsensitiveexpression.md)] | :heavy_minus_sign: | list of custom sensitive expressions to consider as sensitive content | \ No newline at end of file diff --git a/docs/models/sensitiveinfotype.md b/docs/models/sensitiveinfotype.md index 66f89cb1..cce44d49 100644 --- a/docs/models/sensitiveinfotype.md +++ b/docs/models/sensitiveinfotype.md @@ -3,7 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | -| ~~`likelihood_threshold`~~ | [Optional[models.LikelihoodThreshold]](../models/likelihoodthreshold.md) | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible. | -| `info_type` | *Optional[str]* | :heavy_minus_sign: | Text representation of an info-type to scan for. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| ~~`likelihood_threshold`~~ | [Optional[models.SensitiveInfoTypeLikelihoodThreshold]](../models/sensitiveinfotypelikelihoodthreshold.md) | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. | +| `info_type` | *Optional[str]* | :heavy_minus_sign: | Text representation of an info-type to scan for. | \ No newline at end of file diff --git a/docs/models/sensitiveinfotypelikelihoodthreshold.md b/docs/models/sensitiveinfotypelikelihoodthreshold.md new file mode 100644 index 00000000..7f825e04 --- /dev/null +++ b/docs/models/sensitiveinfotypelikelihoodthreshold.md @@ -0,0 +1,24 @@ +# ~~SensitiveInfoTypeLikelihoodThreshold~~ + +> :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 + +| Name | Value | +| --------------- | --------------- | +| `LIKELY` | LIKELY | +| `VERY_LIKELY` | VERY_LIKELY | +| `POSSIBLE` | POSSIBLE | +| `UNLIKELY` | UNLIKELY | +| `VERY_UNLIKELY` | VERY_UNLIKELY | \ No newline at end of file diff --git a/docs/models/sharingoptions.md b/docs/models/sharingoptions.md index 6d419954..fb4801eb 100644 --- a/docs/models/sharingoptions.md +++ b/docs/models/sharingoptions.md @@ -5,13 +5,13 @@ Controls how "shared" a document must be to get picked for scans. ## Fields -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | -| ~~`enabled`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible. | -| `threshold` | *Optional[int]* | :heavy_minus_sign: | The minimum number of users the document is shared with. | -| `threshold_enabled` | *Optional[bool]* | :heavy_minus_sign: | Documents will be filtered based on how many people have access to it. | -| ~~`anyone_with_link_enabled`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible. | -| `anyone_internal_enabled` | *Optional[bool]* | :heavy_minus_sign: | Only users within the organization can access the document. | -| `anonymous_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | Anyone on the internet can access the document. | -| `user_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | Enable user access check | -| `user_ids` | List[*str*] | :heavy_minus_sign: | Any one of the specified users can access the document. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | +| ~~`enabled`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. | +| `threshold` | *Optional[int]* | :heavy_minus_sign: | The minimum number of users the document is shared with. | +| `threshold_enabled` | *Optional[bool]* | :heavy_minus_sign: | Documents will be filtered based on how many people have access to it. | +| ~~`anyone_with_link_enabled`~~ | *Optional[bool]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. | +| `anyone_internal_enabled` | *Optional[bool]* | :heavy_minus_sign: | Only users within the organization can access the document. | +| `anonymous_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | Anyone on the internet can access the document. | +| `user_access_enabled` | *Optional[bool]* | :heavy_minus_sign: | Enable user access check | +| `user_ids` | List[*str*] | :heavy_minus_sign: | Any one of the specified users can access the document. | \ No newline at end of file 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/shortcutinsight.md b/docs/models/shortcutinsight.md deleted file mode 100644 index 6ad32115..00000000 --- a/docs/models/shortcutinsight.md +++ /dev/null @@ -1,10 +0,0 @@ -# ShortcutInsight - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | -| `shortcut` | [models.Shortcut](../models/shortcut.md) | :heavy_check_mark: | N/A | -| `visit_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | -| `visitor_count` | [Optional[models.CountInfo]](../models/countinfo.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/shortcutinsightsresponse.md b/docs/models/shortcutinsightsresponse.md deleted file mode 100644 index 72d1b064..00000000 --- a/docs/models/shortcutinsightsresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# ShortcutInsightsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `last_log_timestamp` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). | -| `shortcut_insights` | List[[models.ShortcutInsight](../models/shortcutinsight.md)] | :heavy_minus_sign: | Insights for shortcuts. | -| `departments` | List[*str*] | :heavy_minus_sign: | list of departments applicable for shortcuts tab. | -| `min_visitor_threshold` | *Optional[int]* | :heavy_minus_sign: | Min threshold in number of visitors while populating results, otherwise 0. | \ No newline at end of file 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/structuredresult.md b/docs/models/structuredresult.md index 1c1798de..3291d8df 100644 --- a/docs/models/structuredresult.md +++ b/docs/models/structuredresult.md @@ -18,7 +18,6 @@ A single object that can support any object in the work graph. Only a single obj | `meeting` | [Optional[models.Meeting]](../models/meeting.md) | :heavy_minus_sign: | N/A | | | `app` | [Optional[models.AppResult]](../models/appresult.md) | :heavy_minus_sign: | N/A | | | `collection` | [Optional[models.Collection]](../models/collection.md) | :heavy_minus_sign: | N/A | | -| `answer_board` | [Optional[models.AnswerBoard]](../models/answerboard.md) | :heavy_minus_sign: | N/A | | | `code` | [Optional[models.Code]](../models/code.md) | :heavy_minus_sign: | N/A | {
"repoName": "scio",
"fileName": "README.md",
"matches": [
{
"lineNumber": 1,
"content": "Welcome to the beginning",
"ranges": []
},
{
"lineNumber": 2,
"content": "Second line of the file",
"ranges": []
},
{
"lineNumber": 3,
"content": "hello world hello world",
"ranges": [
{
"startindex": 0,
"endIndex": 5
},
{
"startIndex": 12,
"endIndex": 17
}
]
}
]
} | | `shortcut` | [Optional[models.Shortcut]](../models/shortcut.md) | :heavy_minus_sign: | N/A | | | `query_suggestions` | [Optional[models.QuerySuggestionList]](../models/querysuggestionlist.md) | :heavy_minus_sign: | N/A | | diff --git a/docs/models/structuredresultsource.md b/docs/models/structuredresultsource.md index 3fe738ea..75ce2720 100644 --- a/docs/models/structuredresultsource.md +++ b/docs/models/structuredresultsource.md @@ -2,10 +2,22 @@ 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 | Name | Value | | ------------------ | ------------------ | | `EXPERT_DETECTION` | EXPERT_DETECTION | -| `ENTITY_NLQ` | ENTITY_NLQ | \ No newline at end of file +| `ENTITY_NLQ` | ENTITY_NLQ | +| `CALENDAR_EVENT` | CALENDAR_EVENT | +| `AGENT` | AGENT | \ No newline at end of file diff --git a/docs/models/successresponse.md b/docs/models/successresponse.md new file mode 100644 index 00000000..16f7627a --- /dev/null +++ b/docs/models/successresponse.md @@ -0,0 +1,10 @@ +# SuccessResponse + +Success response for custom metadata operations + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | +| `success` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the operation was successful | \ No newline at end of file diff --git a/docs/models/summarizerequestrequest.md b/docs/models/summarizerequestrequest.md new file mode 100644 index 00000000..e4f7d496 --- /dev/null +++ b/docs/models/summarizerequestrequest.md @@ -0,0 +1,9 @@ +# SummarizeRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `summarize_request` | [models.SummarizeRequest](../models/summarizerequest.md) | :heavy_check_mark: | Includes request params such as the query and specs of the documents to summarize. | \ No newline at end of file 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/timepoint.md b/docs/models/timepoint.md index ce76aa4f..e187bd0d 100644 --- a/docs/models/timepoint.md +++ b/docs/models/timepoint.md @@ -3,7 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `epoch_seconds` | *Optional[int]* | :heavy_minus_sign: | Epoch seconds. Has precedence over daysFromNow. | -| `days_from_now` | *Optional[int]* | :heavy_minus_sign: | The number of days from now. Specification relative to current time. Can be negative. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | +| `epoch_seconds` | *Optional[int]* | :heavy_minus_sign: | Epoch seconds. Has precedence over daysFromNow. | +| `days_from_now` | *Optional[int]* | :heavy_minus_sign: | Number of days in the past, relative to the current date. | \ No newline at end of file diff --git a/docs/models/timerangefilter.md b/docs/models/timerangefilter.md new file mode 100644 index 00000000..df34cde7 --- /dev/null +++ b/docs/models/timerangefilter.md @@ -0,0 +1,9 @@ +# TimeRangeFilter + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `time_period_type` | [Optional[models.TimeRangeFilterTimePeriodType]](../models/timerangefiltertimeperiodtype.md) | :heavy_minus_sign: | The type of time period for which to filter findings. | +| `custom_time_range` | [Optional[models.TimeRange]](../models/timerange.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/timerangefiltertimeperiodtype.md b/docs/models/timerangefiltertimeperiodtype.md new file mode 100644 index 00000000..64f1bba3 --- /dev/null +++ b/docs/models/timerangefiltertimeperiodtype.md @@ -0,0 +1,24 @@ +# TimeRangeFilterTimePeriodType + +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 + +| Name | Value | +| ------------ | ------------ | +| `PAST_DAY` | PAST_DAY | +| `PAST_WEEK` | PAST_WEEK | +| `PAST_MONTH` | PAST_MONTH | +| `PAST_YEAR` | PAST_YEAR | +| `CUSTOM` | CUSTOM | \ No newline at end of file diff --git a/docs/models/tokenendpointauthmethod.md b/docs/models/tokenendpointauthmethod.md new file mode 100644 index 00000000..292a955a --- /dev/null +++ b/docs/models/tokenendpointauthmethod.md @@ -0,0 +1,22 @@ +# TokenEndpointAuthMethod + +The OAuth 2.0 token endpoint authentication method (RFC 7591). Determines how the client authenticates when exchanging an authorization code for a token. client_secret_post sends credentials as form fields, client_secret_basic sends them via Authorization header, none omits client secret and relies on PKCE only. Values use lowercase to match the OAuth 2.0 wire format (RFC 7591 Section 2). + +## Example Usage + +```python +from glean.api_client.models import TokenEndpointAuthMethod + +value = TokenEndpointAuthMethod.CLIENT_SECRET_POST + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| --------------------- | --------------------- | +| `CLIENT_SECRET_POST` | client_secret_post | +| `CLIENT_SECRET_BASIC` | client_secret_basic | +| `NONE` | none | \ No newline at end of file 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 252dc1e7..6eb0e284 100644 --- a/docs/models/ugctype.md +++ b/docs/models/ugctype.md @@ -1,13 +1,37 @@ # UgcType +## Example Usage + +```python +from glean.api_client.models import UgcType + +value = UgcType.AGENT_TYPE + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + ## Values | Name | Value | | ----------------------- | ----------------------- | +| `AGENT_TYPE` | AGENT_TYPE | | `ANNOUNCEMENTS_TYPE` | ANNOUNCEMENTS_TYPE | | `ANSWERS_TYPE` | ANSWERS_TYPE | +| `CHATS_TYPE` | CHATS_TYPE | | `COLLECTIONS_TYPE` | COLLECTIONS_TYPE | +| `EMAIL_TYPE` | EMAIL_TYPE | +| `HTML_CODE_TYPE` | HTML_CODE_TYPE | +| `IMAGE_TYPE` | IMAGE_TYPE | +| `MESSAGE_TYPE` | MESSAGE_TYPE | +| `PAPER_TYPE` | PAPER_TYPE | +| `PRISM_VIEWS_TYPE` | PRISM_VIEWS_TYPE | +| `PROMPT_TEMPLATES_TYPE` | PROMPT_TEMPLATES_TYPE | +| `PINS_TYPE` | PINS_TYPE | +| `SCRIBES_TYPE` | SCRIBES_TYPE | | `SHORTCUTS_TYPE` | SHORTCUTS_TYPE | -| `WORKFLOWS_TYPE` | WORKFLOWS_TYPE | -| `PROMPT_TEMPLATES_TYPE` | PROMPT_TEMPLATES_TYPE | \ No newline at end of file +| `SLIDE_TYPE` | SLIDE_TYPE | +| `SPREADSHEET_TYPE` | SPREADSHEET_TYPE | +| `INLINE_HTML_TYPE` | INLINE_HTML_TYPE | +| `PODCAST_TYPE` | PODCAST_TYPE | +| `WORKFLOWS_TYPE` | WORKFLOWS_TYPE | \ No newline at end of file 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/unauthorizeddatasourceinstance.md b/docs/models/unauthorizeddatasourceinstance.md new file mode 100644 index 00000000..4996cf51 --- /dev/null +++ b/docs/models/unauthorizeddatasourceinstance.md @@ -0,0 +1,14 @@ +# UnauthorizedDatasourceInstance + +A datasource instance that could not return results for this request because the user has not completed or has expired per-user OAuth. + + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `datasource_instance` | *Optional[str]* | :heavy_minus_sign: | The instance identifier (e.g. "github", "github_enterprise_0", "slack_0"). Matches the instance names used in datasource configuration.
| slack_0 | +| `display_name` | *Optional[str]* | :heavy_minus_sign: | Human-readable name of the datasource instance for display. | Slack | +| `auth_status` | [Optional[models.AuthStatus]](../models/authstatus.md) | :heavy_minus_sign: | The per-user authorization status for a datasource. | | +| `auth_url_relative_path` | *Optional[str]* | :heavy_minus_sign: | Relative path to initiate or resume OAuth for the current user and instance, including a one-time authentication token as a query parameter. Clients should prepend their configured Glean backend base URL.
| | \ No newline at end of file diff --git a/docs/models/unpinrequest.md b/docs/models/unpinrequest.md new file mode 100644 index 00000000..41084238 --- /dev/null +++ b/docs/models/unpinrequest.md @@ -0,0 +1,9 @@ +# UnpinRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `unpin` | [models.Unpin](../models/unpin.md) | :heavy_check_mark: | Details about the pin being unpinned. | \ No newline at end of file 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/updateannouncementrequestrequest.md b/docs/models/updateannouncementrequestrequest.md new file mode 100644 index 00000000..e08d3f9c --- /dev/null +++ b/docs/models/updateannouncementrequestrequest.md @@ -0,0 +1,9 @@ +# UpdateannouncementRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `update_announcement_request` | [models.UpdateAnnouncementRequest](../models/updateannouncementrequest.md) | :heavy_check_mark: | Announcement content. Id need to be specified for the announcement. | \ No newline at end of file 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/updateshortcutrequestrequest.md b/docs/models/updateshortcutrequestrequest.md new file mode 100644 index 00000000..cf21e686 --- /dev/null +++ b/docs/models/updateshortcutrequestrequest.md @@ -0,0 +1,9 @@ +# UpdateshortcutRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `update_shortcut_request` | [models.UpdateShortcutRequest](../models/updateshortcutrequest.md) | :heavy_check_mark: | Shortcut content. Id need to be specified for the shortcut. | \ 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/uploadchatfilesrequestrequest.md b/docs/models/uploadchatfilesrequestrequest.md index f849ef6b..47ad9ca6 100644 --- a/docs/models/uploadchatfilesrequestrequest.md +++ b/docs/models/uploadchatfilesrequestrequest.md @@ -3,7 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `upload_chat_files_request` | [models.UploadChatFilesRequest](../models/uploadchatfilesrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `upload_chat_files_request` | [models.UploadChatFilesRequest](../models/uploadchatfilesrequest.md) | :heavy_check_mark: | N/A | \ No newline at end of file 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/userinsightsresponse.md b/docs/models/userinsightsresponse.md deleted file mode 100644 index 55e1feea..00000000 --- a/docs/models/userinsightsresponse.md +++ /dev/null @@ -1,13 +0,0 @@ -# UserInsightsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | -| `last_log_timestamp` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). | -| `activity_insights` | List[[models.UserActivityInsight](../models/useractivityinsight.md)] | :heavy_minus_sign: | Insights for all active users with respect to set of actions. | -| `inactive_insights` | List[[models.UserActivityInsight](../models/useractivityinsight.md)] | :heavy_minus_sign: | Insights for all in inactive users with respect to set of actions and time period. Activity count will be set to 0. | -| `total_teammates` | *Optional[int]* | :heavy_minus_sign: | Total number of teammates that have logged in to the product, that are still valid teammates. | -| `total_active_users` | *Optional[int]* | :heavy_minus_sign: | Total number of active users in the requested period. | -| `departments` | List[*str*] | :heavy_minus_sign: | list of departments applicable for users tab. | \ No newline at end of file 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/verifyrequestrequest.md b/docs/models/verifyrequestrequest.md new file mode 100644 index 00000000..8f87704c --- /dev/null +++ b/docs/models/verifyrequestrequest.md @@ -0,0 +1,9 @@ +# VerifyRequestRequest + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `verify_request` | [models.VerifyRequest](../models/verifyrequest.md) | :heavy_check_mark: | Details about the verification request. | \ No newline at end of file diff --git a/docs/models/viewerinfo.md b/docs/models/viewerinfo.md index 17e7a6fa..13f5dde9 100644 --- a/docs/models/viewerinfo.md +++ b/docs/models/viewerinfo.md @@ -3,7 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| ~~`role`~~ | [Optional[models.Role]](../models/role.md) | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

DEPRECATED - use permissions instead. Viewer's role on the specific document. | -| `last_viewed_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| ~~`role`~~ | [Optional[models.Role]](../models/role.md) | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use permissions instead.

DEPRECATED - use permissions instead. Viewer's role on the specific document. | +| `last_viewed_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | \ No newline at end of file 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/workflow.md b/docs/models/workflow.md index c2e0c0ba..43bae12b 100644 --- a/docs/models/workflow.md +++ b/docs/models/workflow.md @@ -3,12 +3,17 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `name` | *Optional[str]* | :heavy_minus_sign: | The name of the workflow. | | -| `author` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | -| `create_timestamp` | *Optional[int]* | :heavy_minus_sign: | Server Unix timestamp of the creation time. | | -| `last_update_timestamp` | *Optional[int]* | :heavy_minus_sign: | Server Unix timestamp of the last update time. | | -| `last_updated_by` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | -| `permissions` | [Optional[models.ObjectPermissions]](../models/objectpermissions.md) | :heavy_minus_sign: | N/A | | -| `id` | *Optional[str]* | :heavy_minus_sign: | The ID of the workflow. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `name` | *Optional[str]* | :heavy_minus_sign: | The name of the workflow. | | +| `author` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | +| `create_timestamp` | *Optional[int]* | :heavy_minus_sign: | Server Unix timestamp of the creation time. | | +| `last_update_timestamp` | *Optional[int]* | :heavy_minus_sign: | Server Unix timestamp of the last update time. | | +| `last_draft_saved_at` | *Optional[int]* | :heavy_minus_sign: | Server Unix timestamp of the last time the draft was saved. | | +| `last_draft_saved_by` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | +| `last_draft_git_author_id` | *Optional[str]* | :heavy_minus_sign: | ID of the VCS user (e.g. GitHub username) who last saved the draft. Set only by the draft save path via the external Git integration API. | | +| `last_updated_by` | [Optional[models.Person]](../models/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | +| `permissions` | [Optional[models.ObjectPermissions]](../models/objectpermissions.md) | :heavy_minus_sign: | N/A | | +| `id` | *Optional[str]* | :heavy_minus_sign: | The ID of the workflow. | | +| `verified` | *Optional[bool]* | :heavy_minus_sign: | When present, indicates this workflow is admin-verified. Set via the dedicated admin settings endpoint, not by regular edits. | | +| `show_organization_as_author` | *Optional[bool]* | :heavy_minus_sign: | When true, displays organization name instead of author name in agent card. Set via the dedicated admin settings endpoint, not by regular edits. | | \ No newline at end of file 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 ea6fa129..b929a12d 100644 --- a/docs/sdks/agents/README.md +++ b/docs/sdks/agents/README.md @@ -1,23 +1,18 @@ # Agents -(*client.agents*) ## Overview ### Available Operations -* [retrieve](#retrieve) - Retrieve an agent -* [retrieve_schemas](#retrieve_schemas) - List an agent's schemas -* [list](#list) - Search agents -* [run_stream](#run_stream) - Create an agent run and stream the response -* [run](#run) - Create an agent run and wait for the response +* [edit_agent](#edit_agent) - Edit an agent -## retrieve +## edit_agent -Returns details of an [agent](https://developers.glean.com/agents/agents-api) created in the Agent Builder. +Creates a draft or publishes an [agent](https://developers.glean.com/agents/agents-api). Use `isDraft=true` to save a draft, or `isDraft=false` (or omit) to publish immediately. Only draft and publish modes are supported. ### Example Usage - + ```python from glean.api_client import Glean import os @@ -27,202 +22,26 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.agents.retrieve(agent_id="") + glean.agents.edit_agent(agent_id="") - # Handle response - print(res) + # Use the SDK ... ``` ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[models.Agent](../../models/agent.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | - -## retrieve_schemas - -Return [agent](https://developers.glean.com/agents/agents-api)'s input and output schemas. You can use these schemas to detect changes to an agent's input or output structure. - -### Example Usage - - -```python -from glean.api_client import Glean -import os - - -with Glean( - api_token=os.getenv("GLEAN_API_TOKEN", ""), -) as glean: - - res = glean.client.agents.retrieve_schemas(agent_id="") - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[models.AgentSchemas](../../models/agentschemas.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | - -## list - -Search for [agents](https://developers.glean.com/agents/agents-api) by agent name. - -### Example Usage - - -```python -from glean.api_client import Glean -import os - - -with Glean( - api_token=os.getenv("GLEAN_API_TOKEN", ""), -) as glean: - - res = glean.client.agents.list(name="HR Policy Agent") - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| `name` | *Optional[str]* | :heavy_minus_sign: | Filters on the name of the agent. The keyword search is case-insensitive. If search string is ommited or empty, acts as no filter. | HR Policy Agent | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[models.SearchAgentsResponse](../../models/searchagentsresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | - -## run_stream - -Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the result as a stream of server-sent events (SSE). - -### Example Usage - - -```python -from glean.api_client import Glean -import os - - -with Glean( - api_token=os.getenv("GLEAN_API_TOKEN", ""), -) as glean: - - res = glean.client.agents.run_stream(agent_id="", messages=[ - { - "role": "USER", - }, - ]) - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent to run. | -| `input` | Dict[str, *Any*] | :heavy_minus_sign: | The input to the agent. | -| `messages` | List[[models.Message](../../models/message.md)] | :heavy_minus_sign: | The messages to pass an input to the agent. | -| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | The metadata to pass to the agent. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[str](../../models/.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | - -## run - -Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the final response. - -### Example Usage - - -```python -from glean.api_client import Glean -import os - - -with Glean( - api_token=os.getenv("GLEAN_API_TOKEN", ""), -) as glean: - - res = glean.client.agents.run(agent_id="", messages=[ - { - "role": "USER", - }, - ]) - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent to run. | -| `input` | Dict[str, *Any*] | :heavy_minus_sign: | The input to the agent. | -| `messages` | List[[models.Message](../../models/message.md)] | :heavy_minus_sign: | The messages to pass an input to the agent. | -| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | The metadata to pass to the agent. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[models.AgentRunWaitResponse](../../models/agentrunwaitresponse.md)** +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `name` | *Optional[str]* | :heavy_minus_sign: | The name of the workflow. | +| `id` | *Optional[str]* | :heavy_minus_sign: | The workflow ID we want to update. | +| `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 | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 404 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/announcements/README.md b/docs/sdks/announcements/README.md index a1515dea..6ce0ff13 100644 --- a/docs/sdks/announcements/README.md +++ b/docs/sdks/announcements/README.md @@ -1,5 +1,4 @@ -# Announcements -(*client.announcements*) +# Client.Announcements ## Overview @@ -423,34 +422,6 @@ with Glean( ], ), ), - board=models.AnswerBoard( - name="", - description="actual even swift curse while puppet outlandish since urgently", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=812610, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), collections=[ models.Collection( name="", @@ -881,34 +852,6 @@ with Glean( ), ], ), - answer_board=models.AnswerBoard( - name="", - description="capitalise rubric championship snowplow", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=920771, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -1140,6 +1083,7 @@ with Glean( | `start_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | The date and time at which the announcement becomes active. | | `end_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | The date and time at which the announcement expires. | | `title` | *str* | :heavy_check_mark: | The headline of the announcement. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | | `body` | [Optional[models.StructuredText]](../../models/structuredtext.md) | :heavy_minus_sign: | N/A | | `emoji` | *Optional[str]* | :heavy_minus_sign: | An emoji used to indicate the nature of the announcement. | | `thumbnail` | [Optional[models.Thumbnail]](../../models/thumbnail.md) | :heavy_minus_sign: | N/A | @@ -1187,10 +1131,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The opaque id of the announcement to be deleted. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | The opaque id of the announcement to be deleted. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Errors @@ -1612,34 +1557,6 @@ with Glean( ], ), ), - board=models.AnswerBoard( - name="", - description="litter anenst happy probable birdcage till", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=34422, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), collections=[ models.Collection( name="", @@ -2070,34 +1987,6 @@ with Glean( ), ], ), - answer_board=models.AnswerBoard( - name="", - description="bookend dense second-hand", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=964771, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -2330,6 +2219,7 @@ with Glean( | `end_time` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | The date and time at which the announcement expires. | | `title` | *str* | :heavy_check_mark: | The headline of the announcement. | | `id` | *int* | :heavy_check_mark: | The opaque id of the announcement. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | | `body` | [Optional[models.StructuredText]](../../models/structuredtext.md) | :heavy_minus_sign: | N/A | | `emoji` | *Optional[str]* | :heavy_minus_sign: | An emoji used to indicate the nature of the announcement. | | `thumbnail` | [Optional[models.Thumbnail]](../../models/thumbnail.md) | :heavy_minus_sign: | N/A | diff --git a/docs/sdks/answers/README.md b/docs/sdks/answers/README.md index 876f0afe..85153af7 100644 --- a/docs/sdks/answers/README.md +++ b/docs/sdks/answers/README.md @@ -1,5 +1,4 @@ -# Answers -(*client.answers*) +# Client.Answers ## Overview @@ -9,7 +8,7 @@ * [delete](#delete) - Delete Answer * [update](#update) - Update Answer * [retrieve](#retrieve) - Read Answer -* [list](#list) - List Answers +* [~~list~~](#list) - List Answers :warning: **Deprecated** ## create @@ -84,10 +83,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `data` | [models.AnswerCreationData](../../models/answercreationdata.md) | :heavy_check_mark: | N/A | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [models.AnswerCreationData](../../models/answercreationdata.md) | :heavy_check_mark: | N/A | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -123,11 +123,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The opaque ID of the Answer. | 3 | -| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | The opaque ID of the Answer. | 3 | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | | +| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Errors @@ -200,24 +201,25 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The opaque ID of the Answer. | 3 | -| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | -| `question` | *Optional[str]* | :heavy_minus_sign: | N/A | Why is the sky blue? | -| `question_variations` | List[*str*] | :heavy_minus_sign: | Additional ways of phrasing this question. | | -| `body_text` | *Optional[str]* | :heavy_minus_sign: | The plain text answer to the question. | From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. | -| `board_id` | *Optional[int]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. | | -| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. | | -| `added_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer added by the owner. | | -| `removed_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer removed by the owner. | | -| `roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of roles for this answer explicitly granted by an owner, editor, or admin. | | -| `source_document_spec` | [Optional[models.DocumentSpecUnion]](../../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | -| `source_type` | [Optional[models.EditAnswerRequestSourceType]](../../models/editanswerrequestsourcetype.md) | :heavy_minus_sign: | N/A | | -| `added_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections to which a document is added. | | -| `removed_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections from which a document is removed. | | -| `combined_answer_text` | [Optional[models.StructuredTextMutableProperties]](../../models/structuredtextmutableproperties.md) | :heavy_minus_sign: | N/A | | -| `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 | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | The opaque ID of the Answer. | 3 | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | | +| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | +| `question` | *Optional[str]* | :heavy_minus_sign: | N/A | Why is the sky blue? | +| `question_variations` | List[*str*] | :heavy_minus_sign: | Additional ways of phrasing this question. | | +| `body_text` | *Optional[str]* | :heavy_minus_sign: | The plain text answer to the question. | From https://en.wikipedia.org/wiki/Diffuse_sky_radiation, the sky is blue because blue light is more strongly scattered than longer-wavelength light. | +| `board_id` | *Optional[int]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Answer Boards no longer supported.

The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. | | +| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. | | +| `added_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer added by the owner. | | +| `removed_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles for the answer removed by the owner. | | +| `roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of roles for this answer explicitly granted by an owner, editor, or admin. | | +| `source_document_spec` | [Optional[models.DocumentSpecUnion]](../../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | +| `source_type` | [Optional[models.EditAnswerRequestSourceType]](../../models/editanswerrequestsourcetype.md) | :heavy_minus_sign: | N/A | | +| `added_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections to which a document is added. | | +| `removed_collections` | List[*int*] | :heavy_minus_sign: | IDs of Collections from which a document is removed. | | +| `combined_answer_text` | [Optional[models.StructuredTextMutableProperties]](../../models/structuredtextmutableproperties.md) | :heavy_minus_sign: | N/A | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response @@ -254,11 +256,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *Optional[int]* | :heavy_minus_sign: | The opaque ID of the Answer. | 3 | -| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | | +| `id` | *Optional[int]* | :heavy_minus_sign: | The opaque ID of the Answer. | 3 | +| `doc_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. | ANSWERS_answer_3 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response @@ -270,10 +273,12 @@ with Glean( | ----------------- | ----------------- | ----------------- | | errors.GleanError | 4XX, 5XX | \*/\* | -## list +## ~~list~~ List Answers created by the current user. +> :warning: **DEPRECATED**: Deprecated on 2026-01-21, removal scheduled for 2026-10-15: Answer boards have been removed and this endpoint no longer serves a purpose. + ### Example Usage @@ -295,10 +300,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `board_id` | *Optional[int]* | :heavy_minus_sign: | The Answer Board Id to list answers on. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `board_id` | *Optional[int]* | :heavy_minus_sign: | The Answer Board Id to list answers on. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response diff --git a/docs/sdks/authentication/README.md b/docs/sdks/authentication/README.md new file mode 100644 index 00000000..d7fef010 --- /dev/null +++ b/docs/sdks/authentication/README.md @@ -0,0 +1,55 @@ +# Authentication + +## Overview + +Manage indexing API tokens. + +### Available Operations + +* [checkdatasourceauth](#checkdatasourceauth) - Check datasource authorization + +## checkdatasourceauth + +Returns all datasource instances that require per-user OAuth authorization +for the authenticated user, along with a transient auth token that can be +appended to auth URLs to complete OAuth flows. + +Clients construct the full OAuth URL by combining the backend base URL, +the `authUrlRelativePath` from each instance, and the transient auth token: +`/?transient_auth_token=`. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.authentication.checkdatasourceauth() + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.CheckDatasourceAuthResponse](../../models/checkdatasourceauthresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/chatsdk/README.md b/docs/sdks/chatsdk/README.md new file mode 100644 index 00000000..27dea574 --- /dev/null +++ b/docs/sdks/chatsdk/README.md @@ -0,0 +1,49 @@ +# Chat + +## Overview + +### Available Operations + +* [get_chat_file](#get_chat_file) - Download a chat file + +## get_chat_file + +Download the raw content of a file generated or uploaded during a chat session (for example, an image produced by the assistant). Returns the file bytes with a Content-Type header matching the file's MIME type. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.chat.get_chat_file(file_id="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `file_id` | *str* | :heavy_check_mark: | Identifier of the chat file to download. | +| `preview` | *Optional[bool]* | :heavy_minus_sign: | When true and the file is a PDF, the response is served inline (Content-Disposition: inline) instead of as an attachment.
| +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[httpx.Response](../../models/.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/clientactivity/README.md b/docs/sdks/clientactivity/README.md index bf7f9f08..456e90e3 100644 --- a/docs/sdks/clientactivity/README.md +++ b/docs/sdks/clientactivity/README.md @@ -1,5 +1,4 @@ -# ClientActivity -(*client.activity*) +# Client.Activity ## Overview @@ -87,7 +86,7 @@ with Glean( "tracking_tokens": [ "trackingTokens", ], - "event": models.Event.VIEW, + "event": models.FeedbackEvent.VIEW, }) # Use the SDK ... diff --git a/docs/sdks/clientagents/README.md b/docs/sdks/clientagents/README.md new file mode 100644 index 00000000..2856eeeb --- /dev/null +++ b/docs/sdks/clientagents/README.md @@ -0,0 +1,233 @@ +# Client.Agents + +## Overview + +### Available Operations + +* [retrieve](#retrieve) - Retrieve an agent +* [retrieve_schemas](#retrieve_schemas) - List an agent's schemas +* [list](#list) - Search agents +* [run_stream](#run_stream) - Create an agent run and stream the response +* [run](#run) - Create an agent run and wait for the response + +## retrieve + +Returns details of an [agent](https://developers.glean.com/agents/agents-api) created in the Agent Builder. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.agents.retrieve(agent_id="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.Agent](../../models/agent.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 404 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## retrieve_schemas + +Return [agent](https://developers.glean.com/agents/agents-api)'s input and output schemas. You can use these schemas to detect changes to an agent's input or output structure. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.agents.retrieve_schemas(agent_id="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.AgentSchemas](../../models/agentschemas.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 404, 422 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## list + +Search for [agents](https://developers.glean.com/agents/agents-api) by agent name. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.agents.list(name="HR Policy Agent") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `name` | *Optional[str]* | :heavy_minus_sign: | Filters on the name of the agent. The keyword search is case-insensitive. If search string is ommited or empty, acts as no filter. | HR Policy Agent | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.SearchAgentsResponse](../../models/searchagentsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 404, 422 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## run_stream + +Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the result as a stream of server-sent events (SSE). **Note**: If the agent uses an input form trigger, all form fields (including optional fields) must be included in the `input` object. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.agents.run_stream(agent_id="", messages=[ + { + "role": "USER", + }, + ]) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent to run. | +| `input` | Dict[str, *Any*] | :heavy_minus_sign: | The input to the agent. Required when the agent uses an input form trigger. | +| `messages` | List[[models.Message](../../models/message.md)] | :heavy_minus_sign: | The messages to pass an input to the agent. | +| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | The metadata to pass to the agent. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[str](../../models/.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 404, 409, 422 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## run + +Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the final response. **Note**: If the agent uses an input form trigger, all form fields (including optional fields) must be included in the `input` object. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.agents.run(agent_id="", messages=[ + { + "role": "USER", + }, + ]) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | +| `agent_id` | *str* | :heavy_check_mark: | The ID of the agent to run. | +| `input` | Dict[str, *Any*] | :heavy_minus_sign: | The input to the agent. Required when the agent uses an input form trigger. | +| `messages` | List[[models.Message](../../models/message.md)] | :heavy_minus_sign: | The messages to pass an input to the agent. | +| `metadata` | Dict[str, *Any*] | :heavy_minus_sign: | The metadata to pass to the agent. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.AgentRunWaitResponse](../../models/agentrunwaitresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/clientauthentication/README.md b/docs/sdks/clientauthentication/README.md index 86e95796..b9a4856d 100644 --- a/docs/sdks/clientauthentication/README.md +++ b/docs/sdks/clientauthentication/README.md @@ -1,5 +1,4 @@ -# ClientAuthentication -(*client.authentication*) +# Client.Authentication ## Overview diff --git a/docs/sdks/clientchat/README.md b/docs/sdks/clientchat/README.md index 126baa31..09a859f9 100644 --- a/docs/sdks/clientchat/README.md +++ b/docs/sdks/clientchat/README.md @@ -1,5 +1,4 @@ -# ClientChat -(*client.chat*) +# Client.Chat ## Overview @@ -11,18 +10,36 @@ * [retrieve](#retrieve) - Retrieves a Chat * [list](#list) - Retrieves all saved Chats * [retrieve_application](#retrieve_application) - Gets the metadata for a custom Chat application -* [upload_files](#upload_files) - Upload files for Chat. -* [retrieve_files](#retrieve_files) - Get files uploaded by a user for Chat. -* [delete_files](#delete_files) - Delete files uploaded by a user for chat. +* [upload_files](#upload_files) - Upload files for Chat +* [retrieve_files](#retrieve_files) - Get files uploaded by a user for Chat +* [delete_files](#delete_files) - Delete files uploaded by a user for chat * [create_stream](#create_stream) - Chat ## create Have a conversation with Glean AI. -### Example Usage +### Example Usage: citationResponse - + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.chat.create(messages=[], timeout_millis=30000) + + # Handle response + print(res) + +``` +### Example Usage: defaultExample + + ```python from glean.api_client import Glean, models import os @@ -45,6 +62,70 @@ with Glean( # Handle response print(res) +``` +### Example Usage: gptAgentExample + + +```python +from glean.api_client import Glean, models +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.chat.create(messages=[ + { + "fragments": [ + models.ChatMessageFragment( + text="Who was the first person to land on the moon?", + ), + ], + }, + ], agent_config={ + "agent": models.AgentEnum.GPT, + }, timeout_millis=30000) + + # Handle response + print(res) + +``` +### Example Usage: streamingExample + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.chat.create(messages=[], timeout_millis=30000) + + # Handle response + print(res) + +``` +### Example Usage: updateResponse + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.chat.create(messages=[], timeout_millis=30000) + + # Handle response + print(res) + ``` ### Parameters @@ -52,6 +133,7 @@ with Glean( | Parameter | Type | Required | Description | Example | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `messages` | List[[models.ChatMessage](../../models/chatmessage.md)] | :heavy_check_mark: | A list of chat messages, from most recent to least recent. At least one message must specify a USER author. | | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | | | `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | | | `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | | `save_chat` | *Optional[bool]* | :heavy_minus_sign: | Save the current interaction as a Chat for the user to access and potentially continue later. | | @@ -99,10 +181,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Errors @@ -134,11 +217,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `ids` | List[*str*] | :heavy_check_mark: | A non-empty list of ids of the Chats to be deleted. | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `ids` | List[*str*] | :heavy_check_mark: | A non-empty list of ids of the Chats to be deleted. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Errors @@ -171,11 +255,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | The id of the Chat to be retrieved. | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The id of the Chat to be retrieved. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -212,10 +297,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -252,11 +338,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | The id of the Chat application to be retrieved. | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The id of the Chat application to be retrieved. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -293,11 +380,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `files` | List[[models.File](../../models/file.md)] | :heavy_check_mark: | Raw files to be uploaded for chat in binary format. | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `files` | List[[models.File](../../models/file.md)] | :heavy_check_mark: | Raw files to be uploaded for chat in binary format. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -336,11 +424,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `file_ids` | List[*str*] | :heavy_check_mark: | IDs of files to fetch. | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `file_ids` | List[*str*] | :heavy_check_mark: | IDs of files to fetch. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -380,11 +469,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `file_ids` | List[*str*] | :heavy_check_mark: | IDs of files to delete. | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `file_ids` | List[*str*] | :heavy_check_mark: | IDs of files to delete. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Errors @@ -396,9 +486,27 @@ with Glean( Have a conversation with Glean AI. -### Example Usage +### Example Usage: citationResponse - + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.chat.create_stream(messages=[], timeout_millis=30000) + + # Handle response + print(res) + +``` +### Example Usage: defaultExample + + ```python from glean.api_client import Glean, models import os @@ -421,6 +529,70 @@ with Glean( # Handle response print(res) +``` +### Example Usage: gptAgentExample + + +```python +from glean.api_client import Glean, models +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.chat.create_stream(messages=[ + { + "fragments": [ + models.ChatMessageFragment( + text="Who was the first person to land on the moon?", + ), + ], + }, + ], agent_config={ + "agent": models.AgentEnum.GPT, + }, timeout_millis=30000) + + # Handle response + print(res) + +``` +### Example Usage: streamingExample + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.chat.create_stream(messages=[], timeout_millis=30000) + + # Handle response + print(res) + +``` +### Example Usage: updateResponse + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.chat.create_stream(messages=[], timeout_millis=30000) + + # Handle response + print(res) + ``` ### Parameters diff --git a/docs/sdks/clientdocuments/README.md b/docs/sdks/clientdocuments/README.md index a731f32c..8b6d7b29 100644 --- a/docs/sdks/clientdocuments/README.md +++ b/docs/sdks/clientdocuments/README.md @@ -1,5 +1,4 @@ -# ClientDocuments -(*client.documents*) +# Client.Documents ## Overview @@ -35,10 +34,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `document_id` | *Optional[str]* | :heavy_minus_sign: | The Glean Document ID to retrieve permissions for. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `document_id` | *Optional[str]* | :heavy_minus_sign: | The Glean Document ID to retrieve permissions for. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -75,10 +75,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `request` | [models.GetDocumentsRequest](../../models/getdocumentsrequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `get_documents_request` | [Optional[models.GetDocumentsRequest]](../../models/getdocumentsrequest.md) | :heavy_minus_sign: | Information about documents requested. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -106,7 +107,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.documents.retrieve_by_facets(request={ + res = glean.client.documents.retrieve_by_facets(get_documents_by_facets_request={ "filter_sets": [ { "filters": [ @@ -135,10 +136,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | -| `request` | [models.GetDocumentsByFacetsRequest](../../models/getdocumentsbyfacetsrequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `get_documents_by_facets_request` | [Optional[models.GetDocumentsByFacetsRequest]](../../models/getdocumentsbyfacetsrequest.md) | :heavy_minus_sign: | Information about facet conditions for documents to be retrieved. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -180,14 +182,15 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -| `document_specs` | List[[models.DocumentSpecUnion](../../models/documentspecunion.md)] | :heavy_check_mark: | Specifications of documents to summarize | -| `timestamp` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The ISO 8601 timestamp associated with the client request. | -| `query` | *Optional[str]* | :heavy_minus_sign: | Optional query that the summary should be about | -| `preferred_summary_length` | *Optional[int]* | :heavy_minus_sign: | Optional length of summary output. If not given, defaults to 500 chars. | -| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular result. To be used for /feedback reporting. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `document_specs` | List[[models.DocumentSpecUnion](../../models/documentspecunion.md)] | :heavy_check_mark: | Specifications of documents to summarize | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timestamp` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The ISO 8601 timestamp associated with the client request. | +| `query` | *Optional[str]* | :heavy_minus_sign: | Optional query that the summary should be about | +| `preferred_summary_length` | *Optional[int]* | :heavy_minus_sign: | Optional length of summary output. If not given, defaults to 500 chars. | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | An opaque token that represents this particular result. To be used for /feedback reporting. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response diff --git a/docs/sdks/cliententities/README.md b/docs/sdks/cliententities/README.md new file mode 100644 index 00000000..0ac68e93 --- /dev/null +++ b/docs/sdks/cliententities/README.md @@ -0,0 +1,121 @@ +# Client.Entities + +## Overview + +### Available Operations + +* [list](#list) - List entities +* [read_people](#read_people) - Read people + +## list + +List some set of details for all entities that fit the given criteria and return in the requested order. Does not support negation in filters, assumes relation type EQUALS. There is a limit of 10000 entities that can be retrieved via this endpoint, except when using FULL_DIRECTORY request type for people entities. + +### Example Usage + + +```python +from glean.api_client import Glean, models +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.entities.list(filter_=[ + { + "field_name": "type", + "values": [ + { + "value": "Spreadsheet", + "relation_type": models.RelationType.EQUALS, + }, + { + "value": "Presentation", + "relation_type": models.RelationType.EQUALS, + }, + ], + }, + ], entity_type=models.ListEntitiesRequestEntityType.PEOPLE, page_size=100, request_type=models.RequestType.STANDARD) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | | +| `filter_` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | N/A | | +| `sort` | List[[models.SortOptions](../../models/sortoptions.md)] | :heavy_minus_sign: | Use EntitiesSortOrder enum for SortOptions.sortBy | | +| `entity_type` | [Optional[models.ListEntitiesRequestEntityType]](../../models/listentitiesrequestentitytype.md) | :heavy_minus_sign: | N/A | | +| `datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource associated with the entity type, most commonly used with CUSTOM_ENTITIES | | +| `query` | *Optional[str]* | :heavy_minus_sign: | A query string to search for entities that each entity in the response must conform to. An empty query does not filter any entities. | | +| `include_fields` | List[[models.ListEntitiesRequestIncludeField](../../models/listentitiesrequestincludefield.md)] | :heavy_minus_sign: | List of entity fields to return (that aren't returned by default) | | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many results to send back. Server may return less. | 100 | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. | | +| `source` | *Optional[str]* | :heavy_minus_sign: | A string denoting the search surface from which the endpoint is called. | | +| `request_type` | [Optional[models.RequestType]](../../models/requesttype.md) | :heavy_minus_sign: | The type of request being made. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.ListEntitiesResponse](../../models/listentitiesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## read_people + +Read people details for the given IDs. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.entities.read_people(obfuscated_ids=[ + "abc123", + "abc456", + ]) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | +| `obfuscated_ids` | List[*str*] | :heavy_minus_sign: | The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. | +| `email_ids` | List[*str*] | :heavy_minus_sign: | The email IDs to retrieve. The result is the deduplicated union of emailIds and obfuscatedIds. | +| `include_fields` | List[[models.PeopleRequestIncludeField](../../models/peoplerequestincludefield.md)] | :heavy_minus_sign: | List of PersonMetadata fields to return (that aren't returned by default) | +| `include_types` | List[[models.IncludeType](../../models/includetype.md)] | :heavy_minus_sign: | The types of people entities to include in the response in addition to those returned by default. | +| `source` | *Optional[str]* | :heavy_minus_sign: | A string denoting the search surface from which the endpoint is called. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.PeopleResponse](../../models/peopleresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/clientshortcuts/README.md b/docs/sdks/clientshortcuts/README.md index 23aa92b5..9d7f63e9 100644 --- a/docs/sdks/clientshortcuts/README.md +++ b/docs/sdks/clientshortcuts/README.md @@ -1,5 +1,4 @@ -# ClientShortcuts -(*client.shortcuts*) +# Client.Shortcuts ## Overview @@ -55,10 +54,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `data` | [models.ShortcutMutableProperties](../../models/shortcutmutableproperties.md) | :heavy_check_mark: | N/A | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `data` | [models.ShortcutMutableProperties](../../models/shortcutmutableproperties.md) | :heavy_check_mark: | N/A | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -94,10 +94,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The opaque id of the user generated content. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | The opaque id of the user generated content. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Errors @@ -121,7 +122,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.shortcuts.retrieve(request={ + res = glean.client.shortcuts.retrieve(get_shortcut_request={ "alias": "", }) @@ -132,10 +133,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -| `request` | [models.GetShortcutRequestUnion](../../models/getshortcutrequestunion.md) | :heavy_check_mark: | The request object to use for the request. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `get_shortcut_request` | [models.GetShortcutRequest](../../models/getshortcutrequest.md) | :heavy_check_mark: | GetShortcut request | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -186,15 +188,16 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `page_size` | *int* | :heavy_check_mark: | N/A | 10 | -| `include_fields` | List[[models.ListShortcutsPaginatedRequestIncludeField](../../models/listshortcutspaginatedrequestincludefield.md)] | :heavy_minus_sign: | Array of fields/data to be included in response that are not included by default | | -| `cursor` | *Optional[str]* | :heavy_minus_sign: | A token specifying the position in the overall results to start at. Received from the endpoint and iterated back. Currently being used as page no (as we implement offset pagination) | | -| `filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | A list of filters for the query. An AND is assumed between different filters. We support filters on Go Link name, author, department and type. | | -| `sort` | [Optional[models.SortOptions]](../../models/sortoptions.md) | :heavy_minus_sign: | N/A | | -| `query` | *Optional[str]* | :heavy_minus_sign: | Search query that should be a substring in atleast one of the fields (alias , inputAlias, destinationUrl, description). Empty query does not filter shortcuts. | | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `page_size` | *int* | :heavy_check_mark: | N/A | 10 | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | | +| `include_fields` | List[[models.ListShortcutsPaginatedRequestIncludeField](../../models/listshortcutspaginatedrequestincludefield.md)] | :heavy_minus_sign: | Array of fields/data to be included in response that are not included by default | | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | A token specifying the position in the overall results to start at. Received from the endpoint and iterated back. Currently being used as page no (as we implement offset pagination) | | +| `filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | A list of filters for the query. An AND is assumed between different filters. We support filters on Go Link name, author, department and type. | | +| `sort` | [Optional[models.SortOptions]](../../models/sortoptions.md) | :heavy_minus_sign: | N/A | | +| `query` | *Optional[str]* | :heavy_minus_sign: | Search query that should be a substring in atleast one of the fields (alias , inputAlias, destinationUrl, description). Empty query does not filter shortcuts. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response @@ -247,18 +250,19 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The opaque id of the user generated content. | -| `input_alias` | *Optional[str]* | :heavy_minus_sign: | Link text following go/ prefix as entered by the user. | -| `destination_url` | *Optional[str]* | :heavy_minus_sign: | Destination URL for the shortcut. | -| `destination_document_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID for the URL, if known. | -| `description` | *Optional[str]* | :heavy_minus_sign: | A short, plain text blurb to help people understand the intent of the shortcut. | -| `unlisted` | *Optional[bool]* | :heavy_minus_sign: | Whether this shortcut is unlisted or not. Unlisted shortcuts are visible to author + admins only. | -| `url_template` | *Optional[str]* | :heavy_minus_sign: | For variable shortcuts, contains the URL template; note, `destinationUrl` contains default URL. | -| `added_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles added for the Shortcut. | -| `removed_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles removed for the Shortcut. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | The opaque id of the user generated content. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `input_alias` | *Optional[str]* | :heavy_minus_sign: | Link text following go/ prefix as entered by the user. | +| `destination_url` | *Optional[str]* | :heavy_minus_sign: | Destination URL for the shortcut. | +| `destination_document_id` | *Optional[str]* | :heavy_minus_sign: | Glean Document ID for the URL, if known. | +| `description` | *Optional[str]* | :heavy_minus_sign: | A short, plain text blurb to help people understand the intent of the shortcut. | +| `unlisted` | *Optional[bool]* | :heavy_minus_sign: | Whether this shortcut is unlisted or not. Unlisted shortcuts are visible to author + admins only. | +| `url_template` | *Optional[str]* | :heavy_minus_sign: | For variable shortcuts, contains the URL template; note, `destinationUrl` contains default URL. | +| `added_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles added for the Shortcut. | +| `removed_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of user roles removed for the Shortcut. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response diff --git a/docs/sdks/clienttools/README.md b/docs/sdks/clienttools/README.md new file mode 100644 index 00000000..5dd8efc1 --- /dev/null +++ b/docs/sdks/clienttools/README.md @@ -0,0 +1,91 @@ +# Client.Tools + +## Overview + +### Available Operations + +* [list](#list) - List available tools +* [run](#run) - Execute the specified tool + +## list + +Returns a filtered set of available tools based on optional tool name parameters. If no filters are provided, all available tools are returned. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.tools.list() + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `tool_names` | List[*str*] | :heavy_minus_sign: | Optional array of tool names to filter by | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.ToolsListResponse](../../models/toolslistresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## run + +Execute the specified tool with provided parameters + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.client.tools.run(name="", parameters={ + + }) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `name` | *str* | :heavy_check_mark: | Required name of the tool to execute | +| `parameters` | Dict[str, [models.ToolsCallParameter](../../models/toolscallparameter.md)] | :heavy_check_mark: | The parameters for the tool. Each key is the name of the parameter and the value is the parameter object. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.ToolsCallResponse](../../models/toolscallresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/clientverification/README.md b/docs/sdks/clientverification/README.md index 112d856e..63fa8d6c 100644 --- a/docs/sdks/clientverification/README.md +++ b/docs/sdks/clientverification/README.md @@ -1,5 +1,4 @@ -# ClientVerification -(*client.verification*) +# Client.Verification ## Overview @@ -37,6 +36,7 @@ with Glean( | Parameter | Type | Required | Description | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `document_id` | *str* | :heavy_check_mark: | The document which the verification is for new reminders and/or update. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | | `assignee` | *Optional[str]* | :heavy_minus_sign: | The obfuscated id of the person this verification is assigned to. | | `remind_in_days` | *Optional[int]* | :heavy_minus_sign: | Reminder for the next verifications in terms of days. For deletion, this will be omitted. | | `reason` | *Optional[str]* | :heavy_minus_sign: | An optional free-text reason for the reminder. This is particularly useful when a reminder is used to ask for verification from another user (for example, "Duplicate", "Incomplete", "Incorrect"). | @@ -77,10 +77,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `count` | *Optional[int]* | :heavy_minus_sign: | Maximum number of documents to return | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `count` | *Optional[int]* | :heavy_minus_sign: | Maximum number of documents to return | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -117,11 +118,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------- | -| `document_id` | *str* | :heavy_check_mark: | The document which is verified. | -| `action` | [Optional[models.VerifyRequestAction]](../../models/verifyrequestaction.md) | :heavy_minus_sign: | The verification action requested. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `document_id` | *str* | :heavy_check_mark: | The document which is verified. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `action` | [Optional[models.VerifyRequestAction]](../../models/verifyrequestaction.md) | :heavy_minus_sign: | The verification action requested. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response diff --git a/docs/sdks/collections/README.md b/docs/sdks/collections/README.md index 69992bcd..f311071e 100644 --- a/docs/sdks/collections/README.md +++ b/docs/sdks/collections/README.md @@ -1,5 +1,4 @@ -# Collections -(*client.collections*) +# Client.Collections ## Overview @@ -39,11 +38,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | -| `collection_id` | *float* | :heavy_check_mark: | The ID of the Collection to add items to. | -| `added_collection_item_descriptors` | List[[models.CollectionItemDescriptor](../../models/collectionitemdescriptor.md)] | :heavy_minus_sign: | The CollectionItemDescriptors of the items being added. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `collection_id` | *float* | :heavy_check_mark: | The ID of the Collection to add items to. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `added_collection_item_descriptors` | List[[models.CollectionItemDescriptor](../../models/collectionitemdescriptor.md)] | :heavy_minus_sign: | The CollectionItemDescriptors of the items being added. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -110,20 +110,21 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `name` | *str* | :heavy_check_mark: | The unique name of the Collection. | -| `description` | *Optional[str]* | :heavy_minus_sign: | A brief summary of the Collection's contents. | -| `added_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of added user roles for the Collection. | -| `removed_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of removed user roles for the Collection. | -| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see this Collection. Values are taken from the corresponding filters in people search. | -| `icon` | *Optional[str]* | :heavy_minus_sign: | The emoji icon of this Collection. | -| `admin_locked` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether edits are allowed for everyone or only admins. | -| `parent_id` | *Optional[int]* | :heavy_minus_sign: | The parent of this Collection, or 0 if it's a top-level Collection. | -| `thumbnail` | [Optional[models.Thumbnail]](../../models/thumbnail.md) | :heavy_minus_sign: | N/A | -| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource type this Collection can hold. | -| `new_next_item_id` | *Optional[str]* | :heavy_minus_sign: | The (optional) ItemId of the next CollectionItem in sequence. If omitted, will be added to the end of the Collection. Only used if parentId is specified. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | *str* | :heavy_check_mark: | The unique name of the Collection. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `description` | *Optional[str]* | :heavy_minus_sign: | A brief summary of the Collection's contents. | +| `added_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of added user roles for the Collection. | +| `removed_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of removed user roles for the Collection. | +| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see this Collection. Values are taken from the corresponding filters in people search. | +| `icon` | *Optional[str]* | :heavy_minus_sign: | The emoji icon of this Collection. | +| `admin_locked` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether edits are allowed for everyone or only admins. | +| `parent_id` | *Optional[int]* | :heavy_minus_sign: | The parent of this Collection, or 0 if it's a top-level Collection. | +| `thumbnail` | [Optional[models.Thumbnail]](../../models/thumbnail.md) | :heavy_minus_sign: | N/A | +| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource type this Collection can hold. | +| `new_next_item_id` | *Optional[str]* | :heavy_minus_sign: | The (optional) ItemId of the next CollectionItem in sequence. If omitted, will be added to the end of the Collection. Only used if parentId is specified. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -164,11 +165,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `ids` | List[*int*] | :heavy_check_mark: | The IDs of the Collections to delete. | -| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource allowed in the Collection to be deleted. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `ids` | List[*int*] | :heavy_check_mark: | The IDs of the Collections to delete. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource allowed in the Collection to be deleted. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Errors @@ -202,12 +204,13 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | -| `collection_id` | *float* | :heavy_check_mark: | The ID of the Collection to remove an item in. | -| `item_id` | *str* | :heavy_check_mark: | The item ID of the CollectionItem to remove from this Collection. | -| `document_id` | *Optional[str]* | :heavy_minus_sign: | The (optional) Glean Document ID of the CollectionItem to remove from this Collection if this is an indexed document. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `collection_id` | *float* | :heavy_check_mark: | The ID of the Collection to remove an item in. | +| `item_id` | *str* | :heavy_check_mark: | The item ID of the CollectionItem to remove from this Collection. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `document_id` | *Optional[str]* | :heavy_minus_sign: | The (optional) Glean Document ID of the CollectionItem to remove from this Collection if this is an indexed document. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -274,20 +277,21 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | -| `name` | *str* | :heavy_check_mark: | The unique name of the Collection. | -| `id` | *int* | :heavy_check_mark: | The ID of the Collection to modify. | -| `description` | *Optional[str]* | :heavy_minus_sign: | A brief summary of the Collection's contents. | -| `added_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of added user roles for the Collection. | -| `removed_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of removed user roles for the Collection. | -| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see this Collection. Values are taken from the corresponding filters in people search. | -| `icon` | *Optional[str]* | :heavy_minus_sign: | The emoji icon of this Collection. | -| `admin_locked` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether edits are allowed for everyone or only admins. | -| `parent_id` | *Optional[int]* | :heavy_minus_sign: | The parent of this Collection, or 0 if it's a top-level Collection. | -| `thumbnail` | [Optional[models.Thumbnail]](../../models/thumbnail.md) | :heavy_minus_sign: | N/A | -| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource type this Collection can hold. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | *str* | :heavy_check_mark: | The unique name of the Collection. | +| `id` | *int* | :heavy_check_mark: | The ID of the Collection to modify. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `description` | *Optional[str]* | :heavy_minus_sign: | A brief summary of the Collection's contents. | +| `added_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of added user roles for the Collection. | +| `removed_roles` | List[[models.UserRoleSpecification](../../models/userrolespecification.md)] | :heavy_minus_sign: | A list of removed user roles for the Collection. | +| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see this Collection. Values are taken from the corresponding filters in people search. | +| `icon` | *Optional[str]* | :heavy_minus_sign: | The emoji icon of this Collection. | +| `admin_locked` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether edits are allowed for everyone or only admins. | +| `parent_id` | *Optional[int]* | :heavy_minus_sign: | The parent of this Collection, or 0 if it's a top-level Collection. | +| `thumbnail` | [Optional[models.Thumbnail]](../../models/thumbnail.md) | :heavy_minus_sign: | N/A | +| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource type this Collection can hold. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -325,14 +329,15 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -| `collection_id` | *int* | :heavy_check_mark: | The ID of the Collection to edit CollectionItems in. | -| `item_id` | *str* | :heavy_check_mark: | The ID of the CollectionItem to edit. | -| `name` | *Optional[str]* | :heavy_minus_sign: | The optional name of the Collection item. | -| `description` | *Optional[str]* | :heavy_minus_sign: | A helpful description of why this CollectionItem is in the Collection that it's in. | -| `icon` | *Optional[str]* | :heavy_minus_sign: | The emoji icon for this CollectionItem. Only used for Text type items. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `collection_id` | *int* | :heavy_check_mark: | The ID of the Collection to edit CollectionItems in. | +| `item_id` | *str* | :heavy_check_mark: | The ID of the CollectionItem to edit. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `name` | *Optional[str]* | :heavy_minus_sign: | The optional name of the Collection item. | +| `description` | *Optional[str]* | :heavy_minus_sign: | A helpful description of why this CollectionItem is in the Collection that it's in. | +| `icon` | *Optional[str]* | :heavy_minus_sign: | The emoji icon for this CollectionItem. Only used for Text type items. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -369,13 +374,14 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The ID of the Collection to be retrieved. | -| `with_items` | *Optional[bool]* | :heavy_minus_sign: | Whether or not to include the Collection Items in this Collection. Only request if absolutely required, as this is expensive. | -| `with_hierarchy` | *Optional[bool]* | :heavy_minus_sign: | Whether or not to include the top level Collection in this Collection's hierarchy. | -| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource allowed in the Collection returned. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | The ID of the Collection to be retrieved. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `with_items` | *Optional[bool]* | :heavy_minus_sign: | Whether or not to include the Collection Items in this Collection. Only request if absolutely required, as this is expensive. | +| `with_hierarchy` | *Optional[bool]* | :heavy_minus_sign: | Whether or not to include the top level Collection in this Collection's hierarchy. | +| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource allowed in the Collection returned. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -412,12 +418,13 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `include_audience` | *Optional[bool]* | :heavy_minus_sign: | Whether to include the audience filters with the listed Collections. | -| `include_roles` | *Optional[bool]* | :heavy_minus_sign: | Whether to include the editor roles with the listed Collections. | -| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource type this Collection can hold.
ANSWERS - for Collections representing answer boards | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `include_audience` | *Optional[bool]* | :heavy_minus_sign: | Whether to include the audience filters with the listed Collections. | +| `include_roles` | *Optional[bool]* | :heavy_minus_sign: | Whether to include the editor roles with the listed Collections. | +| `allowed_datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource type this Collection can hold.
ANSWERS - for Collections representing answer boards | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response diff --git a/docs/sdks/custommetadata/README.md b/docs/sdks/custommetadata/README.md new file mode 100644 index 00000000..adac5170 --- /dev/null +++ b/docs/sdks/custommetadata/README.md @@ -0,0 +1,230 @@ +# Indexing.CustomMetadata + +## Overview + +### Available Operations + +* [upsert](#upsert) - Add or update custom metadata +* [delete](#delete) - Remove custom metadata +* [get_schema](#get_schema) - Retrieve metadata schema +* [upsert_schema](#upsert_schema) - Create or update metadata schema +* [delete_schema](#delete_schema) - Remove metadata schema + +## upsert + +Associates custom metadata with a specific document. Custom metadata enables you to enrich documents with additional structured information that can be used for search, filtering, and faceting. + +### 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.custom_metadata.upsert(doc_id="", group_name="", custom_metadata=[]) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `doc_id` | *str* | :heavy_check_mark: | Unique Glean identifier of the document | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group as specified while adding schema | +| `custom_metadata` | List[[models.CustomProperty](../../models/customproperty.md)] | :heavy_check_mark: | Array of custom metadata key-value pairs | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | + +### Response + +**[models.SuccessResponse](../../models/successresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.ErrorInfoResponse | 400, 401, 404, 429 | application/json | +| errors.ErrorInfoResponse | 500 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## delete + +Removes all custom metadata for the specified metadata group from a document. + +### 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.custom_metadata.delete(doc_id="", group_name="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `doc_id` | *str* | :heavy_check_mark: | Unique Glean identifier of the document | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group as specified while adding schema | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | + +### Response + +**[models.SuccessResponse](../../models/successresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.ErrorInfoResponse | 400, 401, 404, 429 | application/json | +| errors.ErrorInfoResponse | 500 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## get_schema + +Retrieves the current schema definition for a metadata group. + +### 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.custom_metadata.get_schema(group_name="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group schema | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | + +### Response + +**[models.CustomMetadataSchema](../../models/custommetadataschema.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.ErrorInfoResponse | 401, 404, 429 | application/json | +| errors.ErrorInfoResponse | 500 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## upsert_schema + +Defines or updates the schema for a metadata group. Schemas should be defined before indexing metadata. + +### 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.custom_metadata.upsert_schema(group_name="", metadata_keys=[]) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group schema | +| `metadata_keys` | List[[models.CustomMetadataPropertyDefinition](../../models/custommetadatapropertydefinition.md)] | :heavy_check_mark: | Array of metadata key definitions | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | + +### Response + +**[models.SuccessResponse](../../models/successresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.ErrorInfoResponse | 400, 401, 409, 429 | application/json | +| errors.ErrorInfoResponse | 500 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## delete_schema + +Deletes the schema definition for a metadata group. This does not delete existing metadata values on documents. + +### 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.custom_metadata.delete_schema(group_name="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `group_name` | *str* | :heavy_check_mark: | Name of the metadata group schema | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | + +### Response + +**[models.SuccessResponse](../../models/successresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------ | ------------------------ | ------------------------ | +| errors.ErrorInfoResponse | 400, 401, 404, 429 | application/json | +| errors.ErrorInfoResponse | 500 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/datasources/README.md b/docs/sdks/datasources/README.md index cdee7942..15b97d59 100644 --- a/docs/sdks/datasources/README.md +++ b/docs/sdks/datasources/README.md @@ -1,22 +1,26 @@ # Datasources -(*indexing.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_credential_status](#get_datasource_credential_status) - Get datasource instance credential status +* [rotate_datasource_credentials](#rotate_datasource_credentials) - Rotate datasource instance credentials + +## 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 @@ -24,67 +28,131 @@ 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", - }, + res = glean.datasources.get_datasource_instance_configuration(datasource_id="o365sharepoint", instance_id="o365sharepoint_abc123") + + # Handle response + print(res) + +``` + +### Parameters + +| 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.ErrorResponse | 400, 403, 404 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## 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. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.datasources.update_datasource_instance_configuration(datasource_id="o365sharepoint", instance_id="o365sharepoint_abc123", configuration={ + "values": { + }, - ], trust_url_regex_for_view_activity=True, strip_fragment_in_canonical_url=True, is_entity_datasource=False, is_test_datasource=False) + }) - # 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 | +| `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.DatasourceConfigurationResponse](../../models/datasourceconfigurationresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| -------------------- | -------------------- | -------------------- | +| errors.ErrorResponse | 400, 403, 404 | application/json | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## get_datasource_credential_status + +Returns the current credential status for a datasource instance. Access is limited to callers with the ADMIN scope; the handler enforces this check. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.datasources.get_datasource_credential_status(datasource_instance_id="o365sharepoint_abc123") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `datasource_instance_id` | *str* | :heavy_check_mark: | The full datasource instance identifier (e.g. o365sharepoint_abc123) | 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.DatasourceCredentialStatusResponse](../../models/datasourcecredentialstatusresponse.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 +## rotate_datasource_credentials + +Rotates the credentials that a datasource instance uses to connect to its upstream system. Replaces the active credential material with the supplied values and returns the credential status after rotation. Access is limited to callers with the ADMIN scope; the handler enforces this check. +Only keys recognized as credential material for the datasource type may be set in `credentials.values` (e.g. `clientSecret`, `apiToken`, `privateKey`, depending on the configured auth method). Unrecognized keys, or keys that correspond to non-credential configuration, cause a 400; other instance configuration must be updated via PATCH /configure/datasources/{datasourceId}/instances/{instanceId}. -Fetches the datasource config for the specified custom datasource. ### Example Usage - + ```python from glean.api_client import Glean import os @@ -94,7 +162,11 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.indexing.datasources.retrieve_config(datasource="") + res = glean.datasources.rotate_datasource_credentials(datasource_instance_id="o365sharepoint_abc123", credentials={ + "values": { + "key": {}, + }, + }) # Handle response print(res) @@ -103,17 +175,19 @@ 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_instance_id` | *str* | :heavy_check_mark: | The full datasource instance identifier (e.g. o365sharepoint_abc123) | o365sharepoint_abc123 | +| `credentials` | [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.DatasourceCredentialStatusResponse](../../models/datasourcecredentialstatusresponse.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/entities/README.md b/docs/sdks/entities/README.md index 925cdad4..dce02213 100644 --- a/docs/sdks/entities/README.md +++ b/docs/sdks/entities/README.md @@ -1,83 +1,19 @@ # Entities -(*client.entities*) ## Overview ### Available Operations -* [list](#list) - List entities -* [read_people](#read_people) - Read people +* [get_person_photo](#get_person_photo) - Get person photo -## list +## get_person_photo -List some set of details for all entities that fit the given criteria and return in the requested order. Does not support negation in filters, assumes relation type EQUALS. There is a limit of 10000 entities that can be retrieved via this endpoint, except when using FULL_DIRECTORY request type for people entities. +Returns the profile photo bytes for a person whose photo is stored in Glean (crawled from an identity source or user-uploaded via admin console). Photos hosted externally (e.g. Slack CDN) are not served by this endpoint; callers should follow the photoUrl from /people or /listentities directly. Responses include a Cache-Control header (max-age=3600) to reduce redundant fetches. -### Example Usage - - -```python -from glean.api_client import Glean, models -import os - - -with Glean( - api_token=os.getenv("GLEAN_API_TOKEN", ""), -) as glean: - - res = glean.client.entities.list(filter_=[ - { - "field_name": "type", - "values": [ - { - "value": "Spreadsheet", - "relation_type": models.RelationType.EQUALS, - }, - { - "value": "Presentation", - "relation_type": models.RelationType.EQUALS, - }, - ], - }, - ], entity_type=models.ListEntitiesRequestEntityType.PEOPLE, page_size=100, request_type=models.RequestType.STANDARD) - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | -| `filter_` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | N/A | | -| `sort` | List[[models.SortOptions](../../models/sortoptions.md)] | :heavy_minus_sign: | Use EntitiesSortOrder enum for SortOptions.sortBy | | -| `entity_type` | [Optional[models.ListEntitiesRequestEntityType]](../../models/listentitiesrequestentitytype.md) | :heavy_minus_sign: | N/A | | -| `datasource` | *Optional[str]* | :heavy_minus_sign: | The datasource associated with the entity type, most commonly used with CUSTOM_ENTITIES | | -| `query` | *Optional[str]* | :heavy_minus_sign: | A query string to search for entities that each entity in the response must conform to. An empty query does not filter any entities. | | -| `include_fields` | List[[models.ListEntitiesRequestIncludeField](../../models/listentitiesrequestincludefield.md)] | :heavy_minus_sign: | List of entity fields to return (that aren't returned by default) | | -| `page_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many results to send back. Server may return less. | 100 | -| `cursor` | *Optional[str]* | :heavy_minus_sign: | Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. | | -| `source` | *Optional[str]* | :heavy_minus_sign: | A string denoting the search surface from which the endpoint is called. | | -| `request_type` | [Optional[models.RequestType]](../../models/requesttype.md) | :heavy_minus_sign: | The type of request being made. | | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[models.ListEntitiesResponse](../../models/listentitiesresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------- | ----------------- | ----------------- | -| errors.GleanError | 4XX, 5XX | \*/\* | - -## read_people - -Read people details for the given IDs. ### Example Usage - + ```python from glean.api_client import Glean import os @@ -87,10 +23,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.entities.read_people(obfuscated_ids=[ - "abc123", - "abc456", - ]) + res = glean.entities.get_person_photo(person_id="") # Handle response print(res) @@ -99,19 +32,15 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `timezone_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. | -| `obfuscated_ids` | List[*str*] | :heavy_minus_sign: | The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. | -| `email_ids` | List[*str*] | :heavy_minus_sign: | The email IDs to retrieve. The result is the deduplicated union of emailIds and obfuscatedIds. | -| `include_fields` | List[[models.PeopleRequestIncludeField](../../models/peoplerequestincludefield.md)] | :heavy_minus_sign: | List of PersonMetadata fields to return (that aren't returned by default) | -| `include_types` | List[[models.IncludeType](../../models/includetype.md)] | :heavy_minus_sign: | The types of people entities to include in the response in addition to those returned by default. | -| `source` | *Optional[str]* | :heavy_minus_sign: | A string denoting the search surface from which the endpoint is called. | -| `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 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `person_id` | *str* | :heavy_check_mark: | The obfuscated ID of the person whose photo to retrieve. | +| `ds` | *Optional[str]* | :heavy_minus_sign: | Optional datasource override for crawled photos (e.g. AZURE, GDRIVE, OKTA). When omitted, the datasource is derived from the person's stored photo URL or the deployment's primary person datasource.
| +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[models.PeopleResponse](../../models/peopleresponse.md)** +**[models.GetPersonPhotoResponse](../../models/getpersonphotoresponse.md)** ### Errors diff --git a/docs/sdks/governance/README.md b/docs/sdks/governance/README.md new file mode 100644 index 00000000..8708b51c --- /dev/null +++ b/docs/sdks/governance/README.md @@ -0,0 +1,169 @@ +# Governance + +## Overview + +### Available Operations + +* [createfindingsexport](#createfindingsexport) - Creates findings export +* [listfindingsexports](#listfindingsexports) - Lists findings exports +* [downloadfindingsexport](#downloadfindingsexport) - Downloads findings export +* [deletefindingsexport](#deletefindingsexport) - Deletes findings export + +## createfindingsexport + +Creates a new DLP findings export job. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.governance.createfindingsexport() + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | +| `export_type` | [Optional[models.DlpExportFindingsRequestExportType]](../../models/dlpexportfindingsrequestexporttype.md) | :heavy_minus_sign: | The type of export to perform | +| `filter_` | [Optional[models.DlpFindingFilter]](../../models/dlpfindingfilter.md) | :heavy_minus_sign: | N/A | +| `issue_filter` | [Optional[models.DlpIssueFilter]](../../models/dlpissuefilter.md) | :heavy_minus_sign: | Filter for DLP issues. Includes document-level filters and issue-specific filters. | +| `file_name` | *Optional[str]* | :heavy_minus_sign: | The name of the file to export the findings to | +| `field_scope` | [Optional[models.FieldScope]](../../models/fieldscope.md) | :heavy_minus_sign: | Controls which fields to include in the export | +| `fields_to_exclude` | List[*str*] | :heavy_minus_sign: | List of field names to exclude from the export | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.ExportInfo](../../models/exportinfo.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## listfindingsexports + +Lists all DLP findings exports. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.governance.listfindingsexports() + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[models.ListDlpFindingsExportsResponse](../../models/listdlpfindingsexportsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## downloadfindingsexport + +Downloads a DLP findings export as a CSV file. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.governance.downloadfindingsexport(id="") + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | The ID of the export to download. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[str](../../models/.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | + +## deletefindingsexport + +Deletes a DLP findings export. + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + glean.governance.deletefindingsexport(id=741945) + + # Use the SDK ... + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `id` | *int* | :heavy_check_mark: | The ID of the export to delete. | +| `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 | \*/\* | \ No newline at end of file diff --git a/docs/sdks/indexingauthentication/README.md b/docs/sdks/indexingauthentication/README.md index e50aec83..4dd9ebe7 100644 --- a/docs/sdks/indexingauthentication/README.md +++ b/docs/sdks/indexingauthentication/README.md @@ -1,5 +1,4 @@ -# IndexingAuthentication -(*indexing.authentication*) +# Indexing.Authentication ## Overview diff --git a/docs/sdks/indexingdatasource/README.md b/docs/sdks/indexingdatasource/README.md index b447979c..9e293dca 100644 --- a/docs/sdks/indexingdatasource/README.md +++ b/docs/sdks/indexingdatasource/README.md @@ -1,5 +1,4 @@ -# IndexingDatasource -(*indexing.datasource*) +# Indexing.Datasource ## Overview 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 f514c70a..184a3903 100644 --- a/docs/sdks/indexingdocuments/README.md +++ b/docs/sdks/indexingdocuments/README.md @@ -1,5 +1,4 @@ -# IndexingDocuments -(*indexing.documents*) +# Indexing.Documents ## Overview @@ -360,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 @@ -407,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/indexingpermissions/README.md b/docs/sdks/indexingpermissions/README.md index 6fc1dd55..a2231eb1 100644 --- a/docs/sdks/indexingpermissions/README.md +++ b/docs/sdks/indexingpermissions/README.md @@ -1,5 +1,4 @@ -# IndexingPermissions -(*indexing.permissions*) +# Indexing.Permissions ## Overview diff --git a/docs/sdks/indexingshortcuts/README.md b/docs/sdks/indexingshortcuts/README.md index 0d67f7d8..6d8cda7a 100644 --- a/docs/sdks/indexingshortcuts/README.md +++ b/docs/sdks/indexingshortcuts/README.md @@ -1,5 +1,4 @@ -# IndexingShortcuts -(*indexing.shortcuts*) +# Indexing.Shortcuts ## Overview @@ -10,7 +9,7 @@ ## bulk_index -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. +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://docs.glean.com/user-guide/knowledge/go-links/how-go-links-work) page. ### Example Usage diff --git a/docs/sdks/insights/README.md b/docs/sdks/insights/README.md index 76c3d68f..9dbe2045 100644 --- a/docs/sdks/insights/README.md +++ b/docs/sdks/insights/README.md @@ -1,5 +1,4 @@ -# Insights -(*client.insights*) +# Client.Insights ## Overview @@ -32,19 +31,16 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `overview_request` | [Optional[models.InsightsOverviewRequest]](../../models/insightsoverviewrequest.md) | :heavy_minus_sign: | N/A | -| `assistant_request` | [Optional[models.InsightsAssistantRequest]](../../models/insightsassistantrequest.md) | :heavy_minus_sign: | N/A | -| `agents_request` | [Optional[models.AgentsInsightsV2Request]](../../models/agentsinsightsv2request.md) | :heavy_minus_sign: | N/A | -| `disable_per_user_insights` | *Optional[bool]* | :heavy_minus_sign: | If true, suppresses the generation of per-user Insights in the response. Default is false. | -| `categories` | List[[models.InsightsRequestCategory](../../models/insightsrequestcategory.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Categories of data requested. Request can include single or multiple types. | -| `departments` | List[*str*] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Departments that the data is requested for. If this is empty, corresponds to whole company. | -| `day_range` | [Optional[models.Period]](../../models/period.md) | :heavy_minus_sign: | N/A | -| `ai_app_request_options` | [Optional[models.InsightsAiAppRequestOptions]](../../models/insightsaiapprequestoptions.md) | :heavy_minus_sign: | N/A | -| `agents_request_options` | [Optional[models.InsightsAgentsRequestOptions]](../../models/insightsagentsrequestoptions.md) | :heavy_minus_sign: | N/A | -| `assistant_activity_types` | List[[models.AssistantActivityType](../../models/assistantactivitytype.md)] | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

Types of activity that should count in the definition of an Assistant Active User. Affects only insights for AI category. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `overview_request` | [Optional[models.InsightsOverviewRequest]](../../models/insightsoverviewrequest.md) | :heavy_minus_sign: | N/A | +| `assistant_request` | [Optional[models.InsightsAssistantRequest]](../../models/insightsassistantrequest.md) | :heavy_minus_sign: | N/A | +| `agents_request` | [Optional[models.AgentsInsightsV2Request]](../../models/agentsinsightsv2request.md) | :heavy_minus_sign: | N/A | +| `mcp_request` | [Optional[models.McpInsightsRequest]](../../models/mcpinsightsrequest.md) | :heavy_minus_sign: | N/A | +| `mcp_breakdown_request` | [Optional[models.McpBreakdownInsightsRequest]](../../models/mcpbreakdowninsightsrequest.md) | :heavy_minus_sign: | N/A | +| `disable_per_user_insights` | *Optional[bool]* | :heavy_minus_sign: | If true, suppresses the generation of per-user Insights in the response. Default is false. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response diff --git a/docs/sdks/messages/README.md b/docs/sdks/messages/README.md index 3cf9519d..0aa193b3 100644 --- a/docs/sdks/messages/README.md +++ b/docs/sdks/messages/README.md @@ -1,5 +1,4 @@ -# Messages -(*client.messages*) +# Client.Messages ## Overview @@ -32,17 +31,18 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id_type` | [models.IDType](../../models/idtype.md) | :heavy_check_mark: | Type of the id in the incoming request. | -| `id` | *str* | :heavy_check_mark: | ID corresponding to the requested idType. Note that channel and threads are represented by the underlying datasource's ID and conversations are represented by their document's ID. | -| `datasource` | [models.Datasource](../../models/datasource.md) | :heavy_check_mark: | The type of the data source. | -| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Id for the for the workspace in case of multiple workspaces. | -| `direction` | [Optional[models.Direction]](../../models/direction.md) | :heavy_minus_sign: | The direction of the results asked with respect to the reference timestamp. Missing field defaults to OLDER. Only applicable when using a message_id. | -| `timestamp_millis` | *Optional[int]* | :heavy_minus_sign: | Timestamp in millis of the reference message. Only applicable when using a message_id. | -| `include_root_message` | *Optional[bool]* | :heavy_minus_sign: | Whether to include root message in response. | -| `datasource_instance_display_name` | *Optional[str]* | :heavy_minus_sign: | The datasource instance display name from which the document was extracted. This is used for appinstance facet filter for datasources that support multiple instances. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id_type` | [models.IDType](../../models/idtype.md) | :heavy_check_mark: | Type of the id in the incoming request. | +| `id` | *str* | :heavy_check_mark: | ID corresponding to the requested idType. Note that channel and threads are represented by the underlying datasource's ID and conversations are represented by their document's ID. | +| `datasource` | [models.Datasource](../../models/datasource.md) | :heavy_check_mark: | The type of the data source. | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `workspace_id` | *Optional[str]* | :heavy_minus_sign: | Id for the for the workspace in case of multiple workspaces. | +| `direction` | [Optional[models.Direction]](../../models/direction.md) | :heavy_minus_sign: | The direction of the results asked with respect to the reference timestamp. Missing field defaults to OLDER. Only applicable when using a message_id. | +| `timestamp_millis` | *Optional[int]* | :heavy_minus_sign: | Timestamp in millis of the reference message. Only applicable when using a message_id. | +| `include_root_message` | *Optional[bool]* | :heavy_minus_sign: | Whether to include root message in response. | +| `datasource_instance_display_name` | *Optional[str]* | :heavy_minus_sign: | The datasource instance display name from which the document was extracted. This is used for appinstance facet filter for datasources that support multiple instances. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response diff --git a/docs/sdks/people/README.md b/docs/sdks/people/README.md index 94438eef..7976d51e 100644 --- a/docs/sdks/people/README.md +++ b/docs/sdks/people/README.md @@ -1,5 +1,4 @@ -# People -(*indexing.people*) +# Indexing.People ## Overview @@ -9,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 @@ -67,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 @@ -107,7 +106,7 @@ with Glean( ## index -Adds an employee or updates information about an employee +Adds an employee or replaces the existing information about an employee. ### Example Usage @@ -150,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/docs/sdks/pins/README.md b/docs/sdks/pins/README.md index 629e2591..3a4952c3 100644 --- a/docs/sdks/pins/README.md +++ b/docs/sdks/pins/README.md @@ -1,5 +1,4 @@ -# Pins -(*client.pins*) +# Client.Pins ## Overview @@ -50,12 +49,13 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -| `queries` | List[*str*] | :heavy_minus_sign: | The query strings for which the pinned result will show. | -| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. | -| `id` | *Optional[str]* | :heavy_minus_sign: | The opaque id of the pin to be edited. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `queries` | List[*str*] | :heavy_minus_sign: | The query strings for which the pinned result will show. | +| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. | +| `id` | *Optional[str]* | :heavy_minus_sign: | The opaque id of the pin to be edited. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -92,10 +92,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `id` | *Optional[str]* | :heavy_minus_sign: | The opaque id of the pin to be fetched. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `id` | *Optional[str]* | :heavy_minus_sign: | The opaque id of the pin to be fetched. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -123,7 +124,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.pins.list(request={}) + res = glean.client.pins.list(request_body={}) # Handle response print(res) @@ -132,10 +133,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `request` | [models.ListpinsRequest](../../models/listpinsrequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `request_body` | [models.ListpinsRequestBody](../../models/listpinsrequestbody.md) | :heavy_check_mark: | List pins request | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -186,12 +188,13 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -| `queries` | List[*str*] | :heavy_minus_sign: | The query strings for which the pinned result will show. | -| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. | -| `document_id` | *Optional[str]* | :heavy_minus_sign: | The document to be pinned. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `queries` | List[*str*] | :heavy_minus_sign: | The query strings for which the pinned result will show. | +| `audience_filters` | List[[models.FacetFilter](../../models/facetfilter.md)] | :heavy_minus_sign: | Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. | +| `document_id` | *Optional[str]* | :heavy_minus_sign: | The document to be pinned. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -227,10 +230,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `id` | *Optional[str]* | :heavy_minus_sign: | The opaque id of the pin to be unpinned. | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | +| `id` | *Optional[str]* | :heavy_minus_sign: | The opaque id of the pin to be unpinned. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Errors diff --git a/docs/sdks/policies/README.md b/docs/sdks/policies/README.md index 69030c29..ade2483c 100644 --- a/docs/sdks/policies/README.md +++ b/docs/sdks/policies/README.md @@ -1,5 +1,4 @@ -# Policies -(*client.governance.data.policies*) +# Client.Governance.Data.Policies ## Overview diff --git a/docs/sdks/reports/README.md b/docs/sdks/reports/README.md index 473e2ae1..5dd26e03 100644 --- a/docs/sdks/reports/README.md +++ b/docs/sdks/reports/README.md @@ -1,5 +1,4 @@ -# Reports -(*client.governance.data.reports*) +# Client.Governance.Data.Reports ## Overview diff --git a/docs/sdks/search/README.md b/docs/sdks/search/README.md index cf918818..7e640dd6 100644 --- a/docs/sdks/search/README.md +++ b/docs/sdks/search/README.md @@ -1,5 +1,4 @@ -# Search -(*client.search*) +# Client.Search ## Overview @@ -139,6 +138,7 @@ with Glean( | Parameter | Type | Required | Description | Example | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `query` | *str* | :heavy_check_mark: | The search terms. | vacation policy | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | | | `timestamp` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The ISO 8601 timestamp associated with the client request. | | | `tracking_token` | *Optional[str]* | :heavy_minus_sign: | A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. | | | `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | @@ -197,17 +197,18 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | -| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | N/A | | -| `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | -| `query` | *Optional[str]* | :heavy_minus_sign: | Partially typed query. | San Fra | -| `datasources_filter` | List[*str*] | :heavy_minus_sign: | Filter results to only those relevant to one or more datasources (e.g. jira, gdrive). Results are unfiltered if missing. | | -| `datasource` | *Optional[str]* | :heavy_minus_sign: | Filter to only return results relevant to the given datasource. | | -| `result_types` | List[[models.AutocompleteRequestResultType](../../models/autocompleterequestresulttype.md)] | :heavy_minus_sign: | Filter to only return results of the given type(s). All types may be returned if omitted. | | -| `result_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of results to be returned. If no value is provided, the backend will cap at 200.
| 10 | -| `auth_tokens` | List[[models.AuthToken](../../models/authtoken.md)] | :heavy_minus_sign: | Auth tokens which may be used for federated results. | | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | +| `query` | *Optional[str]* | :heavy_minus_sign: | Partially typed query. | San Fra | +| `datasources_filter` | List[*str*] | :heavy_minus_sign: | Filter results to only those relevant to one or more datasources (e.g. jira, gdrive). Results are unfiltered if missing. | | +| `datasource` | *Optional[str]* | :heavy_minus_sign: | Filter to only return results relevant to the given datasource. | | +| `result_types` | List[[models.AutocompleteRequestResultType](../../models/autocompleterequestresulttype.md)] | :heavy_minus_sign: | Filter to only return results of the given type(s). All types may be returned if omitted. | | +| `result_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of results to be returned. If no value is provided, the backend will cap at 200.
| 10 | +| `auth_tokens` | List[[models.AuthToken](../../models/authtoken.md)] | :heavy_minus_sign: | Auth tokens which may be used for federated results. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response @@ -244,13 +245,14 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -| `categories` | List[[models.FeedRequestCategory](../../models/feedrequestcategory.md)] | :heavy_minus_sign: | Categories of content requested. An allowlist gives flexibility to request content separately or together. | | -| `request_options` | [Optional[models.FeedRequestOptions]](../../models/feedrequestoptions.md) | :heavy_minus_sign: | N/A | | -| `timeout_millis` | *Optional[int]* | :heavy_minus_sign: | Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. | 5000 | -| `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | | +| `categories` | List[[models.FeedRequestCategory](../../models/feedrequestcategory.md)] | :heavy_minus_sign: | Categories of content requested. An allowlist gives flexibility to request content separately or together. | | +| `request_options` | [Optional[models.FeedRequestOptions]](../../models/feedrequestoptions.md) | :heavy_minus_sign: | N/A | | +| `timeout_millis` | *Optional[int]* | :heavy_minus_sign: | Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. | 5000 | +| `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response @@ -453,17 +455,18 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `timestamp` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The ISO 8601 timestamp associated with the client request. | | -| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. | | -| `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | -| `source_document` | [Optional[models.Document]](../../models/document.md) | :heavy_minus_sign: | N/A | | -| `page_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. | 100 | -| `max_snippet_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many characters long a snippet may be. Server may return less or more. | 400 | -| `recommendation_document_spec` | [Optional[models.DocumentSpecUnion]](../../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | -| `request_options` | [Optional[models.RecommendationsRequestOptions]](../../models/recommendationsrequestoptions.md) | :heavy_minus_sign: | N/A | | -| `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 | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | | +| `timestamp` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The ISO 8601 timestamp associated with the client request. | | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. | | +| `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | +| `source_document` | [Optional[models.Document]](../../models/document.md) | :heavy_minus_sign: | N/A | | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many results to send back. Server may return less or more. Structured results and clustered results don't count towards pageSize. | 100 | +| `max_snippet_size` | *Optional[int]* | :heavy_minus_sign: | Hint to the server about how many characters long a snippet may be. Server may return less or more. | 400 | +| `recommendation_document_spec` | [Optional[models.DocumentSpecUnion]](../../models/documentspecunion.md) | :heavy_minus_sign: | N/A | | +| `request_options` | [Optional[models.RecommendationsRequestOptions]](../../models/recommendationsrequestoptions.md) | :heavy_minus_sign: | N/A | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response @@ -603,6 +606,7 @@ with Glean( | Parameter | Type | Required | Description | Example | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `query` | *str* | :heavy_check_mark: | The search terms. | vacation policy | +| `locale` | *Optional[str]* | :heavy_minus_sign: | The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. | | | `timestamp` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The ISO 8601 timestamp associated with the client request. | | | `tracking_token` | *Optional[str]* | :heavy_minus_sign: | A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. | | | `session_info` | [Optional[models.SessionInfo]](../../models/sessioninfo.md) | :heavy_minus_sign: | N/A | | diff --git a/docs/sdks/tools/README.md b/docs/sdks/tools/README.md index 2f9dc0fa..efef9a0f 100644 --- a/docs/sdks/tools/README.md +++ b/docs/sdks/tools/README.md @@ -1,20 +1,22 @@ # Tools -(*client.tools*) ## Overview ### Available Operations -* [list](#list) - List available tools -* [run](#run) - Execute the specified tool +* [get_action_pack_auth_status](#get_action_pack_auth_status) - Get end-user authentication status for an action pack. +* [authorize_action_pack](#authorize_action_pack) - Start the OAuth authorization flow for an action pack. -## list +## get_action_pack_auth_status + +Reports whether the calling user is already authenticated against the third-party +tool backing the specified action pack. Intended for headless / server-driven clients +that render an "Authorize" prompt when the user has not yet consented to the tool. -Returns a filtered set of available tools based on optional tool name parameters. If no filters are provided, all available tools are returned. ### Example Usage - + ```python from glean.api_client import Glean import os @@ -24,7 +26,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.tools.list() + res = glean.tools.get_action_pack_auth_status(action_pack_id="") # Handle response print(res) @@ -35,12 +37,12 @@ with Glean( | Parameter | Type | Required | Description | | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `tool_names` | List[*str*] | :heavy_minus_sign: | Optional array of tool names to filter by | +| `action_pack_id` | *str* | :heavy_check_mark: | ID of the action pack to query or authorize. | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[models.ToolsListResponse](../../models/toolslistresponse.md)** +**[models.ActionPackAuthStatusResponse](../../models/actionpackauthstatusresponse.md)** ### Errors @@ -48,13 +50,20 @@ with Glean( | ----------------- | ----------------- | ----------------- | | errors.GleanError | 4XX, 5XX | \*/\* | -## run +## authorize_action_pack + +Starts the third-party OAuth flow for the specified action pack and returns the +redirect URL that the client should navigate the end user to. After the OAuth +callback completes, the user's browser is redirected back to `returnUrl` with a +status query parameter (`?glean_action_auth=success|error&actionPackId=...`). + +`returnUrl` must match the tenant's configured return URL allowlist; otherwise the +request is rejected with 400. -Execute the specified tool with provided parameters ### Example Usage - + ```python from glean.api_client import Glean import os @@ -64,9 +73,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.tools.run(name="", parameters={ - - }) + res = glean.tools.authorize_action_pack(action_pack_id="", return_url="https://merry-allocation.org/") # Handle response print(res) @@ -75,15 +82,15 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | -| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | -| `name` | *str* | :heavy_check_mark: | Required name of the tool to execute | -| `parameters` | Dict[str, [models.ToolsCallParameter](../../models/toolscallparameter.md)] | :heavy_check_mark: | The parameters for the tool. Each key is the name of the parameter and the value is the parameter object. | -| `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 | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `action_pack_id` | *str* | :heavy_check_mark: | ID of the action pack to query or authorize. | +| `return_url` | *str* | :heavy_check_mark: | URL on the customer's domain to redirect the end user's browser back to after the third-party OAuth
callback completes. Must be present in the tenant's return URL allowlist.
| +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[models.ToolsCallResponse](../../models/toolscallresponse.md)** +**[models.AuthorizeActionPackResponse](../../models/authorizeactionpackresponse.md)** ### Errors diff --git a/docs/sdks/troubleshooting/README.md b/docs/sdks/troubleshooting/README.md new file mode 100644 index 00000000..528524fc --- /dev/null +++ b/docs/sdks/troubleshooting/README.md @@ -0,0 +1,53 @@ +# Troubleshooting + +## Overview + +### Available Operations + +* [post_api_index_v1_debug_datasource_document_events](#post_api_index_v1_debug_datasource_document_events) - Beta: Get document lifecycle events + + +## post_api_index_v1_debug_datasource_document_events + +Retrieves lifecycle events for a specific document including upload time, index times and deletions. Rate limited to 1 request per minute per datasource. Currently in beta, might undergo breaking changes without prior notice. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.troubleshooting.post_api_index_v1_debug_datasource_document_events(datasource="", object_type="Article", doc_id="art123", start_date="2025-05-01", max_events=50) + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `datasource` | *str* | :heavy_check_mark: | The datasource to which the document belongs | | +| `object_type` | *str* | :heavy_check_mark: | Object type of the document to get lifecycle events for. | Article | +| `doc_id` | *str* | :heavy_check_mark: | Glean Document ID within the datasource to get lifecycle events for. | art123 | +| `start_date` | *Optional[str]* | :heavy_minus_sign: | The start date for events to be fetched. Cannot be more than 30 days (default 7 days) in the past. | 2025-05-01 | +| `max_events` | *Optional[int]* | :heavy_minus_sign: | Max number of events to be fetched. Cannot be more than 100 (default 20). | 50 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.DebugDocumentLifecycleResponse](../../models/debugdocumentlifecycleresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ----------------- | ----------------- | ----------------- | +| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/visibilityoverrides/README.md b/docs/sdks/visibilityoverrides/README.md index 2fc45679..049688db 100644 --- a/docs/sdks/visibilityoverrides/README.md +++ b/docs/sdks/visibilityoverrides/README.md @@ -1,5 +1,4 @@ -# Visibilityoverrides -(*client.governance.documents.visibilityoverrides*) +# Client.Governance.Documents.Visibilityoverrides ## Overview diff --git a/mise.toml b/mise.toml index 14a5c081..c0b7d26c 100644 --- a/mise.toml +++ b/mise.toml @@ -2,7 +2,7 @@ poetry = "latest" # matches version in .python-version -python = "3.9" +python = "3.10" # needed by speakeasy mockserver go = "1.22" diff --git a/poetry.lock b/poetry.lock index 91316c90..4a68e0e6 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.1.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand. [[package]] name = "annotated-types" @@ -50,6 +50,19 @@ files = [ [package.dependencies] typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} +[[package]] +name = "backports-asyncio-runner" +version = "1.2.0" +description = "Backport of asyncio.Runner, a context manager that controls event loop life cycle." +optional = false +python-versions = "<3.11,>=3.8" +groups = ["dev"] +markers = "python_version == \"3.10\"" +files = [ + {file = "backports_asyncio_runner-1.2.0-py3-none-any.whl", hash = "sha256:0da0a936a8aeb554eccb426dc55af3ba63bcdc69fa1a600b5bb305413a4477b5"}, + {file = "backports_asyncio_runner-1.2.0.tar.gz", hash = "sha256:a5aa7b2b7d8f8bfcaa2b57313f70792df84e32a2a746f585213373f900b42162"}, +] + [[package]] name = "certifi" version = "2025.1.31" @@ -98,7 +111,7 @@ description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" groups = ["main", "dev"] -markers = "python_version < \"3.11\"" +markers = "python_version == \"3.10\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -124,31 +137,31 @@ testing = ["hatch", "pre-commit", "pytest", "tox"] [[package]] name = "h11" -version = "0.14.0" +version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" groups = ["main"] files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, ] [[package]] name = "httpcore" -version = "1.0.7" +version = "1.0.9" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" groups = ["main"] files = [ - {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, - {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, + {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, + {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, ] [package.dependencies] certifi = "*" -h11 = ">=0.13,<0.15" +h11 = ">=0.16" [package.extras] asyncio = ["anyio (>=4.0,<5.0)"] @@ -301,6 +314,18 @@ files = [ {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, ] +[[package]] +name = "nodeenv" +version = "1.9.1" +description = "Node.js virtual environment builder" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] +files = [ + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, +] + [[package]] name = "packaging" version = "24.2" @@ -480,6 +505,21 @@ files = [ [package.dependencies] typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" +[[package]] +name = "pygments" +version = "2.19.2" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b"}, + {file = "pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887"}, +] + +[package.extras] +windows-terminal = ["colorama (>=0.4.6)"] + [[package]] name = "pylint" version = "3.2.3" @@ -505,49 +545,72 @@ mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} tomlkit = ">=0.10.1" -typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] spelling = ["pyenchant (>=3.2,<4.0)"] testutils = ["gitpython (>3)"] +[[package]] +name = "pyright" +version = "1.1.398" +description = "Command line wrapper for pyright" +optional = false +python-versions = ">=3.7" +groups = ["dev"] +files = [ + {file = "pyright-1.1.398-py3-none-any.whl", hash = "sha256:0a70bfd007d9ea7de1cf9740e1ad1a40a122592cfe22a3f6791b06162ad08753"}, + {file = "pyright-1.1.398.tar.gz", hash = "sha256:357a13edd9be8082dc73be51190913e475fa41a6efb6ec0d4b7aab3bc11638d8"}, +] + +[package.dependencies] +nodeenv = ">=1.6.0" +typing-extensions = ">=4.1" + +[package.extras] +all = ["nodejs-wheel-binaries", "twine (>=3.4.1)"] +dev = ["twine (>=3.4.1)"] +nodejs = ["nodejs-wheel-binaries"] + [[package]] name = "pytest" -version = "8.3.5" +version = "8.4.2" description = "pytest: simple powerful testing with Python" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820"}, - {file = "pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845"}, + {file = "pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79"}, + {file = "pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01"}, ] [package.dependencies] -colorama = {version = "*", markers = "sys_platform == \"win32\""} -exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} -iniconfig = "*" -packaging = "*" +colorama = {version = ">=0.4", markers = "sys_platform == \"win32\""} +exceptiongroup = {version = ">=1", markers = "python_version < \"3.11\""} +iniconfig = ">=1" +packaging = ">=20" pluggy = ">=1.5,<2" +pygments = ">=2.7.2" tomli = {version = ">=1", markers = "python_version < \"3.11\""} [package.extras] -dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-asyncio" -version = "0.25.3" +version = "1.3.0" description = "Pytest support for asyncio" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["dev"] files = [ - {file = "pytest_asyncio-0.25.3-py3-none-any.whl", hash = "sha256:9e89518e0f9bd08928f97a3482fdc4e244df17529460bc038291ccaf8f85c7c3"}, - {file = "pytest_asyncio-0.25.3.tar.gz", hash = "sha256:fc1da2cf9f125ada7e710b4ddad05518d4cee187ae9412e9ac9271003497f07a"}, + {file = "pytest_asyncio-1.3.0-py3-none-any.whl", hash = "sha256:611e26147c7f77640e6d0a92a38ed17c3e9848063698d5c93d5aa7aa11cebff5"}, + {file = "pytest_asyncio-1.3.0.tar.gz", hash = "sha256:d7f52f36d231b80ee124cd216ffb19369aa168fc10095013c6b014a34d3ee9e5"}, ] [package.dependencies] -pytest = ">=8.2,<9" +backports-asyncio-runner = {version = ">=1.1,<2", markers = "python_version < \"3.11\""} +pytest = ">=8.2,<10" +typing-extensions = {version = ">=4.12", markers = "python_version < \"3.13\""} [package.extras] docs = ["sphinx (>=5.3)", "sphinx-rtd-theme (>=1)"] @@ -555,14 +618,14 @@ testing = ["coverage (>=6.2)", "hypothesis (>=5.7.1)"] [[package]] name = "pytest-xdist" -version = "3.6.1" +version = "3.8.0" description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "pytest_xdist-3.6.1-py3-none-any.whl", hash = "sha256:9ed4adfb68a016610848639bb7e02c9352d5d9f03d04809919e2dafc3be4cca7"}, - {file = "pytest_xdist-3.6.1.tar.gz", hash = "sha256:ead156a4db231eec769737f57668ef58a2084a34b2e55c4a8fa20d861107300d"}, + {file = "pytest_xdist-3.8.0-py3-none-any.whl", hash = "sha256:202ca578cfeb7370784a8c33d6d05bc6e13b4f25b5053c30a152269fd10f0b88"}, + {file = "pytest_xdist-3.8.0.tar.gz", hash = "sha256:7e578125ec9bc6050861aa93f2d59f1d8d085595d6551c2c90b6f4fad8d3a9f1"}, ] [package.dependencies] @@ -593,7 +656,7 @@ description = "A lil' TOML parser" optional = false python-versions = ">=3.8" groups = ["dev"] -markers = "python_version < \"3.11\"" +markers = "python_version == \"3.10\"" files = [ {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, @@ -670,5 +733,5 @@ typing-extensions = ">=4.12.0" [metadata] lock-version = "2.1" -python-versions = ">=3.9" -content-hash = "484c8deb24ffb208aade25840cc6a7a2a7a2f3173de24731d758a0715ee052eb" +python-versions = ">=3.10" +content-hash = "57ed5a9ea3e3be454cd27a35140011ae4c60c9c494f6d4f7f4fdfed5500b1352" diff --git a/pylintrc b/pylintrc index 8e34b78a..79e388be 100644 --- a/pylintrc +++ b/pylintrc @@ -89,7 +89,7 @@ persistent=yes # Minimum Python version to use for version dependent checks. Will default to # the version used to run pylint. -py-version=3.9 +py-version=3.10 # Discover python modules and packages in the file system subtree. recursive=no @@ -188,7 +188,7 @@ good-names=i, Run, _, e, - ai, + ds, id, ts @@ -460,7 +460,8 @@ disable=raw-checker-failed, consider-using-with, wildcard-import, unused-wildcard-import, - too-many-return-statements + too-many-return-statements, + redefined-builtin # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option diff --git a/pyproject.toml b/pyproject.toml index 68924c61..f34dd6a5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,21 +1,26 @@ + [project] name = "glean-api-client" -version = "0.11.22" +version = "0.13.0" description = "Python Client SDK Generated by Speakeasy." -authors = [{ name = "Glean Technologies, Inc." }] -license = "MIT" -# NOTE: scripts/prepare_readme.py tweaks this to point to README-PYPI.md for publication -# The published readme has relative URLs converted to absolute URLs for PyPI compatibility -readme = "README.md" -requires-python = ">=3.9" -dependencies = ["httpx >=0.28.1", "pydantic >=2.11.2"] +authors = [{ name = "Glean Technologies, Inc." },] +readme = "README-PYPI.md" +requires-python = ">=3.10" +dependencies = [ + "httpcore >=1.0.9", + "httpx >=0.28.1", + "pydantic >=2.11.2", +] [tool.poetry] -packages = [{ include = "glean", from = "src" }] -include = ["py.typed", "src/glean/py.typed"] +repository = "https://github.com/gleanwork/api-client-python.git" +packages = [ + { include = "glean", from = "src" } +] +include = ["py.typed", "src/glean/api_client/py.typed"] [tool.setuptools.package-data] -"*" = ["py.typed", "src/glean/py.typed"] +"*" = ["py.typed", "src/glean/api_client/py.typed"] [virtualenvs] in-project = true @@ -23,9 +28,10 @@ in-project = true [tool.poetry.group.dev.dependencies] mypy = "==1.15.0" pylint = "==3.2.3" -pytest = "^8.3.4" -pytest-asyncio = "^0.25.3" -pytest-xdist = "^3.6.1" +pyright = "==1.1.398" +pytest = "^8.4.1" +pytest-asyncio = ">=1.3.0" +pytest-xdist = "^3.8.0" [build-system] requires = ["poetry-core"] @@ -51,3 +57,5 @@ ignore_missing_imports = true [tool.pyright] venvPath = "." venv = ".venv" + + diff --git a/speakeasyusagegen/.speakeasy/logs/naming.log b/speakeasyusagegen/.speakeasy/logs/naming.log index 7219a7ad..029cce25 100644 --- a/speakeasyusagegen/.speakeasy/logs/naming.log +++ b/speakeasyusagegen/.speakeasy/logs/naming.log @@ -22,8 +22,8 @@ DEBUG prepend_op_id: Renamed to "createcollection_ResponseBody" DEBUG add_name: Renamed to "DocumentOrError" labels: "scope:shared refName:DocumentOrError" registrationID: "scope:shared refType:Schemas refName:DocumentOrError component:true oneOfPosition:2 originalName:" -DEBUG prepend_op_id: Renamed to "listpins_request" - labels: "original_name:request operation:listpins operationTag:client.pins" +DEBUG prepend_op_id: Renamed to "listpins_RequestBody" + labels: "original_name:RequestBody operation:listpins operationTag:client.pins requestResponse:request" registrationID: "scope:operations operationTag:client.pins operation:listpins requestResponse:request originalName:RequestBody" DEBUG add_name: Renamed to "GetShortcutRequest" labels: "scope:shared refName:GetShortcutRequest" @@ -60,6 +60,12 @@ DEBUG discriminated: Renamed to "indexing_shortcuts" registrationID: "scope:sdk mainSDK:SDK group:indexing originalName:shortcuts" DEBUG +--- Renaming 2 types with name "governance" --- +DEBUG discriminated: Renamed to "client_governance" + labels: "original_name:governance group:client data_type:SDK" + registrationID: "scope:sdk mainSDK:SDK group:client originalName:governance" +DEBUG + --- Renaming 3 types with name "action" --- DEBUG discriminated: Renamed to "ActivityEvent_action" labels: "original_name:action scope:shared data_type:enum refName:ActivityEvent" @@ -78,13 +84,10 @@ DEBUG discriminated: Renamed to "activity_enum" registrationID: "scope:shared refType:Schemas refName:UserActivityInsight originalName:activity" DEBUG ---- Renaming 4 types with name "category" --- +--- Renaming 3 types with name "category" --- DEBUG discriminated: Renamed to "Feedback_category" labels: "original_name:category scope:shared data_type:enum refName:Feedback" registrationID: "scope:shared refType:Schemas refName:Feedback originalName:category" -DEBUG discriminated: Renamed to "InsightsRequest_category" - labels: "original_name:category scope:shared data_type:enum refName:InsightsRequest" - registrationID: "scope:shared refType:Schemas refName:InsightsRequest originalName:category" DEBUG discriminated: Renamed to "FeedRequest_category" labels: "original_name:category scope:shared data_type:enum refName:FeedRequest" registrationID: "scope:shared refType:Schemas refName:FeedRequest originalName:category" @@ -216,7 +219,7 @@ DEBUG discriminated: Renamed to "PersonTeam_relationship" registrationID: "scope:shared refType:Schemas refName:PersonTeam originalName:relationship" DEBUG ---- Renaming 5 types with name "status" --- +--- Renaming 6 types with name "status" --- DEBUG discriminated: Renamed to "Team_status" labels: "original_name:status scope:shared data_type:enum refName:Team" registrationID: "scope:shared refType:Schemas refName:Team originalName:status" @@ -232,6 +235,9 @@ DEBUG discriminated: Renamed to "BulkUploadHistoryEvent_status" DEBUG discriminated: Renamed to "ReportStatusResponse_status" labels: "original_name:status scope:shared data_type:enum refName:ReportStatusResponse" registrationID: "scope:shared refType:Schemas refName:ReportStatusResponse originalName:status" +DEBUG discriminated: Renamed to "ExportInfo_status" + labels: "original_name:status scope:shared data_type:enum refName:ExportInfo" + registrationID: "scope:shared refType:Schemas refName:ExportInfo originalName:status" DEBUG --- Renaming 3 types with name "sourceType" --- @@ -360,6 +366,24 @@ DEBUG discriminated: Renamed to "DebugDatasourceStatusIdentityResponseComponent_ registrationID: "scope:shared refType:Schemas refName:DebugDatasourceStatusIdentityResponseComponent originalName:counts" DEBUG +--- Renaming 2 types with name "likelihoodThreshold" --- +DEBUG discriminated: Renamed to "SensitiveInfoType_likelihoodThreshold" + labels: "original_name:likelihoodThreshold scope:shared data_type:enum refName:SensitiveInfoType" + registrationID: "scope:shared refType:Schemas refName:SensitiveInfoType originalName:likelihoodThreshold" +DEBUG discriminated: Renamed to "CustomSensitiveRule_likelihoodThreshold" + labels: "original_name:likelihoodThreshold scope:shared data_type:enum refName:CustomSensitiveRule" + registrationID: "scope:shared refType:Schemas refName:CustomSensitiveRule originalName:likelihoodThreshold" +DEBUG + +--- Renaming 2 types with name "timePeriodType" --- +DEBUG discriminated: Renamed to "InputOptions_timePeriodType" + labels: "original_name:timePeriodType scope:shared data_type:enum refName:InputOptions" + registrationID: "scope:shared refType:Schemas refName:InputOptions originalName:timePeriodType" +DEBUG discriminated: Renamed to "TimeRangeFilter_timePeriodType" + labels: "original_name:timePeriodType scope:shared data_type:enum refName:TimeRangeFilter" + registrationID: "scope:shared refType:Schemas refName:TimeRangeFilter originalName:timePeriodType" +DEBUG + --- Renaming 2 types with name "override" --- DEBUG discriminated: Renamed to "DocumentVisibilityOverride_override" labels: "original_name:override scope:shared data_type:enum refName:DocumentVisibilityOverride" @@ -379,8 +403,8 @@ DEBUG incremented: Renamed to "ResponseBody_2" DEBUG prepend_op_id: N/A rename "createcollection_ResponseBody" labels: "original_name:ResponseBody operation:createcollection operationTag:client.collections requestResponse:response data_type:union" registrationID: "scope:operations operationTag:client.collections operation:createcollection requestResponse:response responseStatusCode:200 responseMediaType:application/json originalName:ResponseBody" -DEBUG prepend_op_id: N/A rename "listpins_request" - labels: "original_name:request operation:listpins operationTag:client.pins" +DEBUG prepend_op_id: N/A rename "listpins_RequestBody" + labels: "original_name:RequestBody operation:listpins operationTag:client.pins requestResponse:request" registrationID: "scope:operations operationTag:client.pins operation:listpins requestResponse:request originalName:RequestBody" DEBUG @@ -417,176 +441,184 @@ FeedbackRequest (feedback: string, body: Feedback) WorkflowFeedbackInfoSource (enum: ZERO_STATE, LIBRARY, HOMEPAGE) FeedbackResponse (HttpMeta: HTTPMetadata) Announcements (SDK empty) -CreateAnnouncementRequest (startTime: date-time, endTime: date-time, title: string ...) - StructuredText (text: string, structuredList: array) - StructuredTextItem (link: string, document: Document, text: string ...) - Document (id: string, datasource: string, connectorType: ConnectorType ...) - ConnectorType (enum: API_CRAWL, BROWSER_CRAWL, BROWSER_HISTORY ...) - DocumentContent (fullTextList: array) - DocumentMetadata (datasource: string, datasourceInstance: string, objectType: string ...) - Person (name: string, obfuscatedId: string, relatedDocuments: array ...) - RelatedDocuments (relation: enum, associatedEntityId: string, querySuggestion: QuerySuggestion ...) - Relation (enum: ATTACHMENT, CANONICAL, CASE ...) - QuerySuggestion (missingTerm: string, query: string, searchProviderInfo: SearchProviderInfo ...) - SearchProviderInfo (name: string, logoUrl: string, searchLinkUrlTemplate: string) - SearchRequestOptions (datasourceFilter: string, datasourcesFilter: array, queryOverridesFacetFilters: boolean ...) - FacetFilter (fieldName: string, values: array, groupName: string) - FacetFilterValue (value: string, relationType: enum, isNegated: boolean) - RelationType (enum: EQUALS, ID_EQUALS, LT ...) - FacetFilterSet (filters: array) - FacetBucketFilter (facet: string, prefix: string) - AuthToken (accessToken: string, datasource: string, scope: string ...) - ResponseHint (enum: ALL_RESULT_COUNTS, FACET_RESULTS, QUERY_METADATA ...) - RestrictionFilters (containerSpecs: array) - DocumentSpecUnion (union) - DocumentSpec1 (url: string) - DocumentSpec2 (id: string) - DocumentSpec3 (ugcType: enum, contentId: integer, docType: string) - DocumentSpecUgcType1 (enum: ANNOUNCEMENTS, ANSWERS, COLLECTIONS ...) - DocumentSpec4 (ugcType: enum, ugcId: string, docType: string) - DocumentSpecUgcType2 (enum: ANNOUNCEMENTS, ANSWERS, COLLECTIONS ...) - TextRange (startIndex: integer, endIndex: integer, type: enum ...) - TextRangeType (enum: BOLD, CITATION, HIGHLIGHT ...) - DocumentSection (title: string, url: string) - SearchRequestInputDetails (hasCopyPaste: boolean) - SearchResult (structuredResults: array, trackingToken: string, document: Document ...) - StructuredResult (document: Document, person: Person, customer: Customer ...) - PersonMetadata (type: enum, firstName: string, lastName: string ...) - PersonMetadataType (enum: FULL_TIME, CONTRACTOR, NON_EMPLOYEE ...) - PersonTeam (id: string, name: string, externalLink: string ...) - PersonTeamRelationship (enum: MEMBER, MANAGER, LEAD ...) - StructuredLocation (deskLocation: string, timezone: string, address: string ...) - SocialNetwork (name: string, profileName: string, profileUrl: string) - DatasourceProfile (datasource: string, handle: string, url: string ...) - QuerySuggestionList (suggestions: array, person: Person) - PersonDistance (name: string, obfuscatedId: string, distance: float32) - InviteInfo (signUpTime: date-time, invites: array, inviter: Person ...) - ChannelInviteInfo (channel: CommunicationChannel, isAutoInvite: boolean, inviter: Person ...) - CommunicationChannel (enum: COMMUNICATION_CHANNEL_EMAIL, COMMUNICATION_CHANNEL_SLACK) - Permissions (canAdminSearch: boolean, canAdminClientApiGlobalTokens: boolean, canDlp: boolean ...) - ReadPermission (scopeType: ScopeType) - ScopeType (enum: GLOBAL, OWN) - WritePermission (scopeType: ScopeType, create: boolean, update: boolean ...) - GrantPermission (scopeType: ScopeType) - CustomFieldData (label: string, values: array, displayable: boolean) - CustomFieldValue (union) - CustomFieldValueStr (strText: string) - CustomFieldValueHyperlink (urlAnchor: string, urlLink: string) - CustomFieldValuePerson (person: Person) - AnonymousEvent (time: TimeInterval, eventType: enum) - TimeInterval (start: string, end: string) - AnonymousEventEventType (enum: DEFAULT, OUT_OF_OFFICE) - Badge (key: string, displayName: string, iconConfig: IconConfig ...) - IconConfig (generatedBackgroundColorKey: string, backgroundColor: string, color: string ...) - IconType (enum: COLLECTION, CUSTOM, DATASOURCE ...) - Customer (id: string, domains: array, company: Company ...) - Company (name: string, profileUrl: string, websiteUrls: array ...) - CustomerMetadata (datasourceId: string, customData: map) - CustomDataValue (displayLabel: string, stringValue: string, stringListValue: array ...) - Team (relatedObjects: map, permissions: ObjectPermissions, id: string ...) - RelatedObjectEdge (objects: array) - RelatedObject (id: string, metadata: class) - RelatedObjectMetadata (name: string) - ObjectPermissions (write: WritePermission) - PersonToTeamRelationship (person: Person, relationship: enum, customRelationshipStr: string ...) - PersonToTeamRelationshipRelationship (enum: MEMBER, MANAGER, LEAD ...) - TeamEmail (email: string, type: string) - TeamStatus (enum: PROCESSED, QUEUED_FOR_CREATION, QUEUED_FOR_DELETION) - CustomEntity (permissions: ObjectPermissions, id: string, title: string ...) - CustomEntityMetadata (customData: map) - UserRoleSpecification (sourceDocumentSpec: DocumentSpec_union, person: Person, group: Group ...) - Group (type: GroupType, id: string, name: string ...) - GroupType (enum: DEPARTMENT, ALL, TEAM ...) - UserRole (enum: OWNER, VIEWER, ANSWER_MODERATOR ...) - Answer (id: integer, docId: string, question: string ...) - AnswerSourceType (enum: DOCUMENT, ASSISTANT) - AnswerLikes (likedBy: array, likedByUser: boolean, numLikes: integer) - AnswerLike (user: Person, createTime: date-time) - Verification (state: enum, metadata: VerificationMetadata) - State (enum: UNVERIFIED, VERIFIED, DEPRECATED) - VerificationMetadata (lastVerifier: Person, lastVerificationTs: integer, expirationTs: integer ...) - Reminder (assignee: Person, requestor: Person, remindAt: integer ...) - CountInfo (count: integer, period: Period, org: string) - Period (minDaysFromNow: integer, maxDaysFromNow: integer, start: TimePoint ...) - TimePoint (epochSeconds: integer, daysFromNow: integer) - AnswerBoard (name: string, description: string, addedRoles: array ...) - Collection (name: string, description: string, addedRoles: array ...) - Thumbnail (photoId: string, url: string) - CollectionItem (name: string, description: string, icon: string ...) - Shortcut (id: integer, inputAlias: string, destinationUrl: string ...) - CollectionPinnedMetadata (existingPins: array, eligiblePins: array) - CollectionPinTarget (category: CollectionPinnableCategories, value: string, target: CollectionPinnableTargets) - CollectionPinnableCategories (enum: COMPANY_RESOURCE, DEPARTMENT_RESOURCE, TEAM_RESOURCE) - CollectionPinnableTargets (enum: RESOURCE_CARD, TEAM_PROFILE_PAGE) - CollectionPinMetadata (id: integer, target: CollectionPinTarget) - CollectionItemItemType (enum: DOCUMENT, TEXT, URL ...) - GeneratedQna (question: string, answer: string, followUpPrompts: array ...) - FollowupAction (actionRunId: string, actionInstanceId: string, actionId: string ...) - GeneratedQnaStatus (enum: COMPUTING, DISABLED, FAILED ...) - ExtractedQnA (heading: string, question: string, questionResult: SearchResult) - SearchResultSnippet (mimeType: string, text: string, snippetTextOrdering: integer ...) - ClusterGroup (clusteredResults: array, clusterType: ClusterTypeEnum, visibleCountHint: integer) - ClusterTypeEnum (enum: SIMILAR, FRESHNESS, TITLE ...) - SearchResultProminenceEnum (enum: HERO, PROMOTED, STANDARD) - PinDocument (queries: array, audienceFilters: array, id: string ...) - Meeting (id: string, title: string, description: string ...) - CalendarAttendees (people: array, isLimit: boolean, total: integer ...) - CalendarAttendee (isOrganizer: boolean, isInGroup: boolean, person: Person ...) - ResponseStatus (enum: ACCEPTED, DECLINED, NO_RESPONSE ...) - AppResult (datasource: string, docType: string, mimeType: string ...) - Code (repoName: string, fileName: string, fileUrl: string ...) - CodeLine (lineNumber: integer, content: string, ranges: array) - ChatMetadata (id: string, createTime: integer, createdBy: Person ...) - RelatedQuestion (question: string, answer: string, ranges: array) - Disambiguation (name: string, id: string, type: EntityType) - EntityType (enum: PERSON, PROJECT, CUSTOMER) - Prominence (enum: HERO, PROMOTED, STANDARD) - StructuredResultSource (enum: EXPERT_DETECTION, ENTITY_NLQ) - DocumentVisibility (enum: PRIVATE, SPECIFIC_PEOPLE_AND_GROUPS, DOMAIN_LINK ...) - DocumentInteractions (numComments: integer, numReactions: integer, reactions: array ...) - Reaction (type: string, count: integer, reactors: array ...) - Share (numDaysAgo: integer, sharer: Person, sharingDocument: Document) - ViewerInfo (role: enum, lastViewedTime: date-time) - Role (enum: ANSWER_MODERATOR, OWNER, VIEWER) - IndexStatus (lastCrawledTime: date-time, lastIndexedTime: date-time) - CreateAnnouncementRequestChannel (enum: MAIN, SOCIAL_FEED) - CreateAnnouncementRequestPostType (enum: TEXT, LINK) +CreateannouncementRequest (locale: string, body: CreateAnnouncementRequest) + CreateAnnouncementRequest (startTime: date-time, endTime: date-time, title: string ...) + StructuredText (text: string, structuredList: array) + StructuredTextItem (link: string, document: Document, text: string ...) + Document (id: string, datasource: string, connectorType: ConnectorType ...) + ConnectorType (enum: API_CRAWL, BROWSER_CRAWL, BROWSER_HISTORY ...) + DocumentContent (fullTextList: array) + DocumentMetadata (datasource: string, datasourceInstance: string, objectType: string ...) + Person (name: string, obfuscatedId: string, relatedDocuments: array ...) + RelatedDocuments (relation: enum, associatedEntityId: string, querySuggestion: QuerySuggestion ...) + Relation (enum: ATTACHMENT, CANONICAL, CASE ...) + QuerySuggestion (missingTerm: string, query: string, searchProviderInfo: SearchProviderInfo ...) + SearchProviderInfo (name: string, logoUrl: string, searchLinkUrlTemplate: string) + ResultTab (id: string, count: integer, datasource: string ...) + SearchRequestOptions (datasourceFilter: string, datasourcesFilter: array, queryOverridesFacetFilters: boolean ...) + FacetFilter (fieldName: string, values: array, groupName: string) + FacetFilterValue (value: string, relationType: enum, isNegated: boolean) + RelationType (enum: EQUALS, ID_EQUALS, LT ...) + FacetFilterSet (filters: array) + FacetBucketFilter (facet: string, prefix: string) + AuthToken (accessToken: string, datasource: string, scope: string ...) + ResponseHint (enum: ALL_RESULT_COUNTS, FACET_RESULTS, QUERY_METADATA ...) + RestrictionFilters (containerSpecs: array) + DocumentSpecUnion (union) + DocumentSpec1 (url: string) + DocumentSpec2 (id: string) + DocumentSpec3 (ugcType: enum, contentId: integer, docType: string) + DocumentSpecUgcType1 (enum: ANNOUNCEMENTS, ANSWERS, COLLECTIONS ...) + DocumentSpec4 (ugcType: enum, ugcId: string, docType: string) + DocumentSpecUgcType2 (enum: ANNOUNCEMENTS, ANSWERS, COLLECTIONS ...) + TextRange (startIndex: integer, endIndex: integer, type: enum ...) + TextRangeType (enum: BOLD, CITATION, HIGHLIGHT ...) + DocumentSection (title: string, url: string) + SearchRequestInputDetails (hasCopyPaste: boolean) + SearchResult (structuredResults: array, trackingToken: string, document: Document ...) + StructuredResult (document: Document, person: Person, customer: Customer ...) + PersonMetadata (type: enum, firstName: string, lastName: string ...) + PersonMetadataType (enum: FULL_TIME, CONTRACTOR, NON_EMPLOYEE ...) + PersonTeam (id: string, name: string, externalLink: string ...) + PersonTeamRelationship (enum: MEMBER, MANAGER, LEAD ...) + StructuredLocation (deskLocation: string, timezone: string, address: string ...) + SocialNetwork (name: string, profileName: string, profileUrl: string) + DatasourceProfile (datasource: string, handle: string, url: string ...) + QuerySuggestionList (suggestions: array, person: Person) + PersonDistance (name: string, obfuscatedId: string, distance: float32) + InviteInfo (signUpTime: date-time, invites: array, inviter: Person ...) + ChannelInviteInfo (channel: CommunicationChannel, isAutoInvite: boolean, inviter: Person ...) + CommunicationChannel (enum: COMMUNICATION_CHANNEL_EMAIL, COMMUNICATION_CHANNEL_SLACK) + Permissions (canAdminSearch: boolean, canAdminClientApiGlobalTokens: boolean, canDlp: boolean ...) + ReadPermission (scopeType: ScopeType) + ScopeType (enum: GLOBAL, OWN) + WritePermission (scopeType: ScopeType, create: boolean, update: boolean ...) + GrantPermission (scopeType: ScopeType) + CustomFieldData (label: string, values: array, displayable: boolean) + CustomFieldValue (union) + CustomFieldValueStr (strText: string) + CustomFieldValueHyperlink (urlAnchor: string, urlLink: string) + CustomFieldValuePerson (person: Person) + AnonymousEvent (time: TimeInterval, eventType: enum) + TimeInterval (start: string, end: string) + AnonymousEventEventType (enum: DEFAULT, OUT_OF_OFFICE) + Badge (key: string, displayName: string, iconConfig: IconConfig ...) + IconConfig (generatedBackgroundColorKey: string, backgroundColor: string, color: string ...) + IconType (enum: COLLECTION, CUSTOM, DATASOURCE ...) + Customer (id: string, domains: array, company: Company ...) + Company (name: string, profileUrl: string, websiteUrls: array ...) + CustomerMetadata (datasourceId: string, customData: map) + CustomDataValue (displayLabel: string, stringValue: string, stringListValue: array ...) + Team (relatedObjects: map, permissions: ObjectPermissions, id: string ...) + RelatedObjectEdge (objects: array) + RelatedObject (id: string, metadata: class) + RelatedObjectMetadata (name: string) + ObjectPermissions (write: WritePermission) + PersonToTeamRelationship (person: Person, relationship: enum, customRelationshipStr: string ...) + PersonToTeamRelationshipRelationship (enum: MEMBER, MANAGER, LEAD ...) + TeamEmail (email: string, type: string) + TeamStatus (enum: PROCESSED, QUEUED_FOR_CREATION, QUEUED_FOR_DELETION) + CustomEntity (permissions: ObjectPermissions, id: string, title: string ...) + CustomEntityMetadata (customData: map) + UserRoleSpecification (sourceDocumentSpec: DocumentSpec_union, person: Person, group: Group ...) + Group (type: GroupType, id: string, name: string ...) + GroupType (enum: DEPARTMENT, ALL, TEAM ...) + UserRole (enum: OWNER, VIEWER, ANSWER_MODERATOR ...) + Answer (id: integer, docId: string, question: string ...) + AnswerSourceType (enum: DOCUMENT, ASSISTANT) + AnswerLikes (likedBy: array, likedByUser: boolean, numLikes: integer) + AnswerLike (user: Person, createTime: date-time) + Verification (state: enum, metadata: VerificationMetadata) + State (enum: UNVERIFIED, VERIFIED, DEPRECATED) + VerificationMetadata (lastVerifier: Person, lastVerificationTs: integer, expirationTs: integer ...) + Reminder (assignee: Person, requestor: Person, remindAt: integer ...) + CountInfo (count: integer, period: Period, org: string) + Period (minDaysFromNow: integer, maxDaysFromNow: integer, start: TimePoint ...) + TimePoint (epochSeconds: integer, daysFromNow: integer) + Collection (name: string, description: string, addedRoles: array ...) + Thumbnail (photoId: string, url: string) + CollectionItem (name: string, description: string, icon: string ...) + Shortcut (id: integer, inputAlias: string, destinationUrl: string ...) + CollectionPinnedMetadata (existingPins: array, eligiblePins: array) + CollectionPinTarget (category: CollectionPinnableCategories, value: string, target: CollectionPinnableTargets) + CollectionPinnableCategories (enum: COMPANY_RESOURCE, DEPARTMENT_RESOURCE, TEAM_RESOURCE) + CollectionPinnableTargets (enum: RESOURCE_CARD, TEAM_PROFILE_PAGE) + CollectionPinMetadata (id: integer, target: CollectionPinTarget) + CollectionItemItemType (enum: DOCUMENT, TEXT, URL ...) + GeneratedQna (question: string, answer: string, followUpPrompts: array ...) + FollowupAction (actionRunId: string, actionInstanceId: string, actionId: string ...) + GeneratedQnaStatus (enum: COMPUTING, DISABLED, FAILED ...) + ExtractedQnA (heading: string, question: string, questionResult: SearchResult) + SearchResultSnippet (mimeType: string, text: string, snippetTextOrdering: integer ...) + ClusterGroup (clusteredResults: array, clusterType: ClusterTypeEnum, visibleCountHint: integer) + ClusterTypeEnum (enum: SIMILAR, FRESHNESS, TITLE ...) + SearchResultProminenceEnum (enum: HERO, PROMOTED, STANDARD) + PinDocument (queries: array, audienceFilters: array, id: string ...) + Meeting (id: string, title: string, description: string ...) + CalendarAttendees (people: array, isLimit: boolean, total: integer ...) + CalendarAttendee (isOrganizer: boolean, isInGroup: boolean, person: Person ...) + ResponseStatus (enum: ACCEPTED, DECLINED, NO_RESPONSE ...) + AppResult (datasource: string, docType: string, mimeType: string ...) + Code (repoName: string, fileName: string, fileUrl: string ...) + CodeLine (lineNumber: integer, content: string, ranges: array) + ChatMetadata (id: string, createTime: integer, createdBy: Person ...) + RelatedQuestion (question: string, answer: string, ranges: array) + Disambiguation (name: string, id: string, type: EntityType) + EntityType (enum: PERSON, PROJECT, CUSTOMER) + Prominence (enum: HERO, PROMOTED, STANDARD) + StructuredResultSource (enum: EXPERT_DETECTION, ENTITY_NLQ, CALENDAR_EVENT ...) + DocumentVisibility (enum: PRIVATE, SPECIFIC_PEOPLE_AND_GROUPS, DOMAIN_LINK ...) + DocumentInteractions (numComments: integer, numReactions: integer, reactions: array ...) + Reaction (type: string, count: integer, reactors: array ...) + Share (numDaysAgo: integer, sharer: Person, sharingDocument: Document) + ViewerInfo (role: enum, lastViewedTime: date-time) + Role (enum: ANSWER_MODERATOR, OWNER, VIEWER) + IndexStatus (lastCrawledTime: date-time, lastIndexedTime: date-time) + CreateAnnouncementRequestChannel (enum: MAIN, SOCIAL_FEED) + CreateAnnouncementRequestPostType (enum: TEXT, LINK) CreateannouncementResponse (HttpMeta: HTTPMetadata, Announcement: Announcement) Announcement (startTime: date-time, endTime: date-time, title: string ...) AnnouncementChannel (enum: MAIN, SOCIAL_FEED) AnnouncementPostType (enum: TEXT, LINK) AnnouncementViewerInfo (isDismissed: boolean, isRead: boolean) -DeleteAnnouncementRequest (id: integer) +DeleteannouncementRequest (locale: string, body: DeleteAnnouncementRequest) + DeleteAnnouncementRequest (id: integer) DeleteannouncementResponse (HttpMeta: HTTPMetadata) -UpdateAnnouncementRequest (startTime: date-time, endTime: date-time, title: string ...) - UpdateAnnouncementRequestChannel (enum: MAIN, SOCIAL_FEED) - UpdateAnnouncementRequestPostType (enum: TEXT, LINK) +UpdateannouncementRequest (locale: string, body: UpdateAnnouncementRequest) + UpdateAnnouncementRequest (startTime: date-time, endTime: date-time, title: string ...) + UpdateAnnouncementRequestChannel (enum: MAIN, SOCIAL_FEED) + UpdateAnnouncementRequestPostType (enum: TEXT, LINK) UpdateannouncementResponse (HttpMeta: HTTPMetadata, Announcement: Announcement) Answers (SDK empty) -CreateAnswerRequest (data: AnswerCreationData) - AnswerCreationData (question: string, questionVariations: array, bodyText: string ...) - AnswerCreationDataSourceType (enum: DOCUMENT, ASSISTANT) - StructuredTextMutableProperties (text: string) +CreateanswerRequest (locale: string, body: CreateAnswerRequest) + CreateAnswerRequest (data: AnswerCreationData) + AnswerCreationData (question: string, questionVariations: array, bodyText: string ...) + AnswerCreationDataSourceType (enum: DOCUMENT, ASSISTANT) + StructuredTextMutableProperties (text: string) CreateanswerResponse (HttpMeta: HTTPMetadata, Answer: Answer) -DeleteAnswerRequest (id: integer, docId: string) +DeleteanswerRequest (locale: string, body: DeleteAnswerRequest) + DeleteAnswerRequest (id: integer, docId: string) DeleteanswerResponse (HttpMeta: HTTPMetadata) -EditAnswerRequest (id: integer, docId: string, question: string ...) - EditAnswerRequestSourceType (enum: DOCUMENT, ASSISTANT) +EditanswerRequest (locale: string, body: EditAnswerRequest) + EditAnswerRequest (id: integer, docId: string, question: string ...) + EditAnswerRequestSourceType (enum: DOCUMENT, ASSISTANT) EditanswerResponse (HttpMeta: HTTPMetadata, Answer: Answer) -GetAnswerRequest (id: integer, docId: string) +GetanswerRequest (locale: string, body: GetAnswerRequest) + GetAnswerRequest (id: integer, docId: string) GetanswerResponse (HttpMeta: HTTPMetadata, GetAnswerResponse: GetAnswerResponse) GetAnswerResponse (answerResult: AnswerResult, error: GetAnswerError) AnswerResult (answer: Answer, trackingToken: string) GetAnswerError (errorType: enum, answerAuthor: Person) GetAnswerErrorErrorType (enum: NO_PERMISSION, INVALID_ID) -ListAnswersRequest (boardId: integer) +ListanswersRequest (locale: string, body: ListAnswersRequest) + ListAnswersRequest (boardId: integer) ListanswersResponse (HttpMeta: HTTPMetadata, ListAnswersResponse: ListAnswersResponse) ListAnswersResponse (answerResults: array) ClientAuthentication (SDK empty) CreateauthtokenResponse (HttpMeta: HTTPMetadata, CreateAuthTokenResponse: CreateAuthTokenResponse) CreateAuthTokenResponse (token: string, expirationTime: integer) Chat (SDK empty) -ChatRequest (timezoneOffset: integer, body: ChatRequest) +ChatRequest (locale: string, timezoneOffset: integer, body: ChatRequest) ChatRequest (messages: array, sessionInfo: SessionInfo, saveChat: boolean ...) ChatMessage (agentConfig: AgentConfig, author: enum, citations: array ...) AgentConfig (agent: enum, toolSets: ToolSets, mode: enum ...) @@ -619,50 +651,51 @@ ChatRequest (timezoneOffset: integer, body: ChatRequest) ChatRestrictionFilters (containerSpecs: array, documentSpecs: array, datasourceInstances: array) ChatResponse (HttpMeta: HTTPMetadata, ChatResponse: ChatResponse) ChatResponse (messages: array, chatId: string, followUpPrompts: array ...) -DeleteallchatsRequest (timezoneOffset: integer) +DeleteallchatsRequest (locale: string, timezoneOffset: integer) DeleteallchatsResponse (HttpMeta: HTTPMetadata) -DeletechatsRequest (timezoneOffset: integer, body: DeleteChatsRequest) +DeletechatsRequest (locale: string, timezoneOffset: integer, body: DeleteChatsRequest) DeleteChatsRequest (ids: array) DeletechatsResponse (HttpMeta: HTTPMetadata) -GetchatRequest (timezoneOffset: integer, body: GetChatRequest) +GetchatRequest (locale: string, timezoneOffset: integer, body: GetChatRequest) GetChatRequest (id: string) GetchatResponse (HttpMeta: HTTPMetadata, GetChatResponse: GetChatResponse) GetChatResponse (chatResult: ChatResult) ChatResult (chat: Chat, trackingToken: string) Chat (id: string, createTime: integer, createdBy: Person ...) -ListchatsRequest (timezoneOffset: integer) +ListchatsRequest (locale: string, timezoneOffset: integer) ListchatsResponse (HttpMeta: HTTPMetadata, ListChatsResponse: ListChatsResponse) ListChatsResponse (chatResults: array) ChatMetadataResult (chat: ChatMetadata, trackingToken: string) -GetchatapplicationRequest (timezoneOffset: integer, body: GetChatApplicationRequest) +GetchatapplicationRequest (locale: string, timezoneOffset: integer, body: GetChatApplicationRequest) GetChatApplicationRequest (id: string) GetchatapplicationResponse (HttpMeta: HTTPMetadata, GetChatApplicationResponse: GetChatApplicationResponse) GetChatApplicationResponse (application: any) -UploadchatfilesRequest (timezoneOffset: integer, body: UploadChatFilesRequest) +UploadchatfilesRequest (locale: string, timezoneOffset: integer, body: UploadChatFilesRequest) UploadChatFilesRequest (files: array) File (fileName: string, content: request-stream) UploadchatfilesResponse (HttpMeta: HTTPMetadata, UploadChatFilesResponse: UploadChatFilesResponse) UploadChatFilesResponse (files: array) -GetchatfilesRequest (timezoneOffset: integer, body: GetChatFilesRequest) +GetchatfilesRequest (locale: string, timezoneOffset: integer, body: GetChatFilesRequest) GetChatFilesRequest (fileIds: array) GetchatfilesResponse (HttpMeta: HTTPMetadata, GetChatFilesResponse: GetChatFilesResponse) GetChatFilesResponse (files: map) -DeletechatfilesRequest (timezoneOffset: integer, body: DeleteChatFilesRequest) +DeletechatfilesRequest (locale: string, timezoneOffset: integer, body: DeleteChatFilesRequest) DeleteChatFilesRequest (fileIds: array) DeletechatfilesResponse (HttpMeta: HTTPMetadata) ChatStreamRequest (timezoneOffset: integer, body: ChatRequest) ChatStreamResponse (HttpMeta: HTTPMetadata, ChatRequestStream: string) Agents (SDK empty) -GetAgentRequest (timezoneOffset: integer, agent_id: string) +GetAgentRequest (locale: string, timezoneOffset: integer, agent_id: string) GetAgentResponse (HttpMeta: HTTPMetadata, Agent: Agent) Agent (agent_id: string, name: string, description: string ...) AgentMetadata (empty) AgentCapabilities (ap.io.messages: boolean, ap.io.streaming: boolean, AdditionalProperties: map) -GetAgentSchemasRequest (timezoneOffset: integer, agent_id: string) +GetAgentSchemasRequest (locale: string, timezoneOffset: integer, agent_id: string) GetAgentSchemasResponse (HttpMeta: HTTPMetadata, AgentSchemas: AgentSchemas) - AgentSchemas (agent_id: string, input_schema: class, output_schema: class) + AgentSchemas (agent_id: string, input_schema: class, output_schema: class ...) InputSchema (empty) OutputSchema (empty) + ActionSummary (tool_id: string, display_name: string) SearchAgentsRequest (name: string) SearchAgentsResponse (HttpMeta: HTTPMetadata, SearchAgentsResponse: SearchAgentsResponse) SearchAgentsResponse (agents: array) @@ -676,14 +709,16 @@ CreateAndWaitRunResponse (HttpMeta: HTTPMetadata, AgentRunWaitResponse: AgentRun AgentRun (agent_id: string, input: map, messages: array ...) AgentExecutionStatus (enum: error, success) Collections (SDK empty) -AddCollectionItemsRequest (collectionId: number, addedCollectionItemDescriptors: array) - CollectionItemDescriptor (name: string, description: string, icon: string ...) - CollectionItemDescriptorItemType (enum: DOCUMENT, TEXT, URL) +AddcollectionitemsRequest (locale: string, body: AddCollectionItemsRequest) + AddCollectionItemsRequest (collectionId: number, addedCollectionItemDescriptors: array) + CollectionItemDescriptor (name: string, description: string, icon: string ...) + CollectionItemDescriptorItemType (enum: DOCUMENT, TEXT, URL) AddcollectionitemsResponse (HttpMeta: HTTPMetadata, AddCollectionItemsResponse: AddCollectionItemsResponse) AddCollectionItemsResponse (collection: Collection, error: AddCollectionItemsError) AddCollectionItemsError (errorType: enum) AddCollectionItemsErrorErrorType (enum: EXISTING_ITEM) -CreateCollectionRequest (name: string, description: string, addedRoles: array ...) +CreatecollectionRequest (locale: string, body: CreateCollectionRequest) + CreateCollectionRequest (name: string, description: string, addedRoles: array ...) CreatecollectionResponse (HttpMeta: HTTPMetadata, oneOf: union) CreatecollectionResponseBody (union) ResponseBody1 (collection: Collection, error: CollectionError) @@ -691,71 +726,68 @@ CreatecollectionResponse (HttpMeta: HTTPMetadata, oneOf: union) CollectionErrorErrorCode (enum: NAME_EXISTS, NOT_FOUND, COLLECTION_PINNED ...) ResponseBody2 (collection: Collection, error: CollectionError) CollectionError (error) -DeleteCollectionRequest (ids: array, allowedDatasource: string) +DeletecollectionRequest (locale: string, body: DeleteCollectionRequest) + DeleteCollectionRequest (ids: array, allowedDatasource: string) DeletecollectionResponse (HttpMeta: HTTPMetadata) -DeleteCollectionItemRequest (collectionId: number, itemId: string, documentId: string) +DeletecollectionitemRequest (locale: string, body: DeleteCollectionItemRequest) + DeleteCollectionItemRequest (collectionId: number, itemId: string, documentId: string) DeletecollectionitemResponse (HttpMeta: HTTPMetadata, DeleteCollectionItemResponse: DeleteCollectionItemResponse) DeleteCollectionItemResponse (collection: Collection) -EditCollectionRequest (name: string, description: string, addedRoles: array ...) +EditcollectionRequest (locale: string, body: EditCollectionRequest) + EditCollectionRequest (name: string, description: string, addedRoles: array ...) EditcollectionResponse (HttpMeta: HTTPMetadata, EditCollectionResponse: EditCollectionResponse) EditCollectionResponse (name: string, description: string, addedRoles: array ...) EditCollectionResponseErrorCode (enum: NAME_EXISTS, NOT_FOUND, COLLECTION_PINNED ...) -EditCollectionItemRequest (name: string, description: string, icon: string ...) +EditcollectionitemRequest (locale: string, body: EditCollectionItemRequest) + EditCollectionItemRequest (name: string, description: string, icon: string ...) EditcollectionitemResponse (HttpMeta: HTTPMetadata, EditCollectionItemResponse: EditCollectionItemResponse) EditCollectionItemResponse (collection: Collection) -GetCollectionRequest (id: integer, withItems: boolean, withHierarchy: boolean ...) +GetcollectionRequest (locale: string, body: GetCollectionRequest) + GetCollectionRequest (id: integer, withItems: boolean, withHierarchy: boolean ...) GetcollectionResponse (HttpMeta: HTTPMetadata, GetCollectionResponse: GetCollectionResponse) GetCollectionResponse (collection: Collection, rootCollection: Collection, trackingToken: string ...) -ListCollectionsRequest (includeAudience: boolean, includeRoles: boolean, allowedDatasource: string) +ListcollectionsRequest (locale: string, body: ListCollectionsRequest) + ListCollectionsRequest (includeAudience: boolean, includeRoles: boolean, allowedDatasource: string) ListcollectionsResponse (HttpMeta: HTTPMetadata, ListCollectionsResponse: ListCollectionsResponse) ListCollectionsResponse (collections: array) ClientDocuments (SDK empty) -GetDocPermissionsRequest (documentId: string) +GetdocpermissionsRequest (locale: string, body: GetDocPermissionsRequest) + GetDocPermissionsRequest (documentId: string) GetdocpermissionsResponse (HttpMeta: HTTPMetadata, GetDocPermissionsResponse: GetDocPermissionsResponse) GetDocPermissionsResponse (allowedUserEmails: array) -GetDocumentsRequest (documentSpecs: array, includeFields: array) - GetDocumentsRequestIncludeField (enum: LAST_VIEWED_AT, VISITORS_COUNT, RECENT_SHARES ...) +GetdocumentsRequest (locale: string, body: GetDocumentsRequest) + GetDocumentsRequest (documentSpecs: array, includeFields: array) + GetDocumentsRequestIncludeField (enum: LAST_VIEWED_AT, VISITORS_COUNT, RECENT_SHARES ...) GetdocumentsResponse (HttpMeta: HTTPMetadata, GetDocumentsResponse: GetDocumentsResponse) GetDocumentsResponse (documents: map) DocumentOrErrorUnion (union) DocumentOrError (error: string) -GetDocumentsByFacetsRequest (datasourcesFilter: array, filterSets: array, cursor: string) +GetdocumentsbyfacetsRequest (locale: string, body: GetDocumentsByFacetsRequest) + GetDocumentsByFacetsRequest (datasourcesFilter: array, filterSets: array, cursor: string) GetdocumentsbyfacetsResponse (HttpMeta: HTTPMetadata, GetDocumentsByFacetsResponse: GetDocumentsByFacetsResponse) GetDocumentsByFacetsResponse (documents: array, hasMoreResults: boolean, cursor: string) -SummarizeRequest (timestamp: date-time, query: string, preferredSummaryLength: integer ...) +SummarizeRequest (locale: string, body: SummarizeRequest) + SummarizeRequest (timestamp: date-time, query: string, preferredSummaryLength: integer ...) SummarizeResponse (HttpMeta: HTTPMetadata, SummarizeResponse: SummarizeResponse) SummarizeResponse (error: class, summary: Summary, trackingToken: string) Error (message: string) Summary (text: string, followUpPrompts: array) Insights (SDK empty) -InsightsRequest (overviewRequest: InsightsOverviewRequest, assistantRequest: InsightsAssistantRequest, agentsRequest: AgentsInsightsV2Request ...) - InsightsOverviewRequest (departments: array, dayRange: Period) - InsightsAssistantRequest (departments: array, dayRange: Period) - AgentsInsightsV2Request (agentIds: array, departments: array, dayRange: Period) - InsightsRequestCategory (enum: AGENTS, AGENT_USERS, TOP_AGENTS ...) - InsightsAiAppRequestOptions (aiAppIds: array) - InsightsAgentsRequestOptions (agentIds: array) - AssistantActivityType (enum: GLEAN_CHAT, AI_SUMMARY, AI_ANSWER ...) +InsightsRequest (locale: string, body: InsightsRequest) + InsightsRequest (overviewRequest: InsightsOverviewRequest, assistantRequest: InsightsAssistantRequest, agentsRequest: AgentsInsightsV2Request ...) + InsightsOverviewRequest (departments: array, dayRange: Period) + InsightsAssistantRequest (departments: array, dayRange: Period) + AgentsInsightsV2Request (agentIds: array, departments: array, dayRange: Period) InsightsResponse (HttpMeta: HTTPMetadata, InsightsResponse: InsightsResponse) - InsightsResponse (timeseries: array, users: UserInsightsResponse, content: ContentInsightsResponse ...) - LabeledCountInfo (label: string, countInfo: array) - UserInsightsResponse (lastLogTimestamp: integer, activityInsights: array, inactiveInsights: array ...) + InsightsResponse (gleanAssist: GleanAssistInsightsResponse, overviewResponse: InsightsOverviewResponse, assistantResponse: AssistantInsightsResponse ...) + GleanAssistInsightsResponse (lastLogTimestamp: integer, activityInsights: array, totalActiveUsers: integer ...) UserActivityInsight (user: Person, activity: enum, lastActivityTimestamp: integer ...) ActivityEnum (enum: ALL, SEARCH) - ContentInsightsResponse (lastLogTimestamp: integer, documentInsights: array, departments: array ...) - DocumentInsight (document: Document, viewCount: CountInfo, visitorCount: CountInfo) - QueryInsightsResponse (lastLogTimestamp: integer, queryInsights: array, lowPerformingQueryInsights: array ...) - QueryInsight (query: string, searchCount: CountInfo, searchorCount: CountInfo ...) - ShortcutInsightsResponse (lastLogTimestamp: integer, shortcutInsights: array, departments: array ...) - ShortcutInsight (shortcut: Shortcut, visitCount: CountInfo, visitorCount: CountInfo) - AiInsightsResponse (lastLogTimestamp: integer, assistantInsights: array, totalActiveAssistantUsers: integer ...) - AiAppsInsightsResponse (lastLogTimestamp: integer, aiAppInsights: array, totalActiveUsers: integer ...) - AiAppActionCounts (totalSlackbotResponses: integer, totalSlackbotResponsesShared: integer, totalSlackbotResponsesNotHelpful: integer ...) - GleanAssistInsightsResponse (lastLogTimestamp: integer, activityInsights: array, totalActiveUsers: integer ...) InsightsOverviewResponse (monthlyActiveUsers: integer, weeklyActiveUsers: integer, departments: array ...) InsightsSearchSummary (monthlyActiveUsers: integer, weeklyActiveUsers: integer, numSearches: integer ...) InsightsChatSummary (monthlyActiveUsers: integer, weeklyActiveUsers: integer, numChats: integer ...) CurrentActiveUsers (monthlyActiveUsers: integer, weeklyActiveUsers: integer) + LabeledCountInfo (label: string, countInfo: array) PerUserInsight (person: Person, numSearches: integer, numChats: integer ...) AssistantInsightsResponse (monthlyActiveUsers: integer, weeklyActiveUsers: integer, lastUpdatedTs: integer ...) PerUserAssistantInsight (person: Person, numChatMessages: integer, numSummarizations: integer ...) @@ -764,10 +796,11 @@ InsightsResponse (HttpMeta: HTTPMetadata, InsightsResponse: InsightsResponse) AgentsUsageByDepartmentInsight (department: string, agentAdoptionRate: float32, userCount: integer ...) AgentUsersInsight (person: Person, departmentName: string, agentsUsedCount: integer ...) Messages (SDK empty) -MessagesRequest (idType: enum, id: string, workspaceId: string ...) - IdType (enum: CHANNEL_NAME, THREAD_ID, CONVERSATION_ID) - Direction (enum: OLDER, NEWER) - Datasource (enum: SLACK, SLACKENTGRID, MICROSOFTTEAMS ...) +MessagesRequest (locale: string, body: MessagesRequest) + MessagesRequest (idType: enum, id: string, workspaceId: string ...) + IdType (enum: CHANNEL_NAME, THREAD_ID, CONVERSATION_ID) + Direction (enum: OLDER, NEWER) + Datasource (enum: SLACK, SLACKENTGRID, MICROSOFTTEAMS ...) MessagesResponse (HttpMeta: HTTPMetadata, MessagesResponse: MessagesResponse) MessagesResponse (hasMore: boolean, searchResponse: SearchResponse, rootMessage: SearchResult) SearchResponse (trackingToken: string, sessionInfo: SessionInfo, results: array ...) @@ -780,27 +813,33 @@ MessagesResponse (HttpMeta: HTTPMetadata, MessagesResponse: MessagesResponse) FacetResult (sourceName: string, operatorName: string, buckets: array ...) FacetBucket (count: integer, datasource: string, percentage: integer ...) FacetValue (stringValue: string, integerValue: integer, displayLabel: string ...) - ResultTab (id: string, count: integer, datasource: string ...) ResultsDescription (text: string, iconConfig: IconConfig) Pins (SDK empty) -EditPinRequest (queries: array, audienceFilters: array, id: string) +EditpinRequest (locale: string, body: EditPinRequest) + EditPinRequest (queries: array, audienceFilters: array, id: string) EditpinResponse (HttpMeta: HTTPMetadata, PinDocument: PinDocument) -GetPinRequest (id: string) +GetpinRequest (locale: string, body: GetPinRequest) + GetPinRequest (id: string) GetpinResponse (HttpMeta: HTTPMetadata, GetPinResponse: GetPinResponse) GetPinResponse (pin: PinDocument) -ListpinsRequest (empty) +ListpinsRequest (locale: string, body: class) + ListpinsRequestBody (empty) ListpinsResponse (HttpMeta: HTTPMetadata, ListPinsResponse: ListPinsResponse) ListPinsResponse (pins: array) -PinRequest (queries: array, audienceFilters: array, documentId: string) +PinRequest (locale: string, body: PinRequest) + PinRequest (queries: array, audienceFilters: array, documentId: string) PinResponse (HttpMeta: HTTPMetadata, PinDocument: PinDocument) -Unpin (id: string) +UnpinRequest (locale: string, body: Unpin) + Unpin (id: string) UnpinResponse (HttpMeta: HTTPMetadata) Search (SDK empty) -SearchRequest (timestamp: date-time, trackingToken: string, sessionInfo: SessionInfo ...) +AdminsearchRequest (locale: string, body: SearchRequest) + SearchRequest (timestamp: date-time, trackingToken: string, sessionInfo: SessionInfo ...) AdminsearchResponse (HttpMeta: HTTPMetadata, SearchResponse: SearchResponse) GleanDataError (error) -AutocompleteRequest (trackingToken: string, sessionInfo: SessionInfo, query: string ...) - AutocompleteRequestResultType (enum: ADDITIONAL_DOCUMENT, APP, BROWSER_HISTORY ...) +AutocompleteRequest (locale: string, body: AutocompleteRequest) + AutocompleteRequest (trackingToken: string, sessionInfo: SessionInfo, query: string ...) + AutocompleteRequestResultType (enum: ADDITIONAL_DOCUMENT, APP, BROWSER_HISTORY ...) AutocompleteResponse (HttpMeta: HTTPMetadata, AutocompleteResponse: AutocompleteResponse) AutocompleteResponse (experimentIds: array, trackingToken: string, sessionInfo: SessionInfo ...) AutocompleteResult (result: string, keywords: array, resultType: enum ...) @@ -811,11 +850,12 @@ AutocompleteResponse (HttpMeta: HTTPMetadata, AutocompleteResponse: Autocomplete Quicklink (name: string, shortName: string, url: string ...) Scope (enum: APP_CARD, AUTOCOMPLETE_EXACT_MATCH, AUTOCOMPLETE_FUZZY_MATCH ...) AutocompleteResultGroup (startIndex: integer, endIndex: integer, title: string) -FeedRequest (categories: array, requestOptions: FeedRequestOptions, timeoutMillis: integer ...) - FeedRequestCategory (enum: DOCUMENT_SUGGESTION, DOCUMENT_SUGGESTION_SCENARIO, TRENDING_DOCUMENT ...) - FeedRequestOptions (resultSize: integer, timezoneOffset: integer, categoryToResultSize: map ...) - CategoryToResultSize (resultSize: integer) - ChatZeroStateSuggestionOptions (applicationId: string) +FeedRequest (locale: string, body: FeedRequest) + FeedRequest (categories: array, requestOptions: FeedRequestOptions, timeoutMillis: integer ...) + FeedRequestCategory (enum: DOCUMENT_SUGGESTION, DOCUMENT_SUGGESTION_SCENARIO, TRENDING_DOCUMENT ...) + FeedRequestOptions (resultSize: integer, timezoneOffset: integer, categoryToResultSize: map ...) + CategoryToResultSize (resultSize: integer) + ChatZeroStateSuggestionOptions (applicationId: string) FeedResponse (HttpMeta: HTTPMetadata, FeedResponse: FeedResponse) FeedResponse (experimentIds: array, trackingToken: string, serverTimestamp: integer ...) FeedResult (category: enum, primaryEntry: FeedEntry, secondaryEntries: array ...) @@ -850,56 +890,67 @@ FeedResponse (HttpMeta: HTTPMetadata, FeedResponse: FeedResponse) Workflow (name: string, author: Person, createTimestamp: integer ...) UserActivity (actor: Person, timestamp: integer, action: enum ...) UserActivityAction (enum: ADD, ADD_REMINDER, CLICK ...) -RecommendationsRequest (timestamp: date-time, trackingToken: string, sessionInfo: SessionInfo ...) - RecommendationsRequestOptions (datasourceFilter: string, datasourcesFilter: array, facetFilterSets: array ...) +RecommendationsRequest (locale: string, body: RecommendationsRequest) + RecommendationsRequest (timestamp: date-time, trackingToken: string, sessionInfo: SessionInfo ...) + RecommendationsRequestOptions (datasourceFilter: string, datasourcesFilter: array, facetFilterSets: array ...) RecommendationsResponse (HttpMeta: HTTPMetadata, ResultsResponse: ResultsResponse) ResultsResponse (trackingToken: string, sessionInfo: SessionInfo, results: array ...) +SearchRequest (locale: string, body: SearchRequest) SearchResponse (HttpMeta: HTTPMetadata, SearchResponse: SearchResponse) Entities (SDK empty) -ListEntitiesRequest (filter: array, sort: array, entityType: enum ...) - SortOptions (orderBy: enum, sortBy: string) - OrderBy (enum: ASC, DESC) - ListEntitiesRequestEntityType (enum: PEOPLE, TEAMS, CUSTOM_ENTITIES) - ListEntitiesRequestIncludeField (enum: PEOPLE, TEAMS, PEOPLE_DISTANCE ...) - RequestType (enum: STANDARD, FULL_DIRECTORY) +ListentitiesRequest (locale: string, body: ListEntitiesRequest) + ListEntitiesRequest (filter: array, sort: array, entityType: enum ...) + SortOptions (orderBy: enum, sortBy: string) + OrderBy (enum: ASC, DESC) + ListEntitiesRequestEntityType (enum: PEOPLE, TEAMS, CUSTOM_ENTITIES) + ListEntitiesRequestIncludeField (enum: PEOPLE, TEAMS, PEOPLE_DISTANCE ...) + RequestType (enum: STANDARD, FULL_DIRECTORY) ListentitiesResponse (HttpMeta: HTTPMetadata, ListEntitiesResponse: ListEntitiesResponse) ListEntitiesResponse (results: array, teamResults: array, customEntityResults: array ...) EntitiesSortOrder (enum: ENTITY_NAME, FIRST_NAME, LAST_NAME ...) -PeopleRequest (timezoneOffset: integer, obfuscatedIds: array, emailIds: array ...) - PeopleRequestIncludeField (enum: BADGES, BUSY_EVENTS, DOCUMENT_ACTIVITY ...) - IncludeType (enum: PEOPLE_WITHOUT_MANAGER, INVALID_ENTITIES) +PeopleRequest (locale: string, body: PeopleRequest) + PeopleRequest (timezoneOffset: integer, obfuscatedIds: array, emailIds: array ...) + PeopleRequestIncludeField (enum: BADGES, BUSY_EVENTS, DOCUMENT_ACTIVITY ...) + IncludeType (enum: PEOPLE_WITHOUT_MANAGER, INVALID_ENTITIES) PeopleResponse (HttpMeta: HTTPMetadata, PeopleResponse: PeopleResponse) PeopleResponse (results: array, relatedDocuments: array, errors: array) ClientShortcuts (SDK empty) -CreateShortcutRequest (data: ShortcutMutableProperties) - ShortcutMutableProperties (inputAlias: string, destinationUrl: string, destinationDocumentId: string ...) +CreateshortcutRequest (locale: string, body: CreateShortcutRequest) + CreateShortcutRequest (data: ShortcutMutableProperties) + ShortcutMutableProperties (inputAlias: string, destinationUrl: string, destinationDocumentId: string ...) CreateshortcutResponse (HttpMeta: HTTPMetadata, CreateShortcutResponse: CreateShortcutResponse) CreateShortcutResponse (shortcut: Shortcut, error: ShortcutError) ShortcutError (errorType: enum) ShortcutErrorErrorType (enum: NO_PERMISSION, INVALID_ID, EXISTING_SHORTCUT ...) -DeleteShortcutRequest (id: integer) +DeleteshortcutRequest (locale: string, body: DeleteShortcutRequest) + DeleteShortcutRequest (id: integer) DeleteshortcutResponse (HttpMeta: HTTPMetadata) -GetShortcutRequestUnion (union) - UserGeneratedContentId (id: integer) - GetShortcutRequest (alias: string) +GetshortcutRequest (locale: string, body: GetShortcutRequest_union) + GetShortcutRequestUnion (union) + UserGeneratedContentId (id: integer) + GetShortcutRequest (alias: string) GetshortcutResponse (HttpMeta: HTTPMetadata, GetShortcutResponse: GetShortcutResponse) GetShortcutResponse (shortcut: Shortcut, error: ShortcutError) -ListShortcutsPaginatedRequest (includeFields: array, pageSize: integer, cursor: string ...) - ListShortcutsPaginatedRequestIncludeField (enum: FACETS, PEOPLE_DETAILS) +ListshortcutsRequest (locale: string, body: ListShortcutsPaginatedRequest) + ListShortcutsPaginatedRequest (includeFields: array, pageSize: integer, cursor: string ...) + ListShortcutsPaginatedRequestIncludeField (enum: FACETS, PEOPLE_DETAILS) ListshortcutsResponse (HttpMeta: HTTPMetadata, ListShortcutsPaginatedResponse: ListShortcutsPaginatedResponse) ListShortcutsPaginatedResponse (shortcuts: array, facetResults: array, meta: ShortcutsPaginationMetadata) ShortcutsPaginationMetadata (cursor: string, hasNextPage: boolean, totalItemCount: integer) -UpdateShortcutRequest (id: integer, inputAlias: string, destinationUrl: string ...) +UpdateshortcutRequest (locale: string, body: UpdateShortcutRequest) + UpdateShortcutRequest (id: integer, inputAlias: string, destinationUrl: string ...) UpdateshortcutResponse (HttpMeta: HTTPMetadata, UpdateShortcutResponse: UpdateShortcutResponse) UpdateShortcutResponse (shortcut: Shortcut, error: ShortcutError) Verification (SDK empty) -ReminderRequest (documentId: string, assignee: string, remindInDays: integer ...) +AddverificationreminderRequest (locale: string, body: ReminderRequest) + ReminderRequest (documentId: string, assignee: string, remindInDays: integer ...) AddverificationreminderResponse (HttpMeta: HTTPMetadata, Verification: Verification) -ListverificationsRequest (count: integer) +ListverificationsRequest (count: integer, locale: string) ListverificationsResponse (HttpMeta: HTTPMetadata, VerificationFeed: VerificationFeed) VerificationFeed (documents: array) -VerifyRequest (documentId: string, action: enum) - VerifyRequestAction (enum: VERIFY, DEPRECATE, UNVERIFY) +VerifyRequest (locale: string, body: VerifyRequest) + VerifyRequest (documentId: string, action: enum) + VerifyRequestAction (enum: VERIFY, DEPRECATE, UNVERIFY) VerifyResponse (HttpMeta: HTTPMetadata, Verification: Verification) Tools (SDK empty) Get/rest/api/v1/tools/listRequest (toolNames: array) @@ -913,7 +964,7 @@ ToolsCallRequest (name: string, parameters: map) ToolsCallParameter (name: string, value: string, items: array ...) PostRestApiV1ToolsCallResponse (HttpMeta: HTTPMetadata, ToolsCallResponse: ToolsCallResponse) ToolsCallResponse (rawResponse: map, error: string) -Governance (SDK empty) +ClientGovernance (SDK empty) Data (SDK empty) Policies (SDK empty) GetpolicyRequest (id: string, version: integer) @@ -922,17 +973,21 @@ GetpolicyResponse (HttpMeta: HTTPMetadata, GetDlpReportResponse: GetDlpReportRes DlpReport (id: string, name: string, config: DlpConfig ...) DlpConfig (version: integer, sensitiveInfoTypes: array, inputOptions: InputOptions ...) SensitiveInfoType (likelihoodThreshold: enum, infoType: string) - LikelihoodThreshold (enum: LIKELY, VERY_LIKELY, POSSIBLE ...) + SensitiveInfoTypeLikelihoodThreshold (enum: LIKELY, VERY_LIKELY, POSSIBLE ...) InputOptions (urlGreenlist: array, datasourcesType: enum, datasources: array ...) DatasourcesType (enum: ALL, CUSTOM) - TimePeriodType (enum: ALL_TIME, PAST_YEAR, PAST_DAY ...) + InputOptionsTimePeriodType (enum: ALL_TIME, PAST_YEAR, PAST_DAY ...) TimeRange (startTime: date-time, endTime: date-time, lastNDaysValue: integer) ExternalSharingOptions (enabled: boolean, threshold: integer, thresholdEnabled: boolean ...) SharingOptions (enabled: boolean, threshold: integer, thresholdEnabled: boolean ...) - SensitiveContentOptions (sensitiveInfoTypes: array, sensitiveTerms: array, sensitiveRegexes: array) + SensitiveContentOptions (sensitiveInfoTypes: array, sensitiveTerms: array, sensitiveRegexes: array ...) SensitiveExpression (expression: string, hotwords: array) Hotword (regex: string, proximity: HotwordProximity) HotwordProximity (windowBefore: integer, windowAfter: integer) + CustomSensitiveExpression (id: string, keyword: CustomSensitiveRule, evaluationExpression: string) + CustomSensitiveRule (id: string, value: string, type: CustomSensitiveRuleType ...) + CustomSensitiveRuleType (enum: REGEX, TERM, INFO_TYPE) + CustomSensitiveRuleLikelihoodThreshold (enum: LIKELY, VERY_LIKELY, POSSIBLE ...) DlpPerson (name: string, obfuscatedId: string, metadata: DlpPersonMetadata) DlpPersonMetadata (firstName: string, email: string) AllowlistOptions (terms: array) @@ -1113,4 +1168,21 @@ PostApiIndexV1BulkindexshortcutsResponse (HttpMeta: HTTPMetadata) UploadShortcutsRequest (uploadId: string, isFirstPage: boolean, isLastPage: boolean ...) IndexingShortcut (inputAlias: string, description: string, destinationUrl: string ...) PostApiIndexV1UploadshortcutsResponse (HttpMeta: HTTPMetadata) +Governance (SDK empty) +DlpExportFindingsRequest (exportType: enum, filter: DlpFindingFilter, fileName: string ...) + ExportType (enum: FINDINGS, DOCUMENTS) + DlpFindingFilter (infoType: string, regexId: string, reportId: string ...) + DlpSeverity (enum: UNSPECIFIED, LOW, MEDIUM ...) + TimeRangeFilter (timePeriodType: enum, customTimeRange: TimeRange) + TimeRangeFilterTimePeriodType (enum: PAST_DAY, PAST_WEEK, PAST_MONTH ...) + FieldScope (enum: ALL, EXCLUDE_SENSITIVE, CUSTOM) +CreatefindingsexportResponse (HttpMeta: HTTPMetadata, ExportInfo: ExportInfo) + ExportInfo (createdBy: DlpPerson, startTime: string, endTime: string ...) + ExportInfoStatus (enum: PENDING, COMPLETED, FAILED) +ListfindingsexportsResponse (HttpMeta: HTTPMetadata, ListDlpFindingsExportsResponse: ListDlpFindingsExportsResponse) + ListDlpFindingsExportsResponse (exports: array) +DownloadfindingsexportRequest (id: string) +DownloadfindingsexportResponse (HttpMeta: HTTPMetadata, res: string) +DeletefindingsexportRequest (id: integer) +DeletefindingsexportResponse (HttpMeta: HTTPMetadata) diff --git a/src/glean/api_client/_hooks/registration.py b/src/glean/api_client/_hooks/registration.py index 01498ddf..8d8610f1 100644 --- a/src/glean/api_client/_hooks/registration.py +++ b/src/glean/api_client/_hooks/registration.py @@ -1,6 +1,8 @@ from .types import Hooks +from .server_url_normalizer import ServerURLNormalizerHook from .multipart_fix_hook import MultipartFileFieldFixHook from .agent_file_upload_error_hook import AgentFileUploadErrorHook +from .x_glean import XGlean # This file is only ever generated once on the first generation and then is free to be modified. @@ -14,8 +16,14 @@ def init_hooks(hooks: Hooks): with an instance of a hook that implements that specific Hook interface Hooks are registered per SDK instance, and are valid for the lifetime of the SDK instance""" + # Register hook to normalize server URLs (prepend https:// if no scheme provided) + hooks.register_sdk_init_hook(ServerURLNormalizerHook()) + # Register hook to fix multipart file field names that incorrectly have '[]' suffix hooks.register_sdk_init_hook(MultipartFileFieldFixHook()) # Register hook to provide helpful error messages for agent file upload issues hooks.register_after_error_hook(AgentFileUploadErrorHook()) + + # Register hook for X-Glean headers (experimental features and deprecation testing) + hooks.register_before_request_hook(XGlean()) diff --git a/src/glean/api_client/_hooks/server_url_normalizer.py b/src/glean/api_client/_hooks/server_url_normalizer.py new file mode 100644 index 00000000..42561988 --- /dev/null +++ b/src/glean/api_client/_hooks/server_url_normalizer.py @@ -0,0 +1,21 @@ +"""Hook to normalize server URLs, prepending https:// if no scheme is provided.""" + +import re +from typing import Tuple +from .types import SDKInitHook +from glean.api_client.httpclient import HttpClient + + +def normalize_server_url(url: str) -> str: + normalized = url + if not re.match(r'^https?://', normalized, re.IGNORECASE): + normalized = f'https://{normalized}' + normalized = normalized.rstrip('/') + return normalized + + +class ServerURLNormalizerHook(SDKInitHook): + """Normalizes server URLs by prepending https:// if no scheme is provided.""" + + def sdk_init(self, base_url: str, client: HttpClient) -> Tuple[str, HttpClient]: + return normalize_server_url(base_url), client diff --git a/src/glean/api_client/_hooks/x_glean.py b/src/glean/api_client/_hooks/x_glean.py new file mode 100644 index 00000000..5ca01721 --- /dev/null +++ b/src/glean/api_client/_hooks/x_glean.py @@ -0,0 +1,70 @@ +"""Hook to set X-Glean headers for experimental features and deprecation testing.""" + +import os +from typing import Optional, Union +import httpx +from glean.api_client._hooks.types import BeforeRequestContext, BeforeRequestHook + + +def _get_first_value( + env_value: Optional[str], + config_value: Optional[str], +) -> Optional[str]: + """Get the first non-empty value from the provided arguments. + + Environment variables take precedence over SDK constructor options. + """ + if env_value: + return env_value + if config_value: + return config_value + return None + + +class XGlean(BeforeRequestHook): + """ + Hook that sets X-Glean headers for experimental features and deprecation testing. + + This hook adds the following headers when configured: + - X-Glean-Exclude-Deprecated-After: Excludes API endpoints deprecated after this date + - X-Glean-Experimental: Enables experimental API features + + Configuration can be done via environment variables or SDK constructor options. + Environment variables take precedence over SDK constructor options. + """ + + def before_request( + self, hook_ctx: BeforeRequestContext, request: httpx.Request + ) -> Union[httpx.Request, Exception]: + """ + Add X-Glean headers to the request based on configuration. + + Args: + hook_ctx: Context containing SDK configuration + request: The HTTP request being made + + Returns: + The modified request with X-Glean headers added + """ + # Get deprecated value - env var takes precedence + deprecated_value = _get_first_value( + os.environ.get("X_GLEAN_EXCLUDE_DEPRECATED_AFTER"), + getattr(hook_ctx.config, "exclude_deprecated_after", None), + ) + + # Get experimental value - env var takes precedence + config_experimental = ( + "true" if getattr(hook_ctx.config, "include_experimental", None) is True else None + ) + experimental_value = _get_first_value( + os.environ.get("X_GLEAN_INCLUDE_EXPERIMENTAL"), + config_experimental, + ) + + if deprecated_value: + request.headers["X-Glean-Exclude-Deprecated-After"] = deprecated_value + + if experimental_value: + request.headers["X-Glean-Experimental"] = experimental_value + + return request diff --git a/src/glean/api_client/_version.py b/src/glean/api_client/_version.py index df578bc6..8d9da6a0 100644 --- a/src/glean/api_client/_version.py +++ b/src/glean/api_client/_version.py @@ -2,11 +2,11 @@ import importlib.metadata -__title__: str = "glean" -__version__: str = "0.11.22" +__title__: str = "glean-api-client" +__version__: str = "0.13.0" __openapi_doc_version__: str = "0.9.0" -__gen_version__: str = "2.743.2" -__user_agent__: str = "speakeasy-sdk/python 0.11.22 2.743.2 0.9.0 glean" +__gen_version__: str = "2.893.0" +__user_agent__: str = "speakeasy-sdk/python 0.13.0 2.893.0 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 00b4f763..99f5f660 100644 --- a/src/glean/api_client/agents.py +++ b/src/glean/api_client/agents.py @@ -6,26 +6,32 @@ 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 Any, Dict, List, Mapping, Optional, Union +from typing import Any, Mapping, Optional class Agents(BaseSDK): - def retrieve( + def edit_agent( self, *, agent_id: str, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, + name: Optional[str] = None, + id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.Agent: - r"""Retrieve an agent + ): + r"""Edit an agent - Returns details of an [agent](https://developers.glean.com/agents/agents-api) created in the Agent Builder. + Creates a draft or publishes an [agent](https://developers.glean.com/agents/agents-api). Use `isDraft=true` to save a draft, or `isDraft=false` (or omit) to publish immediately. Only draft and publish modes are supported. :param agent_id: The ID of the agent. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. + :param name: The name of the workflow. + :param id: The workflow ID we want to update. :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 @@ -41,196 +47,37 @@ def retrieve( else: base_url = self._get_url(base_url, url_variables) - request = models.GetAgentRequest( + request = models.EditAgentRequest( + locale=locale, timezone_offset=timezone_offset, agent_id=agent_id, - ) - - req = self._build_request( - method="GET", - path="/rest/api/v1/agents/{agent_id}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=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, - 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="getAgent", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), + edit_workflow_request=models.EditWorkflowRequest( + name=name, + id=id, ), - request=req, - error_status_codes=["400", "403", "404", "4XX", "500", "5XX"], - retry_config=retry_config, - ) - - 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"], "*"): - 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"], "*"): - 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_async( - self, - *, - agent_id: str, - timezone_offset: Optional[int] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.Agent: - r"""Retrieve an agent - - Returns details of an [agent](https://developers.glean.com/agents/agents-api) created in the Agent Builder. - - :param agent_id: The ID of the agent. - :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. - :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.GetAgentRequest( - timezone_offset=timezone_offset, - agent_id=agent_id, ) - req = self._build_request_async( - method="GET", + req = self._build_request( + method="POST", path="/rest/api/v1/agents/{agent_id}", base_url=base_url, url_variables=url_variables, request=request, - request_body_required=False, + request_body_required=True, 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, - 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="getAgent", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), + get_serialized_body=lambda: utils.serialize_request_body( + request.edit_workflow_request, + False, + False, + "json", + models.EditWorkflowRequest, ), - request=req, - error_status_codes=["400", "403", "404", "4XX", "500", "5XX"], - retry_config=retry_config, - ) - - 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"], "*"): - 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"], "*"): - 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_schemas( - self, - *, - agent_id: str, - timezone_offset: Optional[int] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.AgentSchemas: - r"""List an agent's schemas - - Return [agent](https://developers.glean.com/agents/agents-api)'s input and output schemas. You can use these schemas to detect changes to an agent's input or output structure. - - :param agent_id: The ID of the agent. - :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. - :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.GetAgentSchemasRequest( - timezone_offset=timezone_offset, - agent_id=agent_id, - ) - - req = self._build_request( - method="GET", - path="/rest/api/v1/agents/{agent_id}/schemas", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=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, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -246,20 +93,24 @@ def retrieve_schemas( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="getAgentSchemas", + operation_id="editAgent", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), ), request=req, - error_status_codes=["400", "403", "404", "422", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) - 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"], "*"): + response_data: Any = None + if utils.match_response(http_res, "200", "*"): + return + 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", "401", "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"], "*"): @@ -268,22 +119,28 @@ def retrieve_schemas( raise errors.GleanError("Unexpected response received", http_res) - async def retrieve_schemas_async( + async def edit_agent_async( self, *, agent_id: str, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, + name: Optional[str] = None, + id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.AgentSchemas: - r"""List an agent's schemas + ): + r"""Edit an agent - Return [agent](https://developers.glean.com/agents/agents-api)'s input and output schemas. You can use these schemas to detect changes to an agent's input or output structure. + Creates a draft or publishes an [agent](https://developers.glean.com/agents/agents-api). Use `isDraft=true` to save a draft, or `isDraft=false` (or omit) to publish immediately. Only draft and publish modes are supported. :param agent_id: The ID of the agent. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. + :param name: The name of the workflow. + :param id: The workflow ID we want to update. :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 @@ -299,590 +156,37 @@ async def retrieve_schemas_async( else: base_url = self._get_url(base_url, url_variables) - request = models.GetAgentSchemasRequest( + request = models.EditAgentRequest( + locale=locale, timezone_offset=timezone_offset, agent_id=agent_id, - ) - - req = self._build_request_async( - method="GET", - path="/rest/api/v1/agents/{agent_id}/schemas", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=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, - 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="getAgentSchemas", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), + edit_workflow_request=models.EditWorkflowRequest( + name=name, + id=id, ), - request=req, - error_status_codes=["400", "403", "404", "422", "4XX", "500", "5XX"], - retry_config=retry_config, - ) - - 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"], "*"): - 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"], "*"): - 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 list( - self, - *, - name: Optional[str] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.SearchAgentsResponse: - r"""Search agents - - Search for [agents](https://developers.glean.com/agents/agents-api) by agent name. - - :param name: Filters on the name of the agent. The keyword search is case-insensitive. If search string is ommited or empty, acts as no filter. - :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.SearchAgentsRequest( - name=name, ) - req = self._build_request( + req = self._build_request_async( method="POST", - path="/rest/api/v1/agents/search", + path="/rest/api/v1/agents/{agent_id}", 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.SearchAgentsRequest - ), - 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="searchAgents", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "403", "404", "422", "4XX", "500", "5XX"], - retry_config=retry_config, - ) - - 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"], "*"): - 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"], "*"): - 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 list_async( - self, - *, - name: Optional[str] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.SearchAgentsResponse: - r"""Search agents - - Search for [agents](https://developers.glean.com/agents/agents-api) by agent name. - - :param name: Filters on the name of the agent. The keyword search is case-insensitive. If search string is ommited or empty, acts as no filter. - :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.SearchAgentsRequest( - name=name, - ) - - req = self._build_request_async( - method="POST", - path="/rest/api/v1/agents/search", - 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.SearchAgentsRequest - ), - 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="searchAgents", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "403", "404", "422", "4XX", "500", "5XX"], - retry_config=retry_config, - ) - - 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"], "*"): - 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"], "*"): - 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 run_stream( - self, - *, - agent_id: str, - input: Optional[Dict[str, Any]] = None, - messages: Optional[ - Union[List[models.Message], List[models.MessageTypedDict]] - ] = None, - metadata: Optional[Dict[str, Any]] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> str: - r"""Create an agent run and stream the response - - Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the result as a stream of server-sent events (SSE). - - :param agent_id: The ID of the agent to run. - :param input: The input to the agent. - :param messages: The messages to pass an input to the agent. - :param metadata: The metadata to pass to the agent. - :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.AgentRunCreate( - agent_id=agent_id, - input=input, - messages=utils.get_pydantic_model(messages, Optional[List[models.Message]]), - metadata=metadata, - ) - - req = self._build_request( - method="POST", - path="/rest/api/v1/agents/runs/stream", - 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="text/event-stream", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.AgentRunCreate - ), - 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="createAndStreamRun", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "403", "404", "409", "422", "4XX", "500", "5XX"], - retry_config=retry_config, - ) - - 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"], "*" - ): - 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"], "*"): - 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 run_stream_async( - self, - *, - agent_id: str, - input: Optional[Dict[str, Any]] = None, - messages: Optional[ - Union[List[models.Message], List[models.MessageTypedDict]] - ] = None, - metadata: Optional[Dict[str, Any]] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> str: - r"""Create an agent run and stream the response - - Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the result as a stream of server-sent events (SSE). - - :param agent_id: The ID of the agent to run. - :param input: The input to the agent. - :param messages: The messages to pass an input to the agent. - :param metadata: The metadata to pass to the agent. - :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.AgentRunCreate( - agent_id=agent_id, - input=input, - messages=utils.get_pydantic_model(messages, Optional[List[models.Message]]), - metadata=metadata, - ) - - req = self._build_request_async( - method="POST", - path="/rest/api/v1/agents/runs/stream", - 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="text/event-stream", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.AgentRunCreate - ), - 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="createAndStreamRun", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "403", "404", "409", "422", "4XX", "500", "5XX"], - retry_config=retry_config, - ) - - 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"], "*" - ): - 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"], "*"): - 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 run( - self, - *, - agent_id: str, - input: Optional[Dict[str, Any]] = None, - messages: Optional[ - Union[List[models.Message], List[models.MessageTypedDict]] - ] = None, - metadata: Optional[Dict[str, Any]] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.AgentRunWaitResponse: - r"""Create an agent run and wait for the response - - Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the final response. - - :param agent_id: The ID of the agent to run. - :param input: The input to the agent. - :param messages: The messages to pass an input to the agent. - :param metadata: The metadata to pass to the agent. - :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.AgentRunCreate( - agent_id=agent_id, - input=input, - messages=utils.get_pydantic_model(messages, Optional[List[models.Message]]), - metadata=metadata, - ) - - req = self._build_request( - method="POST", - path="/rest/api/v1/agents/runs/wait", - 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.AgentRunCreate - ), - 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="createAndWaitRun", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "403", "404", "409", "422", "4XX", "500", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.AgentRunWaitResponse, http_res) - if utils.match_response( - http_res, ["400", "403", "404", "409", "422", "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"], "*"): - 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 run_async( - self, - *, - agent_id: str, - input: Optional[Dict[str, Any]] = None, - messages: Optional[ - Union[List[models.Message], List[models.MessageTypedDict]] - ] = None, - metadata: Optional[Dict[str, Any]] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.AgentRunWaitResponse: - r"""Create an agent run and wait for the response - - Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the final response. - - :param agent_id: The ID of the agent to run. - :param input: The input to the agent. - :param messages: The messages to pass an input to the agent. - :param metadata: The metadata to pass to the agent. - :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.AgentRunCreate( - agent_id=agent_id, - input=input, - messages=utils.get_pydantic_model(messages, Optional[List[models.Message]]), - metadata=metadata, - ) - - req = self._build_request_async( - method="POST", - path="/rest/api/v1/agents/runs/wait", - 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.AgentRunCreate + request.edit_workflow_request, + False, + False, + "json", + models.EditWorkflowRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -898,22 +202,24 @@ async def run_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="createAndWaitRun", + operation_id="editAgent", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), ), request=req, - error_status_codes=["400", "403", "404", "409", "422", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.AgentRunWaitResponse, http_res) - if utils.match_response( - http_res, ["400", "403", "404", "409", "422", "4XX"], "*" - ): + response_data: Any = None + if utils.match_response(http_res, "200", "*"): + return + 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", "401", "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/announcements.py b/src/glean/api_client/announcements.py index 66028d15..33123a0a 100644 --- a/src/glean/api_client/announcements.py +++ b/src/glean/api_client/announcements.py @@ -17,6 +17,7 @@ def create( start_time: datetime, end_time: datetime, title: str, + locale: Optional[str] = None, body: Optional[ Union[models.StructuredText, models.StructuredTextTypedDict] ] = None, @@ -44,6 +45,7 @@ def create( :param start_time: The date and time at which the announcement becomes active. :param end_time: The date and time at which the announcement expires. :param title: The headline of the announcement. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param body: :param emoji: An emoji used to indicate the nature of the announcement. :param thumbnail: @@ -70,23 +72,28 @@ def create( else: base_url = self._get_url(base_url, url_variables) - request = models.CreateAnnouncementRequest( - start_time=start_time, - end_time=end_time, - title=title, - body=utils.get_pydantic_model(body, Optional[models.StructuredText]), - emoji=emoji, - thumbnail=utils.get_pydantic_model(thumbnail, Optional[models.Thumbnail]), - banner=utils.get_pydantic_model(banner, Optional[models.Thumbnail]), - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.CreateannouncementRequestRequest( + locale=locale, + create_announcement_request=models.CreateAnnouncementRequest( + start_time=start_time, + end_time=end_time, + title=title, + body=utils.get_pydantic_model(body, Optional[models.StructuredText]), + emoji=emoji, + thumbnail=utils.get_pydantic_model( + thumbnail, Optional[models.Thumbnail] + ), + banner=utils.get_pydantic_model(banner, Optional[models.Thumbnail]), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + source_document_id=source_document_id, + hide_attribution=hide_attribution, + channel=channel, + post_type=post_type, + is_prioritized=is_prioritized, + view_url=view_url, ), - source_document_id=source_document_id, - hide_attribution=hide_attribution, - channel=channel, - post_type=post_type, - is_prioritized=is_prioritized, - view_url=view_url, ) req = self._build_request( @@ -103,8 +110,13 @@ def create( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CreateAnnouncementRequest + request.create_announcement_request, + False, + False, + "json", + models.CreateAnnouncementRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -127,7 +139,7 @@ def create( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -148,6 +160,7 @@ async def create_async( start_time: datetime, end_time: datetime, title: str, + locale: Optional[str] = None, body: Optional[ Union[models.StructuredText, models.StructuredTextTypedDict] ] = None, @@ -175,6 +188,7 @@ async def create_async( :param start_time: The date and time at which the announcement becomes active. :param end_time: The date and time at which the announcement expires. :param title: The headline of the announcement. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param body: :param emoji: An emoji used to indicate the nature of the announcement. :param thumbnail: @@ -201,23 +215,28 @@ async def create_async( else: base_url = self._get_url(base_url, url_variables) - request = models.CreateAnnouncementRequest( - start_time=start_time, - end_time=end_time, - title=title, - body=utils.get_pydantic_model(body, Optional[models.StructuredText]), - emoji=emoji, - thumbnail=utils.get_pydantic_model(thumbnail, Optional[models.Thumbnail]), - banner=utils.get_pydantic_model(banner, Optional[models.Thumbnail]), - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.CreateannouncementRequestRequest( + locale=locale, + create_announcement_request=models.CreateAnnouncementRequest( + start_time=start_time, + end_time=end_time, + title=title, + body=utils.get_pydantic_model(body, Optional[models.StructuredText]), + emoji=emoji, + thumbnail=utils.get_pydantic_model( + thumbnail, Optional[models.Thumbnail] + ), + banner=utils.get_pydantic_model(banner, Optional[models.Thumbnail]), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + source_document_id=source_document_id, + hide_attribution=hide_attribution, + channel=channel, + post_type=post_type, + is_prioritized=is_prioritized, + view_url=view_url, ), - source_document_id=source_document_id, - hide_attribution=hide_attribution, - channel=channel, - post_type=post_type, - is_prioritized=is_prioritized, - view_url=view_url, ) req = self._build_request_async( @@ -234,8 +253,13 @@ async def create_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CreateAnnouncementRequest + request.create_announcement_request, + False, + False, + "json", + models.CreateAnnouncementRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -258,7 +282,7 @@ async def create_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -277,6 +301,7 @@ def delete( self, *, id: int, + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -287,6 +312,7 @@ def delete( Delete an existing user-generated announcement. :param id: The opaque id of the announcement to be deleted. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :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 @@ -302,8 +328,11 @@ def delete( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteAnnouncementRequest( - id=id, + request = models.DeleteannouncementRequestRequest( + locale=locale, + delete_announcement_request=models.DeleteAnnouncementRequest( + id=id, + ), ) req = self._build_request( @@ -320,8 +349,13 @@ def delete( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteAnnouncementRequest + request.delete_announcement_request, + False, + False, + "json", + models.DeleteAnnouncementRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -344,7 +378,7 @@ def delete( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -363,6 +397,7 @@ async def delete_async( self, *, id: int, + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -373,6 +408,7 @@ async def delete_async( Delete an existing user-generated announcement. :param id: The opaque id of the announcement to be deleted. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :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 @@ -388,8 +424,11 @@ async def delete_async( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteAnnouncementRequest( - id=id, + request = models.DeleteannouncementRequestRequest( + locale=locale, + delete_announcement_request=models.DeleteAnnouncementRequest( + id=id, + ), ) req = self._build_request_async( @@ -406,8 +445,13 @@ async def delete_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteAnnouncementRequest + request.delete_announcement_request, + False, + False, + "json", + models.DeleteAnnouncementRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -430,7 +474,7 @@ async def delete_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -452,6 +496,7 @@ def update( end_time: datetime, title: str, id: int, + locale: Optional[str] = None, body: Optional[ Union[models.StructuredText, models.StructuredTextTypedDict] ] = None, @@ -480,6 +525,7 @@ def update( :param end_time: The date and time at which the announcement expires. :param title: The headline of the announcement. :param id: The opaque id of the announcement. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param body: :param emoji: An emoji used to indicate the nature of the announcement. :param thumbnail: @@ -506,24 +552,29 @@ def update( else: base_url = self._get_url(base_url, url_variables) - request = models.UpdateAnnouncementRequest( - start_time=start_time, - end_time=end_time, - title=title, - body=utils.get_pydantic_model(body, Optional[models.StructuredText]), - emoji=emoji, - thumbnail=utils.get_pydantic_model(thumbnail, Optional[models.Thumbnail]), - banner=utils.get_pydantic_model(banner, Optional[models.Thumbnail]), - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.UpdateannouncementRequestRequest( + locale=locale, + update_announcement_request=models.UpdateAnnouncementRequest( + start_time=start_time, + end_time=end_time, + title=title, + body=utils.get_pydantic_model(body, Optional[models.StructuredText]), + emoji=emoji, + thumbnail=utils.get_pydantic_model( + thumbnail, Optional[models.Thumbnail] + ), + banner=utils.get_pydantic_model(banner, Optional[models.Thumbnail]), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + source_document_id=source_document_id, + hide_attribution=hide_attribution, + channel=channel, + post_type=post_type, + is_prioritized=is_prioritized, + view_url=view_url, + id=id, ), - source_document_id=source_document_id, - hide_attribution=hide_attribution, - channel=channel, - post_type=post_type, - is_prioritized=is_prioritized, - view_url=view_url, - id=id, ) req = self._build_request( @@ -540,8 +591,13 @@ def update( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.UpdateAnnouncementRequest + request.update_announcement_request, + False, + False, + "json", + models.UpdateAnnouncementRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -564,7 +620,7 @@ def update( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -586,6 +642,7 @@ async def update_async( end_time: datetime, title: str, id: int, + locale: Optional[str] = None, body: Optional[ Union[models.StructuredText, models.StructuredTextTypedDict] ] = None, @@ -614,6 +671,7 @@ async def update_async( :param end_time: The date and time at which the announcement expires. :param title: The headline of the announcement. :param id: The opaque id of the announcement. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param body: :param emoji: An emoji used to indicate the nature of the announcement. :param thumbnail: @@ -640,24 +698,29 @@ async def update_async( else: base_url = self._get_url(base_url, url_variables) - request = models.UpdateAnnouncementRequest( - start_time=start_time, - end_time=end_time, - title=title, - body=utils.get_pydantic_model(body, Optional[models.StructuredText]), - emoji=emoji, - thumbnail=utils.get_pydantic_model(thumbnail, Optional[models.Thumbnail]), - banner=utils.get_pydantic_model(banner, Optional[models.Thumbnail]), - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.UpdateannouncementRequestRequest( + locale=locale, + update_announcement_request=models.UpdateAnnouncementRequest( + start_time=start_time, + end_time=end_time, + title=title, + body=utils.get_pydantic_model(body, Optional[models.StructuredText]), + emoji=emoji, + thumbnail=utils.get_pydantic_model( + thumbnail, Optional[models.Thumbnail] + ), + banner=utils.get_pydantic_model(banner, Optional[models.Thumbnail]), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + source_document_id=source_document_id, + hide_attribution=hide_attribution, + channel=channel, + post_type=post_type, + is_prioritized=is_prioritized, + view_url=view_url, + id=id, ), - source_document_id=source_document_id, - hide_attribution=hide_attribution, - channel=channel, - post_type=post_type, - is_prioritized=is_prioritized, - view_url=view_url, - id=id, ) req = self._build_request_async( @@ -674,8 +737,13 @@ async def update_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.UpdateAnnouncementRequest + request.update_announcement_request, + False, + False, + "json", + models.UpdateAnnouncementRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -698,7 +766,7 @@ async def update_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/answers.py b/src/glean/api_client/answers.py index f6779d46..0757b71f 100644 --- a/src/glean/api_client/answers.py +++ b/src/glean/api_client/answers.py @@ -7,6 +7,7 @@ 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_extensions import deprecated class Answers(BaseSDK): @@ -14,6 +15,7 @@ def create( self, *, data: Union[models.AnswerCreationData, models.AnswerCreationDataTypedDict], + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -24,6 +26,7 @@ def create( Create a user-generated Answer that contains a question and answer. :param data: + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :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 @@ -39,8 +42,11 @@ def create( else: base_url = self._get_url(base_url, url_variables) - request = models.CreateAnswerRequest( - data=utils.get_pydantic_model(data, models.AnswerCreationData), + request = models.CreateanswerRequestRequest( + locale=locale, + create_answer_request=models.CreateAnswerRequest( + data=utils.get_pydantic_model(data, models.AnswerCreationData), + ), ) req = self._build_request( @@ -57,8 +63,13 @@ def create( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CreateAnswerRequest + request.create_answer_request, + False, + False, + "json", + models.CreateAnswerRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -81,7 +92,7 @@ def create( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -100,6 +111,7 @@ async def create_async( self, *, data: Union[models.AnswerCreationData, models.AnswerCreationDataTypedDict], + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -110,6 +122,7 @@ async def create_async( Create a user-generated Answer that contains a question and answer. :param data: + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :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 @@ -125,8 +138,11 @@ async def create_async( else: base_url = self._get_url(base_url, url_variables) - request = models.CreateAnswerRequest( - data=utils.get_pydantic_model(data, models.AnswerCreationData), + request = models.CreateanswerRequestRequest( + locale=locale, + create_answer_request=models.CreateAnswerRequest( + data=utils.get_pydantic_model(data, models.AnswerCreationData), + ), ) req = self._build_request_async( @@ -143,8 +159,13 @@ async def create_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CreateAnswerRequest + request.create_answer_request, + False, + False, + "json", + models.CreateAnswerRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -167,7 +188,7 @@ async def create_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -186,6 +207,7 @@ def delete( self, *, id: int, + locale: Optional[str] = None, doc_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -197,6 +219,7 @@ def delete( Delete an existing user-generated Answer. :param id: The opaque ID of the Answer. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param doc_id: Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -213,9 +236,12 @@ def delete( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteAnswerRequest( - id=id, - doc_id=doc_id, + request = models.DeleteanswerRequestRequest( + locale=locale, + delete_answer_request=models.DeleteAnswerRequest( + id=id, + doc_id=doc_id, + ), ) req = self._build_request( @@ -232,8 +258,13 @@ def delete( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteAnswerRequest + request.delete_answer_request, + False, + False, + "json", + models.DeleteAnswerRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -256,7 +287,7 @@ def delete( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -275,6 +306,7 @@ async def delete_async( self, *, id: int, + locale: Optional[str] = None, doc_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -286,6 +318,7 @@ async def delete_async( Delete an existing user-generated Answer. :param id: The opaque ID of the Answer. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param doc_id: Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -302,9 +335,12 @@ async def delete_async( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteAnswerRequest( - id=id, - doc_id=doc_id, + request = models.DeleteanswerRequestRequest( + locale=locale, + delete_answer_request=models.DeleteAnswerRequest( + id=id, + doc_id=doc_id, + ), ) req = self._build_request_async( @@ -321,8 +357,13 @@ async def delete_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteAnswerRequest + request.delete_answer_request, + False, + False, + "json", + models.DeleteAnswerRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -345,7 +386,7 @@ async def delete_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -364,6 +405,7 @@ def update( self, *, id: int, + locale: Optional[str] = None, doc_id: Optional[str] = None, question: Optional[str] = None, question_variations: Optional[List[str]] = None, @@ -412,6 +454,7 @@ def update( Update an existing user-generated Answer. :param id: The opaque ID of the Answer. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param doc_id: Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. :param question: :param question_variations: Additional ways of phrasing this question. @@ -441,33 +484,37 @@ def update( else: base_url = self._get_url(base_url, url_variables) - request = models.EditAnswerRequest( - id=id, - doc_id=doc_id, - question=question, - question_variations=question_variations, - body_text=body_text, - board_id=board_id, - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] - ), - added_roles=utils.get_pydantic_model( - added_roles, Optional[List[models.UserRoleSpecification]] - ), - removed_roles=utils.get_pydantic_model( - removed_roles, Optional[List[models.UserRoleSpecification]] - ), - roles=utils.get_pydantic_model( - roles, Optional[List[models.UserRoleSpecification]] - ), - source_document_spec=utils.get_pydantic_model( - source_document_spec, Optional[models.DocumentSpecUnion] - ), - source_type=source_type, - added_collections=added_collections, - removed_collections=removed_collections, - combined_answer_text=utils.get_pydantic_model( - combined_answer_text, Optional[models.StructuredTextMutableProperties] + request = models.EditanswerRequestRequest( + locale=locale, + edit_answer_request=models.EditAnswerRequest( + id=id, + doc_id=doc_id, + question=question, + question_variations=question_variations, + body_text=body_text, + board_id=board_id, + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + added_roles=utils.get_pydantic_model( + added_roles, Optional[List[models.UserRoleSpecification]] + ), + removed_roles=utils.get_pydantic_model( + removed_roles, Optional[List[models.UserRoleSpecification]] + ), + roles=utils.get_pydantic_model( + roles, Optional[List[models.UserRoleSpecification]] + ), + source_document_spec=utils.get_pydantic_model( + source_document_spec, Optional[models.DocumentSpecUnion] + ), + source_type=source_type, + added_collections=added_collections, + removed_collections=removed_collections, + combined_answer_text=utils.get_pydantic_model( + combined_answer_text, + Optional[models.StructuredTextMutableProperties], + ), ), ) @@ -485,8 +532,13 @@ def update( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.EditAnswerRequest + request.edit_answer_request, + False, + False, + "json", + models.EditAnswerRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -509,7 +561,7 @@ def update( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -528,6 +580,7 @@ async def update_async( self, *, id: int, + locale: Optional[str] = None, doc_id: Optional[str] = None, question: Optional[str] = None, question_variations: Optional[List[str]] = None, @@ -576,6 +629,7 @@ async def update_async( Update an existing user-generated Answer. :param id: The opaque ID of the Answer. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param doc_id: Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. :param question: :param question_variations: Additional ways of phrasing this question. @@ -605,33 +659,37 @@ async def update_async( else: base_url = self._get_url(base_url, url_variables) - request = models.EditAnswerRequest( - id=id, - doc_id=doc_id, - question=question, - question_variations=question_variations, - body_text=body_text, - board_id=board_id, - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] - ), - added_roles=utils.get_pydantic_model( - added_roles, Optional[List[models.UserRoleSpecification]] - ), - removed_roles=utils.get_pydantic_model( - removed_roles, Optional[List[models.UserRoleSpecification]] - ), - roles=utils.get_pydantic_model( - roles, Optional[List[models.UserRoleSpecification]] - ), - source_document_spec=utils.get_pydantic_model( - source_document_spec, Optional[models.DocumentSpecUnion] - ), - source_type=source_type, - added_collections=added_collections, - removed_collections=removed_collections, - combined_answer_text=utils.get_pydantic_model( - combined_answer_text, Optional[models.StructuredTextMutableProperties] + request = models.EditanswerRequestRequest( + locale=locale, + edit_answer_request=models.EditAnswerRequest( + id=id, + doc_id=doc_id, + question=question, + question_variations=question_variations, + body_text=body_text, + board_id=board_id, + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + added_roles=utils.get_pydantic_model( + added_roles, Optional[List[models.UserRoleSpecification]] + ), + removed_roles=utils.get_pydantic_model( + removed_roles, Optional[List[models.UserRoleSpecification]] + ), + roles=utils.get_pydantic_model( + roles, Optional[List[models.UserRoleSpecification]] + ), + source_document_spec=utils.get_pydantic_model( + source_document_spec, Optional[models.DocumentSpecUnion] + ), + source_type=source_type, + added_collections=added_collections, + removed_collections=removed_collections, + combined_answer_text=utils.get_pydantic_model( + combined_answer_text, + Optional[models.StructuredTextMutableProperties], + ), ), ) @@ -649,8 +707,13 @@ async def update_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.EditAnswerRequest + request.edit_answer_request, + False, + False, + "json", + models.EditAnswerRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -673,7 +736,7 @@ async def update_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -691,6 +754,7 @@ async def update_async( def retrieve( self, *, + locale: Optional[str] = None, id: Optional[int] = None, doc_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -702,6 +766,7 @@ def retrieve( Read the details of a particular Answer given its ID. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param id: The opaque ID of the Answer. :param doc_id: Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. :param retries: Override the default retry configuration for this method @@ -719,9 +784,12 @@ def retrieve( else: base_url = self._get_url(base_url, url_variables) - request = models.GetAnswerRequest( - id=id, - doc_id=doc_id, + request = models.GetanswerRequestRequest( + locale=locale, + get_answer_request=models.GetAnswerRequest( + id=id, + doc_id=doc_id, + ), ) req = self._build_request( @@ -738,8 +806,13 @@ def retrieve( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetAnswerRequest + request.get_answer_request, + False, + False, + "json", + models.GetAnswerRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -762,7 +835,7 @@ def retrieve( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -780,6 +853,7 @@ def retrieve( async def retrieve_async( self, *, + locale: Optional[str] = None, id: Optional[int] = None, doc_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -791,6 +865,7 @@ async def retrieve_async( Read the details of a particular Answer given its ID. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param id: The opaque ID of the Answer. :param doc_id: Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred. :param retries: Override the default retry configuration for this method @@ -808,9 +883,12 @@ async def retrieve_async( else: base_url = self._get_url(base_url, url_variables) - request = models.GetAnswerRequest( - id=id, - doc_id=doc_id, + request = models.GetanswerRequestRequest( + locale=locale, + get_answer_request=models.GetAnswerRequest( + id=id, + doc_id=doc_id, + ), ) req = self._build_request_async( @@ -827,8 +905,13 @@ async def retrieve_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetAnswerRequest + request.get_answer_request, + False, + False, + "json", + models.GetAnswerRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -851,7 +934,7 @@ async def retrieve_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -866,9 +949,13 @@ async def retrieve_async( raise errors.GleanError("Unexpected response received", http_res) + @deprecated( + "warning: ** DEPRECATED ** - Deprecated on 2026-01-21, removal scheduled for 2026-10-15: Answer boards have been removed and this endpoint no longer serves a purpose." + ) def list( self, *, + locale: Optional[str] = None, board_id: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -879,6 +966,7 @@ def list( List Answers created by the current user. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param board_id: The Answer Board Id to list answers on. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -895,8 +983,11 @@ def list( else: base_url = self._get_url(base_url, url_variables) - request = models.ListAnswersRequest( - board_id=board_id, + request = models.ListanswersRequestRequest( + locale=locale, + list_answers_request=models.ListAnswersRequest( + board_id=board_id, + ), ) req = self._build_request( @@ -913,8 +1004,13 @@ def list( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ListAnswersRequest + request.list_answers_request, + False, + False, + "json", + models.ListAnswersRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -937,7 +1033,7 @@ def list( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -952,9 +1048,13 @@ def list( raise errors.GleanError("Unexpected response received", http_res) + @deprecated( + "warning: ** DEPRECATED ** - Deprecated on 2026-01-21, removal scheduled for 2026-10-15: Answer boards have been removed and this endpoint no longer serves a purpose." + ) async def list_async( self, *, + locale: Optional[str] = None, board_id: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -965,6 +1065,7 @@ async def list_async( List Answers created by the current user. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param board_id: The Answer Board Id to list answers on. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -981,8 +1082,11 @@ async def list_async( else: base_url = self._get_url(base_url, url_variables) - request = models.ListAnswersRequest( - board_id=board_id, + request = models.ListanswersRequestRequest( + locale=locale, + list_answers_request=models.ListAnswersRequest( + board_id=board_id, + ), ) req = self._build_request_async( @@ -999,8 +1103,13 @@ async def list_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ListAnswersRequest + request.list_answers_request, + False, + False, + "json", + models.ListAnswersRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1023,7 +1132,7 @@ async def list_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/authentication.py b/src/glean/api_client/authentication.py new file mode 100644 index 00000000..092f1fb0 --- /dev/null +++ b/src/glean/api_client/authentication.py @@ -0,0 +1,181 @@ +"""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 Mapping, Optional + + +class Authentication(BaseSDK): + r"""Manage indexing API tokens.""" + + def checkdatasourceauth( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.CheckDatasourceAuthResponse: + r"""Check datasource authorization + + Returns all datasource instances that require per-user OAuth authorization + for the authenticated user, along with a transient auth token that can be + appended to auth URLs to complete OAuth flows. + + Clients construct the full OAuth URL by combining the backend base URL, + the `authUrlRelativePath` from each instance, and the transient auth token: + `/?transient_auth_token=`. + + + :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) + req = self._build_request( + method="POST", + path="/rest/api/v1/checkdatasourceauth", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + 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, + 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="checkdatasourceauth", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.CheckDatasourceAuthResponse, http_res) + if utils.match_response(http_res, ["401", "429", "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 checkdatasourceauth_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.CheckDatasourceAuthResponse: + r"""Check datasource authorization + + Returns all datasource instances that require per-user OAuth authorization + for the authenticated user, along with a transient auth token that can be + appended to auth URLs to complete OAuth flows. + + Clients construct the full OAuth URL by combining the backend base URL, + the `authUrlRelativePath` from each instance, and the transient auth token: + `/?transient_auth_token=`. + + + :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) + req = self._build_request_async( + method="POST", + path="/rest/api/v1/checkdatasourceauth", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + 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, + 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="checkdatasourceauth", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.CheckDatasourceAuthResponse, http_res) + if utils.match_response(http_res, ["401", "429", "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/basesdk.py b/src/glean/api_client/basesdk.py index d8e7061a..bf7b1b3b 100644 --- a/src/glean/api_client/basesdk.py +++ b/src/glean/api_client/basesdk.py @@ -6,8 +6,14 @@ AfterErrorContext, AfterSuccessContext, BeforeRequestContext, + HookContext, +) +from glean.api_client.utils import ( + RetryConfig, + SerializedRequestBody, + get_body_content, + run_sync_in_thread, ) -from glean.api_client.utils import RetryConfig, SerializedRequestBody, get_body_content import httpx from typing import Callable, List, Mapping, Optional, Tuple from urllib.parse import parse_qs, urlparse @@ -60,6 +66,8 @@ def _build_request_async( ] = None, url_override: Optional[str] = None, http_headers: Optional[Mapping[str, str]] = None, + allow_empty_value: Optional[List[str]] = None, + allowed_fields: Optional[List[str]] = None, ) -> httpx.Request: client = self.sdk_configuration.async_client return self._build_request_with_client( @@ -80,6 +88,8 @@ def _build_request_async( get_serialized_body, url_override, http_headers, + allow_empty_value, + allowed_fields, ) def _build_request( @@ -102,6 +112,8 @@ def _build_request( ] = None, url_override: Optional[str] = None, http_headers: Optional[Mapping[str, str]] = None, + allow_empty_value: Optional[List[str]] = None, + allowed_fields: Optional[List[str]] = None, ) -> httpx.Request: client = self.sdk_configuration.client return self._build_request_with_client( @@ -122,6 +134,8 @@ def _build_request( get_serialized_body, url_override, http_headers, + allow_empty_value, + allowed_fields, ) def _build_request_with_client( @@ -145,6 +159,8 @@ def _build_request_with_client( ] = None, url_override: Optional[str] = None, http_headers: Optional[Mapping[str, str]] = None, + allow_empty_value: Optional[List[str]] = None, + allowed_fields: Optional[List[str]] = None, ) -> httpx.Request: query_params = {} @@ -160,6 +176,7 @@ def _build_request_with_client( query_params = utils.get_query_params( request if request_has_query_params else None, _globals if request_has_query_params else None, + allow_empty_value, ) else: # Pick up the query parameter from the override so they can be @@ -177,7 +194,9 @@ def _build_request_with_client( security = security() security = utils.get_security_from_env(security, models.Security) if security is not None: - security_headers, security_query_params = utils.get_security(security) + security_headers, security_query_params = utils.get_security( + security, allowed_fields + ) headers = {**headers, **security_headers} query_params = {**query_params, **security_query_params} @@ -214,15 +233,15 @@ def _build_request_with_client( data=serialized_request_body.data, files=serialized_request_body.files, headers=headers, - timeout=timeout, + timeout=timeout if timeout is not None else httpx.USE_CLIENT_DEFAULT, ) def do_request( self, - hook_ctx, - request, - error_status_codes, - stream=False, + hook_ctx: HookContext, + request: httpx.Request, + is_error_status_code: Callable[[int], bool], + stream: bool = False, retry_config: Optional[Tuple[RetryConfig, List[str]]] = None, ) -> httpx.Response: client = self.sdk_configuration.client @@ -234,6 +253,8 @@ def do(): http_res = None try: req = hooks.before_request(BeforeRequestContext(hook_ctx), request) + if "timeout" in request.extensions and "timeout" not in req.extensions: + req.extensions["timeout"] = request.extensions["timeout"] logger.debug( "Request:\nMethod: %s\nURL: %s\nHeaders: %s\nBody: %s", req.method, @@ -264,19 +285,6 @@ def do(): "" if stream else http_res.text, ) - if utils.match_status_codes(error_status_codes, http_res.status_code): - result, err = hooks.after_error( - AfterErrorContext(hook_ctx), http_res, None - ) - if err is not None: - logger.debug("Request Exception", exc_info=True) - raise err - if result is not None: - http_res = result - else: - logger.debug("Raising unexpected SDK error") - raise errors.GleanError("Unexpected error occurred", http_res) - return http_res if retry_config is not None: @@ -284,17 +292,27 @@ def do(): else: http_res = do() - if not utils.match_status_codes(error_status_codes, http_res.status_code): + if is_error_status_code(http_res.status_code): + result, err = hooks.after_error(AfterErrorContext(hook_ctx), http_res, None) + if err is not None: + logger.debug("Request Exception", exc_info=True) + raise err + if result is not None: + http_res = result + else: + logger.debug("Raising unexpected SDK error") + raise errors.GleanError("Unexpected error occurred", http_res) + else: http_res = hooks.after_success(AfterSuccessContext(hook_ctx), http_res) return http_res async def do_request_async( self, - hook_ctx, - request, - error_status_codes, - stream=False, + hook_ctx: HookContext, + request: httpx.Request, + is_error_status_code: Callable[[int], bool], + stream: bool = False, retry_config: Optional[Tuple[RetryConfig, List[str]]] = None, ) -> httpx.Response: client = self.sdk_configuration.async_client @@ -305,7 +323,12 @@ async def do_request_async( async def do(): http_res = None try: - req = hooks.before_request(BeforeRequestContext(hook_ctx), request) + req = await run_sync_in_thread( + hooks.before_request, BeforeRequestContext(hook_ctx), request + ) + + if "timeout" in request.extensions and "timeout" not in req.extensions: + req.extensions["timeout"] = request.extensions["timeout"] logger.debug( "Request:\nMethod: %s\nURL: %s\nHeaders: %s\nBody: %s", req.method, @@ -319,7 +342,10 @@ async def do(): http_res = await client.send(req, stream=stream) except Exception as e: - _, e = hooks.after_error(AfterErrorContext(hook_ctx), None, e) + _, e = await run_sync_in_thread( + hooks.after_error, AfterErrorContext(hook_ctx), None, e + ) + if e is not None: logger.debug("Request Exception", exc_info=True) raise e @@ -336,19 +362,6 @@ async def do(): "" if stream else http_res.text, ) - if utils.match_status_codes(error_status_codes, http_res.status_code): - result, err = hooks.after_error( - AfterErrorContext(hook_ctx), http_res, None - ) - if err is not None: - logger.debug("Request Exception", exc_info=True) - raise err - if result is not None: - http_res = result - else: - logger.debug("Raising unexpected SDK error") - raise errors.GleanError("Unexpected error occurred", http_res) - return http_res if retry_config is not None: @@ -358,7 +371,22 @@ async def do(): else: http_res = await do() - if not utils.match_status_codes(error_status_codes, http_res.status_code): - http_res = hooks.after_success(AfterSuccessContext(hook_ctx), http_res) + if is_error_status_code(http_res.status_code): + result, err = await run_sync_in_thread( + hooks.after_error, AfterErrorContext(hook_ctx), http_res, None + ) + + if err is not None: + logger.debug("Request Exception", exc_info=True) + raise err + if result is not None: + http_res = result + else: + logger.debug("Raising unexpected SDK error") + raise errors.GleanError("Unexpected error occurred", http_res) + else: + http_res = await run_sync_in_thread( + hooks.after_success, AfterSuccessContext(hook_ctx), http_res + ) return http_res diff --git a/src/glean/api_client/chat_sdk.py b/src/glean/api_client/chat_sdk.py new file mode 100644 index 00000000..11e082d6 --- /dev/null +++ b/src/glean/api_client/chat_sdk.py @@ -0,0 +1,193 @@ +"""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 +import httpx +from typing import Mapping, Optional + + +class ChatSDK(BaseSDK): + def get_chat_file( + self, + *, + file_id: str, + preview: Optional[bool] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> httpx.Response: + r"""Download a chat file + + Download the raw content of a file generated or uploaded during a chat session (for example, an image produced by the assistant). Returns the file bytes with a Content-Type header matching the file's MIME type. + + + :param file_id: Identifier of the chat file to download. + :param preview: When true and the file is a PDF, the response is served inline (Content-Disposition: inline) instead of as an attachment. + + :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.GetChatFileRequest( + file_id=file_id, + preview=preview, + ) + + req = self._build_request( + method="GET", + path="/rest/api/v1/chat-files/{fileId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/octet-stream", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getChatFile", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/octet-stream"): + return http_res + if utils.match_response(http_res, ["400", "401", "403", "404", "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"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("Unexpected response received", http_res, http_res_text) + + async def get_chat_file_async( + self, + *, + file_id: str, + preview: Optional[bool] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> httpx.Response: + r"""Download a chat file + + Download the raw content of a file generated or uploaded during a chat session (for example, an image produced by the assistant). Returns the file bytes with a Content-Type header matching the file's MIME type. + + + :param file_id: Identifier of the chat file to download. + :param preview: When true and the file is a PDF, the response is served inline (Content-Disposition: inline) instead of as an attachment. + + :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.GetChatFileRequest( + file_id=file_id, + preview=preview, + ) + + req = self._build_request_async( + method="GET", + path="/rest/api/v1/chat-files/{fileId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/octet-stream", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="getChatFile", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/octet-stream"): + return http_res + if utils.match_response(http_res, ["400", "401", "403", "404", "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"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("API error occurred", http_res, http_res_text) + + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("Unexpected response received", http_res, http_res_text) diff --git a/src/glean/api_client/client.py b/src/glean/api_client/client.py index bec40c4b..122be2b9 100644 --- a/src/glean/api_client/client.py +++ b/src/glean/api_client/client.py @@ -2,23 +2,23 @@ from .basesdk import BaseSDK from .sdkconfiguration import SDKConfiguration -from glean.api_client.agents import Agents from glean.api_client.announcements import Announcements from glean.api_client.answers import Answers from glean.api_client.client_activity import ClientActivity +from glean.api_client.client_agents import ClientAgents from glean.api_client.client_authentication import ClientAuthentication from glean.api_client.client_chat import ClientChat from glean.api_client.client_documents import ClientDocuments +from glean.api_client.client_entities import ClientEntities +from glean.api_client.client_governance import ClientGovernance from glean.api_client.client_shortcuts import ClientShortcuts +from glean.api_client.client_tools import ClientTools from glean.api_client.client_verification import ClientVerification from glean.api_client.collections import Collections -from glean.api_client.entities import Entities -from glean.api_client.governance import Governance from glean.api_client.insights import Insights from glean.api_client.messages import Messages from glean.api_client.pins import Pins from glean.api_client.search import Search -from glean.api_client.tools import Tools from typing import Optional @@ -28,18 +28,18 @@ class Client(BaseSDK): answers: Answers authentication: ClientAuthentication chat: ClientChat - agents: Agents + agents: ClientAgents collections: Collections documents: ClientDocuments insights: Insights messages: Messages pins: Pins search: Search - entities: Entities + entities: ClientEntities shortcuts: ClientShortcuts verification: ClientVerification - tools: Tools - governance: Governance + tools: ClientTools + governance: ClientGovernance def __init__( self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None @@ -60,7 +60,7 @@ def _init_sdks(self): self.sdk_configuration, parent_ref=self.parent_ref ) self.chat = ClientChat(self.sdk_configuration, parent_ref=self.parent_ref) - self.agents = Agents(self.sdk_configuration, parent_ref=self.parent_ref) + self.agents = ClientAgents(self.sdk_configuration, parent_ref=self.parent_ref) self.collections = Collections( self.sdk_configuration, parent_ref=self.parent_ref ) @@ -71,12 +71,16 @@ def _init_sdks(self): self.messages = Messages(self.sdk_configuration, parent_ref=self.parent_ref) self.pins = Pins(self.sdk_configuration, parent_ref=self.parent_ref) self.search = Search(self.sdk_configuration, parent_ref=self.parent_ref) - self.entities = Entities(self.sdk_configuration, parent_ref=self.parent_ref) + self.entities = ClientEntities( + self.sdk_configuration, parent_ref=self.parent_ref + ) self.shortcuts = ClientShortcuts( self.sdk_configuration, parent_ref=self.parent_ref ) self.verification = ClientVerification( self.sdk_configuration, parent_ref=self.parent_ref ) - self.tools = Tools(self.sdk_configuration, parent_ref=self.parent_ref) - self.governance = Governance(self.sdk_configuration, parent_ref=self.parent_ref) + self.tools = ClientTools(self.sdk_configuration, parent_ref=self.parent_ref) + self.governance = ClientGovernance( + self.sdk_configuration, parent_ref=self.parent_ref + ) diff --git a/src/glean/api_client/client_activity.py b/src/glean/api_client/client_activity.py index a9c1e8b8..0fc1ce18 100644 --- a/src/glean/api_client/client_activity.py +++ b/src/glean/api_client/client_activity.py @@ -58,6 +58,7 @@ def report( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.Activity ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -80,7 +81,7 @@ def report( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -144,6 +145,7 @@ async def report_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.Activity ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -166,7 +168,7 @@ async def report_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -231,8 +233,13 @@ def feedback( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.feedback1, False, True, "json", Optional[models.Feedback] + request.feedback1 if request is not None else None, + False, + True, + "json", + Optional[models.Feedback], ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -255,7 +262,7 @@ def feedback( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -320,8 +327,13 @@ async def feedback_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request.feedback1, False, True, "json", Optional[models.Feedback] + request.feedback1 if request is not None else None, + False, + True, + "json", + Optional[models.Feedback], ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -344,7 +356,7 @@ async def feedback_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/client_agents.py b/src/glean/api_client/client_agents.py new file mode 100644 index 00000000..6e1ff0f4 --- /dev/null +++ b/src/glean/api_client/client_agents.py @@ -0,0 +1,973 @@ +"""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 Any, Dict, List, Mapping, Optional, Union + + +class ClientAgents(BaseSDK): + def retrieve( + self, + *, + agent_id: str, + locale: Optional[str] = None, + timezone_offset: Optional[int] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.Agent: + r"""Retrieve an agent + + Returns details of an [agent](https://developers.glean.com/agents/agents-api) created in the Agent Builder. + + :param agent_id: The ID of the agent. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. + :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.GetAgentRequest( + locale=locale, + timezone_offset=timezone_offset, + agent_id=agent_id, + ) + + req = self._build_request( + method="GET", + path="/rest/api/v1/agents/{agent_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=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, + 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="getAgent", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + 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, "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"], "*"): + 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_async( + self, + *, + agent_id: str, + locale: Optional[str] = None, + timezone_offset: Optional[int] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.Agent: + r"""Retrieve an agent + + Returns details of an [agent](https://developers.glean.com/agents/agents-api) created in the Agent Builder. + + :param agent_id: The ID of the agent. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. + :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.GetAgentRequest( + locale=locale, + timezone_offset=timezone_offset, + agent_id=agent_id, + ) + + req = self._build_request_async( + method="GET", + path="/rest/api/v1/agents/{agent_id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=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, + 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="getAgent", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + 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, "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"], "*"): + 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_schemas( + self, + *, + agent_id: str, + locale: Optional[str] = None, + timezone_offset: Optional[int] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AgentSchemas: + r"""List an agent's schemas + + Return [agent](https://developers.glean.com/agents/agents-api)'s input and output schemas. You can use these schemas to detect changes to an agent's input or output structure. + + :param agent_id: The ID of the agent. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. + :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.GetAgentSchemasRequest( + locale=locale, + timezone_offset=timezone_offset, + agent_id=agent_id, + ) + + req = self._build_request( + method="GET", + path="/rest/api/v1/agents/{agent_id}/schemas", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=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, + 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="getAgentSchemas", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + 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, ["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"], "*"): + 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_schemas_async( + self, + *, + agent_id: str, + locale: Optional[str] = None, + timezone_offset: Optional[int] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AgentSchemas: + r"""List an agent's schemas + + Return [agent](https://developers.glean.com/agents/agents-api)'s input and output schemas. You can use these schemas to detect changes to an agent's input or output structure. + + :param agent_id: The ID of the agent. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. + :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.GetAgentSchemasRequest( + locale=locale, + timezone_offset=timezone_offset, + agent_id=agent_id, + ) + + req = self._build_request_async( + method="GET", + path="/rest/api/v1/agents/{agent_id}/schemas", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=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, + 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="getAgentSchemas", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + 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, ["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"], "*"): + 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 list( + self, + *, + name: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SearchAgentsResponse: + r"""Search agents + + Search for [agents](https://developers.glean.com/agents/agents-api) by agent name. + + :param name: Filters on the name of the agent. The keyword search is case-insensitive. If search string is ommited or empty, acts as no filter. + :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.SearchAgentsRequest( + name=name, + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/agents/search", + 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.SearchAgentsRequest + ), + 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="searchAgents", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + 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, ["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"], "*"): + 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 list_async( + self, + *, + name: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SearchAgentsResponse: + r"""Search agents + + Search for [agents](https://developers.glean.com/agents/agents-api) by agent name. + + :param name: Filters on the name of the agent. The keyword search is case-insensitive. If search string is ommited or empty, acts as no filter. + :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.SearchAgentsRequest( + name=name, + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/agents/search", + 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.SearchAgentsRequest + ), + 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="searchAgents", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + 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, ["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"], "*"): + 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 run_stream( + self, + *, + agent_id: str, + input: Optional[Dict[str, Any]] = None, + messages: Optional[ + Union[List[models.Message], List[models.MessageTypedDict]] + ] = None, + metadata: Optional[Dict[str, Any]] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> str: + r"""Create an agent run and stream the response + + Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the result as a stream of server-sent events (SSE). **Note**: If the agent uses an input form trigger, all form fields (including optional fields) must be included in the `input` object. + + :param agent_id: The ID of the agent to run. + :param input: The input to the agent. Required when the agent uses an input form trigger. + :param messages: The messages to pass an input to the agent. + :param metadata: The metadata to pass to the agent. + :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.AgentRunCreate( + agent_id=agent_id, + input=input, + messages=utils.get_pydantic_model(messages, Optional[List[models.Message]]), + metadata=metadata, + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/agents/runs/stream", + 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="text/event-stream", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.AgentRunCreate + ), + 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="createAndStreamRun", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + 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, ["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"], "*"): + 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 run_stream_async( + self, + *, + agent_id: str, + input: Optional[Dict[str, Any]] = None, + messages: Optional[ + Union[List[models.Message], List[models.MessageTypedDict]] + ] = None, + metadata: Optional[Dict[str, Any]] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> str: + r"""Create an agent run and stream the response + + Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the result as a stream of server-sent events (SSE). **Note**: If the agent uses an input form trigger, all form fields (including optional fields) must be included in the `input` object. + + :param agent_id: The ID of the agent to run. + :param input: The input to the agent. Required when the agent uses an input form trigger. + :param messages: The messages to pass an input to the agent. + :param metadata: The metadata to pass to the agent. + :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.AgentRunCreate( + agent_id=agent_id, + input=input, + messages=utils.get_pydantic_model(messages, Optional[List[models.Message]]), + metadata=metadata, + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/agents/runs/stream", + 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="text/event-stream", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request, False, False, "json", models.AgentRunCreate + ), + 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="createAndStreamRun", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + 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, ["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"], "*"): + 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 run( + self, + *, + agent_id: str, + input: Optional[Dict[str, Any]] = None, + messages: Optional[ + Union[List[models.Message], List[models.MessageTypedDict]] + ] = None, + metadata: Optional[Dict[str, Any]] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AgentRunWaitResponse: + r"""Create an agent run and wait for the response + + Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the final response. **Note**: If the agent uses an input form trigger, all form fields (including optional fields) must be included in the `input` object. + + :param agent_id: The ID of the agent to run. + :param input: The input to the agent. Required when the agent uses an input form trigger. + :param messages: The messages to pass an input to the agent. + :param metadata: The metadata to pass to the agent. + :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.AgentRunCreate( + agent_id=agent_id, + input=input, + messages=utils.get_pydantic_model(messages, Optional[List[models.Message]]), + metadata=metadata, + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/agents/runs/wait", + 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.AgentRunCreate + ), + 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="createAndWaitRun", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.AgentRunWaitResponse, http_res) + if utils.match_response( + http_res, ["400", "403", "404", "409", "422", "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"], "*"): + 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 run_async( + self, + *, + agent_id: str, + input: Optional[Dict[str, Any]] = None, + messages: Optional[ + Union[List[models.Message], List[models.MessageTypedDict]] + ] = None, + metadata: Optional[Dict[str, Any]] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AgentRunWaitResponse: + r"""Create an agent run and wait for the response + + Executes an [agent](https://developers.glean.com/agents/agents-api) run and returns the final response. **Note**: If the agent uses an input form trigger, all form fields (including optional fields) must be included in the `input` object. + + :param agent_id: The ID of the agent to run. + :param input: The input to the agent. Required when the agent uses an input form trigger. + :param messages: The messages to pass an input to the agent. + :param metadata: The metadata to pass to the agent. + :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.AgentRunCreate( + agent_id=agent_id, + input=input, + messages=utils.get_pydantic_model(messages, Optional[List[models.Message]]), + metadata=metadata, + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/agents/runs/wait", + 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.AgentRunCreate + ), + 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="createAndWaitRun", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.AgentRunWaitResponse, http_res) + if utils.match_response( + http_res, ["400", "403", "404", "409", "422", "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"], "*"): + 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/client_authentication.py b/src/glean/api_client/client_authentication.py index bcc13f76..b2e67417 100644 --- a/src/glean/api_client/client_authentication.py +++ b/src/glean/api_client/client_authentication.py @@ -54,6 +54,7 @@ def create_token( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -76,7 +77,7 @@ def create_token( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -135,6 +136,7 @@ async def create_token_async( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -157,7 +159,7 @@ async def create_token_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/client_chat.py b/src/glean/api_client/client_chat.py index 761bc2fa..f1e89630 100644 --- a/src/glean/api_client/client_chat.py +++ b/src/glean/api_client/client_chat.py @@ -14,6 +14,7 @@ def create( self, *, messages: Union[List[models.ChatMessage], List[models.ChatMessageTypedDict]], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, session_info: Optional[ Union[models.SessionInfo, models.SessionInfoTypedDict] @@ -43,6 +44,7 @@ def create( Have a conversation with Glean AI. :param messages: A list of chat messages, from most recent to least recent. At least one message must specify a USER author. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param session_info: :param save_chat: Save the current interaction as a Chat for the user to access and potentially continue later. @@ -70,6 +72,7 @@ def create( base_url = self._get_url(base_url, url_variables) request = models.ChatRequestRequest( + locale=locale, timezone_offset=timezone_offset, chat_request=models.ChatRequest( messages=utils.get_pydantic_model(messages, List[models.ChatMessage]), @@ -110,6 +113,7 @@ def create( get_serialized_body=lambda: utils.serialize_request_body( request.chat_request, False, False, "json", models.ChatRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -132,7 +136,7 @@ def create( ), ), request=req, - error_status_codes=["400", "401", "408", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -151,6 +155,7 @@ async def create_async( self, *, messages: Union[List[models.ChatMessage], List[models.ChatMessageTypedDict]], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, session_info: Optional[ Union[models.SessionInfo, models.SessionInfoTypedDict] @@ -180,6 +185,7 @@ async def create_async( Have a conversation with Glean AI. :param messages: A list of chat messages, from most recent to least recent. At least one message must specify a USER author. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param session_info: :param save_chat: Save the current interaction as a Chat for the user to access and potentially continue later. @@ -207,6 +213,7 @@ async def create_async( base_url = self._get_url(base_url, url_variables) request = models.ChatRequestRequest( + locale=locale, timezone_offset=timezone_offset, chat_request=models.ChatRequest( messages=utils.get_pydantic_model(messages, List[models.ChatMessage]), @@ -247,6 +254,7 @@ async def create_async( get_serialized_body=lambda: utils.serialize_request_body( request.chat_request, False, False, "json", models.ChatRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -269,7 +277,7 @@ async def create_async( ), ), request=req, - error_status_codes=["400", "401", "408", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -287,6 +295,7 @@ async def create_async( def delete_all( self, *, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -297,6 +306,7 @@ def delete_all( Deletes all saved Chats a user has had and all their contained conversational content. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -314,6 +324,7 @@ def delete_all( base_url = self._get_url(base_url, url_variables) request = models.DeleteallchatsRequest( + locale=locale, timezone_offset=timezone_offset, ) @@ -330,6 +341,7 @@ def delete_all( accept_header_value="*/*", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -352,7 +364,7 @@ def delete_all( ), ), request=req, - error_status_codes=["400", "401", "403", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -370,6 +382,7 @@ def delete_all( async def delete_all_async( self, *, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -380,6 +393,7 @@ async def delete_all_async( Deletes all saved Chats a user has had and all their contained conversational content. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -397,6 +411,7 @@ async def delete_all_async( base_url = self._get_url(base_url, url_variables) request = models.DeleteallchatsRequest( + locale=locale, timezone_offset=timezone_offset, ) @@ -413,6 +428,7 @@ async def delete_all_async( accept_header_value="*/*", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -435,7 +451,7 @@ async def delete_all_async( ), ), request=req, - error_status_codes=["400", "401", "403", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -454,6 +470,7 @@ def delete( self, *, ids: List[str], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -465,6 +482,7 @@ def delete( Deletes saved Chats and all their contained conversational content. :param ids: A non-empty list of ids of the Chats to be deleted. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -482,6 +500,7 @@ def delete( base_url = self._get_url(base_url, url_variables) request = models.DeletechatsRequestRequest( + locale=locale, timezone_offset=timezone_offset, delete_chats_request=models.DeleteChatsRequest( ids=ids, @@ -508,6 +527,7 @@ def delete( "json", models.DeleteChatsRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -530,7 +550,7 @@ def delete( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -549,6 +569,7 @@ async def delete_async( self, *, ids: List[str], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -560,6 +581,7 @@ async def delete_async( Deletes saved Chats and all their contained conversational content. :param ids: A non-empty list of ids of the Chats to be deleted. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -577,6 +599,7 @@ async def delete_async( base_url = self._get_url(base_url, url_variables) request = models.DeletechatsRequestRequest( + locale=locale, timezone_offset=timezone_offset, delete_chats_request=models.DeleteChatsRequest( ids=ids, @@ -603,6 +626,7 @@ async def delete_async( "json", models.DeleteChatsRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -625,7 +649,7 @@ async def delete_async( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -644,6 +668,7 @@ def retrieve( self, *, id: str, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -655,6 +680,7 @@ def retrieve( Retrieves the chat history between Glean Assistant and the user for a given Chat. :param id: The id of the Chat to be retrieved. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -672,6 +698,7 @@ def retrieve( base_url = self._get_url(base_url, url_variables) request = models.GetchatRequestRequest( + locale=locale, timezone_offset=timezone_offset, get_chat_request=models.GetChatRequest( id=id, @@ -694,6 +721,7 @@ def retrieve( get_serialized_body=lambda: utils.serialize_request_body( request.get_chat_request, False, False, "json", models.GetChatRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -716,7 +744,7 @@ def retrieve( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -735,6 +763,7 @@ async def retrieve_async( self, *, id: str, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -746,6 +775,7 @@ async def retrieve_async( Retrieves the chat history between Glean Assistant and the user for a given Chat. :param id: The id of the Chat to be retrieved. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -763,6 +793,7 @@ async def retrieve_async( base_url = self._get_url(base_url, url_variables) request = models.GetchatRequestRequest( + locale=locale, timezone_offset=timezone_offset, get_chat_request=models.GetChatRequest( id=id, @@ -785,6 +816,7 @@ async def retrieve_async( get_serialized_body=lambda: utils.serialize_request_body( request.get_chat_request, False, False, "json", models.GetChatRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -807,7 +839,7 @@ async def retrieve_async( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -825,6 +857,7 @@ async def retrieve_async( def list( self, *, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -835,6 +868,7 @@ def list( Retrieves all the saved Chats between Glean Assistant and the user. The returned Chats contain only metadata and no conversational content. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -852,6 +886,7 @@ def list( base_url = self._get_url(base_url, url_variables) request = models.ListchatsRequest( + locale=locale, timezone_offset=timezone_offset, ) @@ -868,6 +903,7 @@ def list( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -890,7 +926,7 @@ def list( ), ), request=req, - error_status_codes=["401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -908,6 +944,7 @@ def list( async def list_async( self, *, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -918,6 +955,7 @@ async def list_async( Retrieves all the saved Chats between Glean Assistant and the user. The returned Chats contain only metadata and no conversational content. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -935,6 +973,7 @@ async def list_async( base_url = self._get_url(base_url, url_variables) request = models.ListchatsRequest( + locale=locale, timezone_offset=timezone_offset, ) @@ -951,6 +990,7 @@ async def list_async( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -973,7 +1013,7 @@ async def list_async( ), ), request=req, - error_status_codes=["401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -992,6 +1032,7 @@ def retrieve_application( self, *, id: str, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -1003,6 +1044,7 @@ def retrieve_application( Gets the Chat application details for the specified application ID. :param id: The id of the Chat application to be retrieved. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -1020,6 +1062,7 @@ def retrieve_application( base_url = self._get_url(base_url, url_variables) request = models.GetchatapplicationRequestRequest( + locale=locale, timezone_offset=timezone_offset, get_chat_application_request=models.GetChatApplicationRequest( id=id, @@ -1046,6 +1089,7 @@ def retrieve_application( "json", models.GetChatApplicationRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1068,7 +1112,7 @@ def retrieve_application( ), ), request=req, - error_status_codes=["400", "401", "403", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1087,6 +1131,7 @@ async def retrieve_application_async( self, *, id: str, + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -1098,6 +1143,7 @@ async def retrieve_application_async( Gets the Chat application details for the specified application ID. :param id: The id of the Chat application to be retrieved. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -1115,6 +1161,7 @@ async def retrieve_application_async( base_url = self._get_url(base_url, url_variables) request = models.GetchatapplicationRequestRequest( + locale=locale, timezone_offset=timezone_offset, get_chat_application_request=models.GetChatApplicationRequest( id=id, @@ -1141,6 +1188,7 @@ async def retrieve_application_async( "json", models.GetChatApplicationRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1163,7 +1211,7 @@ async def retrieve_application_async( ), ), request=req, - error_status_codes=["400", "401", "403", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1182,17 +1230,19 @@ def upload_files( self, *, files: Union[List[models.File], List[models.FileTypedDict]], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ) -> models.UploadChatFilesResponse: - r"""Upload files for Chat. + r"""Upload files for Chat Upload files for Chat. :param files: Raw files to be uploaded for chat in binary format. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -1210,6 +1260,7 @@ def upload_files( base_url = self._get_url(base_url, url_variables) request = models.UploadchatfilesRequestRequest( + locale=locale, timezone_offset=timezone_offset, upload_chat_files_request=models.UploadChatFilesRequest( files=utils.get_pydantic_model(files, List[models.File]), @@ -1236,6 +1287,7 @@ def upload_files( "multipart", models.UploadChatFilesRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1258,7 +1310,7 @@ def upload_files( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1277,17 +1329,19 @@ async def upload_files_async( self, *, files: Union[List[models.File], List[models.FileTypedDict]], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ) -> models.UploadChatFilesResponse: - r"""Upload files for Chat. + r"""Upload files for Chat Upload files for Chat. :param files: Raw files to be uploaded for chat in binary format. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -1305,6 +1359,7 @@ async def upload_files_async( base_url = self._get_url(base_url, url_variables) request = models.UploadchatfilesRequestRequest( + locale=locale, timezone_offset=timezone_offset, upload_chat_files_request=models.UploadChatFilesRequest( files=utils.get_pydantic_model(files, List[models.File]), @@ -1331,6 +1386,7 @@ async def upload_files_async( "multipart", models.UploadChatFilesRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1353,7 +1409,7 @@ async def upload_files_async( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1372,17 +1428,19 @@ def retrieve_files( self, *, file_ids: List[str], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ) -> models.GetChatFilesResponse: - r"""Get files uploaded by a user for Chat. + r"""Get files uploaded by a user for Chat Get files uploaded by a user for Chat. :param file_ids: IDs of files to fetch. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -1400,6 +1458,7 @@ def retrieve_files( base_url = self._get_url(base_url, url_variables) request = models.GetchatfilesRequestRequest( + locale=locale, timezone_offset=timezone_offset, get_chat_files_request=models.GetChatFilesRequest( file_ids=file_ids, @@ -1426,6 +1485,7 @@ def retrieve_files( "json", models.GetChatFilesRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1448,7 +1508,7 @@ def retrieve_files( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1467,17 +1527,19 @@ async def retrieve_files_async( self, *, file_ids: List[str], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ) -> models.GetChatFilesResponse: - r"""Get files uploaded by a user for Chat. + r"""Get files uploaded by a user for Chat Get files uploaded by a user for Chat. :param file_ids: IDs of files to fetch. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -1495,6 +1557,7 @@ async def retrieve_files_async( base_url = self._get_url(base_url, url_variables) request = models.GetchatfilesRequestRequest( + locale=locale, timezone_offset=timezone_offset, get_chat_files_request=models.GetChatFilesRequest( file_ids=file_ids, @@ -1521,6 +1584,7 @@ async def retrieve_files_async( "json", models.GetChatFilesRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1543,7 +1607,7 @@ async def retrieve_files_async( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1562,17 +1626,19 @@ def delete_files( self, *, file_ids: List[str], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ): - r"""Delete files uploaded by a user for chat. + r"""Delete files uploaded by a user for chat Delete files uploaded by a user for Chat. :param file_ids: IDs of files to delete. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -1590,6 +1656,7 @@ def delete_files( base_url = self._get_url(base_url, url_variables) request = models.DeletechatfilesRequestRequest( + locale=locale, timezone_offset=timezone_offset, delete_chat_files_request=models.DeleteChatFilesRequest( file_ids=file_ids, @@ -1616,6 +1683,7 @@ def delete_files( "json", models.DeleteChatFilesRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1638,7 +1706,7 @@ def delete_files( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1657,17 +1725,19 @@ async def delete_files_async( self, *, file_ids: List[str], + locale: Optional[str] = None, timezone_offset: Optional[int] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ): - r"""Delete files uploaded by a user for chat. + r"""Delete files uploaded by a user for chat Delete files uploaded by a user for Chat. :param file_ids: IDs of files to delete. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -1685,6 +1755,7 @@ async def delete_files_async( base_url = self._get_url(base_url, url_variables) request = models.DeletechatfilesRequestRequest( + locale=locale, timezone_offset=timezone_offset, delete_chat_files_request=models.DeleteChatFilesRequest( file_ids=file_ids, @@ -1711,6 +1782,7 @@ async def delete_files_async( "json", models.DeleteChatFilesRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1733,7 +1805,7 @@ async def delete_files_async( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1848,6 +1920,7 @@ def create_stream( get_serialized_body=lambda: utils.serialize_request_body( request.chat_request, False, False, "json", models.ChatRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1870,7 +1943,7 @@ def create_stream( ), ), request=req, - error_status_codes=["400", "401", "408", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1985,6 +2058,7 @@ async def create_stream_async( get_serialized_body=lambda: utils.serialize_request_body( request.chat_request, False, False, "json", models.ChatRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -2007,7 +2081,7 @@ async def create_stream_async( ), ), request=req, - error_status_codes=["400", "401", "408", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/client_documents.py b/src/glean/api_client/client_documents.py index 5f1cc92b..c270bf21 100644 --- a/src/glean/api_client/client_documents.py +++ b/src/glean/api_client/client_documents.py @@ -4,16 +4,17 @@ from datetime import datetime from glean.api_client import errors, models, utils from glean.api_client._hooks import HookContext -from glean.api_client.types import BaseModel, OptionalNullable, UNSET +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, cast +from typing import List, Mapping, Optional, Union class ClientDocuments(BaseSDK): def retrieve_permissions( self, *, + locale: Optional[str] = None, document_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -24,6 +25,7 @@ def retrieve_permissions( Read the emails of all users who have access to the given document. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param document_id: The Glean Document ID to retrieve permissions for. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -40,8 +42,11 @@ def retrieve_permissions( else: base_url = self._get_url(base_url, url_variables) - request = models.GetDocPermissionsRequest( - document_id=document_id, + request = models.GetdocpermissionsRequestRequest( + locale=locale, + get_doc_permissions_request=models.GetDocPermissionsRequest( + document_id=document_id, + ), ) req = self._build_request( @@ -58,8 +63,13 @@ def retrieve_permissions( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetDocPermissionsRequest + request.get_doc_permissions_request, + False, + False, + "json", + models.GetDocPermissionsRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -82,7 +92,7 @@ def retrieve_permissions( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -100,6 +110,7 @@ def retrieve_permissions( async def retrieve_permissions_async( self, *, + locale: Optional[str] = None, document_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -110,6 +121,7 @@ async def retrieve_permissions_async( Read the emails of all users who have access to the given document. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param document_id: The Glean Document ID to retrieve permissions for. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -126,8 +138,11 @@ async def retrieve_permissions_async( else: base_url = self._get_url(base_url, url_variables) - request = models.GetDocPermissionsRequest( - document_id=document_id, + request = models.GetdocpermissionsRequestRequest( + locale=locale, + get_doc_permissions_request=models.GetDocPermissionsRequest( + document_id=document_id, + ), ) req = self._build_request_async( @@ -144,8 +159,13 @@ async def retrieve_permissions_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetDocPermissionsRequest + request.get_doc_permissions_request, + False, + False, + "json", + models.GetDocPermissionsRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -168,7 +188,7 @@ async def retrieve_permissions_async( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -186,7 +206,8 @@ async def retrieve_permissions_async( def retrieve( self, *, - request: Optional[ + locale: Optional[str] = None, + get_documents_request: Optional[ Union[models.GetDocumentsRequest, models.GetDocumentsRequestTypedDict] ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -198,7 +219,8 @@ def retrieve( Read the documents including metadata (does not include enhanced metadata via `/documentmetadata`) for the given list of Glean Document IDs or URLs specified in the request. - :param request: The request object to send. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + :param get_documents_request: Information about documents requested. :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 @@ -214,9 +236,12 @@ def retrieve( else: base_url = self._get_url(base_url, url_variables) - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, Optional[models.GetDocumentsRequest]) - request = cast(Optional[models.GetDocumentsRequest], request) + request = models.GetdocumentsRequestRequest( + locale=locale, + get_documents_request=utils.get_pydantic_model( + get_documents_request, Optional[models.GetDocumentsRequest] + ), + ) req = self._build_request( method="POST", @@ -232,8 +257,13 @@ def retrieve( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, True, "json", Optional[models.GetDocumentsRequest] + request.get_documents_request if request is not None else None, + False, + True, + "json", + Optional[models.GetDocumentsRequest], ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -256,7 +286,7 @@ def retrieve( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -274,7 +304,8 @@ def retrieve( async def retrieve_async( self, *, - request: Optional[ + locale: Optional[str] = None, + get_documents_request: Optional[ Union[models.GetDocumentsRequest, models.GetDocumentsRequestTypedDict] ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -286,7 +317,8 @@ async def retrieve_async( Read the documents including metadata (does not include enhanced metadata via `/documentmetadata`) for the given list of Glean Document IDs or URLs specified in the request. - :param request: The request object to send. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + :param get_documents_request: Information about documents requested. :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 @@ -302,9 +334,12 @@ async def retrieve_async( else: base_url = self._get_url(base_url, url_variables) - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, Optional[models.GetDocumentsRequest]) - request = cast(Optional[models.GetDocumentsRequest], request) + request = models.GetdocumentsRequestRequest( + locale=locale, + get_documents_request=utils.get_pydantic_model( + get_documents_request, Optional[models.GetDocumentsRequest] + ), + ) req = self._build_request_async( method="POST", @@ -320,8 +355,13 @@ async def retrieve_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, True, "json", Optional[models.GetDocumentsRequest] + request.get_documents_request if request is not None else None, + False, + True, + "json", + Optional[models.GetDocumentsRequest], ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -344,7 +384,7 @@ async def retrieve_async( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -362,7 +402,8 @@ async def retrieve_async( def retrieve_by_facets( self, *, - request: Optional[ + locale: Optional[str] = None, + get_documents_by_facets_request: Optional[ Union[ models.GetDocumentsByFacetsRequest, models.GetDocumentsByFacetsRequestTypedDict, @@ -377,7 +418,8 @@ def retrieve_by_facets( Read the documents including metadata (does not include enhanced metadata via `/documentmetadata`) macthing the given facet conditions. - :param request: The request object to send. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + :param get_documents_by_facets_request: Information about facet conditions for documents to be retrieved. :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 @@ -393,11 +435,13 @@ def retrieve_by_facets( else: base_url = self._get_url(base_url, url_variables) - if not isinstance(request, BaseModel): - request = utils.unmarshal( - request, Optional[models.GetDocumentsByFacetsRequest] - ) - request = cast(Optional[models.GetDocumentsByFacetsRequest], request) + request = models.GetdocumentsbyfacetsRequestRequest( + locale=locale, + get_documents_by_facets_request=utils.get_pydantic_model( + get_documents_by_facets_request, + Optional[models.GetDocumentsByFacetsRequest], + ), + ) req = self._build_request( method="POST", @@ -413,12 +457,15 @@ def retrieve_by_facets( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, + request.get_documents_by_facets_request + if request is not None + else None, False, True, "json", Optional[models.GetDocumentsByFacetsRequest], ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -441,7 +488,7 @@ def retrieve_by_facets( ), ), request=req, - error_status_codes=["400", "401", "404", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -461,7 +508,8 @@ def retrieve_by_facets( async def retrieve_by_facets_async( self, *, - request: Optional[ + locale: Optional[str] = None, + get_documents_by_facets_request: Optional[ Union[ models.GetDocumentsByFacetsRequest, models.GetDocumentsByFacetsRequestTypedDict, @@ -476,7 +524,8 @@ async def retrieve_by_facets_async( Read the documents including metadata (does not include enhanced metadata via `/documentmetadata`) macthing the given facet conditions. - :param request: The request object to send. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + :param get_documents_by_facets_request: Information about facet conditions for documents to be retrieved. :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 @@ -492,11 +541,13 @@ async def retrieve_by_facets_async( else: base_url = self._get_url(base_url, url_variables) - if not isinstance(request, BaseModel): - request = utils.unmarshal( - request, Optional[models.GetDocumentsByFacetsRequest] - ) - request = cast(Optional[models.GetDocumentsByFacetsRequest], request) + request = models.GetdocumentsbyfacetsRequestRequest( + locale=locale, + get_documents_by_facets_request=utils.get_pydantic_model( + get_documents_by_facets_request, + Optional[models.GetDocumentsByFacetsRequest], + ), + ) req = self._build_request_async( method="POST", @@ -512,12 +563,15 @@ async def retrieve_by_facets_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, + request.get_documents_by_facets_request + if request is not None + else None, False, True, "json", Optional[models.GetDocumentsByFacetsRequest], ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -540,7 +594,7 @@ async def retrieve_by_facets_async( ), ), request=req, - error_status_codes=["400", "401", "404", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -563,6 +617,7 @@ def summarize( document_specs: Union[ List[models.DocumentSpecUnion], List[models.DocumentSpecUnionTypedDict] ], + locale: Optional[str] = None, timestamp: Optional[datetime] = None, query: Optional[str] = None, preferred_summary_length: Optional[int] = None, @@ -577,6 +632,7 @@ def summarize( Generate an AI summary of the requested documents. :param document_specs: Specifications of documents to summarize + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timestamp: The ISO 8601 timestamp associated with the client request. :param query: Optional query that the summary should be about :param preferred_summary_length: Optional length of summary output. If not given, defaults to 500 chars. @@ -596,14 +652,17 @@ def summarize( else: base_url = self._get_url(base_url, url_variables) - request = models.SummarizeRequest( - timestamp=timestamp, - query=query, - preferred_summary_length=preferred_summary_length, - document_specs=utils.get_pydantic_model( - document_specs, List[models.DocumentSpecUnion] + request = models.SummarizeRequestRequest( + locale=locale, + summarize_request=models.SummarizeRequest( + timestamp=timestamp, + query=query, + preferred_summary_length=preferred_summary_length, + document_specs=utils.get_pydantic_model( + document_specs, List[models.DocumentSpecUnion] + ), + tracking_token=tracking_token, ), - tracking_token=tracking_token, ) req = self._build_request( @@ -620,8 +679,9 @@ def summarize( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.SummarizeRequest + request.summarize_request, False, False, "json", models.SummarizeRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -644,7 +704,7 @@ def summarize( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -665,6 +725,7 @@ async def summarize_async( document_specs: Union[ List[models.DocumentSpecUnion], List[models.DocumentSpecUnionTypedDict] ], + locale: Optional[str] = None, timestamp: Optional[datetime] = None, query: Optional[str] = None, preferred_summary_length: Optional[int] = None, @@ -679,6 +740,7 @@ async def summarize_async( Generate an AI summary of the requested documents. :param document_specs: Specifications of documents to summarize + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timestamp: The ISO 8601 timestamp associated with the client request. :param query: Optional query that the summary should be about :param preferred_summary_length: Optional length of summary output. If not given, defaults to 500 chars. @@ -698,14 +760,17 @@ async def summarize_async( else: base_url = self._get_url(base_url, url_variables) - request = models.SummarizeRequest( - timestamp=timestamp, - query=query, - preferred_summary_length=preferred_summary_length, - document_specs=utils.get_pydantic_model( - document_specs, List[models.DocumentSpecUnion] + request = models.SummarizeRequestRequest( + locale=locale, + summarize_request=models.SummarizeRequest( + timestamp=timestamp, + query=query, + preferred_summary_length=preferred_summary_length, + document_specs=utils.get_pydantic_model( + document_specs, List[models.DocumentSpecUnion] + ), + tracking_token=tracking_token, ), - tracking_token=tracking_token, ) req = self._build_request_async( @@ -722,8 +787,9 @@ async def summarize_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.SummarizeRequest + request.summarize_request, False, False, "json", models.SummarizeRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -746,7 +812,7 @@ async def summarize_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/client_entities.py b/src/glean/api_client/client_entities.py new file mode 100644 index 00000000..67fbc0db --- /dev/null +++ b/src/glean/api_client/client_entities.py @@ -0,0 +1,487 @@ +"""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 ClientEntities(BaseSDK): + def list( + self, + *, + locale: Optional[str] = None, + filter_: Optional[ + Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + ] = None, + sort: Optional[ + Union[List[models.SortOptions], List[models.SortOptionsTypedDict]] + ] = None, + entity_type: Optional[ + models.ListEntitiesRequestEntityType + ] = models.ListEntitiesRequestEntityType.PEOPLE, + datasource: Optional[str] = None, + query: Optional[str] = None, + include_fields: Optional[List[models.ListEntitiesRequestIncludeField]] = None, + page_size: Optional[int] = None, + cursor: Optional[str] = None, + source: Optional[str] = None, + request_type: Optional[models.RequestType] = models.RequestType.STANDARD, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ListEntitiesResponse: + r"""List entities + + List some set of details for all entities that fit the given criteria and return in the requested order. Does not support negation in filters, assumes relation type EQUALS. There is a limit of 10000 entities that can be retrieved via this endpoint, except when using FULL_DIRECTORY request type for people entities. + + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + :param filter_: + :param sort: Use EntitiesSortOrder enum for SortOptions.sortBy + :param entity_type: + :param datasource: The datasource associated with the entity type, most commonly used with CUSTOM_ENTITIES + :param query: A query string to search for entities that each entity in the response must conform to. An empty query does not filter any entities. + :param include_fields: List of entity fields to return (that aren't returned by default) + :param page_size: Hint to the server about how many results to send back. Server may return less. + :param cursor: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. + :param source: A string denoting the search surface from which the endpoint is called. + :param request_type: The type of request being made. + :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.ListentitiesRequestRequest( + locale=locale, + list_entities_request=models.ListEntitiesRequest( + filter_=utils.get_pydantic_model( + filter_, Optional[List[models.FacetFilter]] + ), + sort=utils.get_pydantic_model(sort, Optional[List[models.SortOptions]]), + entity_type=entity_type, + datasource=datasource, + query=query, + include_fields=include_fields, + page_size=page_size, + cursor=cursor, + source=source, + request_type=request_type, + ), + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/listentities", + 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.list_entities_request, + False, + False, + "json", + models.ListEntitiesRequest, + ), + 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="listentities", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.ListEntitiesResponse, http_res) + if utils.match_response(http_res, ["400", "401", "429", "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 list_async( + self, + *, + locale: Optional[str] = None, + filter_: Optional[ + Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] + ] = None, + sort: Optional[ + Union[List[models.SortOptions], List[models.SortOptionsTypedDict]] + ] = None, + entity_type: Optional[ + models.ListEntitiesRequestEntityType + ] = models.ListEntitiesRequestEntityType.PEOPLE, + datasource: Optional[str] = None, + query: Optional[str] = None, + include_fields: Optional[List[models.ListEntitiesRequestIncludeField]] = None, + page_size: Optional[int] = None, + cursor: Optional[str] = None, + source: Optional[str] = None, + request_type: Optional[models.RequestType] = models.RequestType.STANDARD, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ListEntitiesResponse: + r"""List entities + + List some set of details for all entities that fit the given criteria and return in the requested order. Does not support negation in filters, assumes relation type EQUALS. There is a limit of 10000 entities that can be retrieved via this endpoint, except when using FULL_DIRECTORY request type for people entities. + + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + :param filter_: + :param sort: Use EntitiesSortOrder enum for SortOptions.sortBy + :param entity_type: + :param datasource: The datasource associated with the entity type, most commonly used with CUSTOM_ENTITIES + :param query: A query string to search for entities that each entity in the response must conform to. An empty query does not filter any entities. + :param include_fields: List of entity fields to return (that aren't returned by default) + :param page_size: Hint to the server about how many results to send back. Server may return less. + :param cursor: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. + :param source: A string denoting the search surface from which the endpoint is called. + :param request_type: The type of request being made. + :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.ListentitiesRequestRequest( + locale=locale, + list_entities_request=models.ListEntitiesRequest( + filter_=utils.get_pydantic_model( + filter_, Optional[List[models.FacetFilter]] + ), + sort=utils.get_pydantic_model(sort, Optional[List[models.SortOptions]]), + entity_type=entity_type, + datasource=datasource, + query=query, + include_fields=include_fields, + page_size=page_size, + cursor=cursor, + source=source, + request_type=request_type, + ), + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/listentities", + 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.list_entities_request, + False, + False, + "json", + models.ListEntitiesRequest, + ), + 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="listentities", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.ListEntitiesResponse, http_res) + if utils.match_response(http_res, ["400", "401", "429", "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 read_people( + self, + *, + locale: Optional[str] = None, + timezone_offset: Optional[int] = None, + obfuscated_ids: Optional[List[str]] = None, + email_ids: Optional[List[str]] = None, + include_fields: Optional[List[models.PeopleRequestIncludeField]] = None, + include_types: Optional[List[models.IncludeType]] = None, + source: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PeopleResponse: + r"""Read people + + Read people details for the given IDs. + + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. + :param obfuscated_ids: The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. + :param email_ids: The email IDs to retrieve. The result is the deduplicated union of emailIds and obfuscatedIds. + :param include_fields: List of PersonMetadata fields to return (that aren't returned by default) + :param include_types: The types of people entities to include in the response in addition to those returned by default. + :param source: A string denoting the search surface from which the endpoint is called. + :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.PeopleRequestRequest( + locale=locale, + people_request=models.PeopleRequest( + timezone_offset=timezone_offset, + obfuscated_ids=obfuscated_ids, + email_ids=email_ids, + include_fields=include_fields, + include_types=include_types, + source=source, + ), + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/people", + 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.people_request, False, False, "json", models.PeopleRequest + ), + 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="people", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.PeopleResponse, http_res) + if utils.match_response(http_res, ["400", "401", "429", "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 read_people_async( + self, + *, + locale: Optional[str] = None, + timezone_offset: Optional[int] = None, + obfuscated_ids: Optional[List[str]] = None, + email_ids: Optional[List[str]] = None, + include_fields: Optional[List[models.PeopleRequestIncludeField]] = None, + include_types: Optional[List[models.IncludeType]] = None, + source: Optional[str] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.PeopleResponse: + r"""Read people + + Read people details for the given IDs. + + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. + :param obfuscated_ids: The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. + :param email_ids: The email IDs to retrieve. The result is the deduplicated union of emailIds and obfuscatedIds. + :param include_fields: List of PersonMetadata fields to return (that aren't returned by default) + :param include_types: The types of people entities to include in the response in addition to those returned by default. + :param source: A string denoting the search surface from which the endpoint is called. + :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.PeopleRequestRequest( + locale=locale, + people_request=models.PeopleRequest( + timezone_offset=timezone_offset, + obfuscated_ids=obfuscated_ids, + email_ids=email_ids, + include_fields=include_fields, + include_types=include_types, + source=source, + ), + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/people", + 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.people_request, False, False, "json", models.PeopleRequest + ), + 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="people", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.PeopleResponse, http_res) + if utils.match_response(http_res, ["400", "401", "429", "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/client_governance.py b/src/glean/api_client/client_governance.py new file mode 100644 index 00000000..6011411d --- /dev/null +++ b/src/glean/api_client/client_governance.py @@ -0,0 +1,25 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from .sdkconfiguration import SDKConfiguration +from glean.api_client.data import Data +from glean.api_client.governance_documents import GovernanceDocuments +from typing import Optional + + +class ClientGovernance(BaseSDK): + data: Data + documents: GovernanceDocuments + + def __init__( + self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None + ) -> None: + BaseSDK.__init__(self, sdk_config, parent_ref=parent_ref) + self.sdk_configuration = sdk_config + self._init_sdks() + + def _init_sdks(self): + self.data = Data(self.sdk_configuration, parent_ref=self.parent_ref) + self.documents = GovernanceDocuments( + self.sdk_configuration, parent_ref=self.parent_ref + ) diff --git a/src/glean/api_client/client_shortcuts.py b/src/glean/api_client/client_shortcuts.py index 9246f4fe..a4db274d 100644 --- a/src/glean/api_client/client_shortcuts.py +++ b/src/glean/api_client/client_shortcuts.py @@ -3,10 +3,10 @@ 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 BaseModel, OptionalNullable, UNSET +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, cast +from typing import List, Mapping, Optional, Union class ClientShortcuts(BaseSDK): @@ -16,6 +16,7 @@ def create( data: Union[ models.ShortcutMutableProperties, models.ShortcutMutablePropertiesTypedDict ], + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -26,6 +27,7 @@ def create( Create a user-generated shortcut that contains an alias and destination URL. :param data: + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :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 @@ -41,8 +43,11 @@ def create( else: base_url = self._get_url(base_url, url_variables) - request = models.CreateShortcutRequest( - data=utils.get_pydantic_model(data, models.ShortcutMutableProperties), + request = models.CreateshortcutRequestRequest( + locale=locale, + create_shortcut_request=models.CreateShortcutRequest( + data=utils.get_pydantic_model(data, models.ShortcutMutableProperties), + ), ) req = self._build_request( @@ -59,8 +64,13 @@ def create( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CreateShortcutRequest + request.create_shortcut_request, + False, + False, + "json", + models.CreateShortcutRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -83,7 +93,7 @@ def create( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -104,6 +114,7 @@ async def create_async( data: Union[ models.ShortcutMutableProperties, models.ShortcutMutablePropertiesTypedDict ], + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -114,6 +125,7 @@ async def create_async( Create a user-generated shortcut that contains an alias and destination URL. :param data: + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :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 @@ -129,8 +141,11 @@ async def create_async( else: base_url = self._get_url(base_url, url_variables) - request = models.CreateShortcutRequest( - data=utils.get_pydantic_model(data, models.ShortcutMutableProperties), + request = models.CreateshortcutRequestRequest( + locale=locale, + create_shortcut_request=models.CreateShortcutRequest( + data=utils.get_pydantic_model(data, models.ShortcutMutableProperties), + ), ) req = self._build_request_async( @@ -147,8 +162,13 @@ async def create_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CreateShortcutRequest + request.create_shortcut_request, + False, + False, + "json", + models.CreateShortcutRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -171,7 +191,7 @@ async def create_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -190,6 +210,7 @@ def delete( self, *, id: int, + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -200,6 +221,7 @@ def delete( Delete an existing user-generated shortcut. :param id: The opaque id of the user generated content. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :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 @@ -215,8 +237,11 @@ def delete( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteShortcutRequest( - id=id, + request = models.DeleteshortcutRequestRequest( + locale=locale, + delete_shortcut_request=models.DeleteShortcutRequest( + id=id, + ), ) req = self._build_request( @@ -233,8 +258,13 @@ def delete( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteShortcutRequest + request.delete_shortcut_request, + False, + False, + "json", + models.DeleteShortcutRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -257,7 +287,7 @@ def delete( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -276,6 +306,7 @@ async def delete_async( self, *, id: int, + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -286,6 +317,7 @@ async def delete_async( Delete an existing user-generated shortcut. :param id: The opaque id of the user generated content. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :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 @@ -301,8 +333,11 @@ async def delete_async( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteShortcutRequest( - id=id, + request = models.DeleteshortcutRequestRequest( + locale=locale, + delete_shortcut_request=models.DeleteShortcutRequest( + id=id, + ), ) req = self._build_request_async( @@ -319,8 +354,13 @@ async def delete_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteShortcutRequest + request.delete_shortcut_request, + False, + False, + "json", + models.DeleteShortcutRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -343,7 +383,7 @@ async def delete_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -361,9 +401,10 @@ async def delete_async( def retrieve( self, *, - request: Union[ - models.GetShortcutRequestUnion, models.GetShortcutRequestUnionTypedDict + get_shortcut_request: Union[ + models.GetShortcutRequest, models.GetShortcutRequestTypedDict ], + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -373,7 +414,8 @@ def retrieve( Read a particular shortcut's details given its ID. - :param request: The request object to send. + :param get_shortcut_request: GetShortcut request + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :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 @@ -389,9 +431,12 @@ def retrieve( else: base_url = self._get_url(base_url, url_variables) - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, models.GetShortcutRequestUnion) - request = cast(models.GetShortcutRequestUnion, request) + request = models.GetshortcutRequestRequest( + locale=locale, + get_shortcut_request=utils.get_pydantic_model( + get_shortcut_request, models.GetShortcutRequest + ), + ) req = self._build_request( method="POST", @@ -407,8 +452,13 @@ def retrieve( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetShortcutRequestUnion + request.get_shortcut_request, + False, + False, + "json", + models.GetShortcutRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -431,7 +481,7 @@ def retrieve( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -449,9 +499,10 @@ def retrieve( async def retrieve_async( self, *, - request: Union[ - models.GetShortcutRequestUnion, models.GetShortcutRequestUnionTypedDict + get_shortcut_request: Union[ + models.GetShortcutRequest, models.GetShortcutRequestTypedDict ], + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -461,7 +512,8 @@ async def retrieve_async( Read a particular shortcut's details given its ID. - :param request: The request object to send. + :param get_shortcut_request: GetShortcut request + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :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 @@ -477,9 +529,12 @@ async def retrieve_async( else: base_url = self._get_url(base_url, url_variables) - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, models.GetShortcutRequestUnion) - request = cast(models.GetShortcutRequestUnion, request) + request = models.GetshortcutRequestRequest( + locale=locale, + get_shortcut_request=utils.get_pydantic_model( + get_shortcut_request, models.GetShortcutRequest + ), + ) req = self._build_request_async( method="POST", @@ -495,8 +550,13 @@ async def retrieve_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetShortcutRequestUnion + request.get_shortcut_request, + False, + False, + "json", + models.GetShortcutRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -519,7 +579,7 @@ async def retrieve_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -538,6 +598,7 @@ def list( self, *, page_size: int, + locale: Optional[str] = None, include_fields: Optional[ List[models.ListShortcutsPaginatedRequestIncludeField] ] = None, @@ -557,6 +618,7 @@ def list( List shortcuts editable/owned by the currently authenticated user. :param page_size: + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param include_fields: Array of fields/data to be included in response that are not included by default :param cursor: A token specifying the position in the overall results to start at. Received from the endpoint and iterated back. Currently being used as page no (as we implement offset pagination) :param filters: A list of filters for the query. An AND is assumed between different filters. We support filters on Go Link name, author, department and type. @@ -577,15 +639,18 @@ def list( else: base_url = self._get_url(base_url, url_variables) - request = models.ListShortcutsPaginatedRequest( - include_fields=include_fields, - page_size=page_size, - cursor=cursor, - filters=utils.get_pydantic_model( - filters, Optional[List[models.FacetFilter]] + request = models.ListshortcutsRequest( + locale=locale, + list_shortcuts_paginated_request=models.ListShortcutsPaginatedRequest( + include_fields=include_fields, + page_size=page_size, + cursor=cursor, + filters=utils.get_pydantic_model( + filters, Optional[List[models.FacetFilter]] + ), + sort=utils.get_pydantic_model(sort, Optional[models.SortOptions]), + query=query, ), - sort=utils.get_pydantic_model(sort, Optional[models.SortOptions]), - query=query, ) req = self._build_request( @@ -602,8 +667,13 @@ def list( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ListShortcutsPaginatedRequest + request.list_shortcuts_paginated_request, + False, + False, + "json", + models.ListShortcutsPaginatedRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -626,7 +696,7 @@ def list( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -647,6 +717,7 @@ async def list_async( self, *, page_size: int, + locale: Optional[str] = None, include_fields: Optional[ List[models.ListShortcutsPaginatedRequestIncludeField] ] = None, @@ -666,6 +737,7 @@ async def list_async( List shortcuts editable/owned by the currently authenticated user. :param page_size: + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param include_fields: Array of fields/data to be included in response that are not included by default :param cursor: A token specifying the position in the overall results to start at. Received from the endpoint and iterated back. Currently being used as page no (as we implement offset pagination) :param filters: A list of filters for the query. An AND is assumed between different filters. We support filters on Go Link name, author, department and type. @@ -686,15 +758,18 @@ async def list_async( else: base_url = self._get_url(base_url, url_variables) - request = models.ListShortcutsPaginatedRequest( - include_fields=include_fields, - page_size=page_size, - cursor=cursor, - filters=utils.get_pydantic_model( - filters, Optional[List[models.FacetFilter]] + request = models.ListshortcutsRequest( + locale=locale, + list_shortcuts_paginated_request=models.ListShortcutsPaginatedRequest( + include_fields=include_fields, + page_size=page_size, + cursor=cursor, + filters=utils.get_pydantic_model( + filters, Optional[List[models.FacetFilter]] + ), + sort=utils.get_pydantic_model(sort, Optional[models.SortOptions]), + query=query, ), - sort=utils.get_pydantic_model(sort, Optional[models.SortOptions]), - query=query, ) req = self._build_request_async( @@ -711,8 +786,13 @@ async def list_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ListShortcutsPaginatedRequest + request.list_shortcuts_paginated_request, + False, + False, + "json", + models.ListShortcutsPaginatedRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -735,7 +815,7 @@ async def list_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -756,6 +836,7 @@ def update( self, *, id: int, + locale: Optional[str] = None, input_alias: Optional[str] = None, destination_url: Optional[str] = None, destination_document_id: Optional[str] = None, @@ -784,6 +865,7 @@ def update( Updates the shortcut with the given ID. :param id: The opaque id of the user generated content. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param input_alias: Link text following go/ prefix as entered by the user. :param destination_url: Destination URL for the shortcut. :param destination_document_id: Glean Document ID for the URL, if known. @@ -807,19 +889,22 @@ def update( else: base_url = self._get_url(base_url, url_variables) - request = models.UpdateShortcutRequest( - id=id, - input_alias=input_alias, - destination_url=destination_url, - destination_document_id=destination_document_id, - description=description, - unlisted=unlisted, - url_template=url_template, - added_roles=utils.get_pydantic_model( - added_roles, Optional[List[models.UserRoleSpecification]] - ), - removed_roles=utils.get_pydantic_model( - removed_roles, Optional[List[models.UserRoleSpecification]] + request = models.UpdateshortcutRequestRequest( + locale=locale, + update_shortcut_request=models.UpdateShortcutRequest( + id=id, + input_alias=input_alias, + destination_url=destination_url, + destination_document_id=destination_document_id, + description=description, + unlisted=unlisted, + url_template=url_template, + added_roles=utils.get_pydantic_model( + added_roles, Optional[List[models.UserRoleSpecification]] + ), + removed_roles=utils.get_pydantic_model( + removed_roles, Optional[List[models.UserRoleSpecification]] + ), ), ) @@ -837,8 +922,13 @@ def update( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.UpdateShortcutRequest + request.update_shortcut_request, + False, + False, + "json", + models.UpdateShortcutRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -861,7 +951,7 @@ def update( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -880,6 +970,7 @@ async def update_async( self, *, id: int, + locale: Optional[str] = None, input_alias: Optional[str] = None, destination_url: Optional[str] = None, destination_document_id: Optional[str] = None, @@ -908,6 +999,7 @@ async def update_async( Updates the shortcut with the given ID. :param id: The opaque id of the user generated content. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param input_alias: Link text following go/ prefix as entered by the user. :param destination_url: Destination URL for the shortcut. :param destination_document_id: Glean Document ID for the URL, if known. @@ -931,19 +1023,22 @@ async def update_async( else: base_url = self._get_url(base_url, url_variables) - request = models.UpdateShortcutRequest( - id=id, - input_alias=input_alias, - destination_url=destination_url, - destination_document_id=destination_document_id, - description=description, - unlisted=unlisted, - url_template=url_template, - added_roles=utils.get_pydantic_model( - added_roles, Optional[List[models.UserRoleSpecification]] - ), - removed_roles=utils.get_pydantic_model( - removed_roles, Optional[List[models.UserRoleSpecification]] + request = models.UpdateshortcutRequestRequest( + locale=locale, + update_shortcut_request=models.UpdateShortcutRequest( + id=id, + input_alias=input_alias, + destination_url=destination_url, + destination_document_id=destination_document_id, + description=description, + unlisted=unlisted, + url_template=url_template, + added_roles=utils.get_pydantic_model( + added_roles, Optional[List[models.UserRoleSpecification]] + ), + removed_roles=utils.get_pydantic_model( + removed_roles, Optional[List[models.UserRoleSpecification]] + ), ), ) @@ -961,8 +1056,13 @@ async def update_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.UpdateShortcutRequest + request.update_shortcut_request, + False, + False, + "json", + models.UpdateShortcutRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -985,7 +1085,7 @@ async def update_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/client_tools.py b/src/glean/api_client/client_tools.py new file mode 100644 index 00000000..14d9f68c --- /dev/null +++ b/src/glean/api_client/client_tools.py @@ -0,0 +1,369 @@ +"""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 Dict, List, Mapping, Optional, Union + + +class ClientTools(BaseSDK): + def list( + self, + *, + tool_names: Optional[List[str]] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ToolsListResponse: + r"""List available tools + + Returns a filtered set of available tools based on optional tool name parameters. If no filters are provided, all available tools are returned. + + :param tool_names: Optional array of tool names to filter by + :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.GetRestAPIV1ToolsListRequest( + tool_names=tool_names, + ) + + req = self._build_request( + method="GET", + path="/rest/api/v1/tools/list", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + 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, + 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="get_/rest/api/v1/tools/list", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.ToolsListResponse, http_res) + if utils.match_response(http_res, ["400", "401", "404", "429", "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 list_async( + self, + *, + tool_names: Optional[List[str]] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ToolsListResponse: + r"""List available tools + + Returns a filtered set of available tools based on optional tool name parameters. If no filters are provided, all available tools are returned. + + :param tool_names: Optional array of tool names to filter by + :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.GetRestAPIV1ToolsListRequest( + tool_names=tool_names, + ) + + req = self._build_request_async( + method="GET", + path="/rest/api/v1/tools/list", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + 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, + 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="get_/rest/api/v1/tools/list", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.ToolsListResponse, http_res) + if utils.match_response(http_res, ["400", "401", "404", "429", "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 run( + self, + *, + name: str, + parameters: Union[ + Dict[str, models.ToolsCallParameter], + Dict[str, models.ToolsCallParameterTypedDict], + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ToolsCallResponse: + r"""Execute the specified tool + + Execute the specified tool with provided parameters + + :param name: Required name of the tool to execute + :param parameters: The parameters for the tool. Each key is the name of the parameter and the value is the parameter object. + :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.ToolsCallRequest( + name=name, + parameters=utils.get_pydantic_model( + parameters, Dict[str, models.ToolsCallParameter] + ), + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/tools/call", + 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.ToolsCallRequest + ), + 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_/rest/api/v1/tools/call", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.ToolsCallResponse, http_res) + if utils.match_response(http_res, ["400", "401", "404", "429", "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 run_async( + self, + *, + name: str, + parameters: Union[ + Dict[str, models.ToolsCallParameter], + Dict[str, models.ToolsCallParameterTypedDict], + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ToolsCallResponse: + r"""Execute the specified tool + + Execute the specified tool with provided parameters + + :param name: Required name of the tool to execute + :param parameters: The parameters for the tool. Each key is the name of the parameter and the value is the parameter object. + :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.ToolsCallRequest( + name=name, + parameters=utils.get_pydantic_model( + parameters, Dict[str, models.ToolsCallParameter] + ), + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/tools/call", + 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.ToolsCallRequest + ), + 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_/rest/api/v1/tools/call", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.ToolsCallResponse, http_res) + if utils.match_response(http_res, ["400", "401", "404", "429", "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/client_verification.py b/src/glean/api_client/client_verification.py index e102518a..69a3abb7 100644 --- a/src/glean/api_client/client_verification.py +++ b/src/glean/api_client/client_verification.py @@ -14,6 +14,7 @@ def add_reminder( self, *, document_id: str, + locale: Optional[str] = None, assignee: Optional[str] = None, remind_in_days: Optional[int] = None, reason: Optional[str] = None, @@ -27,6 +28,7 @@ def add_reminder( Creates a verification reminder for the document. Users can create verification reminders from different product surfaces. :param document_id: The document which the verification is for new reminders and/or update. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param assignee: The obfuscated id of the person this verification is assigned to. :param remind_in_days: Reminder for the next verifications in terms of days. For deletion, this will be omitted. :param reason: An optional free-text reason for the reminder. This is particularly useful when a reminder is used to ask for verification from another user (for example, \"Duplicate\", \"Incomplete\", \"Incorrect\"). @@ -45,11 +47,14 @@ def add_reminder( else: base_url = self._get_url(base_url, url_variables) - request = models.ReminderRequest( - document_id=document_id, - assignee=assignee, - remind_in_days=remind_in_days, - reason=reason, + request = models.AddverificationreminderRequest( + locale=locale, + reminder_request=models.ReminderRequest( + document_id=document_id, + assignee=assignee, + remind_in_days=remind_in_days, + reason=reason, + ), ) req = self._build_request( @@ -66,8 +71,9 @@ def add_reminder( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ReminderRequest + request.reminder_request, False, False, "json", models.ReminderRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -90,7 +96,7 @@ def add_reminder( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -109,6 +115,7 @@ async def add_reminder_async( self, *, document_id: str, + locale: Optional[str] = None, assignee: Optional[str] = None, remind_in_days: Optional[int] = None, reason: Optional[str] = None, @@ -122,6 +129,7 @@ async def add_reminder_async( Creates a verification reminder for the document. Users can create verification reminders from different product surfaces. :param document_id: The document which the verification is for new reminders and/or update. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param assignee: The obfuscated id of the person this verification is assigned to. :param remind_in_days: Reminder for the next verifications in terms of days. For deletion, this will be omitted. :param reason: An optional free-text reason for the reminder. This is particularly useful when a reminder is used to ask for verification from another user (for example, \"Duplicate\", \"Incomplete\", \"Incorrect\"). @@ -140,11 +148,14 @@ async def add_reminder_async( else: base_url = self._get_url(base_url, url_variables) - request = models.ReminderRequest( - document_id=document_id, - assignee=assignee, - remind_in_days=remind_in_days, - reason=reason, + request = models.AddverificationreminderRequest( + locale=locale, + reminder_request=models.ReminderRequest( + document_id=document_id, + assignee=assignee, + remind_in_days=remind_in_days, + reason=reason, + ), ) req = self._build_request_async( @@ -161,8 +172,9 @@ async def add_reminder_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ReminderRequest + request.reminder_request, False, False, "json", models.ReminderRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -185,7 +197,7 @@ async def add_reminder_async( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -204,6 +216,7 @@ def list( self, *, count: Optional[int] = None, + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -214,6 +227,7 @@ def list( Returns the information to be rendered in verification dashboard. Includes information for each document owned by user regarding their verifications. :param count: Maximum number of documents to return + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :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 @@ -231,6 +245,7 @@ def list( request = models.ListverificationsRequest( count=count, + locale=locale, ) req = self._build_request( @@ -246,6 +261,7 @@ def list( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -268,7 +284,7 @@ def list( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -287,6 +303,7 @@ async def list_async( self, *, count: Optional[int] = None, + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -297,6 +314,7 @@ async def list_async( Returns the information to be rendered in verification dashboard. Includes information for each document owned by user regarding their verifications. :param count: Maximum number of documents to return + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :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 @@ -314,6 +332,7 @@ async def list_async( request = models.ListverificationsRequest( count=count, + locale=locale, ) req = self._build_request_async( @@ -329,6 +348,7 @@ async def list_async( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -351,7 +371,7 @@ async def list_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -370,6 +390,7 @@ def verify( self, *, document_id: str, + locale: Optional[str] = None, action: Optional[models.VerifyRequestAction] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -381,6 +402,7 @@ def verify( Verify documents to keep the knowledge up to date within customer corpus. :param document_id: The document which is verified. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param action: The verification action requested. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -397,9 +419,12 @@ def verify( else: base_url = self._get_url(base_url, url_variables) - request = models.VerifyRequest( - document_id=document_id, - action=action, + request = models.VerifyRequestRequest( + locale=locale, + verify_request=models.VerifyRequest( + document_id=document_id, + action=action, + ), ) req = self._build_request( @@ -416,8 +441,9 @@ def verify( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.VerifyRequest + request.verify_request, False, False, "json", models.VerifyRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -440,7 +466,7 @@ def verify( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -459,6 +485,7 @@ async def verify_async( self, *, document_id: str, + locale: Optional[str] = None, action: Optional[models.VerifyRequestAction] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -470,6 +497,7 @@ async def verify_async( Verify documents to keep the knowledge up to date within customer corpus. :param document_id: The document which is verified. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param action: The verification action requested. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -486,9 +514,12 @@ async def verify_async( else: base_url = self._get_url(base_url, url_variables) - request = models.VerifyRequest( - document_id=document_id, - action=action, + request = models.VerifyRequestRequest( + locale=locale, + verify_request=models.VerifyRequest( + document_id=document_id, + action=action, + ), ) req = self._build_request_async( @@ -505,8 +536,9 @@ async def verify_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.VerifyRequest + request.verify_request, False, False, "json", models.VerifyRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -529,7 +561,7 @@ async def verify_async( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/collections.py b/src/glean/api_client/collections.py index cd9ef2df..f93e472c 100644 --- a/src/glean/api_client/collections.py +++ b/src/glean/api_client/collections.py @@ -14,6 +14,7 @@ def add_items( self, *, collection_id: float, + locale: Optional[str] = None, added_collection_item_descriptors: Optional[ Union[ List[models.CollectionItemDescriptor], @@ -30,6 +31,7 @@ def add_items( Add items to a Collection. :param collection_id: The ID of the Collection to add items to. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param added_collection_item_descriptors: The CollectionItemDescriptors of the items being added. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -46,11 +48,14 @@ def add_items( else: base_url = self._get_url(base_url, url_variables) - request = models.AddCollectionItemsRequest( - collection_id=collection_id, - added_collection_item_descriptors=utils.get_pydantic_model( - added_collection_item_descriptors, - Optional[List[models.CollectionItemDescriptor]], + request = models.AddcollectionitemsRequestRequest( + locale=locale, + add_collection_items_request=models.AddCollectionItemsRequest( + collection_id=collection_id, + added_collection_item_descriptors=utils.get_pydantic_model( + added_collection_item_descriptors, + Optional[List[models.CollectionItemDescriptor]], + ), ), ) @@ -68,8 +73,13 @@ def add_items( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.AddCollectionItemsRequest + request.add_collection_items_request, + False, + False, + "json", + models.AddCollectionItemsRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -92,7 +102,7 @@ def add_items( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -111,6 +121,7 @@ async def add_items_async( self, *, collection_id: float, + locale: Optional[str] = None, added_collection_item_descriptors: Optional[ Union[ List[models.CollectionItemDescriptor], @@ -127,6 +138,7 @@ async def add_items_async( Add items to a Collection. :param collection_id: The ID of the Collection to add items to. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param added_collection_item_descriptors: The CollectionItemDescriptors of the items being added. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -143,11 +155,14 @@ async def add_items_async( else: base_url = self._get_url(base_url, url_variables) - request = models.AddCollectionItemsRequest( - collection_id=collection_id, - added_collection_item_descriptors=utils.get_pydantic_model( - added_collection_item_descriptors, - Optional[List[models.CollectionItemDescriptor]], + request = models.AddcollectionitemsRequestRequest( + locale=locale, + add_collection_items_request=models.AddCollectionItemsRequest( + collection_id=collection_id, + added_collection_item_descriptors=utils.get_pydantic_model( + added_collection_item_descriptors, + Optional[List[models.CollectionItemDescriptor]], + ), ), ) @@ -165,8 +180,13 @@ async def add_items_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.AddCollectionItemsRequest + request.add_collection_items_request, + False, + False, + "json", + models.AddCollectionItemsRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -189,7 +209,7 @@ async def add_items_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -208,6 +228,7 @@ def create( self, *, name: str, + locale: Optional[str] = None, description: Optional[str] = None, added_roles: Optional[ Union[ @@ -240,6 +261,7 @@ def create( Create a publicly visible (empty) Collection of documents. :param name: The unique name of the Collection. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param description: A brief summary of the Collection's contents. :param added_roles: A list of added user roles for the Collection. :param removed_roles: A list of removed user roles for the Collection. @@ -265,24 +287,29 @@ def create( else: base_url = self._get_url(base_url, url_variables) - request = models.CreateCollectionRequest( - name=name, - description=description, - added_roles=utils.get_pydantic_model( - added_roles, Optional[List[models.UserRoleSpecification]] - ), - removed_roles=utils.get_pydantic_model( - removed_roles, Optional[List[models.UserRoleSpecification]] - ), - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.CreatecollectionRequestRequest( + locale=locale, + create_collection_request=models.CreateCollectionRequest( + name=name, + description=description, + added_roles=utils.get_pydantic_model( + added_roles, Optional[List[models.UserRoleSpecification]] + ), + removed_roles=utils.get_pydantic_model( + removed_roles, Optional[List[models.UserRoleSpecification]] + ), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + icon=icon, + admin_locked=admin_locked, + parent_id=parent_id, + thumbnail=utils.get_pydantic_model( + thumbnail, Optional[models.Thumbnail] + ), + allowed_datasource=allowed_datasource, + new_next_item_id=new_next_item_id, ), - icon=icon, - admin_locked=admin_locked, - parent_id=parent_id, - thumbnail=utils.get_pydantic_model(thumbnail, Optional[models.Thumbnail]), - allowed_datasource=allowed_datasource, - new_next_item_id=new_next_item_id, ) req = self._build_request( @@ -299,8 +326,13 @@ def create( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CreateCollectionRequest + request.create_collection_request, + False, + False, + "json", + models.CreateCollectionRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -323,7 +355,7 @@ def create( ), ), request=req, - error_status_codes=["400", "401", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -348,6 +380,7 @@ async def create_async( self, *, name: str, + locale: Optional[str] = None, description: Optional[str] = None, added_roles: Optional[ Union[ @@ -380,6 +413,7 @@ async def create_async( Create a publicly visible (empty) Collection of documents. :param name: The unique name of the Collection. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param description: A brief summary of the Collection's contents. :param added_roles: A list of added user roles for the Collection. :param removed_roles: A list of removed user roles for the Collection. @@ -405,24 +439,29 @@ async def create_async( else: base_url = self._get_url(base_url, url_variables) - request = models.CreateCollectionRequest( - name=name, - description=description, - added_roles=utils.get_pydantic_model( - added_roles, Optional[List[models.UserRoleSpecification]] - ), - removed_roles=utils.get_pydantic_model( - removed_roles, Optional[List[models.UserRoleSpecification]] - ), - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.CreatecollectionRequestRequest( + locale=locale, + create_collection_request=models.CreateCollectionRequest( + name=name, + description=description, + added_roles=utils.get_pydantic_model( + added_roles, Optional[List[models.UserRoleSpecification]] + ), + removed_roles=utils.get_pydantic_model( + removed_roles, Optional[List[models.UserRoleSpecification]] + ), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + icon=icon, + admin_locked=admin_locked, + parent_id=parent_id, + thumbnail=utils.get_pydantic_model( + thumbnail, Optional[models.Thumbnail] + ), + allowed_datasource=allowed_datasource, + new_next_item_id=new_next_item_id, ), - icon=icon, - admin_locked=admin_locked, - parent_id=parent_id, - thumbnail=utils.get_pydantic_model(thumbnail, Optional[models.Thumbnail]), - allowed_datasource=allowed_datasource, - new_next_item_id=new_next_item_id, ) req = self._build_request_async( @@ -439,8 +478,13 @@ async def create_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.CreateCollectionRequest + request.create_collection_request, + False, + False, + "json", + models.CreateCollectionRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -463,7 +507,7 @@ async def create_async( ), ), request=req, - error_status_codes=["400", "401", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -488,6 +532,7 @@ def delete( self, *, ids: List[int], + locale: Optional[str] = None, allowed_datasource: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -499,6 +544,7 @@ def delete( Delete a Collection given the Collection's ID. :param ids: The IDs of the Collections to delete. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param allowed_datasource: The datasource allowed in the Collection to be deleted. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -515,9 +561,12 @@ def delete( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteCollectionRequest( - ids=ids, - allowed_datasource=allowed_datasource, + request = models.DeletecollectionRequestRequest( + locale=locale, + delete_collection_request=models.DeleteCollectionRequest( + ids=ids, + allowed_datasource=allowed_datasource, + ), ) req = self._build_request( @@ -534,8 +583,13 @@ def delete( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteCollectionRequest + request.delete_collection_request, + False, + False, + "json", + models.DeleteCollectionRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -558,7 +612,7 @@ def delete( ), ), request=req, - error_status_codes=["400", "401", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -583,6 +637,7 @@ async def delete_async( self, *, ids: List[int], + locale: Optional[str] = None, allowed_datasource: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -594,6 +649,7 @@ async def delete_async( Delete a Collection given the Collection's ID. :param ids: The IDs of the Collections to delete. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param allowed_datasource: The datasource allowed in the Collection to be deleted. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -610,9 +666,12 @@ async def delete_async( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteCollectionRequest( - ids=ids, - allowed_datasource=allowed_datasource, + request = models.DeletecollectionRequestRequest( + locale=locale, + delete_collection_request=models.DeleteCollectionRequest( + ids=ids, + allowed_datasource=allowed_datasource, + ), ) req = self._build_request_async( @@ -629,8 +688,13 @@ async def delete_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteCollectionRequest + request.delete_collection_request, + False, + False, + "json", + models.DeleteCollectionRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -653,7 +717,7 @@ async def delete_async( ), ), request=req, - error_status_codes=["400", "401", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -679,6 +743,7 @@ def delete_item( *, collection_id: float, item_id: str, + locale: Optional[str] = None, document_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -691,6 +756,7 @@ def delete_item( :param collection_id: The ID of the Collection to remove an item in. :param item_id: The item ID of the CollectionItem to remove from this Collection. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param document_id: The (optional) Glean Document ID of the CollectionItem to remove from this Collection if this is an indexed document. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -707,10 +773,13 @@ def delete_item( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteCollectionItemRequest( - collection_id=collection_id, - item_id=item_id, - document_id=document_id, + request = models.DeletecollectionitemRequestRequest( + locale=locale, + delete_collection_item_request=models.DeleteCollectionItemRequest( + collection_id=collection_id, + item_id=item_id, + document_id=document_id, + ), ) req = self._build_request( @@ -727,8 +796,13 @@ def delete_item( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteCollectionItemRequest + request.delete_collection_item_request, + False, + False, + "json", + models.DeleteCollectionItemRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -751,7 +825,7 @@ def delete_item( ), ), request=req, - error_status_codes=["400", "401", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -773,6 +847,7 @@ async def delete_item_async( *, collection_id: float, item_id: str, + locale: Optional[str] = None, document_id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -785,6 +860,7 @@ async def delete_item_async( :param collection_id: The ID of the Collection to remove an item in. :param item_id: The item ID of the CollectionItem to remove from this Collection. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param document_id: The (optional) Glean Document ID of the CollectionItem to remove from this Collection if this is an indexed document. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -801,10 +877,13 @@ async def delete_item_async( else: base_url = self._get_url(base_url, url_variables) - request = models.DeleteCollectionItemRequest( - collection_id=collection_id, - item_id=item_id, - document_id=document_id, + request = models.DeletecollectionitemRequestRequest( + locale=locale, + delete_collection_item_request=models.DeleteCollectionItemRequest( + collection_id=collection_id, + item_id=item_id, + document_id=document_id, + ), ) req = self._build_request_async( @@ -821,8 +900,13 @@ async def delete_item_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.DeleteCollectionItemRequest + request.delete_collection_item_request, + False, + False, + "json", + models.DeleteCollectionItemRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -845,7 +929,7 @@ async def delete_item_async( ), ), request=req, - error_status_codes=["400", "401", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -867,6 +951,7 @@ def update( *, name: str, id: int, + locale: Optional[str] = None, description: Optional[str] = None, added_roles: Optional[ Union[ @@ -899,6 +984,7 @@ def update( :param name: The unique name of the Collection. :param id: The ID of the Collection to modify. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param description: A brief summary of the Collection's contents. :param added_roles: A list of added user roles for the Collection. :param removed_roles: A list of removed user roles for the Collection. @@ -923,24 +1009,29 @@ def update( else: base_url = self._get_url(base_url, url_variables) - request = models.EditCollectionRequest( - name=name, - description=description, - added_roles=utils.get_pydantic_model( - added_roles, Optional[List[models.UserRoleSpecification]] - ), - removed_roles=utils.get_pydantic_model( - removed_roles, Optional[List[models.UserRoleSpecification]] - ), - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.EditcollectionRequestRequest( + locale=locale, + edit_collection_request=models.EditCollectionRequest( + name=name, + description=description, + added_roles=utils.get_pydantic_model( + added_roles, Optional[List[models.UserRoleSpecification]] + ), + removed_roles=utils.get_pydantic_model( + removed_roles, Optional[List[models.UserRoleSpecification]] + ), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + icon=icon, + admin_locked=admin_locked, + parent_id=parent_id, + thumbnail=utils.get_pydantic_model( + thumbnail, Optional[models.Thumbnail] + ), + allowed_datasource=allowed_datasource, + id=id, ), - icon=icon, - admin_locked=admin_locked, - parent_id=parent_id, - thumbnail=utils.get_pydantic_model(thumbnail, Optional[models.Thumbnail]), - allowed_datasource=allowed_datasource, - id=id, ) req = self._build_request( @@ -957,8 +1048,13 @@ def update( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.EditCollectionRequest + request.edit_collection_request, + False, + False, + "json", + models.EditCollectionRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -981,7 +1077,7 @@ def update( ), ), request=req, - error_status_codes=["400", "401", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1007,6 +1103,7 @@ async def update_async( *, name: str, id: int, + locale: Optional[str] = None, description: Optional[str] = None, added_roles: Optional[ Union[ @@ -1039,6 +1136,7 @@ async def update_async( :param name: The unique name of the Collection. :param id: The ID of the Collection to modify. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param description: A brief summary of the Collection's contents. :param added_roles: A list of added user roles for the Collection. :param removed_roles: A list of removed user roles for the Collection. @@ -1063,24 +1161,29 @@ async def update_async( else: base_url = self._get_url(base_url, url_variables) - request = models.EditCollectionRequest( - name=name, - description=description, - added_roles=utils.get_pydantic_model( - added_roles, Optional[List[models.UserRoleSpecification]] - ), - removed_roles=utils.get_pydantic_model( - removed_roles, Optional[List[models.UserRoleSpecification]] - ), - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.EditcollectionRequestRequest( + locale=locale, + edit_collection_request=models.EditCollectionRequest( + name=name, + description=description, + added_roles=utils.get_pydantic_model( + added_roles, Optional[List[models.UserRoleSpecification]] + ), + removed_roles=utils.get_pydantic_model( + removed_roles, Optional[List[models.UserRoleSpecification]] + ), + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + icon=icon, + admin_locked=admin_locked, + parent_id=parent_id, + thumbnail=utils.get_pydantic_model( + thumbnail, Optional[models.Thumbnail] + ), + allowed_datasource=allowed_datasource, + id=id, ), - icon=icon, - admin_locked=admin_locked, - parent_id=parent_id, - thumbnail=utils.get_pydantic_model(thumbnail, Optional[models.Thumbnail]), - allowed_datasource=allowed_datasource, - id=id, ) req = self._build_request_async( @@ -1097,8 +1200,13 @@ async def update_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.EditCollectionRequest + request.edit_collection_request, + False, + False, + "json", + models.EditCollectionRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1121,7 +1229,7 @@ async def update_async( ), ), request=req, - error_status_codes=["400", "401", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1147,6 +1255,7 @@ def update_item( *, collection_id: int, item_id: str, + locale: Optional[str] = None, name: Optional[str] = None, description: Optional[str] = None, icon: Optional[str] = None, @@ -1161,6 +1270,7 @@ def update_item( :param collection_id: The ID of the Collection to edit CollectionItems in. :param item_id: The ID of the CollectionItem to edit. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param name: The optional name of the Collection item. :param description: A helpful description of why this CollectionItem is in the Collection that it's in. :param icon: The emoji icon for this CollectionItem. Only used for Text type items. @@ -1179,12 +1289,15 @@ def update_item( else: base_url = self._get_url(base_url, url_variables) - request = models.EditCollectionItemRequest( - name=name, - description=description, - icon=icon, - collection_id=collection_id, - item_id=item_id, + request = models.EditcollectionitemRequestRequest( + locale=locale, + edit_collection_item_request=models.EditCollectionItemRequest( + name=name, + description=description, + icon=icon, + collection_id=collection_id, + item_id=item_id, + ), ) req = self._build_request( @@ -1201,8 +1314,13 @@ def update_item( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.EditCollectionItemRequest + request.edit_collection_item_request, + False, + False, + "json", + models.EditCollectionItemRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1225,7 +1343,7 @@ def update_item( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1245,6 +1363,7 @@ async def update_item_async( *, collection_id: int, item_id: str, + locale: Optional[str] = None, name: Optional[str] = None, description: Optional[str] = None, icon: Optional[str] = None, @@ -1259,6 +1378,7 @@ async def update_item_async( :param collection_id: The ID of the Collection to edit CollectionItems in. :param item_id: The ID of the CollectionItem to edit. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param name: The optional name of the Collection item. :param description: A helpful description of why this CollectionItem is in the Collection that it's in. :param icon: The emoji icon for this CollectionItem. Only used for Text type items. @@ -1277,12 +1397,15 @@ async def update_item_async( else: base_url = self._get_url(base_url, url_variables) - request = models.EditCollectionItemRequest( - name=name, - description=description, - icon=icon, - collection_id=collection_id, - item_id=item_id, + request = models.EditcollectionitemRequestRequest( + locale=locale, + edit_collection_item_request=models.EditCollectionItemRequest( + name=name, + description=description, + icon=icon, + collection_id=collection_id, + item_id=item_id, + ), ) req = self._build_request_async( @@ -1299,8 +1422,13 @@ async def update_item_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.EditCollectionItemRequest + request.edit_collection_item_request, + False, + False, + "json", + models.EditCollectionItemRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1323,7 +1451,7 @@ async def update_item_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1342,6 +1470,7 @@ def retrieve( self, *, id: int, + locale: Optional[str] = None, with_items: Optional[bool] = None, with_hierarchy: Optional[bool] = None, allowed_datasource: Optional[str] = None, @@ -1355,6 +1484,7 @@ def retrieve( Read the details of a Collection given its ID. Does not fetch items in this Collection. :param id: The ID of the Collection to be retrieved. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param with_items: Whether or not to include the Collection Items in this Collection. Only request if absolutely required, as this is expensive. :param with_hierarchy: Whether or not to include the top level Collection in this Collection's hierarchy. :param allowed_datasource: The datasource allowed in the Collection returned. @@ -1373,11 +1503,14 @@ def retrieve( else: base_url = self._get_url(base_url, url_variables) - request = models.GetCollectionRequest( - id=id, - with_items=with_items, - with_hierarchy=with_hierarchy, - allowed_datasource=allowed_datasource, + request = models.GetcollectionRequestRequest( + locale=locale, + get_collection_request=models.GetCollectionRequest( + id=id, + with_items=with_items, + with_hierarchy=with_hierarchy, + allowed_datasource=allowed_datasource, + ), ) req = self._build_request( @@ -1394,8 +1527,13 @@ def retrieve( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetCollectionRequest + request.get_collection_request, + False, + False, + "json", + models.GetCollectionRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1418,7 +1556,7 @@ def retrieve( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1437,6 +1575,7 @@ async def retrieve_async( self, *, id: int, + locale: Optional[str] = None, with_items: Optional[bool] = None, with_hierarchy: Optional[bool] = None, allowed_datasource: Optional[str] = None, @@ -1450,6 +1589,7 @@ async def retrieve_async( Read the details of a Collection given its ID. Does not fetch items in this Collection. :param id: The ID of the Collection to be retrieved. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param with_items: Whether or not to include the Collection Items in this Collection. Only request if absolutely required, as this is expensive. :param with_hierarchy: Whether or not to include the top level Collection in this Collection's hierarchy. :param allowed_datasource: The datasource allowed in the Collection returned. @@ -1468,11 +1608,14 @@ async def retrieve_async( else: base_url = self._get_url(base_url, url_variables) - request = models.GetCollectionRequest( - id=id, - with_items=with_items, - with_hierarchy=with_hierarchy, - allowed_datasource=allowed_datasource, + request = models.GetcollectionRequestRequest( + locale=locale, + get_collection_request=models.GetCollectionRequest( + id=id, + with_items=with_items, + with_hierarchy=with_hierarchy, + allowed_datasource=allowed_datasource, + ), ) req = self._build_request_async( @@ -1489,8 +1632,13 @@ async def retrieve_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetCollectionRequest + request.get_collection_request, + False, + False, + "json", + models.GetCollectionRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1513,7 +1661,7 @@ async def retrieve_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1531,6 +1679,7 @@ async def retrieve_async( def list( self, *, + locale: Optional[str] = None, include_audience: Optional[bool] = None, include_roles: Optional[bool] = None, allowed_datasource: Optional[str] = None, @@ -1543,6 +1692,7 @@ def list( List all existing Collections. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param include_audience: Whether to include the audience filters with the listed Collections. :param include_roles: Whether to include the editor roles with the listed Collections. :param allowed_datasource: The datasource type this Collection can hold. @@ -1562,10 +1712,13 @@ def list( else: base_url = self._get_url(base_url, url_variables) - request = models.ListCollectionsRequest( - include_audience=include_audience, - include_roles=include_roles, - allowed_datasource=allowed_datasource, + request = models.ListcollectionsRequestRequest( + locale=locale, + list_collections_request=models.ListCollectionsRequest( + include_audience=include_audience, + include_roles=include_roles, + allowed_datasource=allowed_datasource, + ), ) req = self._build_request( @@ -1582,8 +1735,13 @@ def list( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ListCollectionsRequest + request.list_collections_request, + False, + False, + "json", + models.ListCollectionsRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1606,7 +1764,7 @@ def list( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1624,6 +1782,7 @@ def list( async def list_async( self, *, + locale: Optional[str] = None, include_audience: Optional[bool] = None, include_roles: Optional[bool] = None, allowed_datasource: Optional[str] = None, @@ -1636,6 +1795,7 @@ async def list_async( List all existing Collections. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param include_audience: Whether to include the audience filters with the listed Collections. :param include_roles: Whether to include the editor roles with the listed Collections. :param allowed_datasource: The datasource type this Collection can hold. @@ -1655,10 +1815,13 @@ async def list_async( else: base_url = self._get_url(base_url, url_variables) - request = models.ListCollectionsRequest( - include_audience=include_audience, - include_roles=include_roles, - allowed_datasource=allowed_datasource, + request = models.ListcollectionsRequestRequest( + locale=locale, + list_collections_request=models.ListCollectionsRequest( + include_audience=include_audience, + include_roles=include_roles, + allowed_datasource=allowed_datasource, + ), ) req = self._build_request_async( @@ -1675,8 +1838,13 @@ async def list_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ListCollectionsRequest + request.list_collections_request, + False, + False, + "json", + models.ListCollectionsRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1699,7 +1867,7 @@ async def list_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/custommetadata.py b/src/glean/api_client/custommetadata.py new file mode 100644 index 00000000..da51ad9d --- /dev/null +++ b/src/glean/api_client/custommetadata.py @@ -0,0 +1,1113 @@ +"""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 Any, List, Mapping, Optional, Union + + +class CustomMetadata(BaseSDK): + def upsert( + self, + *, + doc_id: str, + group_name: str, + custom_metadata: Union[ + List[models.CustomProperty], List[models.CustomPropertyTypedDict] + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SuccessResponse: + r"""Add or update custom metadata + + Associates custom metadata with a specific document. Custom metadata enables you to enrich documents with additional structured information that can be used for search, filtering, and faceting. + + :param doc_id: Unique Glean identifier of the document + :param group_name: Name of the metadata group as specified while adding schema + :param custom_metadata: Array of custom metadata key-value pairs + :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 = models.PUT_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS[ + 0 + ] + url_variables = { + "instance": "instance-name", + } + + request = models.PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest( + doc_id=doc_id, + group_name=group_name, + custom_metadata_put_request=models.CustomMetadataPutRequest( + custom_metadata=utils.get_pydantic_model( + custom_metadata, List[models.CustomProperty] + ), + ), + ) + + req = self._build_request( + method="PUT", + path="/rest/api/index/document/{docId}/custom-metadata/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + 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.custom_metadata_put_request, + False, + False, + "json", + models.CustomMetadataPutRequest, + ), + 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="put_/rest/api/index/document/{docId}/custom-metadata/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SuccessResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "404", "429"], "application/json" + ): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "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 upsert_async( + self, + *, + doc_id: str, + group_name: str, + custom_metadata: Union[ + List[models.CustomProperty], List[models.CustomPropertyTypedDict] + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SuccessResponse: + r"""Add or update custom metadata + + Associates custom metadata with a specific document. Custom metadata enables you to enrich documents with additional structured information that can be used for search, filtering, and faceting. + + :param doc_id: Unique Glean identifier of the document + :param group_name: Name of the metadata group as specified while adding schema + :param custom_metadata: Array of custom metadata key-value pairs + :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 = models.PUT_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS[ + 0 + ] + url_variables = { + "instance": "instance-name", + } + + request = models.PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest( + doc_id=doc_id, + group_name=group_name, + custom_metadata_put_request=models.CustomMetadataPutRequest( + custom_metadata=utils.get_pydantic_model( + custom_metadata, List[models.CustomProperty] + ), + ), + ) + + req = self._build_request_async( + method="PUT", + path="/rest/api/index/document/{docId}/custom-metadata/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + 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.custom_metadata_put_request, + False, + False, + "json", + models.CustomMetadataPutRequest, + ), + 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="put_/rest/api/index/document/{docId}/custom-metadata/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SuccessResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "404", "429"], "application/json" + ): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "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 delete( + self, + *, + doc_id: str, + group_name: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SuccessResponse: + r"""Remove custom metadata + + Removes all custom metadata for the specified metadata group from a document. + + :param doc_id: Unique Glean identifier of the document + :param group_name: Name of the metadata group as specified while adding schema + :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 = models.DELETE_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS[ + 0 + ] + url_variables = { + "instance": "instance-name", + } + + request = models.DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest( + doc_id=doc_id, + group_name=group_name, + ) + + req = self._build_request( + method="DELETE", + path="/rest/api/index/document/{docId}/custom-metadata/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=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, + 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="delete_/rest/api/index/document/{docId}/custom-metadata/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SuccessResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "404", "429"], "application/json" + ): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "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 delete_async( + self, + *, + doc_id: str, + group_name: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SuccessResponse: + r"""Remove custom metadata + + Removes all custom metadata for the specified metadata group from a document. + + :param doc_id: Unique Glean identifier of the document + :param group_name: Name of the metadata group as specified while adding schema + :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 = models.DELETE_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS[ + 0 + ] + url_variables = { + "instance": "instance-name", + } + + request = models.DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest( + doc_id=doc_id, + group_name=group_name, + ) + + req = self._build_request_async( + method="DELETE", + path="/rest/api/index/document/{docId}/custom-metadata/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=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, + 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="delete_/rest/api/index/document/{docId}/custom-metadata/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SuccessResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "404", "429"], "application/json" + ): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "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 get_schema( + self, + *, + group_name: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.CustomMetadataSchema: + r"""Retrieve metadata schema + + Retrieves the current schema definition for a metadata group. + + :param group_name: Name of the metadata group schema + :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 = ( + models.GET_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS[ + 0 + ] + ) + url_variables = { + "instance": "instance-name", + } + + request = models.GetRestAPIIndexCustomMetadataSchemaGroupNameRequest( + group_name=group_name, + ) + + req = self._build_request( + method="GET", + path="/rest/api/index/custom-metadata/schema/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=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, + 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="get_/rest/api/index/custom-metadata/schema/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.CustomMetadataSchema, http_res) + if utils.match_response(http_res, ["401", "404", "429"], "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "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 get_schema_async( + self, + *, + group_name: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.CustomMetadataSchema: + r"""Retrieve metadata schema + + Retrieves the current schema definition for a metadata group. + + :param group_name: Name of the metadata group schema + :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 = ( + models.GET_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS[ + 0 + ] + ) + url_variables = { + "instance": "instance-name", + } + + request = models.GetRestAPIIndexCustomMetadataSchemaGroupNameRequest( + group_name=group_name, + ) + + req = self._build_request_async( + method="GET", + path="/rest/api/index/custom-metadata/schema/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=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, + 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="get_/rest/api/index/custom-metadata/schema/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.CustomMetadataSchema, http_res) + if utils.match_response(http_res, ["401", "404", "429"], "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "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 upsert_schema( + self, + *, + group_name: str, + metadata_keys: Union[ + List[models.CustomMetadataPropertyDefinition], + List[models.CustomMetadataPropertyDefinitionTypedDict], + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SuccessResponse: + r"""Create or update metadata schema + + Defines or updates the schema for a metadata group. Schemas should be defined before indexing metadata. + + :param group_name: Name of the metadata group schema + :param metadata_keys: Array of metadata key definitions + :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 = ( + models.PUT_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS[ + 0 + ] + ) + url_variables = { + "instance": "instance-name", + } + + request = models.PutRestAPIIndexCustomMetadataSchemaGroupNameRequest( + group_name=group_name, + custom_metadata_schema=models.CustomMetadataSchema( + metadata_keys=utils.get_pydantic_model( + metadata_keys, List[models.CustomMetadataPropertyDefinition] + ), + ), + ) + + req = self._build_request( + method="PUT", + path="/rest/api/index/custom-metadata/schema/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + 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.custom_metadata_schema, + False, + False, + "json", + models.CustomMetadataSchema, + ), + 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="put_/rest/api/index/custom-metadata/schema/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SuccessResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "409", "429"], "application/json" + ): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "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 upsert_schema_async( + self, + *, + group_name: str, + metadata_keys: Union[ + List[models.CustomMetadataPropertyDefinition], + List[models.CustomMetadataPropertyDefinitionTypedDict], + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SuccessResponse: + r"""Create or update metadata schema + + Defines or updates the schema for a metadata group. Schemas should be defined before indexing metadata. + + :param group_name: Name of the metadata group schema + :param metadata_keys: Array of metadata key definitions + :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 = ( + models.PUT_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS[ + 0 + ] + ) + url_variables = { + "instance": "instance-name", + } + + request = models.PutRestAPIIndexCustomMetadataSchemaGroupNameRequest( + group_name=group_name, + custom_metadata_schema=models.CustomMetadataSchema( + metadata_keys=utils.get_pydantic_model( + metadata_keys, List[models.CustomMetadataPropertyDefinition] + ), + ), + ) + + req = self._build_request_async( + method="PUT", + path="/rest/api/index/custom-metadata/schema/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + 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.custom_metadata_schema, + False, + False, + "json", + models.CustomMetadataSchema, + ), + 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="put_/rest/api/index/custom-metadata/schema/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SuccessResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "409", "429"], "application/json" + ): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "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 delete_schema( + self, + *, + group_name: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SuccessResponse: + r"""Remove metadata schema + + Deletes the schema definition for a metadata group. This does not delete existing metadata values on documents. + + :param group_name: Name of the metadata group schema + :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 = models.DELETE_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS[ + 0 + ] + url_variables = { + "instance": "instance-name", + } + + request = models.DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequest( + group_name=group_name, + ) + + req = self._build_request( + method="DELETE", + path="/rest/api/index/custom-metadata/schema/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=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, + 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="delete_/rest/api/index/custom-metadata/schema/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SuccessResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "404", "429"], "application/json" + ): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "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 delete_schema_async( + self, + *, + group_name: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.SuccessResponse: + r"""Remove metadata schema + + Deletes the schema definition for a metadata group. This does not delete existing metadata values on documents. + + :param group_name: Name of the metadata group schema + :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 = models.DELETE_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS[ + 0 + ] + url_variables = { + "instance": "instance-name", + } + + request = models.DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequest( + group_name=group_name, + ) + + req = self._build_request_async( + method="DELETE", + path="/rest/api/index/custom-metadata/schema/{groupName}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=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, + 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="delete_/rest/api/index/custom-metadata/schema/{groupName}", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.SuccessResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "404", "429"], "application/json" + ): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "500", "application/json"): + response_data = unmarshal_json_response( + errors.ErrorInfoResponseData, http_res + ) + raise errors.ErrorInfoResponse(response_data, http_res) + if utils.match_response(http_res, "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/datasources.py b/src/glean/api_client/datasources.py index 51519a77..e4eba5ec 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,230 @@ 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]] + request = models.GetDatasourceInstanceConfigurationRequest( + datasource_id=datasource_id, + instance_id=instance_id, + ) + + req = self._build_request( + method="GET", + path="/rest/api/v1/configure/datasources/{datasourceId}/instances/{instanceId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=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, + 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="getDatasourceInstanceConfiguration", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), ), - canonicalizing_title_regex=utils.get_pydantic_model( - canonicalizing_title_regex, - Optional[List[models.CanonicalizingRegexType]], + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + 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", "*"): + 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 get_datasource_instance_configuration_async( + self, + *, + 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, + ) -> 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 + :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.GetDatasourceInstanceConfigurationRequest( + datasource_id=datasource_id, + instance_id=instance_id, + ) + + req = self._build_request_async( + method="GET", + path="/rest/api/v1/configure/datasources/{datasourceId}/instances/{instanceId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=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, + 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="getDatasourceInstanceConfiguration", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), ), - redlist_title_regex=redlist_title_regex, - connector_type=connector_type, - quicklinks=utils.get_pydantic_model( - quicklinks, Optional[List[models.Quicklink]] + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + 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", "*"): + 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 update_datasource_instance_configuration( + self, + *, + 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.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. + + + :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 + :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.UpdateDatasourceInstanceConfigurationRequest( + datasource_id=datasource_id, + instance_id=instance_id, + update_datasource_configuration_request=models.UpdateDatasourceConfigurationRequest( + configuration=utils.get_pydantic_model( + configuration, models.DatasourceInstanceConfiguration + ), ), - 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", + 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="*/*", + 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 + request.update_datasource_configuration_request, + False, + False, + "json", + models.UpdateDatasourceConfigurationRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -177,20 +283,26 @@ def add( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="post_/api/index/v1/adddatasource", + 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", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), 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", "*"): @@ -199,88 +311,28 @@ def add( raise errors.GleanError("Unexpected response received", http_res) - async def add_async( + async def update_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, + 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, - ): - 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"""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. + + + :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 @@ -296,61 +348,37 @@ 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]] + 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 + ), ), - 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", + 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="*/*", + 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 + request.update_datasource_configuration_request, + False, + False, + "json", + models.UpdateDatasourceConfigurationRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -366,20 +394,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="updateDatasourceInstanceConfiguration", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), 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", "*"): @@ -388,20 +422,21 @@ async def add_async( raise errors.GleanError("Unexpected response received", http_res) - def retrieve_config( + def get_datasource_credential_status( self, *, - datasource: str, + datasource_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, - ) -> models.CustomDatasourceConfig: - r"""Get datasource config + ) -> models.DatasourceCredentialStatusResponse: + r"""Get datasource instance credential status - Fetches the datasource config for the specified custom datasource. + Returns the current credential status for a datasource instance. Access is limited to callers with the ADMIN scope; the handler enforces this check. - :param datasource: Datasource name for which config is needed. + + :param datasource_instance_id: The full datasource instance identifier (e.g. o365sharepoint_abc123) :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 @@ -417,26 +452,224 @@ def retrieve_config( else: base_url = self._get_url(base_url, url_variables) - request = models.GetDatasourceConfigRequest( - datasource=datasource, + request = models.GetDatasourceCredentialStatusRequest( + datasource_instance_id=datasource_instance_id, + ) + + req = self._build_request( + method="GET", + path="/rest/api/v1/datasource/{datasourceInstanceId}/credentialstatus", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=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, + 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="getDatasourceCredentialStatus", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.DatasourceCredentialStatusResponse, 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", "*"): + 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 get_datasource_credential_status_async( + self, + *, + datasource_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, + ) -> models.DatasourceCredentialStatusResponse: + r"""Get datasource instance credential status + + Returns the current credential status for a datasource instance. Access is limited to callers with the ADMIN scope; the handler enforces this check. + + + :param datasource_instance_id: The full datasource instance identifier (e.g. o365sharepoint_abc123) + :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.GetDatasourceCredentialStatusRequest( + datasource_instance_id=datasource_instance_id, + ) + + req = self._build_request_async( + method="GET", + path="/rest/api/v1/datasource/{datasourceInstanceId}/credentialstatus", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=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, + 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="getDatasourceCredentialStatus", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.DatasourceCredentialStatusResponse, 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", "*"): + 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 rotate_datasource_credentials( + self, + *, + datasource_instance_id: str, + credentials: 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.DatasourceCredentialStatusResponse: + r"""Rotate datasource instance credentials + + Rotates the credentials that a datasource instance uses to connect to its upstream system. Replaces the active credential material with the supplied values and returns the credential status after rotation. Access is limited to callers with the ADMIN scope; the handler enforces this check. + Only keys recognized as credential material for the datasource type may be set in `credentials.values` (e.g. `clientSecret`, `apiToken`, `privateKey`, depending on the configured auth method). Unrecognized keys, or keys that correspond to non-credential configuration, cause a 400; other instance configuration must be updated via PATCH /configure/datasources/{datasourceId}/instances/{instanceId}. + + + :param datasource_instance_id: The full datasource instance identifier (e.g. o365sharepoint_abc123) + :param credentials: 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 + :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.RotateDatasourceCredentialsRequestRequest( + datasource_instance_id=datasource_instance_id, + rotate_datasource_credentials_request=models.RotateDatasourceCredentialsRequest( + credentials=utils.get_pydantic_model( + credentials, models.DatasourceInstanceConfiguration + ), + ), ) req = self._build_request( method="POST", - path="/api/index/v1/getdatasourceconfig", + path="/rest/api/v1/datasource/{datasourceInstanceId}/credentials", 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.rotate_datasource_credentials_request, + False, + False, + "json", + models.RotateDatasourceCredentialsRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -452,20 +685,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="rotateDatasourceCredentials", 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"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), 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.DatasourceCredentialStatusResponse, 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", "*"): @@ -474,20 +713,27 @@ def retrieve_config( raise errors.GleanError("Unexpected response received", http_res) - async def retrieve_config_async( + async def rotate_datasource_credentials_async( self, *, - datasource: str, + datasource_instance_id: str, + credentials: 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.DatasourceCredentialStatusResponse: + r"""Rotate datasource instance credentials + + Rotates the credentials that a datasource instance uses to connect to its upstream system. Replaces the active credential material with the supplied values and returns the credential status after rotation. Access is limited to callers with the ADMIN scope; the handler enforces this check. + Only keys recognized as credential material for the datasource type may be set in `credentials.values` (e.g. `clientSecret`, `apiToken`, `privateKey`, depending on the configured auth method). Unrecognized keys, or keys that correspond to non-credential configuration, cause a 400; other instance configuration must be updated via PATCH /configure/datasources/{datasourceId}/instances/{instanceId}. - Fetches the datasource config for the specified custom datasource. - :param datasource: Datasource name for which config is needed. + :param datasource_instance_id: The full datasource instance identifier (e.g. o365sharepoint_abc123) + :param credentials: 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 @@ -503,26 +749,36 @@ async def retrieve_config_async( else: base_url = self._get_url(base_url, url_variables) - request = models.GetDatasourceConfigRequest( - datasource=datasource, + request = models.RotateDatasourceCredentialsRequestRequest( + datasource_instance_id=datasource_instance_id, + rotate_datasource_credentials_request=models.RotateDatasourceCredentialsRequest( + credentials=utils.get_pydantic_model( + credentials, models.DatasourceInstanceConfiguration + ), + ), ) req = self._build_request_async( method="POST", - path="/api/index/v1/getdatasourceconfig", + path="/rest/api/v1/datasource/{datasourceInstanceId}/credentials", 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.rotate_datasource_credentials_request, + False, + False, + "json", + models.RotateDatasourceCredentialsRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -538,20 +794,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="rotateDatasourceCredentials", 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"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), 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.DatasourceCredentialStatusResponse, 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/entities.py b/src/glean/api_client/entities.py index 6a64e9b5..6f3f666e 100644 --- a/src/glean/api_client/entities.py +++ b/src/glean/api_client/entities.py @@ -1,284 +1,43 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from .basesdk import BaseSDK +from enum import Enum 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 +from typing import Mapping, Optional -class Entities(BaseSDK): - def list( - self, - *, - filter_: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] - ] = None, - sort: Optional[ - Union[List[models.SortOptions], List[models.SortOptionsTypedDict]] - ] = None, - entity_type: Optional[ - models.ListEntitiesRequestEntityType - ] = models.ListEntitiesRequestEntityType.PEOPLE, - datasource: Optional[str] = None, - query: Optional[str] = None, - include_fields: Optional[List[models.ListEntitiesRequestIncludeField]] = None, - page_size: Optional[int] = None, - cursor: Optional[str] = None, - source: Optional[str] = None, - request_type: Optional[models.RequestType] = models.RequestType.STANDARD, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.ListEntitiesResponse: - r"""List entities - - List some set of details for all entities that fit the given criteria and return in the requested order. Does not support negation in filters, assumes relation type EQUALS. There is a limit of 10000 entities that can be retrieved via this endpoint, except when using FULL_DIRECTORY request type for people entities. - - :param filter_: - :param sort: Use EntitiesSortOrder enum for SortOptions.sortBy - :param entity_type: - :param datasource: The datasource associated with the entity type, most commonly used with CUSTOM_ENTITIES - :param query: A query string to search for entities that each entity in the response must conform to. An empty query does not filter any entities. - :param include_fields: List of entity fields to return (that aren't returned by default) - :param page_size: Hint to the server about how many results to send back. Server may return less. - :param cursor: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. - :param source: A string denoting the search surface from which the endpoint is called. - :param request_type: The type of request being made. - :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 +class GetPersonPhotoAcceptEnum(str, Enum): + IMAGE_JPEG = "image/jpeg" + IMAGE_PNG = "image/png" - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - request = models.ListEntitiesRequest( - filter_=utils.get_pydantic_model( - filter_, Optional[List[models.FacetFilter]] - ), - sort=utils.get_pydantic_model(sort, Optional[List[models.SortOptions]]), - entity_type=entity_type, - datasource=datasource, - query=query, - include_fields=include_fields, - page_size=page_size, - cursor=cursor, - source=source, - request_type=request_type, - ) - - req = self._build_request( - method="POST", - path="/rest/api/v1/listentities", - 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.ListEntitiesRequest - ), - 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="listentities", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.ListEntitiesResponse, http_res) - if utils.match_response(http_res, ["400", "401", "429", "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 list_async( +class Entities(BaseSDK): + def get_person_photo( self, *, - filter_: Optional[ - Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] - ] = None, - sort: Optional[ - Union[List[models.SortOptions], List[models.SortOptionsTypedDict]] - ] = None, - entity_type: Optional[ - models.ListEntitiesRequestEntityType - ] = models.ListEntitiesRequestEntityType.PEOPLE, - datasource: Optional[str] = None, - query: Optional[str] = None, - include_fields: Optional[List[models.ListEntitiesRequestIncludeField]] = None, - page_size: Optional[int] = None, - cursor: Optional[str] = None, - source: Optional[str] = None, - request_type: Optional[models.RequestType] = models.RequestType.STANDARD, + person_id: str, + ds: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, + accept_header_override: Optional[GetPersonPhotoAcceptEnum] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.ListEntitiesResponse: - r"""List entities - - List some set of details for all entities that fit the given criteria and return in the requested order. Does not support negation in filters, assumes relation type EQUALS. There is a limit of 10000 entities that can be retrieved via this endpoint, except when using FULL_DIRECTORY request type for people entities. + ) -> models.GetPersonPhotoResponse: + r"""Get person photo - :param filter_: - :param sort: Use EntitiesSortOrder enum for SortOptions.sortBy - :param entity_type: - :param datasource: The datasource associated with the entity type, most commonly used with CUSTOM_ENTITIES - :param query: A query string to search for entities that each entity in the response must conform to. An empty query does not filter any entities. - :param include_fields: List of entity fields to return (that aren't returned by default) - :param page_size: Hint to the server about how many results to send back. Server may return less. - :param cursor: Pagination cursor. A previously received opaque token representing the position in the overall results at which to start. - :param source: A string denoting the search surface from which the endpoint is called. - :param request_type: The type of request being made. - :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.ListEntitiesRequest( - filter_=utils.get_pydantic_model( - filter_, Optional[List[models.FacetFilter]] - ), - sort=utils.get_pydantic_model(sort, Optional[List[models.SortOptions]]), - entity_type=entity_type, - datasource=datasource, - query=query, - include_fields=include_fields, - page_size=page_size, - cursor=cursor, - source=source, - request_type=request_type, - ) + Returns the profile photo bytes for a person whose photo is stored in Glean (crawled from an identity source or user-uploaded via admin console). Photos hosted externally (e.g. Slack CDN) are not served by this endpoint; callers should follow the photoUrl from /people or /listentities directly. Responses include a Cache-Control header (max-age=3600) to reduce redundant fetches. - req = self._build_request_async( - method="POST", - path="/rest/api/v1/listentities", - 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.ListEntitiesRequest - ), - timeout_ms=timeout_ms, - ) - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config + :param person_id: The obfuscated ID of the person whose photo to retrieve. + :param ds: Optional datasource override for crawled photos (e.g. AZURE, GDRIVE, OKTA). When omitted, the datasource is derived from the person's stored photo URL or the deployment's primary person datasource. - 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="listentities", - oauth2_scopes=None, - security_source=get_security_from_env( - self.sdk_configuration.security, models.Security - ), - ), - request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.ListEntitiesResponse, http_res) - if utils.match_response(http_res, ["400", "401", "429", "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 read_people( - self, - *, - timezone_offset: Optional[int] = None, - obfuscated_ids: Optional[List[str]] = None, - email_ids: Optional[List[str]] = None, - include_fields: Optional[List[models.PeopleRequestIncludeField]] = None, - include_types: Optional[List[models.IncludeType]] = None, - source: Optional[str] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> models.PeopleResponse: - r"""Read people - - Read people details for the given IDs. - - :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. - :param obfuscated_ids: The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. - :param email_ids: The email IDs to retrieve. The result is the deduplicated union of emailIds and obfuscatedIds. - :param include_fields: List of PersonMetadata fields to return (that aren't returned by default) - :param include_types: The types of people entities to include in the response in addition to those returned by default. - :param source: A string denoting the search surface from which the endpoint is called. :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 accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ base_url = None @@ -291,31 +50,27 @@ def read_people( else: base_url = self._get_url(base_url, url_variables) - request = models.PeopleRequest( - timezone_offset=timezone_offset, - obfuscated_ids=obfuscated_ids, - email_ids=email_ids, - include_fields=include_fields, - include_types=include_types, - source=source, + request = models.GetPersonPhotoRequest( + person_id=person_id, + ds=ds, ) req = self._build_request( - method="POST", - path="/rest/api/v1/people", + method="GET", + path="/rest/api/v1/people/{person_id}/photo", 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="application/json", + accept_header_value=accept_header_override.value + if accept_header_override is not None + else "image/jpeg;q=1, image/png;q=0", http_headers=http_headers, security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.PeopleRequest - ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -331,55 +86,59 @@ def read_people( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="people", + operation_id="getPersonPhoto", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=True, retry_config=retry_config, ) - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.PeopleResponse, http_res) - if utils.match_response(http_res, ["400", "401", "429", "4XX"], "*"): + if utils.match_response(http_res, "200", "image/png"): + return models.GetPersonPhotoResponse( + result=http_res, headers=utils.get_response_headers(http_res.headers) + ) + if utils.match_response(http_res, "200", "image/jpeg"): + return models.GetPersonPhotoResponse( + result=http_res, headers=utils.get_response_headers(http_res.headers) + ) + if utils.match_response(http_res, ["400", "401", "404", "429", "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) + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("Unexpected response received", http_res, http_res_text) - async def read_people_async( + async def get_person_photo_async( self, *, - timezone_offset: Optional[int] = None, - obfuscated_ids: Optional[List[str]] = None, - email_ids: Optional[List[str]] = None, - include_fields: Optional[List[models.PeopleRequestIncludeField]] = None, - include_types: Optional[List[models.IncludeType]] = None, - source: Optional[str] = None, + person_id: str, + ds: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, + accept_header_override: Optional[GetPersonPhotoAcceptEnum] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.PeopleResponse: - r"""Read people + ) -> models.GetPersonPhotoResponse: + r"""Get person photo + + Returns the profile photo bytes for a person whose photo is stored in Glean (crawled from an identity source or user-uploaded via admin console). Photos hosted externally (e.g. Slack CDN) are not served by this endpoint; callers should follow the photoUrl from /people or /listentities directly. Responses include a Cache-Control header (max-age=3600) to reduce redundant fetches. - Read people details for the given IDs. - :param timezone_offset: The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. - :param obfuscated_ids: The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. - :param email_ids: The email IDs to retrieve. The result is the deduplicated union of emailIds and obfuscatedIds. - :param include_fields: List of PersonMetadata fields to return (that aren't returned by default) - :param include_types: The types of people entities to include in the response in addition to those returned by default. - :param source: A string denoting the search surface from which the endpoint is called. + :param person_id: The obfuscated ID of the person whose photo to retrieve. + :param ds: Optional datasource override for crawled photos (e.g. AZURE, GDRIVE, OKTA). When omitted, the datasource is derived from the person's stored photo URL or the deployment's primary person datasource. + :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 accept_header_override: Override the default accept header for this method :param http_headers: Additional headers to set or replace on requests. """ base_url = None @@ -392,31 +151,27 @@ async def read_people_async( else: base_url = self._get_url(base_url, url_variables) - request = models.PeopleRequest( - timezone_offset=timezone_offset, - obfuscated_ids=obfuscated_ids, - email_ids=email_ids, - include_fields=include_fields, - include_types=include_types, - source=source, + request = models.GetPersonPhotoRequest( + person_id=person_id, + ds=ds, ) req = self._build_request_async( - method="POST", - path="/rest/api/v1/people", + method="GET", + path="/rest/api/v1/people/{person_id}/photo", 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="application/json", + accept_header_value=accept_header_override.value + if accept_header_override is not None + else "image/jpeg;q=1, image/png;q=0", http_headers=http_headers, security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.PeopleRequest - ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -432,24 +187,32 @@ async def read_people_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="people", + operation_id="getPersonPhoto", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=True, retry_config=retry_config, ) - if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.PeopleResponse, http_res) - if utils.match_response(http_res, ["400", "401", "429", "4XX"], "*"): + if utils.match_response(http_res, "200", "image/png"): + return models.GetPersonPhotoResponse( + result=http_res, headers=utils.get_response_headers(http_res.headers) + ) + if utils.match_response(http_res, "200", "image/jpeg"): + return models.GetPersonPhotoResponse( + result=http_res, headers=utils.get_response_headers(http_res.headers) + ) + if utils.match_response(http_res, ["400", "401", "404", "429", "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) + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.GleanError("Unexpected response received", http_res, http_res_text) diff --git a/src/glean/api_client/errors/__init__.py b/src/glean/api_client/errors/__init__.py index bc3197fc..2a3a78db 100644 --- a/src/glean/api_client/errors/__init__.py +++ b/src/glean/api_client/errors/__init__.py @@ -1,13 +1,14 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from .gleanbaseerror import GleanBaseError -from typing import TYPE_CHECKING -from importlib import import_module -import builtins -import sys +from typing import Any, TYPE_CHECKING + +from glean.api_client.utils.dynamic_imports import lazy_getattr, lazy_dir if TYPE_CHECKING: from .collectionerror import CollectionError, CollectionErrorData + from .errorinforesponse import ErrorInfoResponse, ErrorInfoResponseData + from .errorresponse import ErrorResponse, ErrorResponseData from .gleandataerror import GleanDataError, GleanDataErrorData from .gleanerror import GleanError from .no_response_error import NoResponseError @@ -16,6 +17,10 @@ __all__ = [ "CollectionError", "CollectionErrorData", + "ErrorInfoResponse", + "ErrorInfoResponseData", + "ErrorResponse", + "ErrorResponseData", "GleanBaseError", "GleanDataError", "GleanDataErrorData", @@ -27,6 +32,10 @@ _dynamic_imports: dict[str, str] = { "CollectionError": ".collectionerror", "CollectionErrorData": ".collectionerror", + "ErrorInfoResponse": ".errorinforesponse", + "ErrorInfoResponseData": ".errorinforesponse", + "ErrorResponse": ".errorresponse", + "ErrorResponseData": ".errorresponse", "GleanDataError": ".gleandataerror", "GleanDataErrorData": ".gleandataerror", "GleanError": ".gleanerror", @@ -35,39 +44,11 @@ } -def dynamic_import(modname, retries=3): - for attempt in range(retries): - try: - return import_module(modname, __package__) - except KeyError: - # Clear any half-initialized module and retry - sys.modules.pop(modname, None) - if attempt == retries - 1: - break - raise KeyError(f"Failed to import module '{modname}' after {retries} attempts") - - -def __getattr__(attr_name: str) -> object: - module_name = _dynamic_imports.get(attr_name) - if module_name is None: - raise AttributeError( - f"No {attr_name} found in _dynamic_imports for module name -> {__name__} " - ) - - try: - module = dynamic_import(module_name) - result = getattr(module, attr_name) - return result - except ImportError as e: - raise ImportError( - f"Failed to import {attr_name} from {module_name}: {e}" - ) from e - except AttributeError as e: - raise AttributeError( - f"Failed to get {attr_name} from {module_name}: {e}" - ) from e +def __getattr__(attr_name: str) -> Any: + return lazy_getattr( + attr_name, package=__package__, dynamic_imports=_dynamic_imports + ) def __dir__(): - lazy_attrs = builtins.list(_dynamic_imports.keys()) - return builtins.sorted(lazy_attrs) + return lazy_dir(dynamic_imports=_dynamic_imports) diff --git a/src/glean/api_client/errors/errorinforesponse.py b/src/glean/api_client/errors/errorinforesponse.py new file mode 100644 index 00000000..22c95a54 --- /dev/null +++ b/src/glean/api_client/errors/errorinforesponse.py @@ -0,0 +1,33 @@ +"""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 ErrorInfoResponseData(BaseModel): + error: str + r"""Error message describing what went wrong""" + message: Optional[str] = None + r"""Additional details about the error""" + + +@dataclass(unsafe_hash=True) +class ErrorInfoResponse(GleanBaseError): + r"""Error response for custom metadata operations""" + + data: ErrorInfoResponseData = field(hash=False) + + def __init__( + self, + data: ErrorInfoResponseData, + 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/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 6ac9f877..754c85de 100644 --- a/src/glean/api_client/errors/gleandataerror.py +++ b/src/glean/api_client/errors/gleandataerror.py @@ -19,22 +19,23 @@ class GleanDataErrorData(BaseModel): Optional[bool], pydantic.Field(alias="badGmailToken") ] = None r"""Indicates the gmail results could not be fetched due to bad token.""" - bad_outlook_token: Annotated[ Optional[bool], pydantic.Field(alias="badOutlookToken") ] = None r"""Indicates the outlook results could not be fetched due to bad token.""" - invalid_operators: Annotated[ Optional[List[models_invalidoperatorvalueerror.InvalidOperatorValueError]], pydantic.Field(alias="invalidOperators"), ] = None r"""Indicates results could not be fetched due to invalid operators in the query.""" - error_messages: Annotated[ Optional[List[models_errormessage.ErrorMessage]], pydantic.Field(alias="errorMessages"), ] = None + federated_search_rate_limit_error: Annotated[ + Optional[bool], pydantic.Field(alias="federatedSearchRateLimitError") + ] = None + r"""Indicates the federated search results could not be fetched due to rate limiting.""" @dataclass(unsafe_hash=True) diff --git a/src/glean/api_client/governance.py b/src/glean/api_client/governance.py index 0917cce6..fd67e05d 100644 --- a/src/glean/api_client/governance.py +++ b/src/glean/api_client/governance.py @@ -1,25 +1,725 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from .basesdk import BaseSDK -from .sdkconfiguration import SDKConfiguration -from glean.api_client.data import Data -from glean.api_client.governance_documents import GovernanceDocuments -from typing import Optional +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 Governance(BaseSDK): - data: Data - documents: GovernanceDocuments + def createfindingsexport( + self, + *, + export_type: Optional[models.DlpExportFindingsRequestExportType] = None, + filter_: Optional[ + Union[models.DlpFindingFilter, models.DlpFindingFilterTypedDict] + ] = None, + issue_filter: Optional[ + Union[models.DlpIssueFilter, models.DlpIssueFilterTypedDict] + ] = None, + file_name: Optional[str] = None, + field_scope: Optional[models.FieldScope] = None, + fields_to_exclude: Optional[List[str]] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ExportInfo: + r"""Creates findings export - def __init__( - self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None - ) -> None: - BaseSDK.__init__(self, sdk_config, parent_ref=parent_ref) - self.sdk_configuration = sdk_config - self._init_sdks() + Creates a new DLP findings export job. - def _init_sdks(self): - self.data = Data(self.sdk_configuration, parent_ref=self.parent_ref) - self.documents = GovernanceDocuments( - self.sdk_configuration, parent_ref=self.parent_ref + :param export_type: The type of export to perform + :param filter_: + :param issue_filter: Filter for DLP issues. Includes document-level filters and issue-specific filters. + :param file_name: The name of the file to export the findings to + :param field_scope: Controls which fields to include in the export + :param fields_to_exclude: List of field names to exclude from the export + :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.DlpExportFindingsRequest( + export_type=export_type, + filter_=utils.get_pydantic_model( + filter_, Optional[models.DlpFindingFilter] + ), + issue_filter=utils.get_pydantic_model( + issue_filter, Optional[models.DlpIssueFilter] + ), + file_name=file_name, + field_scope=field_scope, + fields_to_exclude=fields_to_exclude, + ) + + req = self._build_request( + method="POST", + path="/rest/api/v1/governance/data/findings/exports", + 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.DlpExportFindingsRequest + ), + 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="createfindingsexport", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.ExportInfo, http_res) + if utils.match_response(http_res, ["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"], "*"): + 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 createfindingsexport_async( + self, + *, + export_type: Optional[models.DlpExportFindingsRequestExportType] = None, + filter_: Optional[ + Union[models.DlpFindingFilter, models.DlpFindingFilterTypedDict] + ] = None, + issue_filter: Optional[ + Union[models.DlpIssueFilter, models.DlpIssueFilterTypedDict] + ] = None, + file_name: Optional[str] = None, + field_scope: Optional[models.FieldScope] = None, + fields_to_exclude: Optional[List[str]] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ExportInfo: + r"""Creates findings export + + Creates a new DLP findings export job. + + :param export_type: The type of export to perform + :param filter_: + :param issue_filter: Filter for DLP issues. Includes document-level filters and issue-specific filters. + :param file_name: The name of the file to export the findings to + :param field_scope: Controls which fields to include in the export + :param fields_to_exclude: List of field names to exclude from the export + :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.DlpExportFindingsRequest( + export_type=export_type, + filter_=utils.get_pydantic_model( + filter_, Optional[models.DlpFindingFilter] + ), + issue_filter=utils.get_pydantic_model( + issue_filter, Optional[models.DlpIssueFilter] + ), + file_name=file_name, + field_scope=field_scope, + fields_to_exclude=fields_to_exclude, + ) + + req = self._build_request_async( + method="POST", + path="/rest/api/v1/governance/data/findings/exports", + 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.DlpExportFindingsRequest + ), + 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="createfindingsexport", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response(models.ExportInfo, http_res) + if utils.match_response(http_res, ["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"], "*"): + 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 listfindingsexports( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ListDlpFindingsExportsResponse: + r"""Lists findings exports + + Lists all DLP findings exports. + + :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) + req = self._build_request( + method="GET", + path="/rest/api/v1/governance/data/findings/exports", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + 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, + 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="listfindingsexports", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.ListDlpFindingsExportsResponse, http_res + ) + if utils.match_response(http_res, ["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"], "*"): + 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 listfindingsexports_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.ListDlpFindingsExportsResponse: + r"""Lists findings exports + + Lists all DLP findings exports. + + :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) + req = self._build_request_async( + method="GET", + path="/rest/api/v1/governance/data/findings/exports", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + 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, + 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="listfindingsexports", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return unmarshal_json_response( + models.ListDlpFindingsExportsResponse, http_res + ) + if utils.match_response(http_res, ["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"], "*"): + 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 downloadfindingsexport( + self, + *, + id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> str: + r"""Downloads findings export + + Downloads a DLP findings export as a CSV file. + + :param id: The ID of the export to download. + :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.DownloadfindingsexportRequest( + id=id, + ) + + req = self._build_request( + method="GET", + path="/rest/api/v1/governance/data/findings/exports/{id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="text/csv; charset=UTF-8", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="downloadfindingsexport", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "text/csv; charset=UTF-8"): + return http_res.text + if utils.match_response(http_res, ["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"], "*"): + 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 downloadfindingsexport_async( + self, + *, + id: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> str: + r"""Downloads findings export + + Downloads a DLP findings export as a CSV file. + + :param id: The ID of the export to download. + :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.DownloadfindingsexportRequest( + id=id, + ) + + req = self._build_request_async( + method="GET", + path="/rest/api/v1/governance/data/findings/exports/{id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="text/csv; charset=UTF-8", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="downloadfindingsexport", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "text/csv; charset=UTF-8"): + return http_res.text + if utils.match_response(http_res, ["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"], "*"): + 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 deletefindingsexport( + self, + *, + id: int, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ): + r"""Deletes findings export + + Deletes a DLP findings export. + + :param id: The ID of the export to delete. + :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.DeletefindingsexportRequest( + id=id, + ) + + req = self._build_request( + method="DELETE", + path="/rest/api/v1/governance/data/findings/exports/{id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="deletefindingsexport", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return + if utils.match_response(http_res, ["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"], "*"): + 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 deletefindingsexport_async( + self, + *, + id: int, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ): + r"""Deletes findings export + + Deletes a DLP findings export. + + :param id: The ID of the export to delete. + :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.DeletefindingsexportRequest( + id=id, + ) + + req = self._build_request_async( + method="DELETE", + path="/rest/api/v1/governance/data/findings/exports/{id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + security=self.sdk_configuration.security, + 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="deletefindingsexport", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return + if utils.match_response(http_res, ["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"], "*"): + 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.py b/src/glean/api_client/indexing.py index 27b07e8e..e4cc2c52 100644 --- a/src/glean/api_client/indexing.py +++ b/src/glean/api_client/indexing.py @@ -2,9 +2,10 @@ from .basesdk import BaseSDK from .sdkconfiguration import SDKConfiguration -from glean.api_client.datasources import Datasources +from glean.api_client.custommetadata import CustomMetadata 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,9 +18,10 @@ class Indexing(BaseSDK): permissions: IndexingPermissions datasource: IndexingDatasource people: People - datasources: Datasources + datasources: IndexingDatasources authentication: IndexingAuthentication shortcuts: IndexingShortcuts + custom_metadata: CustomMetadata def __init__( self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None @@ -39,7 +41,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( @@ -48,3 +50,6 @@ def _init_sdks(self): self.shortcuts = IndexingShortcuts( self.sdk_configuration, parent_ref=self.parent_ref ) + self.custom_metadata = CustomMetadata( + self.sdk_configuration, parent_ref=self.parent_ref + ) diff --git a/src/glean/api_client/indexing_authentication.py b/src/glean/api_client/indexing_authentication.py index 0b000351..2195782f 100644 --- a/src/glean/api_client/indexing_authentication.py +++ b/src/glean/api_client/indexing_authentication.py @@ -49,6 +49,7 @@ def rotate_token( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -71,7 +72,7 @@ def rotate_token( ), ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -125,6 +126,7 @@ async def rotate_token_async( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -147,7 +149,7 @@ async def rotate_token_async( ), ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/indexing_datasource.py b/src/glean/api_client/indexing_datasource.py index f55efcac..0bb15857 100644 --- a/src/glean/api_client/indexing_datasource.py +++ b/src/glean/api_client/indexing_datasource.py @@ -59,6 +59,7 @@ def status( accept_header_value="application/json; charset=UTF-8", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -81,7 +82,7 @@ def status( ), ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -147,6 +148,7 @@ async def status_async( accept_header_value="application/json; charset=UTF-8", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -169,7 +171,7 @@ async def status_async( ), ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/indexing_datasources.py b/src/glean/api_client/indexing_datasources.py new file mode 100644 index 00000000..b8b091e8 --- /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, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + 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, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + 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, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + 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, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + 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 cdf61328..9817af75 100644 --- a/src/glean/api_client/indexing_documents.py +++ b/src/glean/api_client/indexing_documents.py @@ -63,6 +63,7 @@ def add_or_update( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.IndexDocumentRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -85,7 +86,7 @@ def add_or_update( ), ), request=req, - error_status_codes=["400", "401", "409", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -152,6 +153,7 @@ async def add_or_update_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.IndexDocumentRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -174,7 +176,7 @@ async def add_or_update_async( ), ), request=req, - error_status_codes=["400", "401", "409", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -248,6 +250,7 @@ def index( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.IndexDocumentsRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -270,7 +273,7 @@ def index( ), ), request=req, - error_status_codes=["400", "401", "409", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -344,6 +347,7 @@ async def index_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.IndexDocumentsRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -366,7 +370,7 @@ async def index_async( ), ), request=req, - error_status_codes=["400", "401", "409", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -452,6 +456,7 @@ def bulk_index( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.BulkIndexDocumentsRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -474,7 +479,7 @@ def bulk_index( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -560,6 +565,7 @@ async def bulk_index_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.BulkIndexDocumentsRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -582,7 +588,7 @@ async def bulk_index_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -668,6 +674,7 @@ def process_all( "json", Optional[models.ProcessAllDocumentsRequest], ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -690,7 +697,7 @@ def process_all( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -776,6 +783,7 @@ async def process_all_async( "json", Optional[models.ProcessAllDocumentsRequest], ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -798,7 +806,7 @@ async def process_all_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -871,6 +879,7 @@ def delete( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.DeleteDocumentRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -893,7 +902,7 @@ def delete( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -966,6 +975,7 @@ async def delete_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.DeleteDocumentRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -988,7 +998,7 @@ async def delete_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1067,6 +1077,7 @@ def debug( "json", models.DebugDocumentRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1089,7 +1100,7 @@ def debug( ), ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1168,6 +1179,7 @@ async def debug_async( "json", models.DebugDocumentRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1190,7 +1202,7 @@ async def debug_async( ), ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1271,6 +1283,7 @@ def debug_many( "json", models.DebugDocumentsRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1293,7 +1306,7 @@ def debug_many( ), ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1374,6 +1387,7 @@ async def debug_many_async( "json", models.DebugDocumentsRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1396,7 +1410,7 @@ async def debug_many_async( ), ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1472,6 +1486,7 @@ def check_access( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.CheckDocumentAccessRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1494,7 +1509,7 @@ def check_access( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1570,6 +1585,7 @@ async def check_access_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.CheckDocumentAccessRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1592,7 +1608,7 @@ async def check_access_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1608,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, @@ -1668,6 +1684,7 @@ def status( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.GetDocumentStatusRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1690,7 +1707,7 @@ def status( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1706,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, @@ -1766,6 +1783,7 @@ async def status_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.GetDocumentStatusRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1788,7 +1806,7 @@ async def status_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1804,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, @@ -1858,6 +1876,7 @@ def count( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.GetDocumentCountRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1880,7 +1899,7 @@ def count( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1896,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, @@ -1950,6 +1969,7 @@ async def count_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.GetDocumentCountRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1972,7 +1992,7 @@ async def count_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/indexing_permissions.py b/src/glean/api_client/indexing_permissions.py index d592eced..c41d5c91 100644 --- a/src/glean/api_client/indexing_permissions.py +++ b/src/glean/api_client/indexing_permissions.py @@ -76,6 +76,7 @@ def update_permissions( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.UpdatePermissionsRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -98,7 +99,7 @@ def update_permissions( ), ), request=req, - error_status_codes=["400", "401", "409", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -180,6 +181,7 @@ async def update_permissions_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.UpdatePermissionsRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -202,7 +204,7 @@ async def update_permissions_async( ), ), request=req, - error_status_codes=["400", "401", "409", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -274,6 +276,7 @@ def index_user( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.IndexUserRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -296,7 +299,7 @@ def index_user( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -368,6 +371,7 @@ async def index_user_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.IndexUserRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -390,7 +394,7 @@ async def index_user_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -479,6 +483,7 @@ def bulk_index_users( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.BulkIndexUsersRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -501,7 +506,7 @@ def bulk_index_users( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -590,6 +595,7 @@ async def bulk_index_users_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.BulkIndexUsersRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -612,7 +618,7 @@ async def bulk_index_users_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -684,6 +690,7 @@ def index_group( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.IndexGroupRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -706,7 +713,7 @@ def index_group( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -778,6 +785,7 @@ async def index_group_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.IndexGroupRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -800,7 +808,7 @@ async def index_group_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -889,6 +897,7 @@ def bulk_index_groups( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.BulkIndexGroupsRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -911,7 +920,7 @@ def bulk_index_groups( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1000,6 +1009,7 @@ async def bulk_index_groups_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.BulkIndexGroupsRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1022,7 +1032,7 @@ async def bulk_index_groups_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1097,6 +1107,7 @@ def index_membership( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.IndexMembershipRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1119,7 +1130,7 @@ def index_membership( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1194,6 +1205,7 @@ async def index_membership_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.IndexMembershipRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1216,7 +1228,7 @@ async def index_membership_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1303,6 +1315,7 @@ def bulk_index_memberships( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.BulkIndexMembershipsRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1325,7 +1338,7 @@ def bulk_index_memberships( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1412,6 +1425,7 @@ async def bulk_index_memberships_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.BulkIndexMembershipsRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1434,7 +1448,7 @@ async def bulk_index_memberships_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1510,6 +1524,7 @@ def process_memberships( "json", Optional[models.ProcessAllMembershipsRequest], ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1532,7 +1547,7 @@ def process_memberships( ), ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1608,6 +1623,7 @@ async def process_memberships_async( "json", Optional[models.ProcessAllMembershipsRequest], ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1630,7 +1646,7 @@ async def process_memberships_async( ), ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1702,6 +1718,7 @@ def delete_user( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.DeleteUserRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1724,7 +1741,7 @@ def delete_user( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1796,6 +1813,7 @@ async def delete_user_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.DeleteUserRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1818,7 +1836,7 @@ async def delete_user_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1890,6 +1908,7 @@ def delete_group( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.DeleteGroupRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1912,7 +1931,7 @@ def delete_group( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1984,6 +2003,7 @@ async def delete_group_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.DeleteGroupRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -2006,7 +2026,7 @@ async def delete_group_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2081,6 +2101,7 @@ def delete_membership( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.DeleteMembershipRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -2103,7 +2124,7 @@ def delete_membership( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2178,6 +2199,7 @@ async def delete_membership_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.DeleteMembershipRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -2200,7 +2222,7 @@ async def delete_membership_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2267,6 +2289,7 @@ def authorize_beta_users( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.GreenlistUsersRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -2289,7 +2312,7 @@ def authorize_beta_users( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -2356,6 +2379,7 @@ async def authorize_beta_users_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.GreenlistUsersRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -2378,7 +2402,7 @@ async def authorize_beta_users_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/indexing_shortcuts.py b/src/glean/api_client/indexing_shortcuts.py index c7898ea0..bdfdec85 100644 --- a/src/glean/api_client/indexing_shortcuts.py +++ b/src/glean/api_client/indexing_shortcuts.py @@ -26,7 +26,7 @@ def bulk_index( ): r"""Bulk index external shortcuts - 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. + 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://docs.glean.com/user-guide/knowledge/go-links/how-go-links-work) page. :param upload_id: Unique id that must be used for this bulk upload instance :param shortcuts: Batch of shortcuts information @@ -74,6 +74,7 @@ def bulk_index( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.BulkIndexShortcutsRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -96,7 +97,7 @@ def bulk_index( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -128,7 +129,7 @@ async def bulk_index_async( ): r"""Bulk index external shortcuts - 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. + 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://docs.glean.com/user-guide/knowledge/go-links/how-go-links-work) page. :param upload_id: Unique id that must be used for this bulk upload instance :param shortcuts: Batch of shortcuts information @@ -176,6 +177,7 @@ async def bulk_index_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.BulkIndexShortcutsRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -198,7 +200,7 @@ async def bulk_index_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -278,6 +280,7 @@ def upload( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.UploadShortcutsRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -300,7 +303,7 @@ def upload( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -380,6 +383,7 @@ async def upload_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.UploadShortcutsRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -402,7 +406,7 @@ async def upload_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/insights.py b/src/glean/api_client/insights.py index 1ea8f765..388b8a37 100644 --- a/src/glean/api_client/insights.py +++ b/src/glean/api_client/insights.py @@ -6,13 +6,14 @@ 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 Mapping, Optional, Union class Insights(BaseSDK): def retrieve( self, *, + locale: Optional[str] = None, overview_request: Optional[ Union[ models.InsightsOverviewRequest, models.InsightsOverviewRequestTypedDict @@ -29,23 +30,16 @@ def retrieve( models.AgentsInsightsV2Request, models.AgentsInsightsV2RequestTypedDict ] ] = None, - disable_per_user_insights: Optional[bool] = None, - categories: Optional[List[models.InsightsRequestCategory]] = None, - departments: Optional[List[str]] = None, - day_range: Optional[Union[models.Period, models.PeriodTypedDict]] = None, - ai_app_request_options: Optional[ - Union[ - models.InsightsAiAppRequestOptions, - models.InsightsAiAppRequestOptionsTypedDict, - ] + mcp_request: Optional[ + Union[models.McpInsightsRequest, models.McpInsightsRequestTypedDict] ] = None, - agents_request_options: Optional[ + mcp_breakdown_request: Optional[ Union[ - models.InsightsAgentsRequestOptions, - models.InsightsAgentsRequestOptionsTypedDict, + models.McpBreakdownInsightsRequest, + models.McpBreakdownInsightsRequestTypedDict, ] ] = None, - assistant_activity_types: Optional[List[models.AssistantActivityType]] = None, + disable_per_user_insights: Optional[bool] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -55,16 +49,13 @@ def retrieve( Gets the aggregate usage insights data displayed in the Insights Dashboards. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param overview_request: :param assistant_request: :param agents_request: + :param mcp_request: + :param mcp_breakdown_request: :param disable_per_user_insights: If true, suppresses the generation of per-user Insights in the response. Default is false. - :param categories: Categories of data requested. Request can include single or multiple types. - :param departments: Departments that the data is requested for. If this is empty, corresponds to whole company. - :param day_range: - :param ai_app_request_options: - :param agents_request_options: - :param assistant_activity_types: Types of activity that should count in the definition of an Assistant Active User. Affects only insights for AI category. :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 @@ -80,27 +71,26 @@ def retrieve( else: base_url = self._get_url(base_url, url_variables) - request = models.InsightsRequest( - overview_request=utils.get_pydantic_model( - overview_request, Optional[models.InsightsOverviewRequest] - ), - assistant_request=utils.get_pydantic_model( - assistant_request, Optional[models.InsightsAssistantRequest] - ), - agents_request=utils.get_pydantic_model( - agents_request, Optional[models.AgentsInsightsV2Request] - ), - disable_per_user_insights=disable_per_user_insights, - categories=categories, - departments=departments, - day_range=utils.get_pydantic_model(day_range, Optional[models.Period]), - ai_app_request_options=utils.get_pydantic_model( - ai_app_request_options, Optional[models.InsightsAiAppRequestOptions] - ), - agents_request_options=utils.get_pydantic_model( - agents_request_options, Optional[models.InsightsAgentsRequestOptions] + request = models.InsightsRequestRequest( + locale=locale, + insights_request=models.InsightsRequest( + overview_request=utils.get_pydantic_model( + overview_request, Optional[models.InsightsOverviewRequest] + ), + assistant_request=utils.get_pydantic_model( + assistant_request, Optional[models.InsightsAssistantRequest] + ), + agents_request=utils.get_pydantic_model( + agents_request, Optional[models.AgentsInsightsV2Request] + ), + mcp_request=utils.get_pydantic_model( + mcp_request, Optional[models.McpInsightsRequest] + ), + mcp_breakdown_request=utils.get_pydantic_model( + mcp_breakdown_request, Optional[models.McpBreakdownInsightsRequest] + ), + disable_per_user_insights=disable_per_user_insights, ), - assistant_activity_types=assistant_activity_types, ) req = self._build_request( @@ -117,8 +107,9 @@ def retrieve( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.InsightsRequest + request.insights_request, False, False, "json", models.InsightsRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -141,7 +132,7 @@ def retrieve( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -159,6 +150,7 @@ def retrieve( async def retrieve_async( self, *, + locale: Optional[str] = None, overview_request: Optional[ Union[ models.InsightsOverviewRequest, models.InsightsOverviewRequestTypedDict @@ -175,23 +167,16 @@ async def retrieve_async( models.AgentsInsightsV2Request, models.AgentsInsightsV2RequestTypedDict ] ] = None, - disable_per_user_insights: Optional[bool] = None, - categories: Optional[List[models.InsightsRequestCategory]] = None, - departments: Optional[List[str]] = None, - day_range: Optional[Union[models.Period, models.PeriodTypedDict]] = None, - ai_app_request_options: Optional[ - Union[ - models.InsightsAiAppRequestOptions, - models.InsightsAiAppRequestOptionsTypedDict, - ] + mcp_request: Optional[ + Union[models.McpInsightsRequest, models.McpInsightsRequestTypedDict] ] = None, - agents_request_options: Optional[ + mcp_breakdown_request: Optional[ Union[ - models.InsightsAgentsRequestOptions, - models.InsightsAgentsRequestOptionsTypedDict, + models.McpBreakdownInsightsRequest, + models.McpBreakdownInsightsRequestTypedDict, ] ] = None, - assistant_activity_types: Optional[List[models.AssistantActivityType]] = None, + disable_per_user_insights: Optional[bool] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -201,16 +186,13 @@ async def retrieve_async( Gets the aggregate usage insights data displayed in the Insights Dashboards. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param overview_request: :param assistant_request: :param agents_request: + :param mcp_request: + :param mcp_breakdown_request: :param disable_per_user_insights: If true, suppresses the generation of per-user Insights in the response. Default is false. - :param categories: Categories of data requested. Request can include single or multiple types. - :param departments: Departments that the data is requested for. If this is empty, corresponds to whole company. - :param day_range: - :param ai_app_request_options: - :param agents_request_options: - :param assistant_activity_types: Types of activity that should count in the definition of an Assistant Active User. Affects only insights for AI category. :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 @@ -226,27 +208,26 @@ async def retrieve_async( else: base_url = self._get_url(base_url, url_variables) - request = models.InsightsRequest( - overview_request=utils.get_pydantic_model( - overview_request, Optional[models.InsightsOverviewRequest] - ), - assistant_request=utils.get_pydantic_model( - assistant_request, Optional[models.InsightsAssistantRequest] - ), - agents_request=utils.get_pydantic_model( - agents_request, Optional[models.AgentsInsightsV2Request] - ), - disable_per_user_insights=disable_per_user_insights, - categories=categories, - departments=departments, - day_range=utils.get_pydantic_model(day_range, Optional[models.Period]), - ai_app_request_options=utils.get_pydantic_model( - ai_app_request_options, Optional[models.InsightsAiAppRequestOptions] - ), - agents_request_options=utils.get_pydantic_model( - agents_request_options, Optional[models.InsightsAgentsRequestOptions] + request = models.InsightsRequestRequest( + locale=locale, + insights_request=models.InsightsRequest( + overview_request=utils.get_pydantic_model( + overview_request, Optional[models.InsightsOverviewRequest] + ), + assistant_request=utils.get_pydantic_model( + assistant_request, Optional[models.InsightsAssistantRequest] + ), + agents_request=utils.get_pydantic_model( + agents_request, Optional[models.AgentsInsightsV2Request] + ), + mcp_request=utils.get_pydantic_model( + mcp_request, Optional[models.McpInsightsRequest] + ), + mcp_breakdown_request=utils.get_pydantic_model( + mcp_breakdown_request, Optional[models.McpBreakdownInsightsRequest] + ), + disable_per_user_insights=disable_per_user_insights, ), - assistant_activity_types=assistant_activity_types, ) req = self._build_request_async( @@ -263,8 +244,9 @@ async def retrieve_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.InsightsRequest + request.insights_request, False, False, "json", models.InsightsRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -287,7 +269,7 @@ async def retrieve_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/messages.py b/src/glean/api_client/messages.py index 574ea7f3..fd580d9a 100644 --- a/src/glean/api_client/messages.py +++ b/src/glean/api_client/messages.py @@ -16,6 +16,7 @@ def retrieve( id_type: models.IDType, id: str, datasource: models.Datasource, + locale: Optional[str] = None, workspace_id: Optional[str] = None, direction: Optional[models.Direction] = None, timestamp_millis: Optional[int] = None, @@ -33,6 +34,7 @@ def retrieve( :param id_type: Type of the id in the incoming request. :param id: ID corresponding to the requested idType. Note that channel and threads are represented by the underlying datasource's ID and conversations are represented by their document's ID. :param datasource: The type of the data source. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param workspace_id: Id for the for the workspace in case of multiple workspaces. :param direction: The direction of the results asked with respect to the reference timestamp. Missing field defaults to OLDER. Only applicable when using a message_id. :param timestamp_millis: Timestamp in millis of the reference message. Only applicable when using a message_id. @@ -53,15 +55,18 @@ def retrieve( else: base_url = self._get_url(base_url, url_variables) - request = models.MessagesRequest( - id_type=id_type, - id=id, - workspace_id=workspace_id, - direction=direction, - timestamp_millis=timestamp_millis, - include_root_message=include_root_message, - datasource=datasource, - datasource_instance_display_name=datasource_instance_display_name, + request = models.MessagesRequestRequest( + locale=locale, + messages_request=models.MessagesRequest( + id_type=id_type, + id=id, + workspace_id=workspace_id, + direction=direction, + timestamp_millis=timestamp_millis, + include_root_message=include_root_message, + datasource=datasource, + datasource_instance_display_name=datasource_instance_display_name, + ), ) req = self._build_request( @@ -78,8 +83,9 @@ def retrieve( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.MessagesRequest + request.messages_request, False, False, "json", models.MessagesRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -102,7 +108,7 @@ def retrieve( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -123,6 +129,7 @@ async def retrieve_async( id_type: models.IDType, id: str, datasource: models.Datasource, + locale: Optional[str] = None, workspace_id: Optional[str] = None, direction: Optional[models.Direction] = None, timestamp_millis: Optional[int] = None, @@ -140,6 +147,7 @@ async def retrieve_async( :param id_type: Type of the id in the incoming request. :param id: ID corresponding to the requested idType. Note that channel and threads are represented by the underlying datasource's ID and conversations are represented by their document's ID. :param datasource: The type of the data source. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param workspace_id: Id for the for the workspace in case of multiple workspaces. :param direction: The direction of the results asked with respect to the reference timestamp. Missing field defaults to OLDER. Only applicable when using a message_id. :param timestamp_millis: Timestamp in millis of the reference message. Only applicable when using a message_id. @@ -160,15 +168,18 @@ async def retrieve_async( else: base_url = self._get_url(base_url, url_variables) - request = models.MessagesRequest( - id_type=id_type, - id=id, - workspace_id=workspace_id, - direction=direction, - timestamp_millis=timestamp_millis, - include_root_message=include_root_message, - datasource=datasource, - datasource_instance_display_name=datasource_instance_display_name, + request = models.MessagesRequestRequest( + locale=locale, + messages_request=models.MessagesRequest( + id_type=id_type, + id=id, + workspace_id=workspace_id, + direction=direction, + timestamp_millis=timestamp_millis, + include_root_message=include_root_message, + datasource=datasource, + datasource_instance_display_name=datasource_instance_display_name, + ), ) req = self._build_request_async( @@ -185,8 +196,9 @@ async def retrieve_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.MessagesRequest + request.messages_request, False, False, "json", models.MessagesRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -209,7 +221,7 @@ async def retrieve_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/models/__init__.py b/src/glean/api_client/models/__init__.py index 0174e068..10111171 100644 --- a/src/glean/api_client/models/__init__.py +++ b/src/glean/api_client/models/__init__.py @@ -1,7 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from .answer import Answer, AnswerSourceType, AnswerTypedDict -from .answerboard import AnswerBoard, AnswerBoardTypedDict from .answerlike import AnswerLike, AnswerLikeTypedDict from .answerlikes import AnswerLikes, AnswerLikesTypedDict from .calendarattendee import ( @@ -67,12 +66,21 @@ from .userrolespecification import UserRoleSpecification, UserRoleSpecificationTypedDict from .verification import State, Verification, VerificationTypedDict from .verificationmetadata import VerificationMetadata, VerificationMetadataTypedDict -from typing import TYPE_CHECKING -from importlib import import_module -import builtins -import sys +from typing import Any, TYPE_CHECKING + +from glean.api_client.utils.dynamic_imports import lazy_getattr, lazy_dir if TYPE_CHECKING: + from .actionauthtype import ActionAuthType + from .actionpackauthstatus import ( + ActionPackAuthStatus, + ActionPackAuthStatusTypedDict, + ) + from .actionpackauthstatusresponse import ( + ActionPackAuthStatusResponse, + ActionPackAuthStatusResponseTypedDict, + ) + from .actionsummary import ActionSummary, ActionSummaryTypedDict from .activity import Activity, ActivityTypedDict from .activityevent import ( ActivityEvent, @@ -85,6 +93,10 @@ AddCollectionItemsErrorErrorType, AddCollectionItemsErrorTypedDict, ) + from .addcollectionitemsop import ( + AddcollectionitemsRequestRequest, + AddcollectionitemsRequestRequestTypedDict, + ) from .addcollectionitemsrequest import ( AddCollectionItemsRequest, AddCollectionItemsRequestTypedDict, @@ -99,6 +111,11 @@ Value, ValueTypedDict, ) + from .addverificationreminderop import ( + AddverificationreminderRequest, + AddverificationreminderRequestTypedDict, + ) + from .adminsearchop import AdminsearchRequest, AdminsearchRequestTypedDict from .agent import ( Agent, AgentCapabilities, @@ -131,17 +148,16 @@ AgentsInsightsV2Response, AgentsInsightsV2ResponseTypedDict, ) + from .agentstimesavedinsight import ( + AgentsTimeSavedInsight, + AgentsTimeSavedInsightTypedDict, + ) from .agentsusagebydepartmentinsight import ( AgentsUsageByDepartmentInsight, AgentsUsageByDepartmentInsightTypedDict, ) + from .agentusecaseinsight import AgentUseCaseInsight, AgentUseCaseInsightTypedDict from .agentusersinsight import AgentUsersInsight, AgentUsersInsightTypedDict - from .aiappactioncounts import AiAppActionCounts, AiAppActionCountsTypedDict - from .aiappsinsightsresponse import ( - AiAppsInsightsResponse, - AiAppsInsightsResponseTypedDict, - ) - from .aiinsightsresponse import AiInsightsResponse, AiInsightsResponseTypedDict from .allowlistoptions import AllowlistOptions, AllowlistOptionsTypedDict from .announcement import ( Announcement, @@ -173,8 +189,26 @@ AuthConfigType, AuthConfigTypedDict, GrantType, + TokenEndpointAuthMethod, + ) + from .authorizeactionpackop import ( + AuthorizeActionPackRequestRequest, + AuthorizeActionPackRequestRequestTypedDict, + ) + from .authorizeactionpackrequest import ( + AuthorizeActionPackRequest, + AuthorizeActionPackRequestTypedDict, + ) + from .authorizeactionpackresponse import ( + AuthorizeActionPackResponse, + AuthorizeActionPackResponseTypedDict, ) + from .authstatus import AuthStatus from .authtoken import AuthToken, AuthTokenTypedDict + from .autocompleteop import ( + AutocompleteRequestRequest, + AutocompleteRequestRequestTypedDict, + ) from .autocompleterequest import ( AutocompleteRequest, AutocompleteRequestResultType, @@ -260,6 +294,10 @@ ChatZeroStateSuggestionOptions, ChatZeroStateSuggestionOptionsTypedDict, ) + from .checkdatasourceauthresponse import ( + CheckDatasourceAuthResponse, + CheckDatasourceAuthResponseTypedDict, + ) from .checkdocumentaccessrequest import ( CheckDocumentAccessRequest, CheckDocumentAccessRequestTypedDict, @@ -299,26 +337,33 @@ ConferenceDataTypedDict, Provider, ) + from .configurationvalue import ConfigurationValue, ConfigurationValueTypedDict from .connectortype import ConnectorType from .contentdefinition import ContentDefinition, ContentDefinitionTypedDict - from .contentinsightsresponse import ( - ContentInsightsResponse, - ContentInsightsResponseTypedDict, - ) from .contenttype import ContentType from .countinfo import CountInfo, CountInfoTypedDict + from .createannouncementop import ( + CreateannouncementRequestRequest, + CreateannouncementRequestRequestTypedDict, + ) from .createannouncementrequest import ( CreateAnnouncementRequest, CreateAnnouncementRequestChannel, CreateAnnouncementRequestPostType, CreateAnnouncementRequestTypedDict, ) + from .createanswerop import ( + CreateanswerRequestRequest, + CreateanswerRequestRequestTypedDict, + ) from .createanswerrequest import CreateAnswerRequest, CreateAnswerRequestTypedDict from .createauthtokenresponse import ( CreateAuthTokenResponse, CreateAuthTokenResponseTypedDict, ) from .createcollectionop import ( + CreatecollectionRequestRequest, + CreatecollectionRequestRequestTypedDict, CreatecollectionResponse, CreatecollectionResponseTypedDict, ResponseBody1, @@ -338,6 +383,10 @@ CreateDlpReportResponse, CreateDlpReportResponseTypedDict, ) + from .createshortcutop import ( + CreateshortcutRequestRequest, + CreateshortcutRequestRequestTypedDict, + ) from .createshortcutrequest import ( CreateShortcutRequest, CreateShortcutRequestTypedDict, @@ -365,15 +414,51 @@ CustomFieldValueHyperlinkTypedDict, ) from .customfieldvaluestr import CustomFieldValueStr, CustomFieldValueStrTypedDict + from .custommetadatapropertydefinition import ( + CustomMetadataPropertyDefinition, + CustomMetadataPropertyDefinitionPropertyType, + CustomMetadataPropertyDefinitionTypedDict, + ) + from .custommetadataputrequest import ( + CustomMetadataPutRequest, + CustomMetadataPutRequestTypedDict, + ) + from .custommetadataschema import ( + CustomMetadataSchema, + CustomMetadataSchemaTypedDict, + ) from .customproperty import CustomProperty, CustomPropertyTypedDict + from .customsensitiveexpression import ( + CustomSensitiveExpression, + CustomSensitiveExpressionTypedDict, + ) + from .customsensitiverule import ( + CustomSensitiveRule, + CustomSensitiveRuleLikelihoodThreshold, + CustomSensitiveRuleTypedDict, + ) + from .customsensitiveruletype import CustomSensitiveRuleType from .datasourcebulkmembershipdefinition import ( DatasourceBulkMembershipDefinition, DatasourceBulkMembershipDefinitionTypedDict, ) + from .datasourceconfigurationresponse import ( + DatasourceConfigurationResponse, + DatasourceConfigurationResponseTypedDict, + ) + from .datasourcecredentialstatus import DatasourceCredentialStatus + from .datasourcecredentialstatusresponse import ( + DatasourceCredentialStatusResponse, + DatasourceCredentialStatusResponseTypedDict, + ) from .datasourcegroupdefinition import ( DatasourceGroupDefinition, DatasourceGroupDefinitionTypedDict, ) + from .datasourceinstanceconfiguration import ( + DatasourceInstanceConfiguration, + DatasourceInstanceConfigurationTypedDict, + ) from .datasourcemembershipdefinition import ( DatasourceMembershipDefinition, DatasourceMembershipDefinitionTypedDict, @@ -404,6 +489,14 @@ Identity, IdentityTypedDict, ) + from .debugdocumentlifecyclerequest import ( + DebugDocumentLifecycleRequest, + DebugDocumentLifecycleRequestTypedDict, + ) + from .debugdocumentlifecycleresponse import ( + DebugDocumentLifecycleResponse, + DebugDocumentLifecycleResponseTypedDict, + ) from .debugdocumentrequest import ( DebugDocumentRequest, DebugDocumentRequestTypedDict, @@ -426,11 +519,29 @@ ) from .debuguserrequest import DebugUserRequest, DebugUserRequestTypedDict from .debuguserresponse import DebugUserResponse, DebugUserResponseTypedDict + from .delete_rest_api_index_custom_metadata_schema_groupname_op import ( + DELETE_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS, + DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequest, + DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict, + ) + from .delete_rest_api_index_document_docid_custom_metadata_groupname_op import ( + DELETE_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS, + DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest, + DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequestTypedDict, + ) from .deleteallchatsop import DeleteallchatsRequest, DeleteallchatsRequestTypedDict + from .deleteannouncementop import ( + DeleteannouncementRequestRequest, + DeleteannouncementRequestRequestTypedDict, + ) from .deleteannouncementrequest import ( DeleteAnnouncementRequest, DeleteAnnouncementRequestTypedDict, ) + from .deleteanswerop import ( + DeleteanswerRequestRequest, + DeleteanswerRequestRequestTypedDict, + ) from .deleteanswerrequest import DeleteAnswerRequest, DeleteAnswerRequestTypedDict from .deletechatfilesop import ( DeletechatfilesRequestRequest, @@ -445,6 +556,10 @@ DeletechatsRequestRequestTypedDict, ) from .deletechatsrequest import DeleteChatsRequest, DeleteChatsRequestTypedDict + from .deletecollectionitemop import ( + DeletecollectionitemRequestRequest, + DeletecollectionitemRequestRequestTypedDict, + ) from .deletecollectionitemrequest import ( DeleteCollectionItemRequest, DeleteCollectionItemRequestTypedDict, @@ -453,6 +568,10 @@ DeleteCollectionItemResponse, DeleteCollectionItemResponseTypedDict, ) + from .deletecollectionop import ( + DeletecollectionRequestRequest, + DeletecollectionRequestRequestTypedDict, + ) from .deletecollectionrequest import ( DeleteCollectionRequest, DeleteCollectionRequestTypedDict, @@ -465,11 +584,19 @@ DeleteEmployeeRequest, DeleteEmployeeRequestTypedDict, ) + from .deletefindingsexportop import ( + DeletefindingsexportRequest, + DeletefindingsexportRequestTypedDict, + ) from .deletegrouprequest import DeleteGroupRequest, DeleteGroupRequestTypedDict from .deletemembershiprequest import ( DeleteMembershipRequest, DeleteMembershipRequestTypedDict, ) + from .deleteshortcutop import ( + DeleteshortcutRequestRequest, + DeleteshortcutRequestRequestTypedDict, + ) from .deleteshortcutrequest import ( DeleteShortcutRequest, DeleteShortcutRequestTypedDict, @@ -485,15 +612,24 @@ DisplayableListItemUIConfigTypedDict, ) from .dlpconfig import DlpConfig, DlpConfigTypedDict + from .dlpexportfindingsrequest import ( + DlpExportFindingsRequest, + DlpExportFindingsRequestExportType, + DlpExportFindingsRequestTypedDict, + FieldScope, + ) + from .dlpfindingfilter import DlpFindingFilter, DlpFindingFilterTypedDict from .dlpfrequency import DlpFrequency + from .dlpissuefilter import DlpIssueFilter, DlpIssueFilterTypedDict + from .dlpissuestatus import DlpIssueStatus from .dlpperson import DlpPerson, DlpPersonTypedDict from .dlppersonmetadata import DlpPersonMetadata, DlpPersonMetadataTypedDict from .dlpreport import DlpReport, DlpReportTypedDict, LastScanStatus from .dlpreportstatus import DlpReportStatus + from .dlpseverity import DlpSeverity from .dlpsimpleresult import DlpSimpleResult from .documentcontent import DocumentContent, DocumentContentTypedDict from .documentdefinition import DocumentDefinition, DocumentDefinitionTypedDict - from .documentinsight import DocumentInsight, DocumentInsightTypedDict from .documentinteractionsdefinition import ( DocumentInteractionsDefinition, DocumentInteractionsDefinitionTypedDict, @@ -538,6 +674,10 @@ DocumentVisibilityUpdateResultOverride, DocumentVisibilityUpdateResultTypedDict, ) + from .downloadfindingsexportop import ( + DownloadfindingsexportRequest, + DownloadfindingsexportRequestTypedDict, + ) from .downloadpolicycsvop import ( DownloadpolicycsvRequest, DownloadpolicycsvRequestTypedDict, @@ -546,11 +686,20 @@ DownloadreportcsvRequest, DownloadreportcsvRequestTypedDict, ) + from .editagentop import EditAgentRequest, EditAgentRequestTypedDict + from .editanswerop import ( + EditanswerRequestRequest, + EditanswerRequestRequestTypedDict, + ) from .editanswerrequest import ( EditAnswerRequest, EditAnswerRequestSourceType, EditAnswerRequestTypedDict, ) + from .editcollectionitemop import ( + EditcollectionitemRequestRequest, + EditcollectionitemRequestRequestTypedDict, + ) from .editcollectionitemrequest import ( EditCollectionItemRequest, EditCollectionItemRequestTypedDict, @@ -559,6 +708,10 @@ EditCollectionItemResponse, EditCollectionItemResponseTypedDict, ) + from .editcollectionop import ( + EditcollectionRequestRequest, + EditcollectionRequestRequestTypedDict, + ) from .editcollectionrequest import ( EditCollectionRequest, EditCollectionRequestTypedDict, @@ -568,7 +721,9 @@ EditCollectionResponseErrorCode, EditCollectionResponseTypedDict, ) + from .editpinop import EditpinRequestRequest, EditpinRequestRequestTypedDict from .editpinrequest import EditPinRequest, EditPinRequestTypedDict + from .editworkflowrequest import EditWorkflowRequest, EditWorkflowRequestTypedDict from .employeeinfodefinition import ( EmployeeInfoDefinition, EmployeeInfoDefinitionTypedDict, @@ -581,6 +736,12 @@ from .eventclassification import EventClassification, EventClassificationTypedDict from .eventclassificationname import EventClassificationName from .eventstrategyname import EventStrategyName + from .exportinfo import ( + ExportInfo, + ExportInfoExportType, + ExportInfoStatus, + ExportInfoTypedDict, + ) from .externalsharingoptions import ( ExternalSharingOptions, ExternalSharingOptionsTypedDict, @@ -599,10 +760,10 @@ from .facetvalue import FacetValue, FacetValueTypedDict from .favoriteinfo import FavoriteInfo, FavoriteInfoTypedDict from .feedback import ( - Event, Feedback, FeedbackCategory, FeedbackChannel, + FeedbackEvent, FeedbackTypedDict, ) from .feedbackchatexchange import ( @@ -620,6 +781,7 @@ UIConfig, UIConfigTypedDict, ) + from .feedop import FeedRequestRequest, FeedRequestRequestTypedDict from .feedrequest import FeedRequest, FeedRequestCategory, FeedRequestTypedDict from .feedrequestoptions import ( CategoryToResultSize, @@ -635,10 +797,19 @@ GeneratedAttachmentContent, GeneratedAttachmentContentTypedDict, ) + from .get_rest_api_index_custom_metadata_schema_groupname_op import ( + GET_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS, + GetRestAPIIndexCustomMetadataSchemaGroupNameRequest, + GetRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict, + ) from .get_rest_api_v1_tools_listop import ( GetRestAPIV1ToolsListRequest, GetRestAPIV1ToolsListRequestTypedDict, ) + from .getactionpackauthstatusop import ( + GetActionPackAuthStatusRequest, + GetActionPackAuthStatusRequestTypedDict, + ) from .getagentop import GetAgentRequest, GetAgentRequestTypedDict from .getagentschemasop import ( GetAgentSchemasRequest, @@ -649,6 +820,7 @@ GetAnswerErrorErrorType, GetAnswerErrorTypedDict, ) + from .getanswerop import GetanswerRequestRequest, GetanswerRequestRequestTypedDict from .getanswerrequest import GetAnswerRequest, GetAnswerRequestTypedDict from .getanswerresponse import GetAnswerResponse, GetAnswerResponseTypedDict from .getchatapplicationop import ( @@ -663,6 +835,7 @@ GetChatApplicationResponse, GetChatApplicationResponseTypedDict, ) + from .getchatfileop import GetChatFileRequest, GetChatFileRequestTypedDict from .getchatfilesop import ( GetchatfilesRequestRequest, GetchatfilesRequestRequestTypedDict, @@ -675,6 +848,10 @@ from .getchatop import GetchatRequestRequest, GetchatRequestRequestTypedDict from .getchatrequest import GetChatRequest, GetChatRequestTypedDict from .getchatresponse import GetChatResponse, GetChatResponseTypedDict + from .getcollectionop import ( + GetcollectionRequestRequest, + GetcollectionRequestRequestTypedDict, + ) from .getcollectionrequest import ( GetCollectionRequest, GetCollectionRequestTypedDict, @@ -687,10 +864,22 @@ GetDatasourceConfigRequest, GetDatasourceConfigRequestTypedDict, ) + from .getdatasourcecredentialstatusop import ( + GetDatasourceCredentialStatusRequest, + GetDatasourceCredentialStatusRequestTypedDict, + ) + from .getdatasourceinstanceconfigurationop import ( + GetDatasourceInstanceConfigurationRequest, + GetDatasourceInstanceConfigurationRequestTypedDict, + ) from .getdlpreportresponse import ( GetDlpReportResponse, GetDlpReportResponseTypedDict, ) + from .getdocpermissionsop import ( + GetdocpermissionsRequestRequest, + GetdocpermissionsRequestRequestTypedDict, + ) from .getdocpermissionsrequest import ( GetDocPermissionsRequest, GetDocPermissionsRequestTypedDict, @@ -707,6 +896,10 @@ GetDocumentCountResponse, GetDocumentCountResponseTypedDict, ) + from .getdocumentsbyfacetsop import ( + GetdocumentsbyfacetsRequestRequest, + GetdocumentsbyfacetsRequestRequestTypedDict, + ) from .getdocumentsbyfacetsrequest import ( GetDocumentsByFacetsRequest, GetDocumentsByFacetsRequestTypedDict, @@ -715,6 +908,10 @@ GetDocumentsByFacetsResponse, GetDocumentsByFacetsResponseTypedDict, ) + from .getdocumentsop import ( + GetdocumentsRequestRequest, + GetdocumentsRequestRequestTypedDict, + ) from .getdocumentsrequest import ( GetDocumentsRequest, GetDocumentsRequestIncludeField, @@ -740,6 +937,15 @@ GetdocvisibilityRequest, GetdocvisibilityRequestTypedDict, ) + from .getpersonphotoop import ( + GetPersonPhotoRequest, + GetPersonPhotoRequestTypedDict, + GetPersonPhotoResponse, + GetPersonPhotoResponseResult, + GetPersonPhotoResponseResultTypedDict, + GetPersonPhotoResponseTypedDict, + ) + from .getpinop import GetpinRequestRequest, GetpinRequestRequestTypedDict from .getpinrequest import GetPinRequest, GetPinRequestTypedDict from .getpinresponse import GetPinResponse, GetPinResponseTypedDict from .getpolicyop import GetpolicyRequest, GetpolicyRequestTypedDict @@ -747,11 +953,15 @@ GetreportstatusRequest, GetreportstatusRequestTypedDict, ) - from .getshortcutrequest_union import ( + from .getshortcutop import ( + GetshortcutRequestRequest, + GetshortcutRequestRequestTypedDict, + ) + from .getshortcutrequest import ( GetShortcutRequest, + GetShortcutRequest1, + GetShortcutRequest1TypedDict, GetShortcutRequestTypedDict, - GetShortcutRequestUnion, - GetShortcutRequestUnionTypedDict, ) from .getshortcutresponse import GetShortcutResponse, GetShortcutResponseTypedDict from .getusercountrequest import GetUserCountRequest, GetUserCountRequestTypedDict @@ -798,22 +1008,15 @@ from .inputoptions import ( DatasourcesType, InputOptions, + InputOptionsTimePeriodType, InputOptionsTypedDict, - TimePeriodType, - ) - from .insightsagentsrequestoptions import ( - InsightsAgentsRequestOptions, - InsightsAgentsRequestOptionsTypedDict, - ) - from .insightsaiapprequestoptions import ( - InsightsAiAppRequestOptions, - InsightsAiAppRequestOptionsTypedDict, ) from .insightsassistantrequest import ( InsightsAssistantRequest, InsightsAssistantRequestTypedDict, ) from .insightschatsummary import InsightsChatSummary, InsightsChatSummaryTypedDict + from .insightsop import InsightsRequestRequest, InsightsRequestRequestTypedDict from .insightsoverviewrequest import ( InsightsOverviewRequest, InsightsOverviewRequestTypedDict, @@ -822,12 +1025,7 @@ InsightsOverviewResponse, InsightsOverviewResponseTypedDict, ) - from .insightsrequest import ( - AssistantActivityType, - InsightsRequest, - InsightsRequestCategory, - InsightsRequestTypedDict, - ) + from .insightsrequest import InsightsRequest, InsightsRequestTypedDict from .insightsresponse import InsightsResponse, InsightsResponseTypedDict from .insightssearchsummary import ( InsightsSearchSummary, @@ -838,10 +1036,23 @@ InvalidOperatorValueErrorTypedDict, ) from .labeledcountinfo import LabeledCountInfo, LabeledCountInfoTypedDict + from .lifecycleevent import ( + LifeCycleEvent, + LifeCycleEventEvent, + LifeCycleEventTypedDict, + ) + from .listanswersop import ( + ListanswersRequestRequest, + ListanswersRequestRequestTypedDict, + ) from .listanswersrequest import ListAnswersRequest, ListAnswersRequestTypedDict from .listanswersresponse import ListAnswersResponse, ListAnswersResponseTypedDict from .listchatsop import ListchatsRequest, ListchatsRequestTypedDict from .listchatsresponse import ListChatsResponse, ListChatsResponseTypedDict + from .listcollectionsop import ( + ListcollectionsRequestRequest, + ListcollectionsRequestRequestTypedDict, + ) from .listcollectionsrequest import ( ListCollectionsRequest, ListCollectionsRequestTypedDict, @@ -850,10 +1061,18 @@ ListCollectionsResponse, ListCollectionsResponseTypedDict, ) + from .listdlpfindingsexportsresponse import ( + ListDlpFindingsExportsResponse, + ListDlpFindingsExportsResponseTypedDict, + ) from .listdlpreportsresponse import ( ListDlpReportsResponse, ListDlpReportsResponseTypedDict, ) + from .listentitiesop import ( + ListentitiesRequestRequest, + ListentitiesRequestRequestTypedDict, + ) from .listentitiesrequest import ( ListEntitiesRequest, ListEntitiesRequestEntityType, @@ -865,9 +1084,15 @@ ListEntitiesResponse, ListEntitiesResponseTypedDict, ) - from .listpinsop import ListpinsRequest, ListpinsRequestTypedDict + from .listpinsop import ( + ListpinsRequest, + ListpinsRequestBody, + ListpinsRequestBodyTypedDict, + ListpinsRequestTypedDict, + ) from .listpinsresponse import ListPinsResponse, ListPinsResponseTypedDict from .listpoliciesop import ListpoliciesRequest, ListpoliciesRequestTypedDict + from .listshortcutsop import ListshortcutsRequest, ListshortcutsRequestTypedDict from .listshortcutspaginatedrequest import ( ListShortcutsPaginatedRequest, ListShortcutsPaginatedRequestIncludeField, @@ -894,12 +1119,31 @@ ManualFeedbackSideBySideInfoTypedDict, ManualFeedbackSideBySideInfoVote, ) + from .mcpbreakdowninsightsrequest import ( + BreakdownType, + McpBreakdownInsightsRequest, + McpBreakdownInsightsRequestTypedDict, + ) + from .mcpbreakdowninsightsresponse import ( + McpBreakdownInsightsResponse, + McpBreakdownInsightsResponseTypedDict, + ) + from .mcphostapplicationbreakdown import ( + McpHostApplicationBreakdown, + McpHostApplicationBreakdownTypedDict, + ) + from .mcpinsightsrequest import McpInsightsRequest, McpInsightsRequestTypedDict + from .mcpinsightsresponse import McpInsightsResponse, McpInsightsResponseTypedDict + from .mcpserverbreakdown import McpServerBreakdown, McpServerBreakdownTypedDict + from .mcptoolbreakdown import McpToolBreakdown, McpToolBreakdownTypedDict + from .mcpuserbreakdown import McpUserBreakdown, McpUserBreakdownTypedDict from .message import ( Message, MessageTextBlock, MessageTextBlockTypedDict, MessageTypedDict, ) + from .messagesop import MessagesRequestRequest, MessagesRequestRequestTypedDict from .messagesrequest import ( Datasource, Direction, @@ -920,6 +1164,7 @@ OperatorType, ) from .operatorscope import OperatorScope, OperatorScopeTypedDict + from .peopleop import PeopleRequestRequest, PeopleRequestRequestTypedDict from .peoplerequest import ( IncludeType, PeopleRequest, @@ -942,8 +1187,13 @@ PerUserAssistantInsightTypedDict, ) from .peruserinsight import PerUserInsight, PerUserInsightTypedDict + from .pinop import PinRequestRequest, PinRequestRequestTypedDict from .pinrequest import PinRequest, PinRequestTypedDict from .possiblevalue import PossibleValue, PossibleValueTypedDict + from .post_api_index_v1_debug_datasource_document_eventsop import ( + PostAPIIndexV1DebugDatasourceDocumentEventsRequest, + PostAPIIndexV1DebugDatasourceDocumentEventsRequestTypedDict, + ) from .post_api_index_v1_debug_datasource_documentop import ( PostAPIIndexV1DebugDatasourceDocumentRequest, PostAPIIndexV1DebugDatasourceDocumentRequestTypedDict, @@ -979,18 +1229,27 @@ ) from .propertydefinition import ( PropertyDefinition, + PropertyDefinitionPropertyType, PropertyDefinitionTypedDict, - PropertyType, UIOptions, ) from .propertygroup import PropertyGroup, PropertyGroupTypedDict - from .queryinsight import QueryInsight, QueryInsightTypedDict - from .queryinsightsresponse import ( - QueryInsightsResponse, - QueryInsightsResponseTypedDict, + from .put_rest_api_index_custom_metadata_schema_groupname_op import ( + PUT_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS, + PutRestAPIIndexCustomMetadataSchemaGroupNameRequest, + PutRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict, + ) + from .put_rest_api_index_document_docid_custom_metadata_groupname_op import ( + PUT_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS, + PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest, + PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequestTypedDict, ) from .quicklink import Quicklink, QuicklinkTypedDict, Scope from .readpermission import ReadPermission, ReadPermissionTypedDict + from .recommendationsop import ( + RecommendationsRequestRequest, + RecommendationsRequestRequestTypedDict, + ) from .recommendationsrequest import ( RecommendationsRequest, RecommendationsRequestTypedDict, @@ -1017,6 +1276,14 @@ from .resultsdescription import ResultsDescription, ResultsDescriptionTypedDict from .resultsresponse import ResultsResponse, ResultsResponseTypedDict from .resulttab import ResultTab, ResultTabTypedDict + from .rotatedatasourcecredentialsop import ( + RotateDatasourceCredentialsRequestRequest, + RotateDatasourceCredentialsRequestRequestTypedDict, + ) + from .rotatedatasourcecredentialsrequest import ( + RotateDatasourceCredentialsRequest, + RotateDatasourceCredentialsRequestTypedDict, + ) from .rotatetokenresponse import RotateTokenResponse, RotateTokenResponseTypedDict from .scopetype import ScopeType from .searchagentsrequest import SearchAgentsRequest, SearchAgentsRequestTypedDict @@ -1024,6 +1291,7 @@ SearchAgentsResponse, SearchAgentsResponseTypedDict, ) + from .searchop import SearchRequestRequest, SearchRequestRequestTypedDict from .searchproviderinfo import SearchProviderInfo, SearchProviderInfoTypedDict from .searchrequest import SearchRequest, SearchRequestTypedDict from .searchrequestinputdetails import ( @@ -1051,8 +1319,8 @@ ) from .sensitiveexpression import SensitiveExpression, SensitiveExpressionTypedDict from .sensitiveinfotype import ( - LikelihoodThreshold, SensitiveInfoType, + SensitiveInfoTypeLikelihoodThreshold, SensitiveInfoTypeTypedDict, ) from .sessioninfo import SessionInfo, SessionInfoTypedDict @@ -1062,11 +1330,6 @@ ShortcutErrorErrorType, ShortcutErrorTypedDict, ) - from .shortcutinsight import ShortcutInsight, ShortcutInsightTypedDict - from .shortcutinsightsresponse import ( - ShortcutInsightsResponse, - ShortcutInsightsResponseTypedDict, - ) from .shortcutmutableproperties import ( ShortcutMutableProperties, ShortcutMutablePropertiesTypedDict, @@ -1093,6 +1356,8 @@ StructuredTextMutableProperties, StructuredTextMutablePropertiesTypedDict, ) + from .successresponse import SuccessResponse, SuccessResponseTypedDict + from .summarizeop import SummarizeRequestRequest, SummarizeRequestRequestTypedDict from .summarizerequest import SummarizeRequest, SummarizeRequestTypedDict from .summarizeresponse import ( Error, @@ -1108,6 +1373,11 @@ from .timeinterval import TimeInterval, TimeIntervalTypedDict from .timepoint import TimePoint, TimePointTypedDict from .timerange import TimeRange, TimeRangeTypedDict + from .timerangefilter import ( + TimeRangeFilter, + TimeRangeFilterTimePeriodType, + TimeRangeFilterTypedDict, + ) from .tool import Tool, ToolType, ToolTypedDict from .toolinfo import ToolInfo, ToolInfoTypedDict from .toolmetadata import ( @@ -1125,13 +1395,30 @@ from .toolsets import ToolSets, ToolSetsTypedDict from .toolslistresponse import ToolsListResponse, ToolsListResponseTypedDict from .ugctype import UgcType + from .unauthorizeddatasourceinstance import ( + UnauthorizedDatasourceInstance, + UnauthorizedDatasourceInstanceTypedDict, + ) from .unpin import Unpin, UnpinTypedDict + from .unpinop import UnpinRequest, UnpinRequestTypedDict + from .updateannouncementop import ( + UpdateannouncementRequestRequest, + UpdateannouncementRequestRequestTypedDict, + ) from .updateannouncementrequest import ( UpdateAnnouncementRequest, UpdateAnnouncementRequestChannel, UpdateAnnouncementRequestPostType, UpdateAnnouncementRequestTypedDict, ) + from .updatedatasourceconfigurationrequest import ( + UpdateDatasourceConfigurationRequest, + UpdateDatasourceConfigurationRequestTypedDict, + ) + from .updatedatasourceinstanceconfigurationop import ( + UpdateDatasourceInstanceConfigurationRequest, + UpdateDatasourceInstanceConfigurationRequestTypedDict, + ) from .updatedlpconfigrequest import ( UpdateDlpConfigRequest, UpdateDlpConfigRequestTypedDict, @@ -1161,6 +1448,10 @@ UpdatePermissionsRequestTypedDict, ) from .updatepolicyop import UpdatepolicyRequest, UpdatepolicyRequestTypedDict + from .updateshortcutop import ( + UpdateshortcutRequestRequest, + UpdateshortcutRequestRequestTypedDict, + ) from .updateshortcutrequest import ( UpdateShortcutRequest, UpdateShortcutRequestTypedDict, @@ -1200,10 +1491,6 @@ UserGeneratedContentID, UserGeneratedContentIDTypedDict, ) - from .userinsightsresponse import ( - UserInsightsResponse, - UserInsightsResponseTypedDict, - ) from .userreferencedefinition import ( UserReferenceDefinition, UserReferenceDefinitionTypedDict, @@ -1212,6 +1499,7 @@ from .userstatusresponse import UserStatusResponse, UserStatusResponseTypedDict from .userviewinfo import UserViewInfo, UserViewInfoTypedDict from .verificationfeed import VerificationFeed, VerificationFeedTypedDict + from .verifyop import VerifyRequestRequest, VerifyRequestRequestTypedDict from .verifyrequest import ( VerifyRequest, VerifyRequestAction, @@ -1257,7 +1545,6 @@ UserRoleSpecification.model_rebuild() Code.model_rebuild() CodeLine.model_rebuild() -AnswerBoard.model_rebuild() Collection.model_rebuild() CollectionItem.model_rebuild() Meeting.model_rebuild() @@ -1283,6 +1570,13 @@ __all__ = [ + "ActionAuthType", + "ActionPackAuthStatus", + "ActionPackAuthStatusResponse", + "ActionPackAuthStatusResponseTypedDict", + "ActionPackAuthStatusTypedDict", + "ActionSummary", + "ActionSummaryTypedDict", "Activity", "ActivityEnum", "ActivityEvent", @@ -1298,8 +1592,14 @@ "AddCollectionItemsRequestTypedDict", "AddCollectionItemsResponse", "AddCollectionItemsResponseTypedDict", + "AddcollectionitemsRequestRequest", + "AddcollectionitemsRequestRequestTypedDict", "AdditionalFieldDefinition", "AdditionalFieldDefinitionTypedDict", + "AddverificationreminderRequest", + "AddverificationreminderRequestTypedDict", + "AdminsearchRequest", + "AdminsearchRequestTypedDict", "Agent", "AgentCapabilities", "AgentCapabilitiesTypedDict", @@ -1318,20 +1618,18 @@ "AgentSchemas", "AgentSchemasTypedDict", "AgentTypedDict", + "AgentUseCaseInsight", + "AgentUseCaseInsightTypedDict", "AgentUsersInsight", "AgentUsersInsightTypedDict", "AgentsInsightsV2Request", "AgentsInsightsV2RequestTypedDict", "AgentsInsightsV2Response", "AgentsInsightsV2ResponseTypedDict", + "AgentsTimeSavedInsight", + "AgentsTimeSavedInsightTypedDict", "AgentsUsageByDepartmentInsight", "AgentsUsageByDepartmentInsightTypedDict", - "AiAppActionCounts", - "AiAppActionCountsTypedDict", - "AiAppsInsightsResponse", - "AiAppsInsightsResponseTypedDict", - "AiInsightsResponse", - "AiInsightsResponseTypedDict", "AllowlistOptions", "AllowlistOptionsTypedDict", "Announcement", @@ -1344,8 +1642,6 @@ "AnonymousEventEventType", "AnonymousEventTypedDict", "Answer", - "AnswerBoard", - "AnswerBoardTypedDict", "AnswerCreationData", "AnswerCreationDataSourceType", "AnswerCreationDataTypedDict", @@ -1359,18 +1655,26 @@ "AnswerTypedDict", "AppResult", "AppResultTypedDict", - "AssistantActivityType", "AssistantInsightsResponse", "AssistantInsightsResponseTypedDict", "AuthConfig", "AuthConfigStatus", "AuthConfigType", "AuthConfigTypedDict", + "AuthStatus", "AuthToken", "AuthTokenTypedDict", "AuthType", "Author", + "AuthorizeActionPackRequest", + "AuthorizeActionPackRequestRequest", + "AuthorizeActionPackRequestRequestTypedDict", + "AuthorizeActionPackRequestTypedDict", + "AuthorizeActionPackResponse", + "AuthorizeActionPackResponseTypedDict", "AutocompleteRequest", + "AutocompleteRequestRequest", + "AutocompleteRequestRequestTypedDict", "AutocompleteRequestResultType", "AutocompleteRequestTypedDict", "AutocompleteResponse", @@ -1382,6 +1686,7 @@ "AutocompleteResultTypedDict", "Badge", "BadgeTypedDict", + "BreakdownType", "BulkIndexDocumentsRequest", "BulkIndexDocumentsRequestTypedDict", "BulkIndexEmployeesRequest", @@ -1446,6 +1751,8 @@ "ChatTypedDict", "ChatZeroStateSuggestionOptions", "ChatZeroStateSuggestionOptionsTypedDict", + "CheckDatasourceAuthResponse", + "CheckDatasourceAuthResponseTypedDict", "CheckDocumentAccessRequest", "CheckDocumentAccessRequestTypedDict", "CheckDocumentAccessResponse", @@ -1484,11 +1791,11 @@ "ConferenceData", "ConferenceDataSource", "ConferenceDataTypedDict", + "ConfigurationValue", + "ConfigurationValueTypedDict", "ConnectorType", "ContentDefinition", "ContentDefinitionTypedDict", - "ContentInsightsResponse", - "ContentInsightsResponseTypedDict", "ContentType", "CountInfo", "CountInfoTypedDict", @@ -1510,8 +1817,16 @@ "CreateShortcutRequestTypedDict", "CreateShortcutResponse", "CreateShortcutResponseTypedDict", + "CreateannouncementRequestRequest", + "CreateannouncementRequestRequestTypedDict", + "CreateanswerRequestRequest", + "CreateanswerRequestRequestTypedDict", + "CreatecollectionRequestRequest", + "CreatecollectionRequestRequestTypedDict", "CreatecollectionResponse", "CreatecollectionResponseTypedDict", + "CreateshortcutRequestRequest", + "CreateshortcutRequestRequestTypedDict", "CurrentActiveUsers", "CurrentActiveUsersTypedDict", "CustomDataValue", @@ -1533,18 +1848,40 @@ "CustomFieldValueStr", "CustomFieldValueStrTypedDict", "CustomFieldValueTypedDict", + "CustomMetadataPropertyDefinition", + "CustomMetadataPropertyDefinitionPropertyType", + "CustomMetadataPropertyDefinitionTypedDict", + "CustomMetadataPutRequest", + "CustomMetadataPutRequestTypedDict", + "CustomMetadataSchema", + "CustomMetadataSchemaTypedDict", "CustomProperty", "CustomPropertyTypedDict", + "CustomSensitiveExpression", + "CustomSensitiveExpressionTypedDict", + "CustomSensitiveRule", + "CustomSensitiveRuleLikelihoodThreshold", + "CustomSensitiveRuleType", + "CustomSensitiveRuleTypedDict", "Customer", "CustomerMetadata", "CustomerMetadataTypedDict", "CustomerTypedDict", + "DELETE_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS", + "DELETE_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS", "Datasource", "DatasourceBulkMembershipDefinition", "DatasourceBulkMembershipDefinitionTypedDict", "DatasourceCategory", + "DatasourceConfigurationResponse", + "DatasourceConfigurationResponseTypedDict", + "DatasourceCredentialStatus", + "DatasourceCredentialStatusResponse", + "DatasourceCredentialStatusResponseTypedDict", "DatasourceGroupDefinition", "DatasourceGroupDefinitionTypedDict", + "DatasourceInstanceConfiguration", + "DatasourceInstanceConfigurationTypedDict", "DatasourceMembershipDefinition", "DatasourceMembershipDefinitionTypedDict", "DatasourceObjectTypeDocumentCountEntry", @@ -1563,6 +1900,10 @@ "DebugDatasourceStatusResponseCounts", "DebugDatasourceStatusResponseCountsTypedDict", "DebugDatasourceStatusResponseTypedDict", + "DebugDocumentLifecycleRequest", + "DebugDocumentLifecycleRequestTypedDict", + "DebugDocumentLifecycleResponse", + "DebugDocumentLifecycleResponseTypedDict", "DebugDocumentRequest", "DebugDocumentRequestTypedDict", "DebugDocumentResponse", @@ -1599,6 +1940,10 @@ "DeleteGroupRequestTypedDict", "DeleteMembershipRequest", "DeleteMembershipRequestTypedDict", + "DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequest", + "DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict", + "DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest", + "DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequestTypedDict", "DeleteShortcutRequest", "DeleteShortcutRequestTypedDict", "DeleteTeamRequest", @@ -1607,10 +1952,22 @@ "DeleteUserRequestTypedDict", "DeleteallchatsRequest", "DeleteallchatsRequestTypedDict", + "DeleteannouncementRequestRequest", + "DeleteannouncementRequestRequestTypedDict", + "DeleteanswerRequestRequest", + "DeleteanswerRequestRequestTypedDict", "DeletechatfilesRequestRequest", "DeletechatfilesRequestRequestTypedDict", "DeletechatsRequestRequest", "DeletechatsRequestRequestTypedDict", + "DeletecollectionRequestRequest", + "DeletecollectionRequestRequestTypedDict", + "DeletecollectionitemRequestRequest", + "DeletecollectionitemRequestRequestTypedDict", + "DeletefindingsexportRequest", + "DeletefindingsexportRequestTypedDict", + "DeleteshortcutRequestRequest", + "DeleteshortcutRequestRequestTypedDict", "Digest", "DigestSection", "DigestSectionTypedDict", @@ -1624,7 +1981,15 @@ "DisplayableListItemUIConfigTypedDict", "DlpConfig", "DlpConfigTypedDict", + "DlpExportFindingsRequest", + "DlpExportFindingsRequestExportType", + "DlpExportFindingsRequestTypedDict", + "DlpFindingFilter", + "DlpFindingFilterTypedDict", "DlpFrequency", + "DlpIssueFilter", + "DlpIssueFilterTypedDict", + "DlpIssueStatus", "DlpPerson", "DlpPersonMetadata", "DlpPersonMetadataTypedDict", @@ -1632,6 +1997,7 @@ "DlpReport", "DlpReportStatus", "DlpReportTypedDict", + "DlpSeverity", "DlpSimpleResult", "DocCategory", "Document", @@ -1639,8 +2005,6 @@ "DocumentContentTypedDict", "DocumentDefinition", "DocumentDefinitionTypedDict", - "DocumentInsight", - "DocumentInsightTypedDict", "DocumentInteractions", "DocumentInteractionsDefinition", "DocumentInteractionsDefinitionTypedDict", @@ -1679,10 +2043,14 @@ "DocumentVisibilityUpdateResultTypedDict", "Documents", "DocumentsTypedDict", + "DownloadfindingsexportRequest", + "DownloadfindingsexportRequestTypedDict", "DownloadpolicycsvRequest", "DownloadpolicycsvRequestTypedDict", "DownloadreportcsvRequest", "DownloadreportcsvRequestTypedDict", + "EditAgentRequest", + "EditAgentRequestTypedDict", "EditAnswerRequest", "EditAnswerRequestSourceType", "EditAnswerRequestTypedDict", @@ -1697,6 +2065,16 @@ "EditCollectionResponseTypedDict", "EditPinRequest", "EditPinRequestTypedDict", + "EditWorkflowRequest", + "EditWorkflowRequestTypedDict", + "EditanswerRequestRequest", + "EditanswerRequestRequestTypedDict", + "EditcollectionRequestRequest", + "EditcollectionRequestRequestTypedDict", + "EditcollectionitemRequestRequest", + "EditcollectionitemRequestRequestTypedDict", + "EditpinRequestRequest", + "EditpinRequestRequestTypedDict", "EmployeeInfoDefinition", "EmployeeInfoDefinitionTypedDict", "EmployeeTeamInfo", @@ -1709,11 +2087,14 @@ "ErrorMessage", "ErrorMessageTypedDict", "ErrorTypedDict", - "Event", "EventClassification", "EventClassificationName", "EventClassificationTypedDict", "EventStrategyName", + "ExportInfo", + "ExportInfoExportType", + "ExportInfoStatus", + "ExportInfoTypedDict", "ExternalSharingOptions", "ExternalSharingOptionsTypedDict", "ExternalShortcut", @@ -1742,6 +2123,8 @@ "FeedRequestCategory", "FeedRequestOptions", "FeedRequestOptionsTypedDict", + "FeedRequestRequest", + "FeedRequestRequestTypedDict", "FeedRequestTypedDict", "FeedResponse", "FeedResponseTypedDict", @@ -1753,14 +2136,17 @@ "FeedbackChannel", "FeedbackChatExchange", "FeedbackChatExchangeTypedDict", + "FeedbackEvent", "FeedbackRequest", "FeedbackRequestTypedDict", "FeedbackTypedDict", + "FieldScope", "File", "FileTypedDict", "FollowupAction", "FollowupActionTypedDict", "Format", + "GET_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS", "GeneratedAttachment", "GeneratedAttachmentContent", "GeneratedAttachmentContentTypedDict", @@ -1768,6 +2154,8 @@ "GeneratedQna", "GeneratedQnaStatus", "GeneratedQnaTypedDict", + "GetActionPackAuthStatusRequest", + "GetActionPackAuthStatusRequestTypedDict", "GetAgentRequest", "GetAgentRequestTypedDict", "GetAgentSchemasRequest", @@ -1783,6 +2171,8 @@ "GetChatApplicationRequestTypedDict", "GetChatApplicationResponse", "GetChatApplicationResponseTypedDict", + "GetChatFileRequest", + "GetChatFileRequestTypedDict", "GetChatFilesRequest", "GetChatFilesRequestTypedDict", "GetChatFilesResponse", @@ -1797,6 +2187,10 @@ "GetCollectionResponseTypedDict", "GetDatasourceConfigRequest", "GetDatasourceConfigRequestTypedDict", + "GetDatasourceCredentialStatusRequest", + "GetDatasourceCredentialStatusRequestTypedDict", + "GetDatasourceInstanceConfigurationRequest", + "GetDatasourceInstanceConfigurationRequestTypedDict", "GetDlpReportResponse", "GetDlpReportResponseTypedDict", "GetDocPermissionsRequest", @@ -1822,34 +2216,56 @@ "GetDocumentsRequestTypedDict", "GetDocumentsResponse", "GetDocumentsResponseTypedDict", + "GetPersonPhotoRequest", + "GetPersonPhotoRequestTypedDict", + "GetPersonPhotoResponse", + "GetPersonPhotoResponseResult", + "GetPersonPhotoResponseResultTypedDict", + "GetPersonPhotoResponseTypedDict", "GetPinRequest", "GetPinRequestTypedDict", "GetPinResponse", "GetPinResponseTypedDict", + "GetRestAPIIndexCustomMetadataSchemaGroupNameRequest", + "GetRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict", "GetRestAPIV1ToolsListRequest", "GetRestAPIV1ToolsListRequestTypedDict", "GetShortcutRequest", + "GetShortcutRequest1", + "GetShortcutRequest1TypedDict", "GetShortcutRequestTypedDict", - "GetShortcutRequestUnion", - "GetShortcutRequestUnionTypedDict", "GetShortcutResponse", "GetShortcutResponseTypedDict", "GetUserCountRequest", "GetUserCountRequestTypedDict", "GetUserCountResponse", "GetUserCountResponseTypedDict", + "GetanswerRequestRequest", + "GetanswerRequestRequestTypedDict", "GetchatRequestRequest", "GetchatRequestRequestTypedDict", "GetchatapplicationRequestRequest", "GetchatapplicationRequestRequestTypedDict", "GetchatfilesRequestRequest", "GetchatfilesRequestRequestTypedDict", + "GetcollectionRequestRequest", + "GetcollectionRequestRequestTypedDict", + "GetdocpermissionsRequestRequest", + "GetdocpermissionsRequestRequestTypedDict", + "GetdocumentsRequestRequest", + "GetdocumentsRequestRequestTypedDict", + "GetdocumentsbyfacetsRequestRequest", + "GetdocumentsbyfacetsRequestRequestTypedDict", "GetdocvisibilityRequest", "GetdocvisibilityRequestTypedDict", + "GetpinRequestRequest", + "GetpinRequestRequestTypedDict", "GetpolicyRequest", "GetpolicyRequestTypedDict", "GetreportstatusRequest", "GetreportstatusRequestTypedDict", + "GetshortcutRequestRequest", + "GetshortcutRequestRequestTypedDict", "GleanAssistInsightsResponse", "GleanAssistInsightsResponseTypedDict", "GleanDataError", @@ -1893,13 +2309,10 @@ "IndexingShortcut", "IndexingShortcutTypedDict", "InputOptions", + "InputOptionsTimePeriodType", "InputOptionsTypedDict", "InputSchema", "InputSchemaTypedDict", - "InsightsAgentsRequestOptions", - "InsightsAgentsRequestOptionsTypedDict", - "InsightsAiAppRequestOptions", - "InsightsAiAppRequestOptionsTypedDict", "InsightsAssistantRequest", "InsightsAssistantRequestTypedDict", "InsightsChatSummary", @@ -1909,7 +2322,8 @@ "InsightsOverviewResponse", "InsightsOverviewResponseTypedDict", "InsightsRequest", - "InsightsRequestCategory", + "InsightsRequestRequest", + "InsightsRequestRequestTypedDict", "InsightsRequestTypedDict", "InsightsResponse", "InsightsResponseTypedDict", @@ -1925,7 +2339,9 @@ "LabeledCountInfo", "LabeledCountInfoTypedDict", "LastScanStatus", - "LikelihoodThreshold", + "LifeCycleEvent", + "LifeCycleEventEvent", + "LifeCycleEventTypedDict", "ListAnswersRequest", "ListAnswersRequestTypedDict", "ListAnswersResponse", @@ -1936,6 +2352,8 @@ "ListCollectionsRequestTypedDict", "ListCollectionsResponse", "ListCollectionsResponseTypedDict", + "ListDlpFindingsExportsResponse", + "ListDlpFindingsExportsResponseTypedDict", "ListDlpReportsResponse", "ListDlpReportsResponseTypedDict", "ListEntitiesRequest", @@ -1951,12 +2369,22 @@ "ListShortcutsPaginatedRequestTypedDict", "ListShortcutsPaginatedResponse", "ListShortcutsPaginatedResponseTypedDict", + "ListanswersRequestRequest", + "ListanswersRequestRequestTypedDict", "ListchatsRequest", "ListchatsRequestTypedDict", + "ListcollectionsRequestRequest", + "ListcollectionsRequestRequestTypedDict", + "ListentitiesRequestRequest", + "ListentitiesRequestRequestTypedDict", "ListpinsRequest", + "ListpinsRequestBody", + "ListpinsRequestBodyTypedDict", "ListpinsRequestTypedDict", "ListpoliciesRequest", "ListpoliciesRequestTypedDict", + "ListshortcutsRequest", + "ListshortcutsRequestTypedDict", "ListverificationsRequest", "ListverificationsRequestTypedDict", "ManualFeedbackInfo", @@ -1967,6 +2395,22 @@ "ManualFeedbackSideBySideInfoSource", "ManualFeedbackSideBySideInfoTypedDict", "ManualFeedbackSideBySideInfoVote", + "McpBreakdownInsightsRequest", + "McpBreakdownInsightsRequestTypedDict", + "McpBreakdownInsightsResponse", + "McpBreakdownInsightsResponseTypedDict", + "McpHostApplicationBreakdown", + "McpHostApplicationBreakdownTypedDict", + "McpInsightsRequest", + "McpInsightsRequestTypedDict", + "McpInsightsResponse", + "McpInsightsResponseTypedDict", + "McpServerBreakdown", + "McpServerBreakdownTypedDict", + "McpToolBreakdown", + "McpToolBreakdownTypedDict", + "McpUserBreakdown", + "McpUserBreakdownTypedDict", "Meeting", "MeetingTypedDict", "Message", @@ -1975,6 +2419,8 @@ "MessageType", "MessageTypedDict", "MessagesRequest", + "MessagesRequestRequest", + "MessagesRequestRequestTypedDict", "MessagesRequestTypedDict", "MessagesResponse", "MessagesResponseTypedDict", @@ -1991,8 +2437,12 @@ "OrderBy", "OutputSchema", "OutputSchemaTypedDict", + "PUT_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS", + "PUT_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS", "PeopleRequest", "PeopleRequestIncludeField", + "PeopleRequestRequest", + "PeopleRequestRequestTypedDict", "PeopleRequestTypedDict", "PeopleResponse", "PeopleResponseTypedDict", @@ -2026,9 +2476,13 @@ "PinDocument", "PinDocumentTypedDict", "PinRequest", + "PinRequestRequest", + "PinRequestRequestTypedDict", "PinRequestTypedDict", "PossibleValue", "PossibleValueTypedDict", + "PostAPIIndexV1DebugDatasourceDocumentEventsRequest", + "PostAPIIndexV1DebugDatasourceDocumentEventsRequestTypedDict", "PostAPIIndexV1DebugDatasourceDocumentRequest", "PostAPIIndexV1DebugDatasourceDocumentRequestTypedDict", "PostAPIIndexV1DebugDatasourceDocumentsRequest", @@ -2050,15 +2504,15 @@ "PromptTemplateResultTypedDict", "PromptTemplateTypedDict", "PropertyDefinition", + "PropertyDefinitionPropertyType", "PropertyDefinitionTypedDict", "PropertyGroup", "PropertyGroupTypedDict", - "PropertyType", "Provider", - "QueryInsight", - "QueryInsightTypedDict", - "QueryInsightsResponse", - "QueryInsightsResponseTypedDict", + "PutRestAPIIndexCustomMetadataSchemaGroupNameRequest", + "PutRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict", + "PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest", + "PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequestTypedDict", "QuerySuggestion", "QuerySuggestionList", "QuerySuggestionListTypedDict", @@ -2072,6 +2526,8 @@ "RecommendationsRequest", "RecommendationsRequestOptions", "RecommendationsRequestOptionsTypedDict", + "RecommendationsRequestRequest", + "RecommendationsRequestRequestTypedDict", "RecommendationsRequestTypedDict", "ReferenceRange", "ReferenceRangeTypedDict", @@ -2114,6 +2570,10 @@ "ResultsResponse", "ResultsResponseTypedDict", "Role", + "RotateDatasourceCredentialsRequest", + "RotateDatasourceCredentialsRequestRequest", + "RotateDatasourceCredentialsRequestRequestTypedDict", + "RotateDatasourceCredentialsRequestTypedDict", "RotateTokenResponse", "RotateTokenResponseTypedDict", "Scope", @@ -2129,6 +2589,8 @@ "SearchRequestInputDetailsTypedDict", "SearchRequestOptions", "SearchRequestOptionsTypedDict", + "SearchRequestRequest", + "SearchRequestRequestTypedDict", "SearchRequestTypedDict", "SearchResponse", "SearchResponseMetadata", @@ -2151,6 +2613,7 @@ "SensitiveExpression", "SensitiveExpressionTypedDict", "SensitiveInfoType", + "SensitiveInfoTypeLikelihoodThreshold", "SensitiveInfoTypeTypedDict", "SessionInfo", "SessionInfoTypedDict", @@ -2162,10 +2625,6 @@ "ShortcutError", "ShortcutErrorErrorType", "ShortcutErrorTypedDict", - "ShortcutInsight", - "ShortcutInsightTypedDict", - "ShortcutInsightsResponse", - "ShortcutInsightsResponseTypedDict", "ShortcutMutableProperties", "ShortcutMutablePropertiesTypedDict", "ShortcutTypedDict", @@ -2193,7 +2652,11 @@ "StructuredTextMutableProperties", "StructuredTextMutablePropertiesTypedDict", "StructuredTextTypedDict", + "SuccessResponse", + "SuccessResponseTypedDict", "SummarizeRequest", + "SummarizeRequestRequest", + "SummarizeRequestRequestTypedDict", "SummarizeRequestTypedDict", "SummarizeResponse", "SummarizeResponseTypedDict", @@ -2215,11 +2678,14 @@ "ThumbnailTypedDict", "TimeInterval", "TimeIntervalTypedDict", - "TimePeriodType", "TimePoint", "TimePointTypedDict", "TimeRange", + "TimeRangeFilter", + "TimeRangeFilterTimePeriodType", + "TimeRangeFilterTypedDict", "TimeRangeTypedDict", + "TokenEndpointAuthMethod", "Tool", "ToolInfo", "ToolInfoTypedDict", @@ -2245,12 +2711,20 @@ "UIConfigTypedDict", "UIOptions", "UgcType", + "UnauthorizedDatasourceInstance", + "UnauthorizedDatasourceInstanceTypedDict", "Unpin", + "UnpinRequest", + "UnpinRequestTypedDict", "UnpinTypedDict", "UpdateAnnouncementRequest", "UpdateAnnouncementRequestChannel", "UpdateAnnouncementRequestPostType", "UpdateAnnouncementRequestTypedDict", + "UpdateDatasourceConfigurationRequest", + "UpdateDatasourceConfigurationRequestTypedDict", + "UpdateDatasourceInstanceConfigurationRequest", + "UpdateDatasourceInstanceConfigurationRequestTypedDict", "UpdateDlpConfigRequest", "UpdateDlpConfigRequestTypedDict", "UpdateDlpConfigResponse", @@ -2270,8 +2744,12 @@ "UpdateShortcutResponse", "UpdateShortcutResponseTypedDict", "UpdateType", + "UpdateannouncementRequestRequest", + "UpdateannouncementRequestRequestTypedDict", "UpdatepolicyRequest", "UpdatepolicyRequestTypedDict", + "UpdateshortcutRequestRequest", + "UpdateshortcutRequestRequestTypedDict", "UploadChatFilesRequest", "UploadChatFilesRequestTypedDict", "UploadChatFilesResponse", @@ -2289,8 +2767,6 @@ "UserActivityTypedDict", "UserGeneratedContentID", "UserGeneratedContentIDTypedDict", - "UserInsightsResponse", - "UserInsightsResponseTypedDict", "UserReferenceDefinition", "UserReferenceDefinitionTypedDict", "UserRole", @@ -2311,6 +2787,8 @@ "VerificationTypedDict", "VerifyRequest", "VerifyRequestAction", + "VerifyRequestRequest", + "VerifyRequestRequestTypedDict", "VerifyRequestTypedDict", "ViewerInfo", "ViewerInfoTypedDict", @@ -2331,6 +2809,13 @@ ] _dynamic_imports: dict[str, str] = { + "ActionAuthType": ".actionauthtype", + "ActionPackAuthStatus": ".actionpackauthstatus", + "ActionPackAuthStatusTypedDict": ".actionpackauthstatus", + "ActionPackAuthStatusResponse": ".actionpackauthstatusresponse", + "ActionPackAuthStatusResponseTypedDict": ".actionpackauthstatusresponse", + "ActionSummary": ".actionsummary", + "ActionSummaryTypedDict": ".actionsummary", "Activity": ".activity", "ActivityTypedDict": ".activity", "ActivityEvent": ".activityevent", @@ -2341,6 +2826,8 @@ "AddCollectionItemsError": ".addcollectionitemserror", "AddCollectionItemsErrorErrorType": ".addcollectionitemserror", "AddCollectionItemsErrorTypedDict": ".addcollectionitemserror", + "AddcollectionitemsRequestRequest": ".addcollectionitemsop", + "AddcollectionitemsRequestRequestTypedDict": ".addcollectionitemsop", "AddCollectionItemsRequest": ".addcollectionitemsrequest", "AddCollectionItemsRequestTypedDict": ".addcollectionitemsrequest", "AddCollectionItemsResponse": ".addcollectionitemsresponse", @@ -2349,6 +2836,10 @@ "AdditionalFieldDefinitionTypedDict": ".additionalfielddefinition", "Value": ".additionalfielddefinition", "ValueTypedDict": ".additionalfielddefinition", + "AddverificationreminderRequest": ".addverificationreminderop", + "AddverificationreminderRequestTypedDict": ".addverificationreminderop", + "AdminsearchRequest": ".adminsearchop", + "AdminsearchRequestTypedDict": ".adminsearchop", "Agent": ".agent", "AgentCapabilities": ".agent", "AgentCapabilitiesTypedDict": ".agent", @@ -2376,16 +2867,14 @@ "AgentsInsightsV2RequestTypedDict": ".agentsinsightsv2request", "AgentsInsightsV2Response": ".agentsinsightsv2response", "AgentsInsightsV2ResponseTypedDict": ".agentsinsightsv2response", + "AgentsTimeSavedInsight": ".agentstimesavedinsight", + "AgentsTimeSavedInsightTypedDict": ".agentstimesavedinsight", "AgentsUsageByDepartmentInsight": ".agentsusagebydepartmentinsight", "AgentsUsageByDepartmentInsightTypedDict": ".agentsusagebydepartmentinsight", + "AgentUseCaseInsight": ".agentusecaseinsight", + "AgentUseCaseInsightTypedDict": ".agentusecaseinsight", "AgentUsersInsight": ".agentusersinsight", "AgentUsersInsightTypedDict": ".agentusersinsight", - "AiAppActionCounts": ".aiappactioncounts", - "AiAppActionCountsTypedDict": ".aiappactioncounts", - "AiAppsInsightsResponse": ".aiappsinsightsresponse", - "AiAppsInsightsResponseTypedDict": ".aiappsinsightsresponse", - "AiInsightsResponse": ".aiinsightsresponse", - "AiInsightsResponseTypedDict": ".aiinsightsresponse", "AllowlistOptions": ".allowlistoptions", "AllowlistOptionsTypedDict": ".allowlistoptions", "Announcement": ".announcement", @@ -2411,8 +2900,18 @@ "AuthConfigType": ".authconfig", "AuthConfigTypedDict": ".authconfig", "GrantType": ".authconfig", + "TokenEndpointAuthMethod": ".authconfig", + "AuthorizeActionPackRequestRequest": ".authorizeactionpackop", + "AuthorizeActionPackRequestRequestTypedDict": ".authorizeactionpackop", + "AuthorizeActionPackRequest": ".authorizeactionpackrequest", + "AuthorizeActionPackRequestTypedDict": ".authorizeactionpackrequest", + "AuthorizeActionPackResponse": ".authorizeactionpackresponse", + "AuthorizeActionPackResponseTypedDict": ".authorizeactionpackresponse", + "AuthStatus": ".authstatus", "AuthToken": ".authtoken", "AuthTokenTypedDict": ".authtoken", + "AutocompleteRequestRequest": ".autocompleteop", + "AutocompleteRequestRequestTypedDict": ".autocompleteop", "AutocompleteRequest": ".autocompleterequest", "AutocompleteRequestResultType": ".autocompleterequest", "AutocompleteRequestTypedDict": ".autocompleterequest", @@ -2482,6 +2981,8 @@ "ChatSuggestionTypedDict": ".chatsuggestion", "ChatZeroStateSuggestionOptions": ".chatzerostatesuggestionoptions", "ChatZeroStateSuggestionOptionsTypedDict": ".chatzerostatesuggestionoptions", + "CheckDatasourceAuthResponse": ".checkdatasourceauthresponse", + "CheckDatasourceAuthResponseTypedDict": ".checkdatasourceauthresponse", "CheckDocumentAccessRequest": ".checkdocumentaccessrequest", "CheckDocumentAccessRequestTypedDict": ".checkdocumentaccessrequest", "CheckDocumentAccessResponse": ".checkdocumentaccessresponse", @@ -2510,22 +3011,28 @@ "ConferenceDataSource": ".conferencedata", "ConferenceDataTypedDict": ".conferencedata", "Provider": ".conferencedata", + "ConfigurationValue": ".configurationvalue", + "ConfigurationValueTypedDict": ".configurationvalue", "ConnectorType": ".connectortype", "ContentDefinition": ".contentdefinition", "ContentDefinitionTypedDict": ".contentdefinition", - "ContentInsightsResponse": ".contentinsightsresponse", - "ContentInsightsResponseTypedDict": ".contentinsightsresponse", "ContentType": ".contenttype", "CountInfo": ".countinfo", "CountInfoTypedDict": ".countinfo", + "CreateannouncementRequestRequest": ".createannouncementop", + "CreateannouncementRequestRequestTypedDict": ".createannouncementop", "CreateAnnouncementRequest": ".createannouncementrequest", "CreateAnnouncementRequestChannel": ".createannouncementrequest", "CreateAnnouncementRequestPostType": ".createannouncementrequest", "CreateAnnouncementRequestTypedDict": ".createannouncementrequest", + "CreateanswerRequestRequest": ".createanswerop", + "CreateanswerRequestRequestTypedDict": ".createanswerop", "CreateAnswerRequest": ".createanswerrequest", "CreateAnswerRequestTypedDict": ".createanswerrequest", "CreateAuthTokenResponse": ".createauthtokenresponse", "CreateAuthTokenResponseTypedDict": ".createauthtokenresponse", + "CreatecollectionRequestRequest": ".createcollectionop", + "CreatecollectionRequestRequestTypedDict": ".createcollectionop", "CreatecollectionResponse": ".createcollectionop", "CreatecollectionResponseTypedDict": ".createcollectionop", "ResponseBody1": ".createcollectionop", @@ -2538,6 +3045,8 @@ "CreateDlpReportRequestTypedDict": ".createdlpreportrequest", "CreateDlpReportResponse": ".createdlpreportresponse", "CreateDlpReportResponseTypedDict": ".createdlpreportresponse", + "CreateshortcutRequestRequest": ".createshortcutop", + "CreateshortcutRequestRequestTypedDict": ".createshortcutop", "CreateShortcutRequest": ".createshortcutrequest", "CreateShortcutRequestTypedDict": ".createshortcutrequest", "CreateShortcutResponse": ".createshortcutresponse", @@ -2559,12 +3068,32 @@ "CustomFieldValueHyperlinkTypedDict": ".customfieldvaluehyperlink", "CustomFieldValueStr": ".customfieldvaluestr", "CustomFieldValueStrTypedDict": ".customfieldvaluestr", + "CustomMetadataPropertyDefinition": ".custommetadatapropertydefinition", + "CustomMetadataPropertyDefinitionPropertyType": ".custommetadatapropertydefinition", + "CustomMetadataPropertyDefinitionTypedDict": ".custommetadatapropertydefinition", + "CustomMetadataPutRequest": ".custommetadataputrequest", + "CustomMetadataPutRequestTypedDict": ".custommetadataputrequest", + "CustomMetadataSchema": ".custommetadataschema", + "CustomMetadataSchemaTypedDict": ".custommetadataschema", "CustomProperty": ".customproperty", "CustomPropertyTypedDict": ".customproperty", + "CustomSensitiveExpression": ".customsensitiveexpression", + "CustomSensitiveExpressionTypedDict": ".customsensitiveexpression", + "CustomSensitiveRule": ".customsensitiverule", + "CustomSensitiveRuleLikelihoodThreshold": ".customsensitiverule", + "CustomSensitiveRuleTypedDict": ".customsensitiverule", + "CustomSensitiveRuleType": ".customsensitiveruletype", "DatasourceBulkMembershipDefinition": ".datasourcebulkmembershipdefinition", "DatasourceBulkMembershipDefinitionTypedDict": ".datasourcebulkmembershipdefinition", + "DatasourceConfigurationResponse": ".datasourceconfigurationresponse", + "DatasourceConfigurationResponseTypedDict": ".datasourceconfigurationresponse", + "DatasourceCredentialStatus": ".datasourcecredentialstatus", + "DatasourceCredentialStatusResponse": ".datasourcecredentialstatusresponse", + "DatasourceCredentialStatusResponseTypedDict": ".datasourcecredentialstatusresponse", "DatasourceGroupDefinition": ".datasourcegroupdefinition", "DatasourceGroupDefinitionTypedDict": ".datasourcegroupdefinition", + "DatasourceInstanceConfiguration": ".datasourceinstanceconfiguration", + "DatasourceInstanceConfigurationTypedDict": ".datasourceinstanceconfiguration", "DatasourceMembershipDefinition": ".datasourcemembershipdefinition", "DatasourceMembershipDefinitionTypedDict": ".datasourcemembershipdefinition", "DatasourceObjectTypeDocumentCountEntry": ".datasourceobjecttypedocumentcountentry", @@ -2586,6 +3115,10 @@ "DocumentsTypedDict": ".debugdatasourcestatusresponse", "Identity": ".debugdatasourcestatusresponse", "IdentityTypedDict": ".debugdatasourcestatusresponse", + "DebugDocumentLifecycleRequest": ".debugdocumentlifecyclerequest", + "DebugDocumentLifecycleRequestTypedDict": ".debugdocumentlifecyclerequest", + "DebugDocumentLifecycleResponse": ".debugdocumentlifecycleresponse", + "DebugDocumentLifecycleResponseTypedDict": ".debugdocumentlifecycleresponse", "DebugDocumentRequest": ".debugdocumentrequest", "DebugDocumentRequestTypedDict": ".debugdocumentrequest", "DebugDocumentResponse": ".debugdocumentresponse", @@ -2600,10 +3133,20 @@ "DebugUserRequestTypedDict": ".debuguserrequest", "DebugUserResponse": ".debuguserresponse", "DebugUserResponseTypedDict": ".debuguserresponse", + "DELETE_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS": ".delete_rest_api_index_custom_metadata_schema_groupname_op", + "DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequest": ".delete_rest_api_index_custom_metadata_schema_groupname_op", + "DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict": ".delete_rest_api_index_custom_metadata_schema_groupname_op", + "DELETE_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS": ".delete_rest_api_index_document_docid_custom_metadata_groupname_op", + "DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest": ".delete_rest_api_index_document_docid_custom_metadata_groupname_op", + "DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequestTypedDict": ".delete_rest_api_index_document_docid_custom_metadata_groupname_op", "DeleteallchatsRequest": ".deleteallchatsop", "DeleteallchatsRequestTypedDict": ".deleteallchatsop", + "DeleteannouncementRequestRequest": ".deleteannouncementop", + "DeleteannouncementRequestRequestTypedDict": ".deleteannouncementop", "DeleteAnnouncementRequest": ".deleteannouncementrequest", "DeleteAnnouncementRequestTypedDict": ".deleteannouncementrequest", + "DeleteanswerRequestRequest": ".deleteanswerop", + "DeleteanswerRequestRequestTypedDict": ".deleteanswerop", "DeleteAnswerRequest": ".deleteanswerrequest", "DeleteAnswerRequestTypedDict": ".deleteanswerrequest", "DeletechatfilesRequestRequest": ".deletechatfilesop", @@ -2614,20 +3157,28 @@ "DeletechatsRequestRequestTypedDict": ".deletechatsop", "DeleteChatsRequest": ".deletechatsrequest", "DeleteChatsRequestTypedDict": ".deletechatsrequest", + "DeletecollectionitemRequestRequest": ".deletecollectionitemop", + "DeletecollectionitemRequestRequestTypedDict": ".deletecollectionitemop", "DeleteCollectionItemRequest": ".deletecollectionitemrequest", "DeleteCollectionItemRequestTypedDict": ".deletecollectionitemrequest", "DeleteCollectionItemResponse": ".deletecollectionitemresponse", "DeleteCollectionItemResponseTypedDict": ".deletecollectionitemresponse", + "DeletecollectionRequestRequest": ".deletecollectionop", + "DeletecollectionRequestRequestTypedDict": ".deletecollectionop", "DeleteCollectionRequest": ".deletecollectionrequest", "DeleteCollectionRequestTypedDict": ".deletecollectionrequest", "DeleteDocumentRequest": ".deletedocumentrequest", "DeleteDocumentRequestTypedDict": ".deletedocumentrequest", "DeleteEmployeeRequest": ".deleteemployeerequest", "DeleteEmployeeRequestTypedDict": ".deleteemployeerequest", + "DeletefindingsexportRequest": ".deletefindingsexportop", + "DeletefindingsexportRequestTypedDict": ".deletefindingsexportop", "DeleteGroupRequest": ".deletegrouprequest", "DeleteGroupRequestTypedDict": ".deletegrouprequest", "DeleteMembershipRequest": ".deletemembershiprequest", "DeleteMembershipRequestTypedDict": ".deletemembershiprequest", + "DeleteshortcutRequestRequest": ".deleteshortcutop", + "DeleteshortcutRequestRequestTypedDict": ".deleteshortcutop", "DeleteShortcutRequest": ".deleteshortcutrequest", "DeleteShortcutRequestTypedDict": ".deleteshortcutrequest", "DeleteTeamRequest": ".deleteteamrequest", @@ -2646,7 +3197,16 @@ "DisplayableListItemUIConfigTypedDict": ".displayablelistitemuiconfig", "DlpConfig": ".dlpconfig", "DlpConfigTypedDict": ".dlpconfig", + "DlpExportFindingsRequest": ".dlpexportfindingsrequest", + "DlpExportFindingsRequestExportType": ".dlpexportfindingsrequest", + "DlpExportFindingsRequestTypedDict": ".dlpexportfindingsrequest", + "FieldScope": ".dlpexportfindingsrequest", + "DlpFindingFilter": ".dlpfindingfilter", + "DlpFindingFilterTypedDict": ".dlpfindingfilter", "DlpFrequency": ".dlpfrequency", + "DlpIssueFilter": ".dlpissuefilter", + "DlpIssueFilterTypedDict": ".dlpissuefilter", + "DlpIssueStatus": ".dlpissuestatus", "DlpPerson": ".dlpperson", "DlpPersonTypedDict": ".dlpperson", "DlpPersonMetadata": ".dlppersonmetadata", @@ -2655,13 +3215,12 @@ "DlpReportTypedDict": ".dlpreport", "LastScanStatus": ".dlpreport", "DlpReportStatus": ".dlpreportstatus", + "DlpSeverity": ".dlpseverity", "DlpSimpleResult": ".dlpsimpleresult", "DocumentContent": ".documentcontent", "DocumentContentTypedDict": ".documentcontent", "DocumentDefinition": ".documentdefinition", "DocumentDefinitionTypedDict": ".documentdefinition", - "DocumentInsight": ".documentinsight", - "DocumentInsightTypedDict": ".documentinsight", "DocumentInteractionsDefinition": ".documentinteractionsdefinition", "DocumentInteractionsDefinitionTypedDict": ".documentinteractionsdefinition", "DocumentOrError": ".documentorerror_union", @@ -2693,24 +3252,38 @@ "DocumentVisibilityUpdateResult": ".documentvisibilityupdateresult", "DocumentVisibilityUpdateResultOverride": ".documentvisibilityupdateresult", "DocumentVisibilityUpdateResultTypedDict": ".documentvisibilityupdateresult", + "DownloadfindingsexportRequest": ".downloadfindingsexportop", + "DownloadfindingsexportRequestTypedDict": ".downloadfindingsexportop", "DownloadpolicycsvRequest": ".downloadpolicycsvop", "DownloadpolicycsvRequestTypedDict": ".downloadpolicycsvop", "DownloadreportcsvRequest": ".downloadreportcsvop", "DownloadreportcsvRequestTypedDict": ".downloadreportcsvop", + "EditAgentRequest": ".editagentop", + "EditAgentRequestTypedDict": ".editagentop", + "EditanswerRequestRequest": ".editanswerop", + "EditanswerRequestRequestTypedDict": ".editanswerop", "EditAnswerRequest": ".editanswerrequest", "EditAnswerRequestSourceType": ".editanswerrequest", "EditAnswerRequestTypedDict": ".editanswerrequest", + "EditcollectionitemRequestRequest": ".editcollectionitemop", + "EditcollectionitemRequestRequestTypedDict": ".editcollectionitemop", "EditCollectionItemRequest": ".editcollectionitemrequest", "EditCollectionItemRequestTypedDict": ".editcollectionitemrequest", "EditCollectionItemResponse": ".editcollectionitemresponse", "EditCollectionItemResponseTypedDict": ".editcollectionitemresponse", + "EditcollectionRequestRequest": ".editcollectionop", + "EditcollectionRequestRequestTypedDict": ".editcollectionop", "EditCollectionRequest": ".editcollectionrequest", "EditCollectionRequestTypedDict": ".editcollectionrequest", "EditCollectionResponse": ".editcollectionresponse", "EditCollectionResponseErrorCode": ".editcollectionresponse", "EditCollectionResponseTypedDict": ".editcollectionresponse", + "EditpinRequestRequest": ".editpinop", + "EditpinRequestRequestTypedDict": ".editpinop", "EditPinRequest": ".editpinrequest", "EditPinRequestTypedDict": ".editpinrequest", + "EditWorkflowRequest": ".editworkflowrequest", + "EditWorkflowRequestTypedDict": ".editworkflowrequest", "EmployeeInfoDefinition": ".employeeinfodefinition", "EmployeeInfoDefinitionTypedDict": ".employeeinfodefinition", "EmployeeTeamInfo": ".employeeteaminfo", @@ -2725,6 +3298,10 @@ "EventClassificationTypedDict": ".eventclassification", "EventClassificationName": ".eventclassificationname", "EventStrategyName": ".eventstrategyname", + "ExportInfo": ".exportinfo", + "ExportInfoExportType": ".exportinfo", + "ExportInfoStatus": ".exportinfo", + "ExportInfoTypedDict": ".exportinfo", "ExternalSharingOptions": ".externalsharingoptions", "ExternalSharingOptionsTypedDict": ".externalsharingoptions", "ExternalShortcut": ".externalshortcut", @@ -2746,10 +3323,10 @@ "FacetValueTypedDict": ".facetvalue", "FavoriteInfo": ".favoriteinfo", "FavoriteInfoTypedDict": ".favoriteinfo", - "Event": ".feedback", "Feedback": ".feedback", "FeedbackCategory": ".feedback", "FeedbackChannel": ".feedback", + "FeedbackEvent": ".feedback", "FeedbackTypedDict": ".feedback", "FeedbackChatExchange": ".feedbackchatexchange", "FeedbackChatExchangeTypedDict": ".feedbackchatexchange", @@ -2763,6 +3340,8 @@ "JustificationType": ".feedentry", "UIConfig": ".feedentry", "UIConfigTypedDict": ".feedentry", + "FeedRequestRequest": ".feedop", + "FeedRequestRequestTypedDict": ".feedop", "FeedRequest": ".feedrequest", "FeedRequestCategory": ".feedrequest", "FeedRequestTypedDict": ".feedrequest", @@ -2781,8 +3360,13 @@ "GeneratedAttachmentTypedDict": ".generatedattachment", "GeneratedAttachmentContent": ".generatedattachmentcontent", "GeneratedAttachmentContentTypedDict": ".generatedattachmentcontent", + "GET_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS": ".get_rest_api_index_custom_metadata_schema_groupname_op", + "GetRestAPIIndexCustomMetadataSchemaGroupNameRequest": ".get_rest_api_index_custom_metadata_schema_groupname_op", + "GetRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict": ".get_rest_api_index_custom_metadata_schema_groupname_op", "GetRestAPIV1ToolsListRequest": ".get_rest_api_v1_tools_listop", "GetRestAPIV1ToolsListRequestTypedDict": ".get_rest_api_v1_tools_listop", + "GetActionPackAuthStatusRequest": ".getactionpackauthstatusop", + "GetActionPackAuthStatusRequestTypedDict": ".getactionpackauthstatusop", "GetAgentRequest": ".getagentop", "GetAgentRequestTypedDict": ".getagentop", "GetAgentSchemasRequest": ".getagentschemasop", @@ -2790,6 +3374,8 @@ "GetAnswerError": ".getanswererror", "GetAnswerErrorErrorType": ".getanswererror", "GetAnswerErrorTypedDict": ".getanswererror", + "GetanswerRequestRequest": ".getanswerop", + "GetanswerRequestRequestTypedDict": ".getanswerop", "GetAnswerRequest": ".getanswerrequest", "GetAnswerRequestTypedDict": ".getanswerrequest", "GetAnswerResponse": ".getanswerresponse", @@ -2800,6 +3386,8 @@ "GetChatApplicationRequestTypedDict": ".getchatapplicationrequest", "GetChatApplicationResponse": ".getchatapplicationresponse", "GetChatApplicationResponseTypedDict": ".getchatapplicationresponse", + "GetChatFileRequest": ".getchatfileop", + "GetChatFileRequestTypedDict": ".getchatfileop", "GetchatfilesRequestRequest": ".getchatfilesop", "GetchatfilesRequestRequestTypedDict": ".getchatfilesop", "GetChatFilesRequest": ".getchatfilesrequest", @@ -2812,14 +3400,22 @@ "GetChatRequestTypedDict": ".getchatrequest", "GetChatResponse": ".getchatresponse", "GetChatResponseTypedDict": ".getchatresponse", + "GetcollectionRequestRequest": ".getcollectionop", + "GetcollectionRequestRequestTypedDict": ".getcollectionop", "GetCollectionRequest": ".getcollectionrequest", "GetCollectionRequestTypedDict": ".getcollectionrequest", "GetCollectionResponse": ".getcollectionresponse", "GetCollectionResponseTypedDict": ".getcollectionresponse", "GetDatasourceConfigRequest": ".getdatasourceconfigrequest", "GetDatasourceConfigRequestTypedDict": ".getdatasourceconfigrequest", + "GetDatasourceCredentialStatusRequest": ".getdatasourcecredentialstatusop", + "GetDatasourceCredentialStatusRequestTypedDict": ".getdatasourcecredentialstatusop", + "GetDatasourceInstanceConfigurationRequest": ".getdatasourceinstanceconfigurationop", + "GetDatasourceInstanceConfigurationRequestTypedDict": ".getdatasourceinstanceconfigurationop", "GetDlpReportResponse": ".getdlpreportresponse", "GetDlpReportResponseTypedDict": ".getdlpreportresponse", + "GetdocpermissionsRequestRequest": ".getdocpermissionsop", + "GetdocpermissionsRequestRequestTypedDict": ".getdocpermissionsop", "GetDocPermissionsRequest": ".getdocpermissionsrequest", "GetDocPermissionsRequestTypedDict": ".getdocpermissionsrequest", "GetDocPermissionsResponse": ".getdocpermissionsresponse", @@ -2828,10 +3424,14 @@ "GetDocumentCountRequestTypedDict": ".getdocumentcountrequest", "GetDocumentCountResponse": ".getdocumentcountresponse", "GetDocumentCountResponseTypedDict": ".getdocumentcountresponse", + "GetdocumentsbyfacetsRequestRequest": ".getdocumentsbyfacetsop", + "GetdocumentsbyfacetsRequestRequestTypedDict": ".getdocumentsbyfacetsop", "GetDocumentsByFacetsRequest": ".getdocumentsbyfacetsrequest", "GetDocumentsByFacetsRequestTypedDict": ".getdocumentsbyfacetsrequest", "GetDocumentsByFacetsResponse": ".getdocumentsbyfacetsresponse", "GetDocumentsByFacetsResponseTypedDict": ".getdocumentsbyfacetsresponse", + "GetdocumentsRequestRequest": ".getdocumentsop", + "GetdocumentsRequestRequestTypedDict": ".getdocumentsop", "GetDocumentsRequest": ".getdocumentsrequest", "GetDocumentsRequestIncludeField": ".getdocumentsrequest", "GetDocumentsRequestTypedDict": ".getdocumentsrequest", @@ -2845,6 +3445,14 @@ "GetDocumentVisibilityOverridesResponseTypedDict": ".getdocumentvisibilityoverridesresponse", "GetdocvisibilityRequest": ".getdocvisibilityop", "GetdocvisibilityRequestTypedDict": ".getdocvisibilityop", + "GetPersonPhotoRequest": ".getpersonphotoop", + "GetPersonPhotoRequestTypedDict": ".getpersonphotoop", + "GetPersonPhotoResponse": ".getpersonphotoop", + "GetPersonPhotoResponseResult": ".getpersonphotoop", + "GetPersonPhotoResponseResultTypedDict": ".getpersonphotoop", + "GetPersonPhotoResponseTypedDict": ".getpersonphotoop", + "GetpinRequestRequest": ".getpinop", + "GetpinRequestRequestTypedDict": ".getpinop", "GetPinRequest": ".getpinrequest", "GetPinRequestTypedDict": ".getpinrequest", "GetPinResponse": ".getpinresponse", @@ -2853,10 +3461,12 @@ "GetpolicyRequestTypedDict": ".getpolicyop", "GetreportstatusRequest": ".getreportstatusop", "GetreportstatusRequestTypedDict": ".getreportstatusop", - "GetShortcutRequest": ".getshortcutrequest_union", - "GetShortcutRequestTypedDict": ".getshortcutrequest_union", - "GetShortcutRequestUnion": ".getshortcutrequest_union", - "GetShortcutRequestUnionTypedDict": ".getshortcutrequest_union", + "GetshortcutRequestRequest": ".getshortcutop", + "GetshortcutRequestRequestTypedDict": ".getshortcutop", + "GetShortcutRequest": ".getshortcutrequest", + "GetShortcutRequest1": ".getshortcutrequest", + "GetShortcutRequest1TypedDict": ".getshortcutrequest", + "GetShortcutRequestTypedDict": ".getshortcutrequest", "GetShortcutResponse": ".getshortcutresponse", "GetShortcutResponseTypedDict": ".getshortcutresponse", "GetUserCountRequest": ".getusercountrequest", @@ -2901,23 +3511,19 @@ "IndexUserRequestTypedDict": ".indexuserrequest", "DatasourcesType": ".inputoptions", "InputOptions": ".inputoptions", + "InputOptionsTimePeriodType": ".inputoptions", "InputOptionsTypedDict": ".inputoptions", - "TimePeriodType": ".inputoptions", - "InsightsAgentsRequestOptions": ".insightsagentsrequestoptions", - "InsightsAgentsRequestOptionsTypedDict": ".insightsagentsrequestoptions", - "InsightsAiAppRequestOptions": ".insightsaiapprequestoptions", - "InsightsAiAppRequestOptionsTypedDict": ".insightsaiapprequestoptions", "InsightsAssistantRequest": ".insightsassistantrequest", "InsightsAssistantRequestTypedDict": ".insightsassistantrequest", "InsightsChatSummary": ".insightschatsummary", "InsightsChatSummaryTypedDict": ".insightschatsummary", + "InsightsRequestRequest": ".insightsop", + "InsightsRequestRequestTypedDict": ".insightsop", "InsightsOverviewRequest": ".insightsoverviewrequest", "InsightsOverviewRequestTypedDict": ".insightsoverviewrequest", "InsightsOverviewResponse": ".insightsoverviewresponse", "InsightsOverviewResponseTypedDict": ".insightsoverviewresponse", - "AssistantActivityType": ".insightsrequest", "InsightsRequest": ".insightsrequest", - "InsightsRequestCategory": ".insightsrequest", "InsightsRequestTypedDict": ".insightsrequest", "InsightsResponse": ".insightsresponse", "InsightsResponseTypedDict": ".insightsresponse", @@ -2927,6 +3533,11 @@ "InvalidOperatorValueErrorTypedDict": ".invalidoperatorvalueerror", "LabeledCountInfo": ".labeledcountinfo", "LabeledCountInfoTypedDict": ".labeledcountinfo", + "LifeCycleEvent": ".lifecycleevent", + "LifeCycleEventEvent": ".lifecycleevent", + "LifeCycleEventTypedDict": ".lifecycleevent", + "ListanswersRequestRequest": ".listanswersop", + "ListanswersRequestRequestTypedDict": ".listanswersop", "ListAnswersRequest": ".listanswersrequest", "ListAnswersRequestTypedDict": ".listanswersrequest", "ListAnswersResponse": ".listanswersresponse", @@ -2935,12 +3546,18 @@ "ListchatsRequestTypedDict": ".listchatsop", "ListChatsResponse": ".listchatsresponse", "ListChatsResponseTypedDict": ".listchatsresponse", + "ListcollectionsRequestRequest": ".listcollectionsop", + "ListcollectionsRequestRequestTypedDict": ".listcollectionsop", "ListCollectionsRequest": ".listcollectionsrequest", "ListCollectionsRequestTypedDict": ".listcollectionsrequest", "ListCollectionsResponse": ".listcollectionsresponse", "ListCollectionsResponseTypedDict": ".listcollectionsresponse", + "ListDlpFindingsExportsResponse": ".listdlpfindingsexportsresponse", + "ListDlpFindingsExportsResponseTypedDict": ".listdlpfindingsexportsresponse", "ListDlpReportsResponse": ".listdlpreportsresponse", "ListDlpReportsResponseTypedDict": ".listdlpreportsresponse", + "ListentitiesRequestRequest": ".listentitiesop", + "ListentitiesRequestRequestTypedDict": ".listentitiesop", "ListEntitiesRequest": ".listentitiesrequest", "ListEntitiesRequestEntityType": ".listentitiesrequest", "ListEntitiesRequestIncludeField": ".listentitiesrequest", @@ -2949,11 +3566,15 @@ "ListEntitiesResponse": ".listentitiesresponse", "ListEntitiesResponseTypedDict": ".listentitiesresponse", "ListpinsRequest": ".listpinsop", + "ListpinsRequestBody": ".listpinsop", + "ListpinsRequestBodyTypedDict": ".listpinsop", "ListpinsRequestTypedDict": ".listpinsop", "ListPinsResponse": ".listpinsresponse", "ListPinsResponseTypedDict": ".listpinsresponse", "ListpoliciesRequest": ".listpoliciesop", "ListpoliciesRequestTypedDict": ".listpoliciesop", + "ListshortcutsRequest": ".listshortcutsop", + "ListshortcutsRequestTypedDict": ".listshortcutsop", "ListShortcutsPaginatedRequest": ".listshortcutspaginatedrequest", "ListShortcutsPaginatedRequestIncludeField": ".listshortcutspaginatedrequest", "ListShortcutsPaginatedRequestTypedDict": ".listshortcutspaginatedrequest", @@ -2970,10 +3591,29 @@ "ManualFeedbackSideBySideInfoSource": ".manualfeedbacksidebysideinfo", "ManualFeedbackSideBySideInfoTypedDict": ".manualfeedbacksidebysideinfo", "ManualFeedbackSideBySideInfoVote": ".manualfeedbacksidebysideinfo", + "BreakdownType": ".mcpbreakdowninsightsrequest", + "McpBreakdownInsightsRequest": ".mcpbreakdowninsightsrequest", + "McpBreakdownInsightsRequestTypedDict": ".mcpbreakdowninsightsrequest", + "McpBreakdownInsightsResponse": ".mcpbreakdowninsightsresponse", + "McpBreakdownInsightsResponseTypedDict": ".mcpbreakdowninsightsresponse", + "McpHostApplicationBreakdown": ".mcphostapplicationbreakdown", + "McpHostApplicationBreakdownTypedDict": ".mcphostapplicationbreakdown", + "McpInsightsRequest": ".mcpinsightsrequest", + "McpInsightsRequestTypedDict": ".mcpinsightsrequest", + "McpInsightsResponse": ".mcpinsightsresponse", + "McpInsightsResponseTypedDict": ".mcpinsightsresponse", + "McpServerBreakdown": ".mcpserverbreakdown", + "McpServerBreakdownTypedDict": ".mcpserverbreakdown", + "McpToolBreakdown": ".mcptoolbreakdown", + "McpToolBreakdownTypedDict": ".mcptoolbreakdown", + "McpUserBreakdown": ".mcpuserbreakdown", + "McpUserBreakdownTypedDict": ".mcpuserbreakdown", "Message": ".message", "MessageTextBlock": ".message", "MessageTextBlockTypedDict": ".message", "MessageTypedDict": ".message", + "MessagesRequestRequest": ".messagesop", + "MessagesRequestRequestTypedDict": ".messagesop", "Datasource": ".messagesrequest", "Direction": ".messagesrequest", "IDType": ".messagesrequest", @@ -2991,6 +3631,8 @@ "OperatorType": ".operatormetadata", "OperatorScope": ".operatorscope", "OperatorScopeTypedDict": ".operatorscope", + "PeopleRequestRequest": ".peopleop", + "PeopleRequestRequestTypedDict": ".peopleop", "IncludeType": ".peoplerequest", "PeopleRequest": ".peoplerequest", "PeopleRequestIncludeField": ".peoplerequest", @@ -3016,10 +3658,14 @@ "PerUserAssistantInsightTypedDict": ".peruserassistantinsight", "PerUserInsight": ".peruserinsight", "PerUserInsightTypedDict": ".peruserinsight", + "PinRequestRequest": ".pinop", + "PinRequestRequestTypedDict": ".pinop", "PinRequest": ".pinrequest", "PinRequestTypedDict": ".pinrequest", "PossibleValue": ".possiblevalue", "PossibleValueTypedDict": ".possiblevalue", + "PostAPIIndexV1DebugDatasourceDocumentEventsRequest": ".post_api_index_v1_debug_datasource_document_eventsop", + "PostAPIIndexV1DebugDatasourceDocumentEventsRequestTypedDict": ".post_api_index_v1_debug_datasource_document_eventsop", "PostAPIIndexV1DebugDatasourceDocumentRequest": ".post_api_index_v1_debug_datasource_documentop", "PostAPIIndexV1DebugDatasourceDocumentRequestTypedDict": ".post_api_index_v1_debug_datasource_documentop", "PostAPIIndexV1DebugDatasourceDocumentsRequest": ".post_api_index_v1_debug_datasource_documentsop", @@ -3039,20 +3685,24 @@ "PromptTemplateResult": ".prompttemplateresult", "PromptTemplateResultTypedDict": ".prompttemplateresult", "PropertyDefinition": ".propertydefinition", + "PropertyDefinitionPropertyType": ".propertydefinition", "PropertyDefinitionTypedDict": ".propertydefinition", - "PropertyType": ".propertydefinition", "UIOptions": ".propertydefinition", "PropertyGroup": ".propertygroup", "PropertyGroupTypedDict": ".propertygroup", - "QueryInsight": ".queryinsight", - "QueryInsightTypedDict": ".queryinsight", - "QueryInsightsResponse": ".queryinsightsresponse", - "QueryInsightsResponseTypedDict": ".queryinsightsresponse", + "PUT_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS": ".put_rest_api_index_custom_metadata_schema_groupname_op", + "PutRestAPIIndexCustomMetadataSchemaGroupNameRequest": ".put_rest_api_index_custom_metadata_schema_groupname_op", + "PutRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict": ".put_rest_api_index_custom_metadata_schema_groupname_op", + "PUT_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS": ".put_rest_api_index_document_docid_custom_metadata_groupname_op", + "PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest": ".put_rest_api_index_document_docid_custom_metadata_groupname_op", + "PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequestTypedDict": ".put_rest_api_index_document_docid_custom_metadata_groupname_op", "Quicklink": ".quicklink", "QuicklinkTypedDict": ".quicklink", "Scope": ".quicklink", "ReadPermission": ".readpermission", "ReadPermissionTypedDict": ".readpermission", + "RecommendationsRequestRequest": ".recommendationsop", + "RecommendationsRequestRequestTypedDict": ".recommendationsop", "RecommendationsRequest": ".recommendationsrequest", "RecommendationsRequestTypedDict": ".recommendationsrequest", "RecommendationsRequestOptions": ".recommendationsrequestoptions", @@ -3078,6 +3728,10 @@ "ResultsResponseTypedDict": ".resultsresponse", "ResultTab": ".resulttab", "ResultTabTypedDict": ".resulttab", + "RotateDatasourceCredentialsRequestRequest": ".rotatedatasourcecredentialsop", + "RotateDatasourceCredentialsRequestRequestTypedDict": ".rotatedatasourcecredentialsop", + "RotateDatasourceCredentialsRequest": ".rotatedatasourcecredentialsrequest", + "RotateDatasourceCredentialsRequestTypedDict": ".rotatedatasourcecredentialsrequest", "RotateTokenResponse": ".rotatetokenresponse", "RotateTokenResponseTypedDict": ".rotatetokenresponse", "ScopeType": ".scopetype", @@ -3085,6 +3739,8 @@ "SearchAgentsRequestTypedDict": ".searchagentsrequest", "SearchAgentsResponse": ".searchagentsresponse", "SearchAgentsResponseTypedDict": ".searchagentsresponse", + "SearchRequestRequest": ".searchop", + "SearchRequestRequestTypedDict": ".searchop", "SearchProviderInfo": ".searchproviderinfo", "SearchProviderInfoTypedDict": ".searchproviderinfo", "SearchRequest": ".searchrequest", @@ -3111,8 +3767,8 @@ "SensitiveContentOptionsTypedDict": ".sensitivecontentoptions", "SensitiveExpression": ".sensitiveexpression", "SensitiveExpressionTypedDict": ".sensitiveexpression", - "LikelihoodThreshold": ".sensitiveinfotype", "SensitiveInfoType": ".sensitiveinfotype", + "SensitiveInfoTypeLikelihoodThreshold": ".sensitiveinfotype", "SensitiveInfoTypeTypedDict": ".sensitiveinfotype", "SessionInfo": ".sessioninfo", "SessionInfoTypedDict": ".sessioninfo", @@ -3121,10 +3777,6 @@ "ShortcutError": ".shortcuterror", "ShortcutErrorErrorType": ".shortcuterror", "ShortcutErrorTypedDict": ".shortcuterror", - "ShortcutInsight": ".shortcutinsight", - "ShortcutInsightTypedDict": ".shortcutinsight", - "ShortcutInsightsResponse": ".shortcutinsightsresponse", - "ShortcutInsightsResponseTypedDict": ".shortcutinsightsresponse", "ShortcutMutableProperties": ".shortcutmutableproperties", "ShortcutMutablePropertiesTypedDict": ".shortcutmutableproperties", "ShortcutsPaginationMetadata": ".shortcutspaginationmetadata", @@ -3146,6 +3798,10 @@ "StructuredLocationTypedDict": ".structuredlocation", "StructuredTextMutableProperties": ".structuredtextmutableproperties", "StructuredTextMutablePropertiesTypedDict": ".structuredtextmutableproperties", + "SuccessResponse": ".successresponse", + "SuccessResponseTypedDict": ".successresponse", + "SummarizeRequestRequest": ".summarizeop", + "SummarizeRequestRequestTypedDict": ".summarizeop", "SummarizeRequest": ".summarizerequest", "SummarizeRequestTypedDict": ".summarizerequest", "Error": ".summarizeresponse", @@ -3168,6 +3824,9 @@ "TimePointTypedDict": ".timepoint", "TimeRange": ".timerange", "TimeRangeTypedDict": ".timerange", + "TimeRangeFilter": ".timerangefilter", + "TimeRangeFilterTimePeriodType": ".timerangefilter", + "TimeRangeFilterTypedDict": ".timerangefilter", "Tool": ".tool", "ToolType": ".tool", "ToolTypedDict": ".tool", @@ -3193,12 +3852,22 @@ "ToolsListResponse": ".toolslistresponse", "ToolsListResponseTypedDict": ".toolslistresponse", "UgcType": ".ugctype", + "UnauthorizedDatasourceInstance": ".unauthorizeddatasourceinstance", + "UnauthorizedDatasourceInstanceTypedDict": ".unauthorizeddatasourceinstance", "Unpin": ".unpin", "UnpinTypedDict": ".unpin", + "UnpinRequest": ".unpinop", + "UnpinRequestTypedDict": ".unpinop", + "UpdateannouncementRequestRequest": ".updateannouncementop", + "UpdateannouncementRequestRequestTypedDict": ".updateannouncementop", "UpdateAnnouncementRequest": ".updateannouncementrequest", "UpdateAnnouncementRequestChannel": ".updateannouncementrequest", "UpdateAnnouncementRequestPostType": ".updateannouncementrequest", "UpdateAnnouncementRequestTypedDict": ".updateannouncementrequest", + "UpdateDatasourceConfigurationRequest": ".updatedatasourceconfigurationrequest", + "UpdateDatasourceConfigurationRequestTypedDict": ".updatedatasourceconfigurationrequest", + "UpdateDatasourceInstanceConfigurationRequest": ".updatedatasourceinstanceconfigurationop", + "UpdateDatasourceInstanceConfigurationRequestTypedDict": ".updatedatasourceinstanceconfigurationop", "UpdateDlpConfigRequest": ".updatedlpconfigrequest", "UpdateDlpConfigRequestTypedDict": ".updatedlpconfigrequest", "UpdateDlpConfigResponse": ".updatedlpconfigresponse", @@ -3215,6 +3884,8 @@ "UpdatePermissionsRequestTypedDict": ".updatepermissionsrequest", "UpdatepolicyRequest": ".updatepolicyop", "UpdatepolicyRequestTypedDict": ".updatepolicyop", + "UpdateshortcutRequestRequest": ".updateshortcutop", + "UpdateshortcutRequestRequestTypedDict": ".updateshortcutop", "UpdateShortcutRequest": ".updateshortcutrequest", "UpdateShortcutRequestTypedDict": ".updateshortcutrequest", "UpdateShortcutResponse": ".updateshortcutresponse", @@ -3241,8 +3912,6 @@ "UserActivityInsightTypedDict": ".useractivityinsight", "UserGeneratedContentID": ".usergeneratedcontentid", "UserGeneratedContentIDTypedDict": ".usergeneratedcontentid", - "UserInsightsResponse": ".userinsightsresponse", - "UserInsightsResponseTypedDict": ".userinsightsresponse", "UserReferenceDefinition": ".userreferencedefinition", "UserReferenceDefinitionTypedDict": ".userreferencedefinition", "UserRole": ".userrole", @@ -3252,6 +3921,8 @@ "UserViewInfoTypedDict": ".userviewinfo", "VerificationFeed": ".verificationfeed", "VerificationFeedTypedDict": ".verificationfeed", + "VerifyRequestRequest": ".verifyop", + "VerifyRequestRequestTypedDict": ".verifyop", "VerifyRequest": ".verifyrequest", "VerifyRequestAction": ".verifyrequest", "VerifyRequestTypedDict": ".verifyrequest", @@ -3273,39 +3944,11 @@ } -def dynamic_import(modname, retries=3): - for attempt in range(retries): - try: - return import_module(modname, __package__) - except KeyError: - # Clear any half-initialized module and retry - sys.modules.pop(modname, None) - if attempt == retries - 1: - break - raise KeyError(f"Failed to import module '{modname}' after {retries} attempts") - - -def __getattr__(attr_name: str) -> object: - module_name = _dynamic_imports.get(attr_name) - if module_name is None: - raise AttributeError( - f"No {attr_name} found in _dynamic_imports for module name -> {__name__} " - ) - - try: - module = dynamic_import(module_name) - result = getattr(module, attr_name) - return result - except ImportError as e: - raise ImportError( - f"Failed to import {attr_name} from {module_name}: {e}" - ) from e - except AttributeError as e: - raise AttributeError( - f"Failed to get {attr_name} from {module_name}: {e}" - ) from e +def __getattr__(attr_name: str) -> Any: + return lazy_getattr( + attr_name, package=__package__, dynamic_imports=_dynamic_imports + ) def __dir__(): - lazy_attrs = builtins.list(_dynamic_imports.keys()) - return builtins.sorted(lazy_attrs) + return lazy_dir(dynamic_imports=_dynamic_imports) diff --git a/src/glean/api_client/models/actionauthtype.py b/src/glean/api_client/models/actionauthtype.py new file mode 100644 index 00000000..6a60ecd0 --- /dev/null +++ b/src/glean/api_client/models/actionauthtype.py @@ -0,0 +1,18 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class ActionAuthType(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Authentication mechanism used by an action pack. + - `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool. + - `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually. + - `AUTH_NONE`: Action pack requires no authentication. + + """ + + AUTH_USER_OAUTH = "AUTH_USER_OAUTH" + AUTH_ADMIN = "AUTH_ADMIN" + AUTH_NONE = "AUTH_NONE" diff --git a/src/glean/api_client/models/actionpackauthstatus.py b/src/glean/api_client/models/actionpackauthstatus.py new file mode 100644 index 00000000..c2507aaa --- /dev/null +++ b/src/glean/api_client/models/actionpackauthstatus.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .actionauthtype import ActionAuthType +from glean.api_client import models +from glean.api_client.types import BaseModel +import pydantic +from pydantic import field_serializer +from typing_extensions import Annotated, TypedDict + + +class ActionPackAuthStatusTypedDict(TypedDict): + authenticated: bool + r"""Whether the calling user is already authenticated to the tool backing the action pack.""" + auth_type: ActionAuthType + r"""Authentication mechanism used by an action pack. + - `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool. + - `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually. + - `AUTH_NONE`: Action pack requires no authentication. + + """ + + +class ActionPackAuthStatus(BaseModel): + authenticated: bool + r"""Whether the calling user is already authenticated to the tool backing the action pack.""" + + auth_type: Annotated[ActionAuthType, pydantic.Field(alias="authType")] + r"""Authentication mechanism used by an action pack. + - `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool. + - `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually. + - `AUTH_NONE`: Action pack requires no authentication. + + """ + + @field_serializer("auth_type") + def serialize_auth_type(self, value): + if isinstance(value, str): + try: + return models.ActionAuthType(value) + except ValueError: + return value + return value + + +try: + ActionPackAuthStatus.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/actionpackauthstatusresponse.py b/src/glean/api_client/models/actionpackauthstatusresponse.py new file mode 100644 index 00000000..512b9f6f --- /dev/null +++ b/src/glean/api_client/models/actionpackauthstatusresponse.py @@ -0,0 +1,21 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .actionpackauthstatus import ActionPackAuthStatus, ActionPackAuthStatusTypedDict +from glean.api_client.types import BaseModel +import pydantic +from typing_extensions import Annotated, TypedDict + + +class ActionPackAuthStatusResponseTypedDict(TypedDict): + action_pack: ActionPackAuthStatusTypedDict + + +class ActionPackAuthStatusResponse(BaseModel): + action_pack: Annotated[ActionPackAuthStatus, pydantic.Field(alias="actionPack")] + + +try: + ActionPackAuthStatusResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/actionsummary.py b/src/glean/api_client/models/actionsummary.py new file mode 100644 index 00000000..399db3e4 --- /dev/null +++ b/src/glean/api_client/models/actionsummary.py @@ -0,0 +1,95 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +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): + r"""Represents a minimal summary of an action.""" + + tool_id: str + 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): + r"""Represents a minimal summary of an action.""" + + tool_id: str + r"""The unique identifier of the action.""" + + 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 967f8c6e..4f6bc8f3 100644 --- a/src/glean/api_client/models/activityevent.py +++ b/src/glean/api_client/models/activityevent.py @@ -4,7 +4,8 @@ from .activityeventparams import ActivityEventParams, ActivityEventParamsTypedDict from datetime import datetime from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -54,3 +55,19 @@ class ActivityEvent(BaseModel): r"""Universally unique identifier of the event. To allow for reliable retransmission, only the earliest received event of a given UUID is considered valid by the server and subsequent are ignored.""" params: Optional[ActivityEventParams] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "params"]) + 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/activityeventparams.py b/src/glean/api_client/models/activityeventparams.py index ca97d3e4..b084d4af 100644 --- a/src/glean/api_client/models/activityeventparams.py +++ b/src/glean/api_client/models/activityeventparams.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -59,3 +60,37 @@ class ActivityEventParams(BaseModel): truncated: Optional[bool] = None r"""Indicates that the parameters are incomplete and more parameters may be sent with the same action+timestamp+URL in the future. This is used for sending the duration when a `VIEW` is finished.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "bodyContent", + "datasourceInstance", + "datasource", + "instanceOnlyName", + "duration", + "query", + "referrer", + "title", + "truncated", + ] + ) + 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: + ActivityEventParams.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/addcollectionitemserror.py b/src/glean/api_client/models/addcollectionitemserror.py index 31118e56..8f738ea3 100644 --- a/src/glean/api_client/models/addcollectionitemserror.py +++ b/src/glean/api_client/models/addcollectionitemserror.py @@ -2,14 +2,17 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class AddCollectionItemsErrorErrorType(str, Enum): +class AddCollectionItemsErrorErrorType(str, Enum, metaclass=utils.OpenEnumMeta): EXISTING_ITEM = "EXISTING_ITEM" + CORRUPT_ITEM = "CORRUPT_ITEM" class AddCollectionItemsErrorTypedDict(TypedDict): @@ -20,3 +23,34 @@ class AddCollectionItemsError(BaseModel): error_type: Annotated[ Optional[AddCollectionItemsErrorErrorType], pydantic.Field(alias="errorType") ] = None + + @field_serializer("error_type") + def serialize_error_type(self, value): + if isinstance(value, str): + try: + return models.AddCollectionItemsErrorErrorType(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["errorType"]) + 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: + AddCollectionItemsError.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/addcollectionitemsop.py b/src/glean/api_client/models/addcollectionitemsop.py new file mode 100644 index 00000000..2cd893c6 --- /dev/null +++ b/src/glean/api_client/models/addcollectionitemsop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .addcollectionitemsrequest import ( + AddCollectionItemsRequest, + AddCollectionItemsRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AddcollectionitemsRequestRequestTypedDict(TypedDict): + add_collection_items_request: AddCollectionItemsRequestTypedDict + r"""Data describing the add operation.""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class AddcollectionitemsRequestRequest(BaseModel): + add_collection_items_request: Annotated[ + AddCollectionItemsRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Data describing the add operation.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/addcollectionitemsrequest.py b/src/glean/api_client/models/addcollectionitemsrequest.py index e838d123..b440c09b 100644 --- a/src/glean/api_client/models/addcollectionitemsrequest.py +++ b/src/glean/api_client/models/addcollectionitemsrequest.py @@ -5,8 +5,9 @@ CollectionItemDescriptor, CollectionItemDescriptorTypedDict, ) -from glean.api_client.types import BaseModel +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 @@ -29,3 +30,25 @@ class AddCollectionItemsRequest(BaseModel): pydantic.Field(alias="addedCollectionItemDescriptors"), ] = None r"""The CollectionItemDescriptors of the items being added.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["addedCollectionItemDescriptors"]) + 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: + AddCollectionItemsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/addcollectionitemsresponse.py b/src/glean/api_client/models/addcollectionitemsresponse.py index 20ec74c3..80294bce 100644 --- a/src/glean/api_client/models/addcollectionitemsresponse.py +++ b/src/glean/api_client/models/addcollectionitemsresponse.py @@ -6,7 +6,8 @@ AddCollectionItemsErrorTypedDict, ) from .collection import Collection, CollectionTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -20,3 +21,19 @@ class AddCollectionItemsResponse(BaseModel): collection: Optional[Collection] = None error: Optional[AddCollectionItemsError] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["collection", "error"]) + 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/additionalfielddefinition.py b/src/glean/api_client/models/additionalfielddefinition.py index 70b5a835..75e99935 100644 --- a/src/glean/api_client/models/additionalfielddefinition.py +++ b/src/glean/api_client/models/additionalfielddefinition.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -63,3 +64,19 @@ class AdditionalFieldDefinition(BaseModel): Example: ```\"languages\": [{\"lang\":\"English\",\"lang\":\"Spanish\",...}]```. In this case, the key \"lang\" will be ignored and can even be passed in as an empty string. """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["key", "value"]) + 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/addverificationreminderop.py b/src/glean/api_client/models/addverificationreminderop.py new file mode 100644 index 00000000..b6b9c1a2 --- /dev/null +++ b/src/glean/api_client/models/addverificationreminderop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .reminderrequest import ReminderRequest, ReminderRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AddverificationreminderRequestTypedDict(TypedDict): + reminder_request: ReminderRequestTypedDict + r"""Details about the reminder.""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class AddverificationreminderRequest(BaseModel): + reminder_request: Annotated[ + ReminderRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Details about the reminder.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/adminsearchop.py b/src/glean/api_client/models/adminsearchop.py new file mode 100644 index 00000000..6578e5e3 --- /dev/null +++ b/src/glean/api_client/models/adminsearchop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .searchrequest import SearchRequest, SearchRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AdminsearchRequestTypedDict(TypedDict): + search_request: SearchRequestTypedDict + r"""Admin search request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class AdminsearchRequest(BaseModel): + search_request: Annotated[ + SearchRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Admin search request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/agent.py b/src/glean/api_client/models/agent.py index ca6b7fb7..ce46c088 100644 --- a/src/glean/api_client/models/agent.py +++ b/src/glean/api_client/models/agent.py @@ -1,9 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import ConfigDict +from pydantic import ConfigDict, model_serializer from typing import Any, Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -59,6 +59,25 @@ def additional_properties(self): def additional_properties(self, value): self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["ap.io.messages", "ap.io.streaming"]) + 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)) + serialized.pop(k, serialized.pop(n, None)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + for k, v in serialized.items(): + m[k] = v + + return m + class AgentTypedDict(TypedDict): agent_id: str @@ -96,3 +115,25 @@ class Agent(BaseModel): metadata: Optional[AgentMetadata] = None r"""The agent metadata. Currently not implemented.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["description", "metadata"]) + 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: + AgentCapabilities.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/agentconfig.py b/src/glean/api_client/models/agentconfig.py index b6c2dd2f..2a7bb3d1 100644 --- a/src/glean/api_client/models/agentconfig.py +++ b/src/glean/api_client/models/agentconfig.py @@ -3,13 +3,15 @@ from __future__ import annotations from .toolsets import ToolSets, ToolSetsTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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 @@ -22,9 +24,11 @@ class AgentEnum(str, Enum): FAST = "FAST" # Uses an agent powered by the agentic engine that thinks for longer and potentially makes more LLM calls to return higher quality results. Requires the agentic engine to be enabled in the deployment. ADVANCED = "ADVANCED" + # Uses an agent powered by the agentic engine that routes between reasoning efforts based on the question and context. + 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. @@ -62,3 +66,43 @@ class AgentConfig(BaseModel): Optional[bool], pydantic.Field(alias="useImageGeneration") ] = 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"]) + 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: + AgentConfig.model_rebuild() +except NameError: + pass 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 81f3cace..0439dfdf 100644 --- a/src/glean/api_client/models/agentrun.py +++ b/src/glean/api_client/models/agentrun.py @@ -3,18 +3,20 @@ from __future__ import annotations from .agentexecutionstatus import AgentExecutionStatus from .message import Message, MessageTypedDict -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import field_serializer, model_serializer from typing import Any, Dict, List, Optional from typing_extensions import NotRequired, TypedDict class AgentRunTypedDict(TypedDict): - r"""Payload for creating a run.""" + r"""Payload for creating a run. **Important**: If the agent uses an input form trigger, the `input` field is required and must include all fields defined in the form schema. Even fields marked as optional in the UI must be included in the request—use an empty string (`\"\"`) for optional fields without values. Omitting required form fields will result in a 500 error.""" agent_id: str r"""The ID of the agent to run.""" input: NotRequired[Dict[str, Any]] - r"""The input to the agent.""" + r"""The input to the agent. Required when the agent uses an input form trigger.""" messages: NotRequired[List[MessageTypedDict]] r"""The messages to pass an input to the agent.""" metadata: NotRequired[Dict[str, Any]] @@ -24,13 +26,13 @@ class AgentRunTypedDict(TypedDict): class AgentRun(BaseModel): - r"""Payload for creating a run.""" + r"""Payload for creating a run. **Important**: If the agent uses an input form trigger, the `input` field is required and must include all fields defined in the form schema. Even fields marked as optional in the UI must be included in the request—use an empty string (`\"\"`) for optional fields without values. Omitting required form fields will result in a 500 error.""" agent_id: str r"""The ID of the agent to run.""" input: Optional[Dict[str, Any]] = None - r"""The input to the agent.""" + r"""The input to the agent. Required when the agent uses an input form trigger.""" messages: Optional[List[Message]] = None r"""The messages to pass an input to the agent.""" @@ -40,3 +42,28 @@ 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"]) + 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/agentruncreate.py b/src/glean/api_client/models/agentruncreate.py index 9af73f1a..407bbcb8 100644 --- a/src/glean/api_client/models/agentruncreate.py +++ b/src/glean/api_client/models/agentruncreate.py @@ -2,18 +2,19 @@ from __future__ import annotations from .message import Message, MessageTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Any, Dict, List, Optional from typing_extensions import NotRequired, TypedDict class AgentRunCreateTypedDict(TypedDict): - r"""Payload for creating a run.""" + r"""Payload for creating a run. **Important**: If the agent uses an input form trigger, the `input` field is required and must include all fields defined in the form schema. Even fields marked as optional in the UI must be included in the request—use an empty string (`\"\"`) for optional fields without values. Omitting required form fields will result in a 500 error.""" agent_id: str r"""The ID of the agent to run.""" input: NotRequired[Dict[str, Any]] - r"""The input to the agent.""" + r"""The input to the agent. Required when the agent uses an input form trigger.""" messages: NotRequired[List[MessageTypedDict]] r"""The messages to pass an input to the agent.""" metadata: NotRequired[Dict[str, Any]] @@ -21,16 +22,32 @@ class AgentRunCreateTypedDict(TypedDict): class AgentRunCreate(BaseModel): - r"""Payload for creating a run.""" + r"""Payload for creating a run. **Important**: If the agent uses an input form trigger, the `input` field is required and must include all fields defined in the form schema. Even fields marked as optional in the UI must be included in the request—use an empty string (`\"\"`) for optional fields without values. Omitting required form fields will result in a 500 error.""" agent_id: str r"""The ID of the agent to run.""" input: Optional[Dict[str, Any]] = None - r"""The input to the agent.""" + r"""The input to the agent. Required when the agent uses an input form trigger.""" messages: Optional[List[Message]] = None r"""The messages to pass an input to the agent.""" metadata: Optional[Dict[str, Any]] = None r"""The metadata to pass to the agent.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["input", "messages", "metadata"]) + 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/agentrunwaitresponse.py b/src/glean/api_client/models/agentrunwaitresponse.py index 151a8c6e..e09e51eb 100644 --- a/src/glean/api_client/models/agentrunwaitresponse.py +++ b/src/glean/api_client/models/agentrunwaitresponse.py @@ -3,7 +3,8 @@ from __future__ import annotations from .agentrun import AgentRun, AgentRunTypedDict from .message import Message, MessageTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -19,3 +20,19 @@ class AgentRunWaitResponse(BaseModel): messages: Optional[List[Message]] = None r"""The messages returned by the run.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["run", "messages"]) + 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/agentschemas.py b/src/glean/api_client/models/agentschemas.py index 9dd72561..f69f3156 100644 --- a/src/glean/api_client/models/agentschemas.py +++ b/src/glean/api_client/models/agentschemas.py @@ -1,8 +1,11 @@ """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 .actionsummary import ActionSummary, ActionSummaryTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict class InputSchemaTypedDict(TypedDict): @@ -30,6 +33,10 @@ class AgentSchemasTypedDict(TypedDict): r"""The schema for the agent input. In JSON Schema format.""" output_schema: OutputSchemaTypedDict r"""The schema for the agent output. In JSON Schema format.""" + name: NotRequired[str] + r"""The name of the agent.""" + tools: NotRequired[List[ActionSummaryTypedDict]] + r"""List of tools that the agent can invoke. Only included when include_tools query parameter is set to true.""" class AgentSchemas(BaseModel): @@ -43,3 +50,25 @@ class AgentSchemas(BaseModel): output_schema: OutputSchema r"""The schema for the agent output. In JSON Schema format.""" + + name: Optional[str] = None + r"""The name of the agent.""" + + tools: Optional[List[ActionSummary]] = None + r"""List of tools that the agent can invoke. Only included when include_tools query parameter is set to true.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name", "tools"]) + 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/agentsinsightsv2request.py b/src/glean/api_client/models/agentsinsightsv2request.py index 9bfc6dc3..13a2eea4 100644 --- a/src/glean/api_client/models/agentsinsightsv2request.py +++ b/src/glean/api_client/models/agentsinsightsv2request.py @@ -2,8 +2,9 @@ from __future__ import annotations from .period import Period, PeriodTypedDict -from glean.api_client.types import BaseModel +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 @@ -13,6 +14,8 @@ class AgentsInsightsV2RequestTypedDict(TypedDict): r"""IDs of the Agents for which Insights should be returned. An empty array signifies all.""" departments: NotRequired[List[str]] r"""Departments for which Insights are requested.""" + manager_emails: NotRequired[List[str]] + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" day_range: NotRequired[PeriodTypedDict] @@ -23,4 +26,31 @@ class AgentsInsightsV2Request(BaseModel): departments: Optional[List[str]] = None r"""Departments for which Insights are requested.""" + manager_emails: Annotated[ + Optional[List[str]], pydantic.Field(alias="managerEmails") + ] = None + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" + day_range: Annotated[Optional[Period], pydantic.Field(alias="dayRange")] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["agentIds", "departments", "managerEmails", "dayRange"]) + 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: + AgentsInsightsV2Request.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/agentsinsightsv2response.py b/src/glean/api_client/models/agentsinsightsv2response.py index 031c53f5..ae50b9b4 100644 --- a/src/glean/api_client/models/agentsinsightsv2response.py +++ b/src/glean/api_client/models/agentsinsightsv2response.py @@ -1,35 +1,47 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations +from .agentstimesavedinsight import ( + AgentsTimeSavedInsight, + AgentsTimeSavedInsightTypedDict, +) from .agentsusagebydepartmentinsight import ( AgentsUsageByDepartmentInsight, AgentsUsageByDepartmentInsightTypedDict, ) +from .agentusecaseinsight import AgentUseCaseInsight, AgentUseCaseInsightTypedDict from .agentusersinsight import AgentUsersInsight, AgentUsersInsightTypedDict from .labeledcountinfo import LabeledCountInfo, LabeledCountInfoTypedDict from .peragentinsight import PerAgentInsight, PerAgentInsightTypedDict -from glean.api_client.types import BaseModel +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 AgentsInsightsV2ResponseTypedDict(TypedDict): monthly_active_users: NotRequired[int] - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: NotRequired[int] - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" monthly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] weekly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] daily_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] shared_agents_count: NotRequired[int] r"""Total number of shared agents.""" top_agents_insights: NotRequired[List[PerAgentInsightTypedDict]] + top_use_cases_insights: NotRequired[List[AgentUseCaseInsightTypedDict]] agents_usage_by_department_insights: NotRequired[ List[AgentsUsageByDepartmentInsightTypedDict] ] agent_users_insights: NotRequired[List[AgentUsersInsightTypedDict]] + agents_time_saved_insights: NotRequired[List[AgentsTimeSavedInsightTypedDict]] + r"""Insights for agents time saved over the specified time period.""" daily_agent_runs_timeseries: NotRequired[LabeledCountInfoTypedDict] + successful_runs_timeseries: NotRequired[LabeledCountInfoTypedDict] + failed_runs_timeseries: NotRequired[LabeledCountInfoTypedDict] + paused_runs_timeseries: NotRequired[LabeledCountInfoTypedDict] upvotes_timeseries: NotRequired[LabeledCountInfoTypedDict] downvotes_timeseries: NotRequired[LabeledCountInfoTypedDict] @@ -38,12 +50,12 @@ class AgentsInsightsV2Response(BaseModel): monthly_active_users: Annotated[ Optional[int], pydantic.Field(alias="monthlyActiveUsers") ] = None - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: Annotated[ Optional[int], pydantic.Field(alias="weeklyActiveUsers") ] = None - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" monthly_active_user_timeseries: Annotated[ Optional[LabeledCountInfo], pydantic.Field(alias="monthlyActiveUserTimeseries") @@ -66,6 +78,10 @@ class AgentsInsightsV2Response(BaseModel): Optional[List[PerAgentInsight]], pydantic.Field(alias="topAgentsInsights") ] = None + top_use_cases_insights: Annotated[ + Optional[List[AgentUseCaseInsight]], pydantic.Field(alias="topUseCasesInsights") + ] = None + agents_usage_by_department_insights: Annotated[ Optional[List[AgentsUsageByDepartmentInsight]], pydantic.Field(alias="agentsUsageByDepartmentInsights"), @@ -75,10 +91,28 @@ class AgentsInsightsV2Response(BaseModel): Optional[List[AgentUsersInsight]], pydantic.Field(alias="agentUsersInsights") ] = None + agents_time_saved_insights: Annotated[ + Optional[List[AgentsTimeSavedInsight]], + pydantic.Field(alias="agentsTimeSavedInsights"), + ] = None + r"""Insights for agents time saved over the specified time period.""" + daily_agent_runs_timeseries: Annotated[ Optional[LabeledCountInfo], pydantic.Field(alias="dailyAgentRunsTimeseries") ] = None + successful_runs_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="successfulRunsTimeseries") + ] = None + + failed_runs_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="failedRunsTimeseries") + ] = None + + paused_runs_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="pausedRunsTimeseries") + ] = None + upvotes_timeseries: Annotated[ Optional[LabeledCountInfo], pydantic.Field(alias="upvotesTimeseries") ] = None @@ -86,3 +120,45 @@ class AgentsInsightsV2Response(BaseModel): downvotes_timeseries: Annotated[ Optional[LabeledCountInfo], pydantic.Field(alias="downvotesTimeseries") ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "monthlyActiveUsers", + "weeklyActiveUsers", + "monthlyActiveUserTimeseries", + "weeklyActiveUserTimeseries", + "dailyActiveUserTimeseries", + "sharedAgentsCount", + "topAgentsInsights", + "topUseCasesInsights", + "agentsUsageByDepartmentInsights", + "agentUsersInsights", + "agentsTimeSavedInsights", + "dailyAgentRunsTimeseries", + "successfulRunsTimeseries", + "failedRunsTimeseries", + "pausedRunsTimeseries", + "upvotesTimeseries", + "downvotesTimeseries", + ] + ) + 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: + AgentsInsightsV2Response.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/agentstimesavedinsight.py b/src/glean/api_client/models/agentstimesavedinsight.py new file mode 100644 index 00000000..25a613c6 --- /dev/null +++ b/src/glean/api_client/models/agentstimesavedinsight.py @@ -0,0 +1,83 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .iconconfig import IconConfig, IconConfigTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AgentsTimeSavedInsightTypedDict(TypedDict): + agent_id: NotRequired[str] + r"""Agent ID""" + agent_name: NotRequired[str] + r"""Agent name""" + icon: NotRequired[IconConfigTypedDict] + r"""Defines how to render an icon""" + is_deleted: NotRequired[bool] + r"""Indicates whether the agent has been deleted""" + run_count: NotRequired[int] + r"""Total number of runs for this agent over the specified time period.""" + mins_per_run: NotRequired[float] + r"""Average minutes saved per run for this agent over the specified time period.""" + feedback_user_count: NotRequired[int] + r"""Total number of users who provided feedback on time saved for this agent over the specified time period.""" + + +class AgentsTimeSavedInsight(BaseModel): + agent_id: Annotated[Optional[str], pydantic.Field(alias="agentId")] = None + r"""Agent ID""" + + agent_name: Annotated[Optional[str], pydantic.Field(alias="agentName")] = None + r"""Agent name""" + + icon: Optional[IconConfig] = None + r"""Defines how to render an icon""" + + is_deleted: Annotated[Optional[bool], pydantic.Field(alias="isDeleted")] = None + r"""Indicates whether the agent has been deleted""" + + run_count: Annotated[Optional[int], pydantic.Field(alias="runCount")] = None + r"""Total number of runs for this agent over the specified time period.""" + + mins_per_run: Annotated[Optional[float], pydantic.Field(alias="minsPerRun")] = None + r"""Average minutes saved per run for this agent over the specified time period.""" + + feedback_user_count: Annotated[ + Optional[int], pydantic.Field(alias="feedbackUserCount") + ] = None + r"""Total number of users who provided feedback on time saved for this agent over the specified time period.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "agentId", + "agentName", + "icon", + "isDeleted", + "runCount", + "minsPerRun", + "feedbackUserCount", + ] + ) + 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: + AgentsTimeSavedInsight.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/agentsusagebydepartmentinsight.py b/src/glean/api_client/models/agentsusagebydepartmentinsight.py index 654eb9ad..bcfd9c30 100644 --- a/src/glean/api_client/models/agentsusagebydepartmentinsight.py +++ b/src/glean/api_client/models/agentsusagebydepartmentinsight.py @@ -2,8 +2,9 @@ from __future__ import annotations from .iconconfig import IconConfig, IconConfigTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -53,3 +54,36 @@ class AgentsUsageByDepartmentInsight(BaseModel): is_deleted: Annotated[Optional[bool], pydantic.Field(alias="isDeleted")] = None r"""Indicates whether the agent has been deleted""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "department", + "agentAdoptionRate", + "userCount", + "runCount", + "agentId", + "agentName", + "icon", + "isDeleted", + ] + ) + 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: + AgentsUsageByDepartmentInsight.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/agentusecaseinsight.py b/src/glean/api_client/models/agentusecaseinsight.py new file mode 100644 index 00000000..4841a4ed --- /dev/null +++ b/src/glean/api_client/models/agentusecaseinsight.py @@ -0,0 +1,95 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .iconconfig import IconConfig, IconConfigTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AgentUseCaseInsightTypedDict(TypedDict): + use_case: NotRequired[str] + r"""Use case name""" + run_count: NotRequired[int] + r"""Total number of runs for this use case over the specified time period.""" + trend: NotRequired[float] + r"""Percentage change in runs compared to the previous equivalent time period.""" + top_departments: NotRequired[str] + r"""Comma-separated list of the top departments using this use case.""" + top_agent_id: NotRequired[str] + r"""ID of the most-used agent for this use case.""" + top_agent_name: NotRequired[str] + r"""Name of the most-used agent for this use case.""" + top_agent_icon: NotRequired[IconConfigTypedDict] + r"""Defines how to render an icon""" + top_agent_is_deleted: NotRequired[bool] + r"""Indicates whether the top agent has been deleted.""" + + +class AgentUseCaseInsight(BaseModel): + use_case: Annotated[Optional[str], pydantic.Field(alias="useCase")] = None + r"""Use case name""" + + run_count: Annotated[Optional[int], pydantic.Field(alias="runCount")] = None + r"""Total number of runs for this use case over the specified time period.""" + + trend: Optional[float] = None + r"""Percentage change in runs compared to the previous equivalent time period.""" + + top_departments: Annotated[ + Optional[str], pydantic.Field(alias="topDepartments") + ] = None + r"""Comma-separated list of the top departments using this use case.""" + + top_agent_id: Annotated[Optional[str], pydantic.Field(alias="topAgentId")] = None + r"""ID of the most-used agent for this use case.""" + + top_agent_name: Annotated[Optional[str], pydantic.Field(alias="topAgentName")] = ( + None + ) + r"""Name of the most-used agent for this use case.""" + + top_agent_icon: Annotated[ + Optional[IconConfig], pydantic.Field(alias="topAgentIcon") + ] = None + r"""Defines how to render an icon""" + + top_agent_is_deleted: Annotated[ + Optional[bool], pydantic.Field(alias="topAgentIsDeleted") + ] = None + r"""Indicates whether the top agent has been deleted.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "useCase", + "runCount", + "trend", + "topDepartments", + "topAgentId", + "topAgentName", + "topAgentIcon", + "topAgentIsDeleted", + ] + ) + 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: + AgentUseCaseInsight.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/agentusersinsight.py b/src/glean/api_client/models/agentusersinsight.py index 5de20c6e..13ed679e 100644 --- a/src/glean/api_client/models/agentusersinsight.py +++ b/src/glean/api_client/models/agentusersinsight.py @@ -2,8 +2,9 @@ from __future__ import annotations from .person import Person, PersonTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -47,3 +48,34 @@ class AgentUsersInsight(BaseModel): run_count: Annotated[Optional[int], pydantic.Field(alias="runCount")] = None r"""Total number of agent runs for this user over the specified time period.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "person", + "departmentName", + "agentsUsedCount", + "averageRunsPerDayCount", + "agentsCreatedCount", + "runCount", + ] + ) + 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: + AgentUsersInsight.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/aiappactioncounts.py b/src/glean/api_client/models/aiappactioncounts.py deleted file mode 100644 index 63068d07..00000000 --- a/src/glean/api_client/models/aiappactioncounts.py +++ /dev/null @@ -1,70 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from glean.api_client.types import BaseModel -import pydantic -from pydantic import ConfigDict -from typing import Dict, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class AiAppActionCountsTypedDict(TypedDict): - r"""Map from action to frequency.""" - - total_slackbot_responses: NotRequired[int] - r"""Total number of Slackbot responses, both proactive and reactive.""" - total_slackbot_responses_shared: NotRequired[int] - r"""Total number of Slackbot responses shared publicly (upvoted).""" - total_slackbot_responses_not_helpful: NotRequired[int] - r"""Total number of Slackbot responses rejected as not helpful (downvoted).""" - total_chat_messages: NotRequired[int] - r"""Total number of Chat messages sent in requested period.""" - total_upvotes: NotRequired[int] - r"""Total number of Chat messages which received upvotes by the user.""" - total_downvotes: NotRequired[int] - r"""Total number of Chat messages which received downvotes by the user.""" - - -class AiAppActionCounts(BaseModel): - r"""Map from action to frequency.""" - - model_config = ConfigDict( - populate_by_name=True, arbitrary_types_allowed=True, extra="allow" - ) - __pydantic_extra__: Dict[str, int] = pydantic.Field(init=False) - - total_slackbot_responses: Annotated[ - Optional[int], pydantic.Field(alias="totalSlackbotResponses") - ] = None - r"""Total number of Slackbot responses, both proactive and reactive.""" - - total_slackbot_responses_shared: Annotated[ - Optional[int], pydantic.Field(alias="totalSlackbotResponsesShared") - ] = None - r"""Total number of Slackbot responses shared publicly (upvoted).""" - - total_slackbot_responses_not_helpful: Annotated[ - Optional[int], pydantic.Field(alias="totalSlackbotResponsesNotHelpful") - ] = None - r"""Total number of Slackbot responses rejected as not helpful (downvoted).""" - - total_chat_messages: Annotated[ - Optional[int], pydantic.Field(alias="totalChatMessages") - ] = None - r"""Total number of Chat messages sent in requested period.""" - - total_upvotes: Annotated[Optional[int], pydantic.Field(alias="totalUpvotes")] = None - r"""Total number of Chat messages which received upvotes by the user.""" - - total_downvotes: Annotated[ - Optional[int], pydantic.Field(alias="totalDownvotes") - ] = None - r"""Total number of Chat messages which received downvotes by the user.""" - - @property - def additional_properties(self): - return self.__pydantic_extra__ - - @additional_properties.setter - def additional_properties(self, value): - self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] diff --git a/src/glean/api_client/models/aiappsinsightsresponse.py b/src/glean/api_client/models/aiappsinsightsresponse.py deleted file mode 100644 index 88b2de71..00000000 --- a/src/glean/api_client/models/aiappsinsightsresponse.py +++ /dev/null @@ -1,45 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .aiappactioncounts import AiAppActionCounts, AiAppActionCountsTypedDict -from .useractivityinsight import UserActivityInsight, UserActivityInsightTypedDict -from glean.api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class AiAppsInsightsResponseTypedDict(TypedDict): - last_log_timestamp: NotRequired[int] - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - ai_app_insights: NotRequired[List[UserActivityInsightTypedDict]] - total_active_users: NotRequired[int] - r"""Total number of active users on the Ai App in the requested period.""" - action_counts: NotRequired[AiAppActionCountsTypedDict] - r"""Map from action to frequency.""" - departments: NotRequired[List[str]] - r"""list of departments applicable for users tab.""" - - -class AiAppsInsightsResponse(BaseModel): - last_log_timestamp: Annotated[ - Optional[int], pydantic.Field(alias="lastLogTimestamp") - ] = None - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - - ai_app_insights: Annotated[ - Optional[List[UserActivityInsight]], pydantic.Field(alias="aiAppInsights") - ] = None - - total_active_users: Annotated[ - Optional[int], pydantic.Field(alias="totalActiveUsers") - ] = None - r"""Total number of active users on the Ai App in the requested period.""" - - action_counts: Annotated[ - Optional[AiAppActionCounts], pydantic.Field(alias="actionCounts") - ] = None - r"""Map from action to frequency.""" - - departments: Optional[List[str]] = None - r"""list of departments applicable for users tab.""" diff --git a/src/glean/api_client/models/aiinsightsresponse.py b/src/glean/api_client/models/aiinsightsresponse.py deleted file mode 100644 index 05426681..00000000 --- a/src/glean/api_client/models/aiinsightsresponse.py +++ /dev/null @@ -1,91 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .useractivityinsight import UserActivityInsight, UserActivityInsightTypedDict -from glean.api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class AiInsightsResponseTypedDict(TypedDict): - last_log_timestamp: NotRequired[int] - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - assistant_insights: NotRequired[List[UserActivityInsightTypedDict]] - total_active_assistant_users: NotRequired[int] - r"""Total number of Active Assistant users (chat, summary, AIA) in requested period.""" - total_chat_messages: NotRequired[int] - r"""Total number of Chat messages sent in requested period.""" - total_ai_summarizations: NotRequired[int] - r"""Total number of AI Document Summarizations invoked in the requested period.""" - total_ai_answers: NotRequired[int] - r"""Total number of AI Answers generated in the requested period.""" - total_upvotes: NotRequired[int] - r"""Total number of Chat messages which received upvotes by the user.""" - total_downvotes: NotRequired[int] - r"""Total number of Chat messages which received downvotes by the user.""" - total_gleanbot_responses: NotRequired[int] - r"""Total number of Gleanbot responses, both proactive and reactive.""" - total_gleanbot_responses_shared: NotRequired[int] - r"""Total number of Gleanbot responses shared publicly (upvoted).""" - total_gleanbot_responses_not_helpful: NotRequired[int] - r"""Total number of Glean responses rejected as not helpful (downvoted).""" - departments: NotRequired[List[str]] - r"""list of departments applicable for users tab.""" - - -class AiInsightsResponse(BaseModel): - last_log_timestamp: Annotated[ - Optional[int], pydantic.Field(alias="lastLogTimestamp") - ] = None - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - - assistant_insights: Annotated[ - Optional[List[UserActivityInsight]], pydantic.Field(alias="assistantInsights") - ] = None - - total_active_assistant_users: Annotated[ - Optional[int], pydantic.Field(alias="totalActiveAssistantUsers") - ] = None - r"""Total number of Active Assistant users (chat, summary, AIA) in requested period.""" - - total_chat_messages: Annotated[ - Optional[int], pydantic.Field(alias="totalChatMessages") - ] = None - r"""Total number of Chat messages sent in requested period.""" - - total_ai_summarizations: Annotated[ - Optional[int], pydantic.Field(alias="totalAiSummarizations") - ] = None - r"""Total number of AI Document Summarizations invoked in the requested period.""" - - total_ai_answers: Annotated[ - Optional[int], pydantic.Field(alias="totalAiAnswers") - ] = None - r"""Total number of AI Answers generated in the requested period.""" - - total_upvotes: Annotated[Optional[int], pydantic.Field(alias="totalUpvotes")] = None - r"""Total number of Chat messages which received upvotes by the user.""" - - total_downvotes: Annotated[ - Optional[int], pydantic.Field(alias="totalDownvotes") - ] = None - r"""Total number of Chat messages which received downvotes by the user.""" - - total_gleanbot_responses: Annotated[ - Optional[int], pydantic.Field(alias="totalGleanbotResponses") - ] = None - r"""Total number of Gleanbot responses, both proactive and reactive.""" - - total_gleanbot_responses_shared: Annotated[ - Optional[int], pydantic.Field(alias="totalGleanbotResponsesShared") - ] = None - r"""Total number of Gleanbot responses shared publicly (upvoted).""" - - total_gleanbot_responses_not_helpful: Annotated[ - Optional[int], pydantic.Field(alias="totalGleanbotResponsesNotHelpful") - ] = None - r"""Total number of Glean responses rejected as not helpful (downvoted).""" - - departments: Optional[List[str]] = None - r"""list of departments applicable for users tab.""" diff --git a/src/glean/api_client/models/allowlistoptions.py b/src/glean/api_client/models/allowlistoptions.py index 9e546b7a..123b345c 100644 --- a/src/glean/api_client/models/allowlistoptions.py +++ b/src/glean/api_client/models/allowlistoptions.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -18,3 +19,19 @@ class AllowlistOptions(BaseModel): terms: Optional[List[str]] = None r"""list of words and phrases to consider as whitelisted content""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["terms"]) + 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/announcement.py b/src/glean/api_client/models/announcement.py index a7a308f6..30144805 100644 --- a/src/glean/api_client/models/announcement.py +++ b/src/glean/api_client/models/announcement.py @@ -9,20 +9,22 @@ from .thumbnail import Thumbnail, ThumbnailTypedDict from datetime import datetime from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -43,6 +45,22 @@ class AnnouncementViewerInfo(BaseModel): is_read: Annotated[Optional[bool], pydantic.Field(alias="isRead")] = None r"""Whether the viewer has read the announcement.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["isDismissed", "isRead"]) + 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 + class AnnouncementTypedDict(TypedDict): start_time: NotRequired[datetime] @@ -73,6 +91,8 @@ class AnnouncementTypedDict(TypedDict): draft_id: NotRequired[int] r"""The opaque id of the associated draft.""" permissions: NotRequired[ObjectPermissionsTypedDict] + tracking_token: NotRequired[str] + r"""An opaque token that represents this particular UGC. To be used for `/feedback` reporting.""" id: NotRequired[int] r"""The opaque id of the announcement.""" author: NotRequired[PersonTypedDict] @@ -142,6 +162,11 @@ class Announcement(BaseModel): permissions: Optional[ObjectPermissions] = None + tracking_token: Annotated[Optional[str], pydantic.Field(alias="trackingToken")] = ( + None + ) + r"""An opaque token that represents this particular UGC. To be used for `/feedback` reporting.""" + id: Optional[int] = None r"""The opaque id of the announcement.""" @@ -169,3 +194,75 @@ 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( + [ + "startTime", + "endTime", + "title", + "body", + "emoji", + "thumbnail", + "banner", + "audienceFilters", + "sourceDocumentId", + "hideAttribution", + "channel", + "postType", + "isPrioritized", + "viewUrl", + "draftId", + "permissions", + "trackingToken", + "id", + "author", + "createTimestamp", + "lastUpdateTimestamp", + "updatedBy", + "viewerInfo", + "sourceDocument", + "isPublished", + ] + ) + 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: + AnnouncementViewerInfo.model_rebuild() +except NameError: + pass +try: + Announcement.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/anonymousevent.py b/src/glean/api_client/models/anonymousevent.py index 72e1b97f..96c2e34b 100644 --- a/src/glean/api_client/models/anonymousevent.py +++ b/src/glean/api_client/models/anonymousevent.py @@ -3,13 +3,15 @@ from __future__ import annotations from .timeinterval import TimeInterval, TimeIntervalTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -33,3 +35,34 @@ class AnonymousEvent(BaseModel): Optional[AnonymousEventEventType], pydantic.Field(alias="eventType") ] = 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"]) + 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: + AnonymousEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/answer.py b/src/glean/api_client/models/answer.py index 5f3f9b1c..c0835860 100644 --- a/src/glean/api_client/models/answer.py +++ b/src/glean/api_client/models/answer.py @@ -6,13 +6,14 @@ from .objectpermissions import ObjectPermissions, ObjectPermissionsTypedDict from datetime import datetime from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict if TYPE_CHECKING: - from .answerboard import AnswerBoard, AnswerBoardTypedDict from .answerlikes import AnswerLikes, AnswerLikesTypedDict from .collection import Collection, CollectionTypedDict from .document import Document, DocumentTypedDict @@ -25,7 +26,7 @@ from .verification import Verification, VerificationTypedDict -class AnswerSourceType(str, Enum): +class AnswerSourceType(str, Enum, metaclass=utils.OpenEnumMeta): DOCUMENT = "DOCUMENT" ASSISTANT = "ASSISTANT" @@ -53,6 +54,8 @@ class AnswerTypedDict(TypedDict): source_document_spec: NotRequired[DocumentSpecUnionTypedDict] source_type: NotRequired[AnswerSourceType] permissions: NotRequired[ObjectPermissionsTypedDict] + tracking_token: NotRequired[str] + r"""An opaque token that represents this particular UGC. To be used for `/feedback` reporting.""" combined_answer_text: NotRequired["StructuredTextTypedDict"] likes: NotRequired["AnswerLikesTypedDict"] author: NotRequired["PersonTypedDict"] @@ -62,7 +65,6 @@ class AnswerTypedDict(TypedDict): r"""The time the answer was last updated in ISO format (ISO 8601).""" updated_by: NotRequired["PersonTypedDict"] verification: NotRequired["VerificationTypedDict"] - board: NotRequired["AnswerBoardTypedDict"] collections: NotRequired[List["CollectionTypedDict"]] r"""The collections to which the answer belongs.""" document_category: NotRequired[str] @@ -90,7 +92,7 @@ class Answer(BaseModel): board_id: Annotated[ Optional[int], 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: Answer Boards no longer supported.", alias="boardId", ), ] = None @@ -124,6 +126,11 @@ class Answer(BaseModel): permissions: Optional[ObjectPermissions] = None + tracking_token: Annotated[Optional[str], pydantic.Field(alias="trackingToken")] = ( + None + ) + r"""An opaque token that represents this particular UGC. To be used for `/feedback` reporting.""" + combined_answer_text: Annotated[ Optional["StructuredText"], pydantic.Field(alias="combinedAnswerText") ] = None @@ -146,8 +153,6 @@ class Answer(BaseModel): verification: Optional["Verification"] = None - board: Optional["AnswerBoard"] = None - collections: Optional[List["Collection"]] = None r"""The collections to which the answer belongs.""" @@ -159,3 +164,60 @@ class Answer(BaseModel): source_document: Annotated[ 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( + [ + "docId", + "question", + "questionVariations", + "bodyText", + "boardId", + "audienceFilters", + "addedRoles", + "removedRoles", + "roles", + "sourceDocumentSpec", + "sourceType", + "permissions", + "trackingToken", + "combinedAnswerText", + "likes", + "author", + "createTime", + "updateTime", + "updatedBy", + "verification", + "collections", + "documentCategory", + "sourceDocument", + ] + ) + 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: + Answer.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/answerboard.py b/src/glean/api_client/models/answerboard.py deleted file mode 100644 index 7e63384b..00000000 --- a/src/glean/api_client/models/answerboard.py +++ /dev/null @@ -1,87 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .facetfilter import FacetFilter, FacetFilterTypedDict -from .objectpermissions import ObjectPermissions, ObjectPermissionsTypedDict -from datetime import datetime -from glean.api_client.types import BaseModel -import pydantic -from typing import List, Optional, TYPE_CHECKING -from typing_extensions import Annotated, NotRequired, TypedDict - -if TYPE_CHECKING: - from .person import Person, PersonTypedDict - from .userrolespecification import ( - UserRoleSpecification, - UserRoleSpecificationTypedDict, - ) - - -class AnswerBoardTypedDict(TypedDict): - name: str - r"""The unique name of the Collection.""" - description: str - r"""A brief summary of the Collection's contents.""" - id: int - r"""The unique ID of the Answer Board.""" - added_roles: NotRequired[List["UserRoleSpecificationTypedDict"]] - r"""A list of added user roles for the Collection.""" - removed_roles: NotRequired[List["UserRoleSpecificationTypedDict"]] - r"""A list of removed user roles for the Collection.""" - audience_filters: NotRequired[List[FacetFilterTypedDict]] - r"""Filters which restrict who should see this Collection. Values are taken from the corresponding filters in people search.""" - permissions: NotRequired[ObjectPermissionsTypedDict] - create_time: NotRequired[datetime] - update_time: NotRequired[datetime] - creator: NotRequired["PersonTypedDict"] - updated_by: NotRequired["PersonTypedDict"] - item_count: NotRequired[int] - r"""The number of items currently in the Answer Board. Separated from the actual items so we can grab the count without items.""" - roles: NotRequired[List["UserRoleSpecificationTypedDict"]] - r"""A list of user roles for the Answer Board.""" - - -class AnswerBoard(BaseModel): - name: str - r"""The unique name of the Collection.""" - - description: str - r"""A brief summary of the Collection's contents.""" - - id: int - r"""The unique ID of the Answer Board.""" - - added_roles: Annotated[ - Optional[List["UserRoleSpecification"]], pydantic.Field(alias="addedRoles") - ] = None - r"""A list of added user roles for the Collection.""" - - removed_roles: Annotated[ - Optional[List["UserRoleSpecification"]], pydantic.Field(alias="removedRoles") - ] = None - r"""A list of removed user roles for the Collection.""" - - audience_filters: Annotated[ - Optional[List[FacetFilter]], pydantic.Field(alias="audienceFilters") - ] = None - r"""Filters which restrict who should see this Collection. Values are taken from the corresponding filters in people search.""" - - permissions: Optional[ObjectPermissions] = None - - create_time: Annotated[Optional[datetime], pydantic.Field(alias="createTime")] = ( - None - ) - - update_time: Annotated[Optional[datetime], pydantic.Field(alias="updateTime")] = ( - None - ) - - creator: Optional["Person"] = None - - updated_by: Annotated[Optional["Person"], pydantic.Field(alias="updatedBy")] = None - - item_count: Annotated[Optional[int], pydantic.Field(alias="itemCount")] = None - r"""The number of items currently in the Answer Board. Separated from the actual items so we can grab the count without items.""" - - roles: Optional[List["UserRoleSpecification"]] = None - r"""A list of user roles for the Answer Board.""" diff --git a/src/glean/api_client/models/answercreationdata.py b/src/glean/api_client/models/answercreationdata.py index a640029f..2e5aee70 100644 --- a/src/glean/api_client/models/answercreationdata.py +++ b/src/glean/api_client/models/answercreationdata.py @@ -9,8 +9,9 @@ ) from .userrolespecification import UserRoleSpecification, UserRoleSpecificationTypedDict from enum import Enum -from glean.api_client.types import BaseModel +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 @@ -57,7 +58,7 @@ class AnswerCreationData(BaseModel): board_id: Annotated[ Optional[int], 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: Answer Boards no longer supported.", alias="boardId", ), ] = None @@ -98,3 +99,40 @@ class AnswerCreationData(BaseModel): Optional[StructuredTextMutableProperties], pydantic.Field(alias="combinedAnswerText"), ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "question", + "questionVariations", + "bodyText", + "boardId", + "audienceFilters", + "addedRoles", + "removedRoles", + "roles", + "sourceDocumentSpec", + "sourceType", + "addedCollections", + "combinedAnswerText", + ] + ) + 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: + AnswerCreationData.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/answerlike.py b/src/glean/api_client/models/answerlike.py index 13fe4e8e..abee3d1a 100644 --- a/src/glean/api_client/models/answerlike.py +++ b/src/glean/api_client/models/answerlike.py @@ -2,8 +2,9 @@ from __future__ import annotations from datetime import datetime -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -24,3 +25,25 @@ class AnswerLike(BaseModel): None ) r"""The time the user liked the answer in ISO format (ISO 8601).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["user", "createTime"]) + 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: + AnswerLike.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/answerlikes.py b/src/glean/api_client/models/answerlikes.py index 7eaed580..cd1539f0 100644 --- a/src/glean/api_client/models/answerlikes.py +++ b/src/glean/api_client/models/answerlikes.py @@ -26,3 +26,9 @@ class AnswerLikes(BaseModel): num_likes: Annotated[int, pydantic.Field(alias="numLikes")] r"""The total number of likes for the answer.""" + + +try: + AnswerLikes.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/answerresult.py b/src/glean/api_client/models/answerresult.py index 53786e41..1e3f2a0c 100644 --- a/src/glean/api_client/models/answerresult.py +++ b/src/glean/api_client/models/answerresult.py @@ -2,8 +2,9 @@ from __future__ import annotations from .answer import Answer, AnswerTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -11,13 +12,39 @@ class AnswerResultTypedDict(TypedDict): answer: AnswerTypedDict tracking_token: NotRequired[str] - r"""An opaque token that represents this particular Answer. To be used for `/feedback` reporting.""" + r"""Use `answer.trackingToken` instead.""" class AnswerResult(BaseModel): answer: Answer - tracking_token: Annotated[Optional[str], pydantic.Field(alias="trackingToken")] = ( - None - ) - r"""An opaque token that represents this particular Answer. To be used for `/feedback` reporting.""" + tracking_token: Annotated[ + Optional[str], + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-05-07, removal scheduled for 2027-01-15: Use `answer.trackingToken` instead..", + alias="trackingToken", + ), + ] = None + r"""Use `answer.trackingToken` instead.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["trackingToken"]) + 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: + AnswerResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/appresult.py b/src/glean/api_client/models/appresult.py index f4bd01d7..2105b7fe 100644 --- a/src/glean/api_client/models/appresult.py +++ b/src/glean/api_client/models/appresult.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -30,3 +31,25 @@ class AppResult(BaseModel): icon_url: Annotated[Optional[str], pydantic.Field(alias="iconUrl")] = None r"""If there is available icon URL.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["docType", "mimeType", "iconUrl"]) + 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: + AppResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/assistantinsightsresponse.py b/src/glean/api_client/models/assistantinsightsresponse.py index ba5ac38d..47e9bf2f 100644 --- a/src/glean/api_client/models/assistantinsightsresponse.py +++ b/src/glean/api_client/models/assistantinsightsresponse.py @@ -6,17 +6,18 @@ PerUserAssistantInsight, PerUserAssistantInsightTypedDict, ) -from glean.api_client.types import BaseModel +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 AssistantInsightsResponseTypedDict(TypedDict): monthly_active_users: NotRequired[int] - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: NotRequired[int] - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" last_updated_ts: NotRequired[int] r"""Unix timestamp of the last update for the insights data in the response.""" monthly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] @@ -37,12 +38,12 @@ class AssistantInsightsResponse(BaseModel): monthly_active_users: Annotated[ Optional[int], pydantic.Field(alias="monthlyActiveUsers") ] = None - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: Annotated[ Optional[int], pydantic.Field(alias="weeklyActiveUsers") ] = None - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" last_updated_ts: Annotated[Optional[int], pydantic.Field(alias="lastUpdatedTs")] = ( None @@ -92,3 +93,42 @@ class AssistantInsightsResponse(BaseModel): downvotes_timeseries: Annotated[ Optional[LabeledCountInfo], pydantic.Field(alias="downvotesTimeseries") ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "monthlyActiveUsers", + "weeklyActiveUsers", + "lastUpdatedTs", + "monthlyActiveUserTimeseries", + "weeklyActiveUserTimeseries", + "dailyActiveUserTimeseries", + "totalSignups", + "chatMessagesTimeseries", + "summarizationsTimeseries", + "aiAnswersTimeseries", + "gleanbotInteractionsTimeseries", + "perUserInsights", + "upvotesTimeseries", + "downvotesTimeseries", + ] + ) + 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: + AssistantInsightsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/authconfig.py b/src/glean/api_client/models/authconfig.py index 118c02fa..f01e07f8 100644 --- a/src/glean/api_client/models/authconfig.py +++ b/src/glean/api_client/models/authconfig.py @@ -3,13 +3,15 @@ from __future__ import annotations from datetime import datetime from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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. @@ -26,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" @@ -41,6 +43,14 @@ class AuthConfigStatus(str, Enum): AUTH_DISABLED = "AUTH_DISABLED" +class TokenEndpointAuthMethod(str, Enum, metaclass=utils.OpenEnumMeta): + r"""The OAuth 2.0 token endpoint authentication method (RFC 7591). Determines how the client authenticates when exchanging an authorization code for a token. client_secret_post sends credentials as form fields, client_secret_basic sends them via Authorization header, none omits client secret and relies on PKCE only. Values use lowercase to match the OAuth 2.0 wire format (RFC 7591 Section 2).""" + + CLIENT_SECRET_POST = "client_secret_post" + CLIENT_SECRET_BASIC = "client_secret_basic" + NONE = "none" + + class AuthConfigTypedDict(TypedDict): r"""Config for tool's authentication method.""" @@ -68,6 +78,10 @@ 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.""" + token_endpoint_auth_method: NotRequired[TokenEndpointAuthMethod] + r"""The OAuth 2.0 token endpoint authentication method (RFC 7591). Determines how the client authenticates when exchanging an authorization code for a token. client_secret_post sends credentials as form fields, client_secret_basic sends them via Authorization header, none omits client secret and relies on PKCE only. Values use lowercase to match the OAuth 2.0 wire format (RFC 7591 Section 2).""" last_authorized_at: NotRequired[datetime] r"""The time the tool was last authorized in ISO format (ISO 8601).""" @@ -110,7 +124,86 @@ 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.""" + + token_endpoint_auth_method: Optional[TokenEndpointAuthMethod] = None + r"""The OAuth 2.0 token endpoint authentication method (RFC 7591). Determines how the client authenticates when exchanging an authorization code for a token. client_secret_post sends credentials as form fields, client_secret_basic sends them via Authorization header, none omits client secret and relies on PKCE only. Values use lowercase to match the OAuth 2.0 wire format (RFC 7591 Section 2).""" + 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 + + @field_serializer("token_endpoint_auth_method") + def serialize_token_endpoint_auth_method(self, value): + if isinstance(value, str): + try: + return models.TokenEndpointAuthMethod(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "isOnPrem", + "usesCentralAuth", + "type", + "grantType", + "status", + "client_url", + "scopes", + "audiences", + "authorization_url", + "resource", + "token_endpoint_auth_method", + "lastAuthorizedAt", + ] + ) + 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: + AuthConfig.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/authorizeactionpackop.py b/src/glean/api_client/models/authorizeactionpackop.py new file mode 100644 index 00000000..fb2d3205 --- /dev/null +++ b/src/glean/api_client/models/authorizeactionpackop.py @@ -0,0 +1,31 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .authorizeactionpackrequest import ( + AuthorizeActionPackRequest, + AuthorizeActionPackRequestTypedDict, +) +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 AuthorizeActionPackRequestRequestTypedDict(TypedDict): + action_pack_id: str + r"""ID of the action pack to query or authorize.""" + authorize_action_pack_request: AuthorizeActionPackRequestTypedDict + + +class AuthorizeActionPackRequestRequest(BaseModel): + action_pack_id: Annotated[ + str, + pydantic.Field(alias="actionPackId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""ID of the action pack to query or authorize.""" + + authorize_action_pack_request: Annotated[ + AuthorizeActionPackRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] diff --git a/src/glean/api_client/models/authorizeactionpackrequest.py b/src/glean/api_client/models/authorizeactionpackrequest.py new file mode 100644 index 00000000..92a3a3f5 --- /dev/null +++ b/src/glean/api_client/models/authorizeactionpackrequest.py @@ -0,0 +1,28 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +import pydantic +from typing_extensions import Annotated, TypedDict + + +class AuthorizeActionPackRequestTypedDict(TypedDict): + return_url: str + r"""URL on the customer's domain to redirect the end user's browser back to after the third-party OAuth + callback completes. Must be present in the tenant's return URL allowlist. + + """ + + +class AuthorizeActionPackRequest(BaseModel): + return_url: Annotated[str, pydantic.Field(alias="returnUrl")] + r"""URL on the customer's domain to redirect the end user's browser back to after the third-party OAuth + callback completes. Must be present in the tenant's return URL allowlist. + + """ + + +try: + AuthorizeActionPackRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/authorizeactionpackresponse.py b/src/glean/api_client/models/authorizeactionpackresponse.py new file mode 100644 index 00000000..7d8a75da --- /dev/null +++ b/src/glean/api_client/models/authorizeactionpackresponse.py @@ -0,0 +1,28 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel +import pydantic +from typing_extensions import Annotated, TypedDict + + +class AuthorizeActionPackResponseTypedDict(TypedDict): + redirect_url: str + r"""URL that the customer UI should navigate the end user to in order to begin the third-party OAuth flow. + After the user consents, control returns to `returnUrl` from the request. + + """ + + +class AuthorizeActionPackResponse(BaseModel): + redirect_url: Annotated[str, pydantic.Field(alias="redirectUrl")] + r"""URL that the customer UI should navigate the end user to in order to begin the third-party OAuth flow. + After the user consents, control returns to `returnUrl` from the request. + + """ + + +try: + AuthorizeActionPackResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/authstatus.py b/src/glean/api_client/models/authstatus.py new file mode 100644 index 00000000..ea66e454 --- /dev/null +++ b/src/glean/api_client/models/authstatus.py @@ -0,0 +1,15 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class AuthStatus(str, Enum, metaclass=utils.OpenEnumMeta): + r"""The per-user authorization status for a datasource.""" + + DISABLED = "DISABLED" + AWAITING_AUTH = "AWAITING_AUTH" + AUTHORIZED = "AUTHORIZED" + STALE_OAUTH = "STALE_OAUTH" + SEG_MIGRATION = "SEG_MIGRATION" diff --git a/src/glean/api_client/models/authtoken.py b/src/glean/api_client/models/authtoken.py index 789d550d..7551c7f6 100644 --- a/src/glean/api_client/models/authtoken.py +++ b/src/glean/api_client/models/authtoken.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -32,3 +33,25 @@ class AuthToken(BaseModel): expiration: Optional[int] = None r"""Unix timestamp when this token expires (in seconds since epoch UTC).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["scope", "tokenType", "authUser", "expiration"]) + 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: + AuthToken.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/autocompleteop.py b/src/glean/api_client/models/autocompleteop.py new file mode 100644 index 00000000..97d2bf4e --- /dev/null +++ b/src/glean/api_client/models/autocompleteop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .autocompleterequest import AutocompleteRequest, AutocompleteRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AutocompleteRequestRequestTypedDict(TypedDict): + autocomplete_request: AutocompleteRequestTypedDict + r"""Autocomplete request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class AutocompleteRequestRequest(BaseModel): + autocomplete_request: Annotated[ + AutocompleteRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Autocomplete request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/autocompleterequest.py b/src/glean/api_client/models/autocompleterequest.py index 190f2f73..c57ae464 100644 --- a/src/glean/api_client/models/autocompleterequest.py +++ b/src/glean/api_client/models/autocompleterequest.py @@ -4,8 +4,9 @@ from .authtoken import AuthToken, AuthTokenTypedDict from .sessioninfo import SessionInfo, SessionInfoTypedDict from enum import Enum -from glean.api_client.types import BaseModel +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 @@ -81,3 +82,36 @@ class AutocompleteRequest(BaseModel): Optional[List[AuthToken]], pydantic.Field(alias="authTokens") ] = None r"""Auth tokens which may be used for federated results.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "trackingToken", + "sessionInfo", + "query", + "datasourcesFilter", + "datasource", + "resultTypes", + "resultSize", + "authTokens", + ] + ) + 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: + AutocompleteRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/autocompleteresponse.py b/src/glean/api_client/models/autocompleteresponse.py index e01a7fe5..cca14924 100644 --- a/src/glean/api_client/models/autocompleteresponse.py +++ b/src/glean/api_client/models/autocompleteresponse.py @@ -8,8 +8,9 @@ ) from .gleandataerror import GleanDataError, GleanDataErrorTypedDict from .sessioninfo import SessionInfo, SessionInfoTypedDict -from glean.api_client.types import BaseModel +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 @@ -56,3 +57,35 @@ class AutocompleteResponse(BaseModel): Optional[int], pydantic.Field(alias="backendTimeMillis") ] = None r"""Time in milliseconds the backend took to respond to the request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "experimentIds", + "trackingToken", + "sessionInfo", + "results", + "groups", + "GleanDataError", + "backendTimeMillis", + ] + ) + 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: + AutocompleteResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/autocompleteresult.py b/src/glean/api_client/models/autocompleteresult.py index 62c7c5aa..7b4d8010 100644 --- a/src/glean/api_client/models/autocompleteresult.py +++ b/src/glean/api_client/models/autocompleteresult.py @@ -7,13 +7,15 @@ from .structuredresult import StructuredResult, StructuredResultTypedDict from .textrange import TextRange, TextRangeTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -86,3 +88,47 @@ 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( + [ + "keywords", + "resultType", + "score", + "operatorMetadata", + "quicklink", + "document", + "url", + "structuredResult", + "trackingToken", + "ranges", + ] + ) + 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: + AutocompleteResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/autocompleteresultgroup.py b/src/glean/api_client/models/autocompleteresultgroup.py index 6ecfef75..09788d2b 100644 --- a/src/glean/api_client/models/autocompleteresultgroup.py +++ b/src/glean/api_client/models/autocompleteresultgroup.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -29,3 +30,25 @@ class AutocompleteResultGroup(BaseModel): title: Optional[str] = None r"""The title of the result group to be displayed. Empty means no title.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["startIndex", "endIndex", "title"]) + 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: + AutocompleteResultGroup.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/badge.py b/src/glean/api_client/models/badge.py index 9ba49c7e..d5675152 100644 --- a/src/glean/api_client/models/badge.py +++ b/src/glean/api_client/models/badge.py @@ -2,8 +2,9 @@ from __future__ import annotations from .iconconfig import IconConfig, IconConfigTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -37,3 +38,25 @@ class Badge(BaseModel): pinned: Optional[bool] = None r"""The badge should be shown on the PersonAttribution""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["key", "displayName", "iconConfig", "pinned"]) + 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: + Badge.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/bulkindexdocumentsrequest.py b/src/glean/api_client/models/bulkindexdocumentsrequest.py index cdd99d7b..db14fe54 100644 --- a/src/glean/api_client/models/bulkindexdocumentsrequest.py +++ b/src/glean/api_client/models/bulkindexdocumentsrequest.py @@ -2,8 +2,9 @@ from __future__ import annotations from .documentdefinition import DocumentDefinition, DocumentDefinitionTypedDict -from glean.api_client.types import BaseModel +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 @@ -54,3 +55,32 @@ class BulkIndexDocumentsRequest(BaseModel): Optional[bool], pydantic.Field(alias="disableStaleDocumentDeletionCheck") ] = None r"""True if older documents need to be force deleted after the upload completes. Defaults to older documents being deleted asynchronously. This must only be set when `isLastPage = true`""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "isFirstPage", + "isLastPage", + "forceRestartUpload", + "disableStaleDocumentDeletionCheck", + ] + ) + 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: + BulkIndexDocumentsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/bulkindexemployeesrequest.py b/src/glean/api_client/models/bulkindexemployeesrequest.py index 1419dc21..43014e31 100644 --- a/src/glean/api_client/models/bulkindexemployeesrequest.py +++ b/src/glean/api_client/models/bulkindexemployeesrequest.py @@ -5,8 +5,9 @@ EmployeeInfoDefinition, EmployeeInfoDefinitionTypedDict, ) -from glean.api_client.types import BaseModel +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 @@ -52,3 +53,32 @@ class BulkIndexEmployeesRequest(BaseModel): Optional[bool], pydantic.Field(alias="disableStaleDataDeletionCheck") ] = None r"""True if older employee data needs to be force deleted after the upload completes. Defaults to older data being deleted only if the percentage of data being deleted is less than 20%. This must only be set when `isLastPage = true`""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "isFirstPage", + "isLastPage", + "forceRestartUpload", + "disableStaleDataDeletionCheck", + ] + ) + 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: + BulkIndexEmployeesRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/bulkindexgroupsrequest.py b/src/glean/api_client/models/bulkindexgroupsrequest.py index 07e1a59b..99f12d8b 100644 --- a/src/glean/api_client/models/bulkindexgroupsrequest.py +++ b/src/glean/api_client/models/bulkindexgroupsrequest.py @@ -5,8 +5,9 @@ DatasourceGroupDefinition, DatasourceGroupDefinitionTypedDict, ) -from glean.api_client.types import BaseModel +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 @@ -57,3 +58,32 @@ class BulkIndexGroupsRequest(BaseModel): Optional[bool], pydantic.Field(alias="disableStaleDataDeletionCheck") ] = None r"""True if older group data needs to be force deleted after the upload completes. Defaults to older data being deleted only if the percentage of data being deleted is less than a reasonable threshold. This must only be set when `isLastPage = true`""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "isFirstPage", + "isLastPage", + "forceRestartUpload", + "disableStaleDataDeletionCheck", + ] + ) + 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: + BulkIndexGroupsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/bulkindexmembershipsrequest.py b/src/glean/api_client/models/bulkindexmembershipsrequest.py index 44304838..81740610 100644 --- a/src/glean/api_client/models/bulkindexmembershipsrequest.py +++ b/src/glean/api_client/models/bulkindexmembershipsrequest.py @@ -5,8 +5,9 @@ DatasourceBulkMembershipDefinition, DatasourceBulkMembershipDefinitionTypedDict, ) -from glean.api_client.types import BaseModel +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 @@ -55,3 +56,27 @@ class BulkIndexMembershipsRequest(BaseModel): group: Optional[str] = None r"""group who's memberships are specified""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["isFirstPage", "isLastPage", "forceRestartUpload", "group"] + ) + 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: + BulkIndexMembershipsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/bulkindexshortcutsrequest.py b/src/glean/api_client/models/bulkindexshortcutsrequest.py index c80fe55a..3aae4c03 100644 --- a/src/glean/api_client/models/bulkindexshortcutsrequest.py +++ b/src/glean/api_client/models/bulkindexshortcutsrequest.py @@ -2,8 +2,9 @@ from __future__ import annotations from .externalshortcut import ExternalShortcut, ExternalShortcutTypedDict -from glean.api_client.types import BaseModel +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 @@ -42,3 +43,25 @@ class BulkIndexShortcutsRequest(BaseModel): Optional[bool], pydantic.Field(alias="forceRestartUpload") ] = None r"""Flag to discard previous upload attempts and start from scratch. Must be specified with isFirstPage=true""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["isFirstPage", "isLastPage", "forceRestartUpload"]) + 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: + BulkIndexShortcutsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/bulkindexteamsrequest.py b/src/glean/api_client/models/bulkindexteamsrequest.py index ac60f03e..0fd38bfa 100644 --- a/src/glean/api_client/models/bulkindexteamsrequest.py +++ b/src/glean/api_client/models/bulkindexteamsrequest.py @@ -2,8 +2,9 @@ from __future__ import annotations from .teaminfodefinition import TeamInfoDefinition, TeamInfoDefinitionTypedDict -from glean.api_client.types import BaseModel +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 @@ -42,3 +43,25 @@ class BulkIndexTeamsRequest(BaseModel): Optional[bool], pydantic.Field(alias="forceRestartUpload") ] = None r"""Flag to discard previous upload attempts and start from scratch. Must be specified with isFirstPage=true""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["isFirstPage", "isLastPage", "forceRestartUpload"]) + 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: + BulkIndexTeamsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/bulkindexusersrequest.py b/src/glean/api_client/models/bulkindexusersrequest.py index a53ca35c..bfbff92f 100644 --- a/src/glean/api_client/models/bulkindexusersrequest.py +++ b/src/glean/api_client/models/bulkindexusersrequest.py @@ -5,8 +5,9 @@ DatasourceUserDefinition, DatasourceUserDefinitionTypedDict, ) -from glean.api_client.types import BaseModel +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 @@ -57,3 +58,32 @@ class BulkIndexUsersRequest(BaseModel): Optional[bool], pydantic.Field(alias="disableStaleDataDeletionCheck") ] = None r"""True if older user data needs to be force deleted after the upload completes. Defaults to older data being deleted only if the percentage of data being deleted is less than a reasonable threshold. This must only be set when `isLastPage = true`""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "isFirstPage", + "isLastPage", + "forceRestartUpload", + "disableStaleDataDeletionCheck", + ] + ) + 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: + BulkIndexUsersRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/bulkuploadhistoryevent.py b/src/glean/api_client/models/bulkuploadhistoryevent.py index e5cd4781..b1daac94 100644 --- a/src/glean/api_client/models/bulkuploadhistoryevent.py +++ b/src/glean/api_client/models/bulkuploadhistoryevent.py @@ -2,20 +2,22 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -60,3 +62,45 @@ class BulkUploadHistoryEvent(BaseModel): Optional[ProcessingState], pydantic.Field(alias="processingState") ] = 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( + ["uploadId", "startTime", "endTime", "status", "processingState"] + ) + 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: + BulkUploadHistoryEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/calendarattendee.py b/src/glean/api_client/models/calendarattendee.py index a4d87906..bc67f962 100644 --- a/src/glean/api_client/models/calendarattendee.py +++ b/src/glean/api_client/models/calendarattendee.py @@ -2,8 +2,10 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -11,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" @@ -46,3 +48,36 @@ class CalendarAttendee(BaseModel): response_status: Annotated[ 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( + ["isOrganizer", "isInGroup", "groupAttendees", "responseStatus"] + ) + 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: + CalendarAttendee.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/calendarattendees.py b/src/glean/api_client/models/calendarattendees.py index 232506aa..40d5ce80 100644 --- a/src/glean/api_client/models/calendarattendees.py +++ b/src/glean/api_client/models/calendarattendees.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -50,3 +51,35 @@ class CalendarAttendees(BaseModel): num_tentative: Annotated[Optional[int], pydantic.Field(alias="numTentative")] = None r"""Total number of attendees who have responded tentatively (i.e. responded maybe) to this event.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "people", + "isLimit", + "total", + "numAccepted", + "numDeclined", + "numNoResponse", + "numTentative", + ] + ) + 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: + CalendarAttendees.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/calendarevent.py b/src/glean/api_client/models/calendarevent.py index 467c0117..c954de14 100644 --- a/src/glean/api_client/models/calendarevent.py +++ b/src/glean/api_client/models/calendarevent.py @@ -7,13 +7,15 @@ from .generatedattachment import GeneratedAttachment, GeneratedAttachmentTypedDict from .timeinterval import TimeInterval, TimeIntervalTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -93,3 +95,48 @@ class CalendarEvent(BaseModel): Optional[List[GeneratedAttachment]], 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( + [ + "time", + "eventType", + "attendees", + "location", + "conferenceData", + "description", + "datasource", + "hasTranscript", + "transcriptUrl", + "classifications", + "generatedAttachments", + ] + ) + 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: + CalendarEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/canonicalizingregextype.py b/src/glean/api_client/models/canonicalizingregextype.py index dbf351ad..33218a64 100644 --- a/src/glean/api_client/models/canonicalizingregextype.py +++ b/src/glean/api_client/models/canonicalizingregextype.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -24,3 +25,25 @@ class CanonicalizingRegexType(BaseModel): rewrite_regex: Annotated[Optional[str], pydantic.Field(alias="rewriteRegex")] = None r"""Regular expression to transform into a canonical string.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["matchRegex", "rewriteRegex"]) + 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: + CanonicalizingRegexType.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/channelinviteinfo.py b/src/glean/api_client/models/channelinviteinfo.py index 61d5c404..a97c2ccd 100644 --- a/src/glean/api_client/models/channelinviteinfo.py +++ b/src/glean/api_client/models/channelinviteinfo.py @@ -3,8 +3,10 @@ from __future__ import annotations from .communicationchannel import CommunicationChannel from datetime import datetime -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -46,3 +48,36 @@ class ChannelInviteInfo(BaseModel): Optional[datetime], pydantic.Field(alias="reminderTime") ] = 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( + ["channel", "isAutoInvite", "inviter", "inviteTime", "reminderTime"] + ) + 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: + ChannelInviteInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chat.py b/src/glean/api_client/models/chat.py index 22eb78f0..2c89193d 100644 --- a/src/glean/api_client/models/chat.py +++ b/src/glean/api_client/models/chat.py @@ -6,8 +6,9 @@ from .objectpermissions import ObjectPermissions, ObjectPermissionsTypedDict from .person import Person, PersonTypedDict from .userrolespecification import UserRoleSpecification, UserRoleSpecificationTypedDict -from glean.api_client.types import BaseModel +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 @@ -74,3 +75,39 @@ class Chat(BaseModel): roles: Optional[List[UserRoleSpecification]] = None r"""A list of roles for this Chat.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "id", + "createTime", + "createdBy", + "updateTime", + "name", + "applicationId", + "applicationName", + "icon", + "permissions", + "messages", + "roles", + ] + ) + 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: + Chat.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatfile.py b/src/glean/api_client/models/chatfile.py index 972ff1bf..cf7a5a7a 100644 --- a/src/glean/api_client/models/chatfile.py +++ b/src/glean/api_client/models/chatfile.py @@ -2,7 +2,8 @@ from __future__ import annotations from .chatfilemetadata import ChatFileMetadata, ChatFileMetadataTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -34,3 +35,19 @@ class ChatFile(BaseModel): metadata: Optional[ChatFileMetadata] = None r"""Metadata of a file uploaded by a user for Chat.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "url", "name", "metadata"]) + 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/chatfilefailurereason.py b/src/glean/api_client/models/chatfilefailurereason.py index 66efaaa3..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" @@ -14,3 +15,7 @@ class ChatFileFailureReason(str, Enum): FILE_EXTENSION_UNSUPPORTED = "FILE_EXTENSION_UNSUPPORTED" FILE_METADATA_VALIDATION_FAIL = "FILE_METADATA_VALIDATION_FAIL" FILE_PROCESSING_TIMED_OUT = "FILE_PROCESSING_TIMED_OUT" + OAUTH_NEEDED = "OAUTH_NEEDED" + URL_FETCH_FAILED = "URL_FETCH_FAILED" + EMPTY_CONTENT = "EMPTY_CONTENT" + AUTH_REQUIRED = "AUTH_REQUIRED" diff --git a/src/glean/api_client/models/chatfilemetadata.py b/src/glean/api_client/models/chatfilemetadata.py index 6f6e8152..b4cb6dc4 100644 --- a/src/glean/api_client/models/chatfilemetadata.py +++ b/src/glean/api_client/models/chatfilemetadata.py @@ -3,8 +3,10 @@ from __future__ import annotations from .chatfilefailurereason import ChatFileFailureReason from .chatfilestatus import ChatFileStatus -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -45,3 +47,45 @@ 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( + ["status", "uploadTime", "processedSize", "failureReason", "mimeType"] + ) + 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: + ChatFileMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatfilestatus.py b/src/glean/api_client/models/chatfilestatus.py index c9a17724..8ae7bacc 100644 --- a/src/glean/api_client/models/chatfilestatus.py +++ b/src/glean/api_client/models/chatfilestatus.py @@ -2,12 +2,14 @@ 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" PROCESSED = "PROCESSED" + PARTIALLY_PROCESSED = "PARTIALLY_PROCESSED" FAILED = "FAILED" DELETED = "DELETED" diff --git a/src/glean/api_client/models/chatmessage.py b/src/glean/api_client/models/chatmessage.py index 097840e5..5c636cbb 100644 --- a/src/glean/api_client/models/chatmessage.py +++ b/src/glean/api_client/models/chatmessage.py @@ -5,18 +5,20 @@ from .chatmessagecitation import ChatMessageCitation, ChatMessageCitationTypedDict from .chatmessagefragment import ChatMessageFragment, ChatMessageFragmentTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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. @@ -25,6 +27,18 @@ class MessageType(str, Enum): CONTENT = "CONTENT" # A message providing context in addition to the user query. CONTEXT = "CONTEXT" + # Control signal for message streaming. + CONTROL = "CONTROL" + # Control signal indicating the start of a message stream. + CONTROL_START = "CONTROL_START" + # Control signal indicating the end of a message stream. + CONTROL_FINISH = "CONTROL_FINISH" + # Control signal indicating the message stream was cancelled. + CONTROL_CANCEL = "CONTROL_CANCEL" + # Indicates the message streaming needed to be retried. + CONTROL_RETRY = "CONTROL_RETRY" + # Fallback control signal for unrecognized control types. + CONTROL_UNKNOWN = "CONTROL_UNKNOWN" # A debug message. Strictly used internally. DEBUG = "DEBUG" # A debug message to be used while debugging Action creation. @@ -46,7 +60,7 @@ class ChatMessageTypedDict(TypedDict): r"""Describes the agent that executes the request.""" author: NotRequired[Author] citations: NotRequired[List[ChatMessageCitationTypedDict]] - r"""A list of Citations that were used to generate the response.""" + r"""Deprecated: Use inline citations via ChatMessageFragment.citation instead. For detailed reference information, use ChatMessageCitation.referenceRanges. This field is still populated for backward compatibility.""" uploaded_file_ids: NotRequired[List[str]] r"""IDs of files uploaded in the message that are referenced to generate the answer.""" fragments: NotRequired[List[ChatMessageFragmentTypedDict]] @@ -73,8 +87,13 @@ class ChatMessage(BaseModel): author: Optional[Author] = Author.USER - citations: Optional[List[ChatMessageCitation]] = None - r"""A list of Citations that were used to generate the response.""" + citations: Annotated[ + Optional[List[ChatMessageCitation]], + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-06, removal scheduled for 2026-10-15: Use inline citations via ChatMessageFragment.citation and ChatMessageCitation.referenceRanges instead. This field is still populated for backward compatibility.." + ), + ] = None + r"""Deprecated: Use inline citations via ChatMessageFragment.citation instead. For detailed reference information, use ChatMessageCitation.referenceRanges. This field is still populated for backward compatibility.""" uploaded_file_ids: Annotated[ Optional[List[str]], pydantic.Field(alias="uploadedFileIds") @@ -108,3 +127,56 @@ 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( + [ + "agentConfig", + "author", + "citations", + "uploadedFileIds", + "fragments", + "ts", + "messageId", + "messageTrackingToken", + "messageType", + "hasMoreFragments", + ] + ) + 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: + ChatMessage.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatmessagecitation.py b/src/glean/api_client/models/chatmessagecitation.py index d7591c11..e1e0b0b4 100644 --- a/src/glean/api_client/models/chatmessagecitation.py +++ b/src/glean/api_client/models/chatmessagecitation.py @@ -2,11 +2,13 @@ from __future__ import annotations from .chatfile import ChatFile, ChatFileTypedDict +from .customentity import CustomEntity, CustomEntityTypedDict from .document import Document, DocumentTypedDict from .person import Person, PersonTypedDict from .referencerange import ReferenceRange, ReferenceRangeTypedDict -from glean.api_client.types import BaseModel +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 @@ -20,6 +22,7 @@ class ChatMessageCitationTypedDict(TypedDict): source_file: NotRequired[ChatFileTypedDict] r"""Structure for file uploaded by a user for Chat.""" source_person: NotRequired[PersonTypedDict] + source_custom_entity: NotRequired[CustomEntityTypedDict] reference_ranges: NotRequired[List[ReferenceRangeTypedDict]] r"""Each reference range and its corresponding snippets""" @@ -45,7 +48,42 @@ class ChatMessageCitation(BaseModel): None ) + source_custom_entity: Annotated[ + Optional[CustomEntity], pydantic.Field(alias="sourceCustomEntity") + ] = None + reference_ranges: Annotated[ Optional[List[ReferenceRange]], pydantic.Field(alias="referenceRanges") ] = None r"""Each reference range and its corresponding snippets""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "trackingToken", + "sourceDocument", + "sourceFile", + "sourcePerson", + "sourceCustomEntity", + "referenceRanges", + ] + ) + 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: + ChatMessageCitation.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatmessagefragment.py b/src/glean/api_client/models/chatmessagefragment.py index fb5d195f..a7d3bf33 100644 --- a/src/glean/api_client/models/chatmessagefragment.py +++ b/src/glean/api_client/models/chatmessagefragment.py @@ -6,8 +6,9 @@ from .querysuggestion import QuerySuggestion, QuerySuggestionTypedDict from .structuredresult import StructuredResult, StructuredResultTypedDict from .toolinfo import ToolInfo, ToolInfoTypedDict -from glean.api_client.types import BaseModel +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 @@ -54,3 +55,35 @@ class ChatMessageFragment(BaseModel): citation: Optional[ChatMessageCitation] = None r"""Information about the source for a ChatMessage.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "structuredResults", + "trackingToken", + "text", + "querySuggestion", + "file", + "action", + "citation", + ] + ) + 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: + ChatMessageFragment.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatmetadata.py b/src/glean/api_client/models/chatmetadata.py index 5d28d67d..81530650 100644 --- a/src/glean/api_client/models/chatmetadata.py +++ b/src/glean/api_client/models/chatmetadata.py @@ -2,8 +2,9 @@ from __future__ import annotations from .iconconfig import IconConfig, IconConfigTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -60,3 +61,36 @@ class ChatMetadata(BaseModel): icon: Optional[IconConfig] = None r"""Defines how to render an icon""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "id", + "createTime", + "createdBy", + "updateTime", + "name", + "applicationId", + "applicationName", + "icon", + ] + ) + 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: + ChatMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatmetadataresult.py b/src/glean/api_client/models/chatmetadataresult.py index f0de14fc..53e0ef97 100644 --- a/src/glean/api_client/models/chatmetadataresult.py +++ b/src/glean/api_client/models/chatmetadataresult.py @@ -2,8 +2,9 @@ from __future__ import annotations from .chatmetadata import ChatMetadata, ChatMetadataTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -23,3 +24,25 @@ class ChatMetadataResult(BaseModel): None ) r"""An opaque token that represents this particular Chat. To be used for `/feedback` reporting.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["chat", "trackingToken"]) + 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: + ChatMetadataResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatop.py b/src/glean/api_client/models/chatop.py index dbd76070..d14b8817 100644 --- a/src/glean/api_client/models/chatop.py +++ b/src/glean/api_client/models/chatop.py @@ -2,9 +2,10 @@ from __future__ import annotations from .chatrequest import ChatRequest, ChatRequestTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -12,6 +13,8 @@ class ChatRequestRequestTypedDict(TypedDict): chat_request: ChatRequestTypedDict r"""Includes chat history for Glean AI to respond to.""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" timezone_offset: NotRequired[int] r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" @@ -23,9 +26,31 @@ class ChatRequestRequest(BaseModel): ] r"""Includes chat history for Glean AI to respond to.""" + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + timezone_offset: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale", "timezoneOffset"]) + 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/chatrequest.py b/src/glean/api_client/models/chatrequest.py index b04c63c2..ca0d3695 100644 --- a/src/glean/api_client/models/chatrequest.py +++ b/src/glean/api_client/models/chatrequest.py @@ -8,8 +8,9 @@ ChatRestrictionFiltersTypedDict, ) from .sessioninfo import SessionInfo, SessionInfoTypedDict -from glean.api_client.types import BaseModel +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 @@ -78,3 +79,38 @@ class ChatRequest(BaseModel): stream: Optional[bool] = None r"""If set, response lines will be streamed one-by-one as they become available. Each will be a ChatResponse, formatted as JSON, and separated by a new line. If false, the entire response will be returned at once. Note that if this is set and the model being used does not support streaming, the model's response will not be streamed, but other messages from the endpoint still will be.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "sessionInfo", + "saveChat", + "chatId", + "agentConfig", + "inclusions", + "exclusions", + "timeoutMillis", + "applicationId", + "agentId", + "stream", + ] + ) + 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: + ChatRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatresponse.py b/src/glean/api_client/models/chatresponse.py index 533145b4..aa3afabf 100644 --- a/src/glean/api_client/models/chatresponse.py +++ b/src/glean/api_client/models/chatresponse.py @@ -2,8 +2,10 @@ from __future__ import annotations from .chatmessage import ChatMessage, ChatMessageTypedDict -from glean.api_client.types import BaseModel +from .chatmetadata import ChatMetadata, ChatMetadataTypedDict +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 @@ -14,6 +16,8 @@ class ChatResponseTypedDict(TypedDict): messages: NotRequired[List[ChatMessageTypedDict]] chat_id: NotRequired[str] r"""The id of the associated Chat the messages belong to, if one exists.""" + chat: NotRequired[ChatMetadataTypedDict] + r"""Metadata of a Chat a user had with Glean Assistant. This contains no actual conversational content.""" follow_up_prompts: NotRequired[List[str]] r"""Follow-up prompts for the user to potentially use""" backend_time_millis: NotRequired[int] @@ -30,6 +34,9 @@ class ChatResponse(BaseModel): chat_id: Annotated[Optional[str], pydantic.Field(alias="chatId")] = None r"""The id of the associated Chat the messages belong to, if one exists.""" + chat: Optional[ChatMetadata] = None + r"""Metadata of a Chat a user had with Glean Assistant. This contains no actual conversational content.""" + follow_up_prompts: Annotated[ Optional[List[str]], pydantic.Field(alias="followUpPrompts") ] = None @@ -44,3 +51,34 @@ class ChatResponse(BaseModel): Optional[str], pydantic.Field(alias="chatSessionTrackingToken") ] = None r"""A token that is used to track the session.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "messages", + "chatId", + "chat", + "followUpPrompts", + "backendTimeMillis", + "chatSessionTrackingToken", + ] + ) + 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: + ChatResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatrestrictionfilters.py b/src/glean/api_client/models/chatrestrictionfilters.py index 9595d0ea..51db943b 100644 --- a/src/glean/api_client/models/chatrestrictionfilters.py +++ b/src/glean/api_client/models/chatrestrictionfilters.py @@ -2,8 +2,9 @@ from __future__ import annotations from .documentspec_union import DocumentSpecUnion, DocumentSpecUnionTypedDict -from glean.api_client.types import BaseModel +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 @@ -28,3 +29,27 @@ class ChatRestrictionFilters(BaseModel): datasource_instances: Annotated[ Optional[List[str]], pydantic.Field(alias="datasourceInstances") ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["containerSpecs", "documentSpecs", "datasourceInstances"] + ) + 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: + ChatRestrictionFilters.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatresult.py b/src/glean/api_client/models/chatresult.py index 799019f7..8058b2bb 100644 --- a/src/glean/api_client/models/chatresult.py +++ b/src/glean/api_client/models/chatresult.py @@ -2,8 +2,9 @@ from __future__ import annotations from .chat import Chat, ChatTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -23,3 +24,25 @@ class ChatResult(BaseModel): None ) r"""An opaque token that represents this particular Chat. To be used for `/feedback` reporting.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["chat", "trackingToken"]) + 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: + ChatResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatstreamop.py b/src/glean/api_client/models/chatstreamop.py index 73c25c90..6ce3ce9b 100644 --- a/src/glean/api_client/models/chatstreamop.py +++ b/src/glean/api_client/models/chatstreamop.py @@ -2,9 +2,10 @@ from __future__ import annotations from .chatrequest import ChatRequest, ChatRequestTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -29,3 +30,19 @@ class ChatStreamRequest(BaseModel): FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["timezoneOffset"]) + 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/chatsuggestion.py b/src/glean/api_client/models/chatsuggestion.py index 343756b7..8d24fdad 100644 --- a/src/glean/api_client/models/chatsuggestion.py +++ b/src/glean/api_client/models/chatsuggestion.py @@ -1,21 +1,57 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from glean.api_client.types import BaseModel -from typing import Optional -from typing_extensions import NotRequired, TypedDict +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 ChatSuggestionTypedDict(TypedDict): query: NotRequired[str] r"""The actionable chat query to run when the user selects this suggestion.""" + cta: NotRequired[str] + r"""Button text to show for the suggestion action.""" feature: NotRequired[str] r"""Targeted Glean Chat feature for the suggestion.""" + source_document_ids: NotRequired[List[str]] + r"""Document IDs that grounded the suggestion.""" class ChatSuggestion(BaseModel): query: Optional[str] = None r"""The actionable chat query to run when the user selects this suggestion.""" + cta: Optional[str] = None + r"""Button text to show for the suggestion action.""" + feature: Optional[str] = None r"""Targeted Glean Chat feature for the suggestion.""" + + source_document_ids: Annotated[ + Optional[List[str]], pydantic.Field(alias="sourceDocumentIds") + ] = None + r"""Document IDs that grounded the suggestion.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["query", "cta", "feature", "sourceDocumentIds"]) + 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: + ChatSuggestion.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/chatzerostatesuggestionoptions.py b/src/glean/api_client/models/chatzerostatesuggestionoptions.py index dc31b3bf..75527af1 100644 --- a/src/glean/api_client/models/chatzerostatesuggestionoptions.py +++ b/src/glean/api_client/models/chatzerostatesuggestionoptions.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,3 +18,25 @@ class ChatZeroStateSuggestionOptions(BaseModel): None ) r"""The Chat Application ID this feed request should be scoped to. Empty means there is no Chat Application ID..""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["applicationId"]) + 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: + ChatZeroStateSuggestionOptions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/checkdatasourceauthresponse.py b/src/glean/api_client/models/checkdatasourceauthresponse.py new file mode 100644 index 00000000..23a67c29 --- /dev/null +++ b/src/glean/api_client/models/checkdatasourceauthresponse.py @@ -0,0 +1,34 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .unauthorizeddatasourceinstance import ( + UnauthorizedDatasourceInstance, + UnauthorizedDatasourceInstanceTypedDict, +) +from glean.api_client.types import BaseModel +import pydantic +from typing import List +from typing_extensions import Annotated, TypedDict + + +class CheckDatasourceAuthResponseTypedDict(TypedDict): + unauthorized_datasource_instances: List[UnauthorizedDatasourceInstanceTypedDict] + r"""Datasource instances that require per-user OAuth authorization. Empty when all datasources are authorized. + + """ + + +class CheckDatasourceAuthResponse(BaseModel): + unauthorized_datasource_instances: Annotated[ + List[UnauthorizedDatasourceInstance], + pydantic.Field(alias="unauthorizedDatasourceInstances"), + ] + r"""Datasource instances that require per-user OAuth authorization. Empty when all datasources are authorized. + + """ + + +try: + CheckDatasourceAuthResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/checkdocumentaccessrequest.py b/src/glean/api_client/models/checkdocumentaccessrequest.py index fca1be2f..e5985de8 100644 --- a/src/glean/api_client/models/checkdocumentaccessrequest.py +++ b/src/glean/api_client/models/checkdocumentaccessrequest.py @@ -33,3 +33,9 @@ class CheckDocumentAccessRequest(BaseModel): user_email: Annotated[str, pydantic.Field(alias="userEmail")] r"""Email of user to check access for.""" + + +try: + CheckDocumentAccessRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/checkdocumentaccessresponse.py b/src/glean/api_client/models/checkdocumentaccessresponse.py index ae0f173a..373b9388 100644 --- a/src/glean/api_client/models/checkdocumentaccessresponse.py +++ b/src/glean/api_client/models/checkdocumentaccessresponse.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -19,3 +20,25 @@ class CheckDocumentAccessResponse(BaseModel): has_access: Annotated[Optional[bool], pydantic.Field(alias="hasAccess")] = None r"""If true, user has access to document for search""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["hasAccess"]) + 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: + CheckDocumentAccessResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/clustergroup.py b/src/glean/api_client/models/clustergroup.py index e48ca094..9805a2fa 100644 --- a/src/glean/api_client/models/clustergroup.py +++ b/src/glean/api_client/models/clustergroup.py @@ -2,8 +2,10 @@ from __future__ import annotations from .clustertypeenum import ClusterTypeEnum -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -33,3 +35,34 @@ class ClusterGroup(BaseModel): Optional[ClusterTypeEnum], pydantic.Field(alias="clusterType") ] = 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"]) + 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: + ClusterGroup.model_rebuild() +except NameError: + pass 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 02176f8e..140e792f 100644 --- a/src/glean/api_client/models/code.py +++ b/src/glean/api_client/models/code.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -30,3 +31,27 @@ class Code(BaseModel): is_last_match: Annotated[Optional[bool], pydantic.Field(alias="isLastMatch")] = None r"""Last file match for a repo""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["repoName", "fileName", "fileUrl", "lines", "isLastMatch"] + ) + 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: + Code.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/codeline.py b/src/glean/api_client/models/codeline.py index 46321873..70e471cc 100644 --- a/src/glean/api_client/models/codeline.py +++ b/src/glean/api_client/models/codeline.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -24,3 +25,25 @@ class CodeLine(BaseModel): ranges: Optional[List["TextRange"]] = None r"""Index ranges depicting matched sections of the line""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["lineNumber", "content", "ranges"]) + 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: + CodeLine.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/collection.py b/src/glean/api_client/models/collection.py index df25e6db..8fb2e2c5 100644 --- a/src/glean/api_client/models/collection.py +++ b/src/glean/api_client/models/collection.py @@ -9,8 +9,9 @@ from .objectpermissions import ObjectPermissions, ObjectPermissionsTypedDict from .thumbnail import Thumbnail, ThumbnailTypedDict from datetime import datetime -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -46,6 +47,8 @@ class CollectionTypedDict(TypedDict): allowed_datasource: NotRequired[str] r"""The datasource type this Collection can hold.""" permissions: NotRequired[ObjectPermissionsTypedDict] + tracking_token: NotRequired[str] + r"""An opaque token that represents this particular UGC. To be used for `/feedback` reporting.""" create_time: NotRequired[datetime] update_time: NotRequired[datetime] creator: NotRequired["PersonTypedDict"] @@ -108,6 +111,11 @@ class Collection(BaseModel): permissions: Optional[ObjectPermissions] = None + tracking_token: Annotated[Optional[str], pydantic.Field(alias="trackingToken")] = ( + None + ) + r"""An opaque token that represents this particular UGC. To be used for `/feedback` reporting.""" + create_time: Annotated[Optional[datetime], pydantic.Field(alias="createTime")] = ( None ) @@ -141,3 +149,49 @@ class Collection(BaseModel): roles: Optional[List["UserRoleSpecification"]] = None r"""A list of user roles for the Collection.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "addedRoles", + "removedRoles", + "audienceFilters", + "icon", + "adminLocked", + "parentId", + "thumbnail", + "allowedDatasource", + "permissions", + "trackingToken", + "createTime", + "updateTime", + "creator", + "updatedBy", + "itemCount", + "childCount", + "items", + "pinMetadata", + "shortcuts", + "children", + "roles", + ] + ) + 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: + Collection.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/collectionerror.py b/src/glean/api_client/models/collectionerror.py index d1c742d3..408d04c7 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" @@ -15,6 +17,7 @@ class CollectionErrorErrorCode(str, Enum): HEIGHT_VIOLATION = "HEIGHT_VIOLATION" WIDTH_VIOLATION = "WIDTH_VIOLATION" NO_PERMISSIONS = "NO_PERMISSIONS" + CORRUPT_ITEM = "CORRUPT_ITEM" class CollectionErrorTypedDict(TypedDict): @@ -23,3 +26,18 @@ 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() +except NameError: + pass diff --git a/src/glean/api_client/models/collectionitem.py b/src/glean/api_client/models/collectionitem.py index 50086101..0cbe6492 100644 --- a/src/glean/api_client/models/collectionitem.py +++ b/src/glean/api_client/models/collectionitem.py @@ -3,8 +3,10 @@ from __future__ import annotations from datetime import datetime from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -15,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" @@ -80,3 +82,48 @@ class CollectionItem(BaseModel): shortcut: Optional["Shortcut"] = None 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( + [ + "name", + "description", + "icon", + "documentId", + "url", + "itemId", + "createdBy", + "createdAt", + "document", + "shortcut", + "collection", + ] + ) + 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: + CollectionItem.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/collectionitemdescriptor.py b/src/glean/api_client/models/collectionitemdescriptor.py index 54a063ea..6642f487 100644 --- a/src/glean/api_client/models/collectionitemdescriptor.py +++ b/src/glean/api_client/models/collectionitemdescriptor.py @@ -2,8 +2,9 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -54,3 +55,35 @@ class CollectionItemDescriptor(BaseModel): item_type: Annotated[ Optional[CollectionItemDescriptorItemType], pydantic.Field(alias="itemType") ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "name", + "description", + "icon", + "url", + "documentId", + "newNextItemId", + "itemType", + ] + ) + 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: + CollectionItemDescriptor.model_rebuild() +except NameError: + pass 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 0d25132c..2e54e6a4 100644 --- a/src/glean/api_client/models/collectionpinnedmetadata.py +++ b/src/glean/api_client/models/collectionpinnedmetadata.py @@ -3,8 +3,9 @@ from __future__ import annotations from .collectionpinmetadata import CollectionPinMetadata, CollectionPinMetadataTypedDict from .collectionpintarget import CollectionPinTarget, CollectionPinTargetTypedDict -from glean.api_client.types import BaseModel +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 @@ -26,3 +27,25 @@ class CollectionPinnedMetadata(BaseModel): Optional[List[CollectionPinMetadata]], pydantic.Field(alias="eligiblePins") ] = None r"""List of targets this Collection can be pinned to, excluding the targets this Collection is already pinned to. We also include Collection ID already is pinned to each eligible target, which will be 0 if the target has no pinned Collection.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["existingPins", "eligiblePins"]) + 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: + CollectionPinnedMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/collectionpintarget.py b/src/glean/api_client/models/collectionpintarget.py index c7764331..cd3f16f2 100644 --- a/src/glean/api_client/models/collectionpintarget.py +++ b/src/glean/api_client/models/collectionpintarget.py @@ -3,7 +3,9 @@ from __future__ import annotations from .collectionpinnablecategories import CollectionPinnableCategories from .collectionpinnabletargets import CollectionPinnableTargets -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -26,3 +28,37 @@ 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"]) + 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/commentdefinition.py b/src/glean/api_client/models/commentdefinition.py index 53314a48..121b9722 100644 --- a/src/glean/api_client/models/commentdefinition.py +++ b/src/glean/api_client/models/commentdefinition.py @@ -6,8 +6,9 @@ UserReferenceDefinition, UserReferenceDefinitionTypedDict, ) -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -51,3 +52,27 @@ class CommentDefinition(BaseModel): Optional[UserReferenceDefinition], pydantic.Field(alias="updatedBy") ] = None r"""Describes how a user is referenced in a document. The user can be referenced by email or by a datasource specific id.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["author", "content", "createdAt", "updatedAt", "updatedBy"] + ) + 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: + CommentDefinition.model_rebuild() +except NameError: + pass 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 27fdff7c..acd9da9d 100644 --- a/src/glean/api_client/models/company.py +++ b/src/glean/api_client/models/company.py @@ -2,8 +2,9 @@ from __future__ import annotations from datetime import date -from glean.api_client.types import BaseModel +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 @@ -82,3 +83,40 @@ class Company(BaseModel): about: Optional[str] = None r"""User facing description of company.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "profileUrl", + "websiteUrls", + "logoUrl", + "location", + "phone", + "fax", + "industry", + "annualRevenue", + "numberOfEmployees", + "stockSymbol", + "foundedDate", + "about", + ] + ) + 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: + Company.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/conferencedata.py b/src/glean/api_client/models/conferencedata.py index f90928c7..a9f6b4b4 100644 --- a/src/glean/api_client/models/conferencedata.py +++ b/src/glean/api_client/models/conferencedata.py @@ -2,17 +2,19 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL +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" @@ -32,3 +34,37 @@ class ConferenceData(BaseModel): r"""A permalink for the conference.""" 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"]) + 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/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 db493b39..03e7f7a2 100644 --- a/src/glean/api_client/models/contentdefinition.py +++ b/src/glean/api_client/models/contentdefinition.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -29,3 +30,25 @@ class ContentDefinition(BaseModel): None ) r"""base64 encoded binary content. Only one of textContent or binary content can be specified""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["textContent", "binaryContent"]) + 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: + ContentDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/contentinsightsresponse.py b/src/glean/api_client/models/contentinsightsresponse.py deleted file mode 100644 index a8cf841c..00000000 --- a/src/glean/api_client/models/contentinsightsresponse.py +++ /dev/null @@ -1,46 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .documentinsight import DocumentInsight, DocumentInsightTypedDict -from glean.api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class ContentInsightsResponseTypedDict(TypedDict): - last_log_timestamp: NotRequired[int] - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - document_insights: NotRequired[List[DocumentInsightTypedDict]] - r"""Insights for documents.""" - departments: NotRequired[List[str]] - r"""list of departments applicable for contents tab.""" - min_department_size_threshold: NotRequired[int] - r"""Min threshold in size of departments while populating results, otherwise 0.""" - min_visitor_threshold: NotRequired[int] - r"""Minimum number of visitors to a document required to be included in insights.""" - - -class ContentInsightsResponse(BaseModel): - last_log_timestamp: Annotated[ - Optional[int], pydantic.Field(alias="lastLogTimestamp") - ] = None - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - - document_insights: Annotated[ - Optional[List[DocumentInsight]], pydantic.Field(alias="documentInsights") - ] = None - r"""Insights for documents.""" - - departments: Optional[List[str]] = None - r"""list of departments applicable for contents tab.""" - - min_department_size_threshold: Annotated[ - Optional[int], pydantic.Field(alias="minDepartmentSizeThreshold") - ] = None - r"""Min threshold in size of departments while populating results, otherwise 0.""" - - min_visitor_threshold: Annotated[ - Optional[int], pydantic.Field(alias="minVisitorThreshold") - ] = None - r"""Minimum number of visitors to a document required to be included in insights.""" diff --git a/src/glean/api_client/models/countinfo.py b/src/glean/api_client/models/countinfo.py index a01c4253..83d1aa3b 100644 --- a/src/glean/api_client/models/countinfo.py +++ b/src/glean/api_client/models/countinfo.py @@ -2,7 +2,8 @@ from __future__ import annotations from .period import Period, PeriodTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -23,3 +24,19 @@ class CountInfo(BaseModel): org: Optional[str] = None r"""The unit of organization over which we did the count aggregation, e.g. org (department) or company""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["period", "org"]) + 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/createannouncementop.py b/src/glean/api_client/models/createannouncementop.py new file mode 100644 index 00000000..f07a4fec --- /dev/null +++ b/src/glean/api_client/models/createannouncementop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .createannouncementrequest import ( + CreateAnnouncementRequest, + CreateAnnouncementRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CreateannouncementRequestRequestTypedDict(TypedDict): + create_announcement_request: CreateAnnouncementRequestTypedDict + r"""Announcement content""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class CreateannouncementRequestRequest(BaseModel): + create_announcement_request: Annotated[ + CreateAnnouncementRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Announcement content""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/createannouncementrequest.py b/src/glean/api_client/models/createannouncementrequest.py index 66373cd7..b7cbb6c5 100644 --- a/src/glean/api_client/models/createannouncementrequest.py +++ b/src/glean/api_client/models/createannouncementrequest.py @@ -6,8 +6,9 @@ from .thumbnail import Thumbnail, ThumbnailTypedDict from datetime import datetime from enum import Enum -from glean.api_client.types import BaseModel +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 @@ -103,3 +104,39 @@ class CreateAnnouncementRequest(BaseModel): view_url: Annotated[Optional[str], pydantic.Field(alias="viewUrl")] = None r"""URL for viewing the announcement. It will be set to document URL for announcements from other datasources e.g. simpplr. Can only be written when channel=\"SOCIAL_FEED\".""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "body", + "emoji", + "thumbnail", + "banner", + "audienceFilters", + "sourceDocumentId", + "hideAttribution", + "channel", + "postType", + "isPrioritized", + "viewUrl", + ] + ) + 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: + CreateAnnouncementRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/createanswerop.py b/src/glean/api_client/models/createanswerop.py new file mode 100644 index 00000000..6e7cc763 --- /dev/null +++ b/src/glean/api_client/models/createanswerop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .createanswerrequest import CreateAnswerRequest, CreateAnswerRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CreateanswerRequestRequestTypedDict(TypedDict): + create_answer_request: CreateAnswerRequestTypedDict + r"""CreateAnswer request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class CreateanswerRequestRequest(BaseModel): + create_answer_request: Annotated[ + CreateAnswerRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""CreateAnswer request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/createauthtokenresponse.py b/src/glean/api_client/models/createauthtokenresponse.py index 50e696ac..df588893 100644 --- a/src/glean/api_client/models/createauthtokenresponse.py +++ b/src/glean/api_client/models/createauthtokenresponse.py @@ -19,3 +19,9 @@ class CreateAuthTokenResponse(BaseModel): expiration_time: Annotated[int, pydantic.Field(alias="expirationTime")] r"""Unix timestamp for when this token expires (in seconds since epoch UTC).""" + + +try: + CreateAuthTokenResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/createcollectionop.py b/src/glean/api_client/models/createcollectionop.py index 279215a4..3b504b1b 100644 --- a/src/glean/api_client/models/createcollectionop.py +++ b/src/glean/api_client/models/createcollectionop.py @@ -3,9 +3,52 @@ from __future__ import annotations from .collection import Collection, CollectionTypedDict from .collectionerror import CollectionError, CollectionErrorTypedDict -from glean.api_client.types import BaseModel +from .createcollectionrequest import ( + CreateCollectionRequest, + CreateCollectionRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer from typing import Optional, Union -from typing_extensions import NotRequired, TypeAliasType, TypedDict +from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict + + +class CreatecollectionRequestRequestTypedDict(TypedDict): + create_collection_request: CreateCollectionRequestTypedDict + r"""Collection content plus any additional metadata for the request.""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class CreatecollectionRequestRequest(BaseModel): + create_collection_request: Annotated[ + CreateCollectionRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Collection content plus any additional metadata for the request.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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 class ResponseBody2TypedDict(TypedDict): @@ -18,6 +61,22 @@ class ResponseBody2(BaseModel): collection: Optional[Collection] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["collection"]) + 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 + class ResponseBody1TypedDict(TypedDict): collection: CollectionTypedDict @@ -29,6 +88,22 @@ class ResponseBody1(BaseModel): error: Optional[CollectionError] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["error"]) + 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 + CreatecollectionResponseTypedDict = TypeAliasType( "CreatecollectionResponseTypedDict", diff --git a/src/glean/api_client/models/createcollectionrequest.py b/src/glean/api_client/models/createcollectionrequest.py index fb4d7932..8ed97b03 100644 --- a/src/glean/api_client/models/createcollectionrequest.py +++ b/src/glean/api_client/models/createcollectionrequest.py @@ -4,8 +4,9 @@ from .facetfilter import FacetFilter, FacetFilterTypedDict from .thumbnail import Thumbnail, ThumbnailTypedDict from .userrolespecification import UserRoleSpecification, UserRoleSpecificationTypedDict -from glean.api_client.types import BaseModel +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 @@ -76,3 +77,38 @@ class CreateCollectionRequest(BaseModel): Optional[str], pydantic.Field(alias="newNextItemId") ] = None r"""The (optional) ItemId of the next CollectionItem in sequence. If omitted, will be added to the end of the Collection. Only used if parentId is specified.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "description", + "addedRoles", + "removedRoles", + "audienceFilters", + "icon", + "adminLocked", + "parentId", + "thumbnail", + "allowedDatasource", + "newNextItemId", + ] + ) + 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: + CreateCollectionRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/createdlpreportrequest.py b/src/glean/api_client/models/createdlpreportrequest.py index 6d3ab517..9de15343 100644 --- a/src/glean/api_client/models/createdlpreportrequest.py +++ b/src/glean/api_client/models/createdlpreportrequest.py @@ -3,8 +3,10 @@ from __future__ import annotations from .dlpconfig import DlpConfig, DlpConfigTypedDict from .dlpfrequency import DlpFrequency -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -34,3 +36,34 @@ class CreateDlpReportRequest(BaseModel): None ) 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"]) + 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: + CreateDlpReportRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/createdlpreportresponse.py b/src/glean/api_client/models/createdlpreportresponse.py index 6f9a001a..2fecf5af 100644 --- a/src/glean/api_client/models/createdlpreportresponse.py +++ b/src/glean/api_client/models/createdlpreportresponse.py @@ -2,7 +2,8 @@ from __future__ import annotations from .dlpreport import DlpReport, DlpReportTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -15,3 +16,19 @@ class CreateDlpReportResponseTypedDict(TypedDict): class CreateDlpReportResponse(BaseModel): report: Optional[DlpReport] = None r"""Full policy information that will be used for scans.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["report"]) + 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/createshortcutop.py b/src/glean/api_client/models/createshortcutop.py new file mode 100644 index 00000000..cd9cab87 --- /dev/null +++ b/src/glean/api_client/models/createshortcutop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .createshortcutrequest import CreateShortcutRequest, CreateShortcutRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CreateshortcutRequestRequestTypedDict(TypedDict): + create_shortcut_request: CreateShortcutRequestTypedDict + r"""CreateShortcut request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class CreateshortcutRequestRequest(BaseModel): + create_shortcut_request: Annotated[ + CreateShortcutRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""CreateShortcut request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/createshortcutresponse.py b/src/glean/api_client/models/createshortcutresponse.py index b07ad611..7fd2e6eb 100644 --- a/src/glean/api_client/models/createshortcutresponse.py +++ b/src/glean/api_client/models/createshortcutresponse.py @@ -3,7 +3,8 @@ from __future__ import annotations from .shortcut import Shortcut, ShortcutTypedDict from .shortcuterror import ShortcutError, ShortcutErrorTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -17,3 +18,19 @@ class CreateShortcutResponse(BaseModel): shortcut: Optional[Shortcut] = None error: Optional[ShortcutError] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["shortcut", "error"]) + 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/currentactiveusers.py b/src/glean/api_client/models/currentactiveusers.py index bf402756..1236b653 100644 --- a/src/glean/api_client/models/currentactiveusers.py +++ b/src/glean/api_client/models/currentactiveusers.py @@ -1,26 +1,49 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict class CurrentActiveUsersTypedDict(TypedDict): monthly_active_users: NotRequired[int] - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: NotRequired[int] - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" class CurrentActiveUsers(BaseModel): monthly_active_users: Annotated[ Optional[int], pydantic.Field(alias="monthlyActiveUsers") ] = None - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: Annotated[ Optional[int], pydantic.Field(alias="weeklyActiveUsers") ] = None - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["monthlyActiveUsers", "weeklyActiveUsers"]) + 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: + CurrentActiveUsers.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customdatasourceconfig.py b/src/glean/api_client/models/customdatasourceconfig.py index ea4598b6..635c888a 100644 --- a/src/glean/api_client/models/customdatasourceconfig.py +++ b/src/glean/api_client/models/customdatasourceconfig.py @@ -8,13 +8,15 @@ from .objectdefinition import ObjectDefinition, ObjectDefinitionTypedDict from .quicklink import Quicklink, QuicklinkTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -37,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" @@ -236,3 +238,72 @@ class CustomDatasourceConfig(BaseModel): Optional[bool], pydantic.Field(alias="isTestDatasource") ] = 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( + [ + "displayName", + "datasourceCategory", + "urlRegex", + "iconUrl", + "objectDefinitions", + "suggestionText", + "homeUrl", + "crawlerSeedUrls", + "iconDarkUrl", + "hideBuiltInFacets", + "canonicalizingURLRegex", + "canonicalizingTitleRegex", + "redlistTitleRegex", + "connectorType", + "quicklinks", + "renderConfigPreset", + "aliases", + "isOnPrem", + "trustUrlRegexForViewActivity", + "includeUtmSource", + "stripFragmentInCanonicalUrl", + "identityDatasourceName", + "productAccessGroup", + "isUserReferencedByEmail", + "isEntityDatasource", + "isTestDatasource", + ] + ) + 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: + CustomDatasourceConfig.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customdatavalue.py b/src/glean/api_client/models/customdatavalue.py index d21b3605..a07d2e81 100644 --- a/src/glean/api_client/models/customdatavalue.py +++ b/src/glean/api_client/models/customdatavalue.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -31,3 +32,33 @@ class CustomDataValue(BaseModel): boolean_value: Annotated[Optional[bool], pydantic.Field(alias="booleanValue")] = ( None ) + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "displayLabel", + "stringValue", + "stringListValue", + "numberValue", + "booleanValue", + ] + ) + 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: + CustomDataValue.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customentity.py b/src/glean/api_client/models/customentity.py index f9abd92e..6cb844cc 100644 --- a/src/glean/api_client/models/customentity.py +++ b/src/glean/api_client/models/customentity.py @@ -3,8 +3,9 @@ from __future__ import annotations from .customentitymetadata import CustomEntityMetadata, CustomEntityMetadataTypedDict from .objectpermissions import ObjectPermissions, ObjectPermissionsTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -49,3 +50,35 @@ class CustomEntity(BaseModel): roles: Optional[List["UserRoleSpecification"]] = None r"""A list of user roles for the custom entity explicitly granted by the owner.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "permissions", + "id", + "title", + "datasource", + "objectType", + "metadata", + "roles", + ] + ) + 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: + CustomEntity.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customentitymetadata.py b/src/glean/api_client/models/customentitymetadata.py index 332933e7..45958c27 100644 --- a/src/glean/api_client/models/customentitymetadata.py +++ b/src/glean/api_client/models/customentitymetadata.py @@ -2,8 +2,9 @@ from __future__ import annotations from .customdatavalue import CustomDataValue, CustomDataValueTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -18,3 +19,25 @@ class CustomEntityMetadata(BaseModel): Optional[Dict[str, CustomDataValue]], pydantic.Field(alias="customData") ] = None r"""Custom fields specific to individual datasources""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["customData"]) + 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: + CustomEntityMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customer.py b/src/glean/api_client/models/customer.py index 1582f201..7154cf22 100644 --- a/src/glean/api_client/models/customer.py +++ b/src/glean/api_client/models/customer.py @@ -4,8 +4,9 @@ from .company import Company, CompanyTypedDict from .customermetadata import CustomerMetadata, CustomerMetadataTypedDict from datetime import date -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Dict, List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -68,3 +69,36 @@ class Customer(BaseModel): notes: Optional[str] = None r"""User facing (potentially generated) notes about company.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "domains", + "documentCounts", + "poc", + "metadata", + "mergedCustomers", + "startDate", + "contractAnnualRevenue", + "notes", + ] + ) + 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: + Customer.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customermetadata.py b/src/glean/api_client/models/customermetadata.py index bd60cdb0..35adf587 100644 --- a/src/glean/api_client/models/customermetadata.py +++ b/src/glean/api_client/models/customermetadata.py @@ -2,8 +2,9 @@ from __future__ import annotations from .customdatavalue import CustomDataValue, CustomDataValueTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -23,3 +24,25 @@ class CustomerMetadata(BaseModel): Optional[Dict[str, CustomDataValue]], pydantic.Field(alias="customData") ] = None r"""Custom fields specific to individual datasources""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["datasourceId", "customData"]) + 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: + CustomerMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customfielddata.py b/src/glean/api_client/models/customfielddata.py index 002ac692..5e85ebbf 100644 --- a/src/glean/api_client/models/customfielddata.py +++ b/src/glean/api_client/models/customfielddata.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import NotRequired, TypedDict @@ -25,3 +26,19 @@ class CustomFieldData(BaseModel): displayable: Optional[bool] = True r"""Determines whether the client should display this custom field""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["displayable"]) + 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/customfieldvaluehyperlink.py b/src/glean/api_client/models/customfieldvaluehyperlink.py index ce664b0a..44931d12 100644 --- a/src/glean/api_client/models/customfieldvaluehyperlink.py +++ b/src/glean/api_client/models/customfieldvaluehyperlink.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -20,3 +21,25 @@ class CustomFieldValueHyperlink(BaseModel): url_link: Annotated[Optional[str], pydantic.Field(alias="urlLink")] = None r"""Link for this URL.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["urlAnchor", "urlLink"]) + 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: + CustomFieldValueHyperlink.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customfieldvalueperson.py b/src/glean/api_client/models/customfieldvalueperson.py index 75220fe4..cb264f2b 100644 --- a/src/glean/api_client/models/customfieldvalueperson.py +++ b/src/glean/api_client/models/customfieldvalueperson.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import NotRequired, TypedDict @@ -15,3 +16,19 @@ class CustomFieldValuePersonTypedDict(TypedDict): class CustomFieldValuePerson(BaseModel): person: Optional["Person"] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["person"]) + 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/customfieldvaluestr.py b/src/glean/api_client/models/customfieldvaluestr.py index d86c0191..68f0fa1e 100644 --- a/src/glean/api_client/models/customfieldvaluestr.py +++ b/src/glean/api_client/models/customfieldvaluestr.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -15,3 +16,25 @@ class CustomFieldValueStrTypedDict(TypedDict): class CustomFieldValueStr(BaseModel): str_text: Annotated[Optional[str], pydantic.Field(alias="strText")] = None r"""Text field for string value.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["strText"]) + 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: + CustomFieldValueStr.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/custommetadatapropertydefinition.py b/src/glean/api_client/models/custommetadatapropertydefinition.py new file mode 100644 index 00000000..26d09515 --- /dev/null +++ b/src/glean/api_client/models/custommetadatapropertydefinition.py @@ -0,0 +1,81 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +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 field_serializer, model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CustomMetadataPropertyDefinitionPropertyType( + str, Enum, metaclass=utils.OpenEnumMeta +): + r"""The type of metadata key. This governs the search and faceting behavior.""" + + TEXT = "TEXT" + PICKLIST = "PICKLIST" + TEXTLIST = "TEXTLIST" + MULTIPICKLIST = "MULTIPICKLIST" + + +class CustomMetadataPropertyDefinitionTypedDict(TypedDict): + r"""The definition for a key within a Custom Metadata schema. Only the fields applicable to Custom Metadata are exposed.""" + + name: str + r"""The name of the metadata key.""" + property_type: CustomMetadataPropertyDefinitionPropertyType + r"""The type of metadata key. This governs the search and faceting behavior.""" + skip_indexing: NotRequired[bool] + r"""If true then the property will not be indexed for retrieval and ranking.""" + + +class CustomMetadataPropertyDefinition(BaseModel): + r"""The definition for a key within a Custom Metadata schema. Only the fields applicable to Custom Metadata are exposed.""" + + name: str + r"""The name of the metadata key.""" + + property_type: Annotated[ + CustomMetadataPropertyDefinitionPropertyType, + pydantic.Field(alias="propertyType"), + ] + r"""The type of metadata key. This governs the search and faceting behavior.""" + + skip_indexing: Annotated[Optional[bool], pydantic.Field(alias="skipIndexing")] = ( + None + ) + r"""If true then the property will not be indexed for retrieval and ranking.""" + + @field_serializer("property_type") + def serialize_property_type(self, value): + if isinstance(value, str): + try: + return models.CustomMetadataPropertyDefinitionPropertyType(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["skipIndexing"]) + 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: + CustomMetadataPropertyDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/custommetadataputrequest.py b/src/glean/api_client/models/custommetadataputrequest.py new file mode 100644 index 00000000..aaa5152c --- /dev/null +++ b/src/glean/api_client/models/custommetadataputrequest.py @@ -0,0 +1,30 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .customproperty import CustomProperty, CustomPropertyTypedDict +from glean.api_client.types import BaseModel +import pydantic +from typing import List +from typing_extensions import Annotated, TypedDict + + +class CustomMetadataPutRequestTypedDict(TypedDict): + r"""Request body for adding or updating custom metadata on a document""" + + custom_metadata: List[CustomPropertyTypedDict] + r"""Array of custom metadata key-value pairs""" + + +class CustomMetadataPutRequest(BaseModel): + r"""Request body for adding or updating custom metadata on a document""" + + custom_metadata: Annotated[ + List[CustomProperty], pydantic.Field(alias="customMetadata") + ] + r"""Array of custom metadata key-value pairs""" + + +try: + CustomMetadataPutRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/custommetadataschema.py b/src/glean/api_client/models/custommetadataschema.py new file mode 100644 index 00000000..13576c2b --- /dev/null +++ b/src/glean/api_client/models/custommetadataschema.py @@ -0,0 +1,33 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .custommetadatapropertydefinition import ( + CustomMetadataPropertyDefinition, + CustomMetadataPropertyDefinitionTypedDict, +) +from glean.api_client.types import BaseModel +import pydantic +from typing import List +from typing_extensions import Annotated, TypedDict + + +class CustomMetadataSchemaTypedDict(TypedDict): + r"""Schema for custom metadata containing metadata key definitions""" + + metadata_keys: List[CustomMetadataPropertyDefinitionTypedDict] + r"""Array of metadata key definitions""" + + +class CustomMetadataSchema(BaseModel): + r"""Schema for custom metadata containing metadata key definitions""" + + metadata_keys: Annotated[ + List[CustomMetadataPropertyDefinition], pydantic.Field(alias="metadataKeys") + ] + r"""Array of metadata key definitions""" + + +try: + CustomMetadataSchema.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customproperty.py b/src/glean/api_client/models/customproperty.py index 08ee1298..74cc710e 100644 --- a/src/glean/api_client/models/customproperty.py +++ b/src/glean/api_client/models/customproperty.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Any, Optional from typing_extensions import NotRequired, TypedDict @@ -11,7 +12,7 @@ class CustomPropertyTypedDict(TypedDict): name: NotRequired[str] value: NotRequired[Any] - r"""Must either be a string or an array of strings. An integer, boolean, etc. is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this.""" + r"""Must be a string, a number (for INT properties), or an array of strings. A boolean is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this.""" class CustomProperty(BaseModel): @@ -20,4 +21,20 @@ class CustomProperty(BaseModel): name: Optional[str] = None value: Optional[Any] = None - r"""Must either be a string or an array of strings. An integer, boolean, etc. is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this.""" + r"""Must be a string, a number (for INT properties), or an array of strings. A boolean is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name", "value"]) + 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/customsensitiveexpression.py b/src/glean/api_client/models/customsensitiveexpression.py new file mode 100644 index 00000000..4d525872 --- /dev/null +++ b/src/glean/api_client/models/customsensitiveexpression.py @@ -0,0 +1,51 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .customsensitiverule import CustomSensitiveRule, CustomSensitiveRuleTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CustomSensitiveExpressionTypedDict(TypedDict): + id: NotRequired[str] + r"""Identifier for the custom sensitive expression.""" + keyword: NotRequired[CustomSensitiveRuleTypedDict] + evaluation_expression: NotRequired[str] + r"""The expression to evaluate the keyword match.""" + + +class CustomSensitiveExpression(BaseModel): + id: Optional[str] = None + r"""Identifier for the custom sensitive expression.""" + + keyword: Optional[CustomSensitiveRule] = None + + evaluation_expression: Annotated[ + Optional[str], pydantic.Field(alias="evaluationExpression") + ] = None + r"""The expression to evaluate the keyword match.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "keyword", "evaluationExpression"]) + 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: + CustomSensitiveExpression.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customsensitiverule.py b/src/glean/api_client/models/customsensitiverule.py new file mode 100644 index 00000000..c767e33d --- /dev/null +++ b/src/glean/api_client/models/customsensitiverule.py @@ -0,0 +1,89 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +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 field_serializer, model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +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" + VERY_LIKELY = "VERY_LIKELY" + POSSIBLE = "POSSIBLE" + UNLIKELY = "UNLIKELY" + VERY_UNLIKELY = "VERY_UNLIKELY" + + +class CustomSensitiveRuleTypedDict(TypedDict): + id: NotRequired[str] + r"""Identifier for the custom sensitive expression.""" + value: NotRequired[str] + r"""The value of the custom sensitive rule. For REGEX type, this is the regex pattern; for TERM type, it is the term to match; and for INFO_TYPE type, it refers to predefined categories of sensitive content. See https://cloud.google.com/dlp/docs/infotypes-reference for available options.""" + type: NotRequired[CustomSensitiveRuleType] + r"""Type of the custom sensitive rule.""" + likelihood_threshold: NotRequired[CustomSensitiveRuleLikelihoodThreshold] + r"""Likelihood threshold for BUILT_IN infotypes (e.g., LIKELY, VERY_LIKELY). Only applicable for BUILT_IN type.""" + + +class CustomSensitiveRule(BaseModel): + id: Optional[str] = None + r"""Identifier for the custom sensitive expression.""" + + value: Optional[str] = None + r"""The value of the custom sensitive rule. For REGEX type, this is the regex pattern; for TERM type, it is the term to match; and for INFO_TYPE type, it refers to predefined categories of sensitive content. See https://cloud.google.com/dlp/docs/infotypes-reference for available options.""" + + type: Optional[CustomSensitiveRuleType] = None + r"""Type of the custom sensitive rule.""" + + likelihood_threshold: Annotated[ + Optional[CustomSensitiveRuleLikelihoodThreshold], + pydantic.Field(alias="likelihoodThreshold"), + ] = 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"]) + 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: + CustomSensitiveRule.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/customsensitiveruletype.py b/src/glean/api_client/models/customsensitiveruletype.py new file mode 100644 index 00000000..b273ac98 --- /dev/null +++ b/src/glean/api_client/models/customsensitiveruletype.py @@ -0,0 +1,13 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class CustomSensitiveRuleType(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Type of the custom sensitive rule.""" + + REGEX = "REGEX" + TERM = "TERM" + INFO_TYPE = "INFO_TYPE" diff --git a/src/glean/api_client/models/datasourcebulkmembershipdefinition.py b/src/glean/api_client/models/datasourcebulkmembershipdefinition.py index 6d2b7bd5..31e0065c 100644 --- a/src/glean/api_client/models/datasourcebulkmembershipdefinition.py +++ b/src/glean/api_client/models/datasourcebulkmembershipdefinition.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -28,3 +29,25 @@ class DatasourceBulkMembershipDefinition(BaseModel): Optional[str], pydantic.Field(alias="memberGroupName") ] = None r"""If the member is a group, then the name of the member group""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["memberUserId", "memberGroupName"]) + 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: + DatasourceBulkMembershipDefinition.model_rebuild() +except NameError: + pass 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/datasourcecredentialstatus.py b/src/glean/api_client/models/datasourcecredentialstatus.py new file mode 100644 index 00000000..aa0eff70 --- /dev/null +++ b/src/glean/api_client/models/datasourcecredentialstatus.py @@ -0,0 +1,15 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class DatasourceCredentialStatus(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Lifecycle state of the credentials installed for a datasource instance. Mirrors the internal admin Status enum so the handler can surface the same health signals already tracked today. EXPIRING_SOON is represented as VALID_WITH_WARNINGS (with detail in `message`); EXPIRED is surfaced as INVALID plus a non-null `expiresAt` in the past.""" + + VALID = "VALID" + VALID_WITH_WARNINGS = "VALID_WITH_WARNINGS" + VALIDATING = "VALIDATING" + INVALID = "INVALID" + MISSING = "MISSING" diff --git a/src/glean/api_client/models/datasourcecredentialstatusresponse.py b/src/glean/api_client/models/datasourcecredentialstatusresponse.py new file mode 100644 index 00000000..150f1a48 --- /dev/null +++ b/src/glean/api_client/models/datasourcecredentialstatusresponse.py @@ -0,0 +1,81 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .datasourcecredentialstatus import DatasourceCredentialStatus +from datetime import datetime +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import field_serializer, model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DatasourceCredentialStatusResponseTypedDict(TypedDict): + r"""Status of the credentials currently installed for a datasource instance.""" + + status: DatasourceCredentialStatus + r"""Lifecycle state of the credentials installed for a datasource instance. Mirrors the internal admin Status enum so the handler can surface the same health signals already tracked today. EXPIRING_SOON is represented as VALID_WITH_WARNINGS (with detail in `message`); EXPIRED is surfaced as INVALID plus a non-null `expiresAt` in the past. + + """ + last_rotated_at: NotRequired[datetime] + r"""When the credentials were last rotated. Omitted when not known.""" + expires_at: NotRequired[datetime] + r"""When the active credentials expire. Omitted when not known or not applicable to this credential type. + + """ + message: NotRequired[str] + r"""Optional human-readable detail about the current credential status.""" + + +class DatasourceCredentialStatusResponse(BaseModel): + r"""Status of the credentials currently installed for a datasource instance.""" + + status: DatasourceCredentialStatus + r"""Lifecycle state of the credentials installed for a datasource instance. Mirrors the internal admin Status enum so the handler can surface the same health signals already tracked today. EXPIRING_SOON is represented as VALID_WITH_WARNINGS (with detail in `message`); EXPIRED is surfaced as INVALID plus a non-null `expiresAt` in the past. + + """ + + last_rotated_at: Annotated[ + Optional[datetime], pydantic.Field(alias="lastRotatedAt") + ] = None + r"""When the credentials were last rotated. Omitted when not known.""" + + expires_at: Annotated[Optional[datetime], pydantic.Field(alias="expiresAt")] = None + r"""When the active credentials expire. Omitted when not known or not applicable to this credential type. + + """ + + message: Optional[str] = None + r"""Optional human-readable detail about the current credential status.""" + + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.DatasourceCredentialStatus(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["lastRotatedAt", "expiresAt", "message"]) + 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: + DatasourceCredentialStatusResponse.model_rebuild() +except NameError: + pass 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 948b36e7..4243bb1b 100644 --- a/src/glean/api_client/models/datasourcemembershipdefinition.py +++ b/src/glean/api_client/models/datasourcemembershipdefinition.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -33,3 +34,25 @@ class DatasourceMembershipDefinition(BaseModel): Optional[str], pydantic.Field(alias="memberGroupName") ] = None r"""If the member is a group, then the name of the member group""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["memberUserId", "memberGroupName"]) + 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: + DatasourceMembershipDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/datasourceobjecttypedocumentcountentry.py b/src/glean/api_client/models/datasourceobjecttypedocumentcountentry.py index baa69550..306d5d5b 100644 --- a/src/glean/api_client/models/datasourceobjecttypedocumentcountentry.py +++ b/src/glean/api_client/models/datasourceobjecttypedocumentcountentry.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -20,3 +21,25 @@ class DatasourceObjectTypeDocumentCountEntry(BaseModel): count: Optional[int] = None r"""The number of documents of the corresponding objectType""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["objectType", "count"]) + 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: + DatasourceObjectTypeDocumentCountEntry.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/datasourceprofile.py b/src/glean/api_client/models/datasourceprofile.py index f62f74b8..4a54a6d3 100644 --- a/src/glean/api_client/models/datasourceprofile.py +++ b/src/glean/api_client/models/datasourceprofile.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -39,3 +40,25 @@ class DatasourceProfile(BaseModel): Optional[bool], pydantic.Field(alias="isUserGenerated") ] = None r"""For internal use only. True iff the data source profile was manually added by a user from within Glean (aka not from the original data source)""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["url", "nativeAppUrl", "isUserGenerated"]) + 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: + DatasourceProfile.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/datasourceuserdefinition.py b/src/glean/api_client/models/datasourceuserdefinition.py index 18485fbb..af754d51 100644 --- a/src/glean/api_client/models/datasourceuserdefinition.py +++ b/src/glean/api_client/models/datasourceuserdefinition.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -30,3 +31,25 @@ class DatasourceUserDefinition(BaseModel): is_active: Annotated[Optional[bool], pydantic.Field(alias="isActive")] = None r"""set to false if the user is a former employee or a bot""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["userId", "isActive"]) + 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: + DatasourceUserDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debugdatasourcestatusidentityresponsecomponent.py b/src/glean/api_client/models/debugdatasourcestatusidentityresponsecomponent.py index cb0378c0..a027cc7e 100644 --- a/src/glean/api_client/models/debugdatasourcestatusidentityresponsecomponent.py +++ b/src/glean/api_client/models/debugdatasourcestatusidentityresponsecomponent.py @@ -5,8 +5,9 @@ BulkUploadHistoryEvent, BulkUploadHistoryEventTypedDict, ) -from glean.api_client.types import BaseModel +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 @@ -20,6 +21,22 @@ class DebugDatasourceStatusIdentityResponseComponentCounts(BaseModel): uploaded: Optional[int] = None r"""The number of users/groups/memberships uploaded""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["uploaded"]) + 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 + class DebugDatasourceStatusIdentityResponseComponentTypedDict(TypedDict): bulk_upload_history: NotRequired[List[BulkUploadHistoryEventTypedDict]] @@ -35,3 +52,25 @@ class DebugDatasourceStatusIdentityResponseComponent(BaseModel): r"""Information about active and recent successful uploads for the datasource""" counts: Optional[DebugDatasourceStatusIdentityResponseComponentCounts] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["bulkUploadHistory", "counts"]) + 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: + DebugDatasourceStatusIdentityResponseComponent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debugdatasourcestatusresponse.py b/src/glean/api_client/models/debugdatasourcestatusresponse.py index 3710e620..b77b3855 100644 --- a/src/glean/api_client/models/debugdatasourcestatusresponse.py +++ b/src/glean/api_client/models/debugdatasourcestatusresponse.py @@ -18,8 +18,10 @@ ProcessingHistoryEventTypedDict, ) from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -42,6 +44,22 @@ class DebugDatasourceStatusResponseCounts(BaseModel): indexed: Optional[List[DatasourceObjectTypeDocumentCountEntry]] = None r"""The number of documents indexed, grouped by objectType""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["uploaded", "indexed"]) + 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 + class DocumentsTypedDict(TypedDict): bulk_upload_history: NotRequired[List[BulkUploadHistoryEventTypedDict]] @@ -66,6 +84,22 @@ class Documents(BaseModel): ] = None r"""Information about processing history for the datasource""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["bulkUploadHistory", "counts", "processingHistory"]) + 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 + class IdentityTypedDict(TypedDict): processing_history: NotRequired[List[ProcessingHistoryEventTypedDict]] @@ -88,8 +122,24 @@ class Identity(BaseModel): memberships: Optional[DebugDatasourceStatusIdentityResponseComponent] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["processingHistory", "users", "groups", "memberships"]) + 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 -class DatasourceVisibility(str, Enum): + return m + + +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" @@ -117,3 +167,42 @@ class DebugDatasourceStatusResponse(BaseModel): Optional[DatasourceVisibility], pydantic.Field(alias="datasourceVisibility") ] = 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"]) + 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: + Documents.model_rebuild() +except NameError: + pass +try: + Identity.model_rebuild() +except NameError: + pass +try: + DebugDatasourceStatusResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debugdocumentlifecyclerequest.py b/src/glean/api_client/models/debugdocumentlifecyclerequest.py new file mode 100644 index 00000000..97b74290 --- /dev/null +++ b/src/glean/api_client/models/debugdocumentlifecyclerequest.py @@ -0,0 +1,59 @@ +"""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 Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DebugDocumentLifecycleRequestTypedDict(TypedDict): + r"""Describes the request body of the /debug/{datasource}/document/events API call.""" + + object_type: str + r"""Object type of the document to get lifecycle events for.""" + doc_id: str + r"""Glean Document ID within the datasource to get lifecycle events for.""" + start_date: NotRequired[str] + r"""The start date for events to be fetched. Cannot be more than 30 days (default 7 days) in the past.""" + max_events: NotRequired[int] + r"""Max number of events to be fetched. Cannot be more than 100 (default 20).""" + + +class DebugDocumentLifecycleRequest(BaseModel): + r"""Describes the request body of the /debug/{datasource}/document/events API call.""" + + object_type: Annotated[str, pydantic.Field(alias="objectType")] + r"""Object type of the document to get lifecycle events for.""" + + doc_id: Annotated[str, pydantic.Field(alias="docId")] + r"""Glean Document ID within the datasource to get lifecycle events for.""" + + start_date: Annotated[Optional[str], pydantic.Field(alias="startDate")] = None + r"""The start date for events to be fetched. Cannot be more than 30 days (default 7 days) in the past.""" + + max_events: Annotated[Optional[int], pydantic.Field(alias="maxEvents")] = None + r"""Max number of events to be fetched. Cannot be more than 100 (default 20).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["startDate", "maxEvents"]) + 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: + DebugDocumentLifecycleRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debugdocumentlifecycleresponse.py b/src/glean/api_client/models/debugdocumentlifecycleresponse.py new file mode 100644 index 00000000..5e6ded73 --- /dev/null +++ b/src/glean/api_client/models/debugdocumentlifecycleresponse.py @@ -0,0 +1,47 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .lifecycleevent import LifeCycleEvent, LifeCycleEventTypedDict +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 DebugDocumentLifecycleResponseTypedDict(TypedDict): + r"""Describes the response body of the /debug/{datasource}/document/events API call""" + + life_cycle_events: NotRequired[List[LifeCycleEventTypedDict]] + r"""List of lifecycle events corresponding to the document""" + + +class DebugDocumentLifecycleResponse(BaseModel): + r"""Describes the response body of the /debug/{datasource}/document/events API call""" + + life_cycle_events: Annotated[ + Optional[List[LifeCycleEvent]], pydantic.Field(alias="lifeCycleEvents") + ] = None + r"""List of lifecycle events corresponding to the document""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["lifeCycleEvents"]) + 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: + DebugDocumentLifecycleResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debugdocumentrequest.py b/src/glean/api_client/models/debugdocumentrequest.py index 981a5987..dc89fa28 100644 --- a/src/glean/api_client/models/debugdocumentrequest.py +++ b/src/glean/api_client/models/debugdocumentrequest.py @@ -23,3 +23,9 @@ class DebugDocumentRequest(BaseModel): doc_id: Annotated[str, pydantic.Field(alias="docId")] r"""Glean Document ID within the datasource to get the status for.""" + + +try: + DebugDocumentRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debugdocumentresponse.py b/src/glean/api_client/models/debugdocumentresponse.py index 05dad25c..3efc18aa 100644 --- a/src/glean/api_client/models/debugdocumentresponse.py +++ b/src/glean/api_client/models/debugdocumentresponse.py @@ -9,8 +9,9 @@ DocumentStatusResponse, DocumentStatusResponseTypedDict, ) -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -35,3 +36,25 @@ class DebugDocumentResponse(BaseModel): pydantic.Field(alias="uploadedPermissions"), ] = None r"""describes the access control details of the document""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["status", "uploadedPermissions"]) + 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: + DebugDocumentResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debugdocumentsrequest.py b/src/glean/api_client/models/debugdocumentsrequest.py index d69a6bac..dbef6d98 100644 --- a/src/glean/api_client/models/debugdocumentsrequest.py +++ b/src/glean/api_client/models/debugdocumentsrequest.py @@ -22,3 +22,9 @@ class DebugDocumentsRequest(BaseModel): List[DebugDocumentRequest], pydantic.Field(alias="debugDocuments") ] r"""Documents to fetch debug information for""" + + +try: + DebugDocumentsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debugdocumentsresponse.py b/src/glean/api_client/models/debugdocumentsresponse.py index 00ae8c48..54513fca 100644 --- a/src/glean/api_client/models/debugdocumentsresponse.py +++ b/src/glean/api_client/models/debugdocumentsresponse.py @@ -5,8 +5,9 @@ DebugDocumentsResponseItem, DebugDocumentsResponseItemTypedDict, ) -from glean.api_client.types import BaseModel +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 @@ -26,3 +27,25 @@ class DebugDocumentsResponse(BaseModel): pydantic.Field(alias="documentStatuses"), ] = None r"""List of document ids/urls and their debug information""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["documentStatuses"]) + 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: + DebugDocumentsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debugdocumentsresponseitem.py b/src/glean/api_client/models/debugdocumentsresponseitem.py index d47e4fe0..63165771 100644 --- a/src/glean/api_client/models/debugdocumentsresponseitem.py +++ b/src/glean/api_client/models/debugdocumentsresponseitem.py @@ -2,8 +2,9 @@ from __future__ import annotations from .debugdocumentresponse import DebugDocumentResponse, DebugDocumentResponseTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -32,3 +33,25 @@ class DebugDocumentsResponseItem(BaseModel): Optional[DebugDocumentResponse], pydantic.Field(alias="debugInfo") ] = None r"""Describes the response body of the /debug/{datasource}/document API call""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["docId", "objectType", "debugInfo"]) + 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: + DebugDocumentsResponseItem.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/debuguserresponse.py b/src/glean/api_client/models/debuguserresponse.py index 73d9f2f8..43e28fa9 100644 --- a/src/glean/api_client/models/debuguserresponse.py +++ b/src/glean/api_client/models/debuguserresponse.py @@ -6,8 +6,9 @@ DatasourceGroupDefinitionTypedDict, ) from .userstatusresponse import UserStatusResponse, UserStatusResponseTypedDict -from glean.api_client.types import BaseModel +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 @@ -32,3 +33,25 @@ class DebugUserResponse(BaseModel): pydantic.Field(alias="uploadedGroups"), ] = None r"""List of groups the user is a member of, as uploaded via permissions API.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["status", "uploadedGroups"]) + 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: + DebugUserResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/delete_rest_api_index_custom_metadata_schema_groupname_op.py b/src/glean/api_client/models/delete_rest_api_index_custom_metadata_schema_groupname_op.py new file mode 100644 index 00000000..ca9f8dc1 --- /dev/null +++ b/src/glean/api_client/models/delete_rest_api_index_custom_metadata_schema_groupname_op.py @@ -0,0 +1,26 @@ +"""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 + + +DELETE_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS = [ + "https://{instance}-be.glean.com", +] + + +class DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict(TypedDict): + group_name: str + r"""Name of the metadata group schema""" + + +class DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequest(BaseModel): + group_name: Annotated[ + str, + pydantic.Field(alias="groupName"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Name of the metadata group schema""" diff --git a/src/glean/api_client/models/delete_rest_api_index_document_docid_custom_metadata_groupname_op.py b/src/glean/api_client/models/delete_rest_api_index_document_docid_custom_metadata_groupname_op.py new file mode 100644 index 00000000..74b5dd9e --- /dev/null +++ b/src/glean/api_client/models/delete_rest_api_index_document_docid_custom_metadata_groupname_op.py @@ -0,0 +1,35 @@ +"""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 + + +DELETE_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS = [ + "https://{instance}-be.glean.com", +] + + +class DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequestTypedDict(TypedDict): + doc_id: str + r"""Unique Glean identifier of the document""" + group_name: str + r"""Name of the metadata group as specified while adding schema""" + + +class DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest(BaseModel): + doc_id: Annotated[ + str, + pydantic.Field(alias="docId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Unique Glean identifier of the document""" + + group_name: Annotated[ + str, + pydantic.Field(alias="groupName"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Name of the metadata group as specified while adding schema""" diff --git a/src/glean/api_client/models/deleteallchatsop.py b/src/glean/api_client/models/deleteallchatsop.py index 1a54c19e..cac2a62d 100644 --- a/src/glean/api_client/models/deleteallchatsop.py +++ b/src/glean/api_client/models/deleteallchatsop.py @@ -1,22 +1,47 @@ """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.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, QueryParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict class DeleteallchatsRequestTypedDict(TypedDict): + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" timezone_offset: NotRequired[int] r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" class DeleteallchatsRequest(BaseModel): + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + timezone_offset: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale", "timezoneOffset"]) + 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/deleteannouncementop.py b/src/glean/api_client/models/deleteannouncementop.py new file mode 100644 index 00000000..c7b39677 --- /dev/null +++ b/src/glean/api_client/models/deleteannouncementop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .deleteannouncementrequest import ( + DeleteAnnouncementRequest, + DeleteAnnouncementRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteannouncementRequestRequestTypedDict(TypedDict): + delete_announcement_request: DeleteAnnouncementRequestTypedDict + r"""Delete announcement request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class DeleteannouncementRequestRequest(BaseModel): + delete_announcement_request: Annotated[ + DeleteAnnouncementRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Delete announcement request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/deleteanswerop.py b/src/glean/api_client/models/deleteanswerop.py new file mode 100644 index 00000000..af7a16d7 --- /dev/null +++ b/src/glean/api_client/models/deleteanswerop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .deleteanswerrequest import DeleteAnswerRequest, DeleteAnswerRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteanswerRequestRequestTypedDict(TypedDict): + delete_answer_request: DeleteAnswerRequestTypedDict + r"""DeleteAnswer request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class DeleteanswerRequestRequest(BaseModel): + delete_answer_request: Annotated[ + DeleteAnswerRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""DeleteAnswer request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/deleteanswerrequest.py b/src/glean/api_client/models/deleteanswerrequest.py index d803b3d5..5c83ec3e 100644 --- a/src/glean/api_client/models/deleteanswerrequest.py +++ b/src/glean/api_client/models/deleteanswerrequest.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -20,3 +21,25 @@ class DeleteAnswerRequest(BaseModel): doc_id: Annotated[Optional[str], pydantic.Field(alias="docId")] = None r"""Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["docId"]) + 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: + DeleteAnswerRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/deletechatfilesop.py b/src/glean/api_client/models/deletechatfilesop.py index 464edeb4..01f8e688 100644 --- a/src/glean/api_client/models/deletechatfilesop.py +++ b/src/glean/api_client/models/deletechatfilesop.py @@ -5,15 +5,18 @@ DeleteChatFilesRequest, DeleteChatFilesRequestTypedDict, ) -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict class DeletechatfilesRequestRequestTypedDict(TypedDict): delete_chat_files_request: DeleteChatFilesRequestTypedDict + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" timezone_offset: NotRequired[int] r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" @@ -24,9 +27,31 @@ class DeletechatfilesRequestRequest(BaseModel): FieldMetadata(request=RequestMetadata(media_type="application/json")), ] + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + timezone_offset: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale", "timezoneOffset"]) + 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/deletechatfilesrequest.py b/src/glean/api_client/models/deletechatfilesrequest.py index fc8ea162..a6c201fa 100644 --- a/src/glean/api_client/models/deletechatfilesrequest.py +++ b/src/glean/api_client/models/deletechatfilesrequest.py @@ -15,3 +15,9 @@ class DeleteChatFilesRequestTypedDict(TypedDict): class DeleteChatFilesRequest(BaseModel): file_ids: Annotated[List[str], pydantic.Field(alias="fileIds")] r"""IDs of files to delete.""" + + +try: + DeleteChatFilesRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/deletechatsop.py b/src/glean/api_client/models/deletechatsop.py index 2e32eb95..fc7d3083 100644 --- a/src/glean/api_client/models/deletechatsop.py +++ b/src/glean/api_client/models/deletechatsop.py @@ -2,15 +2,18 @@ from __future__ import annotations from .deletechatsrequest import DeleteChatsRequest, DeleteChatsRequestTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict class DeletechatsRequestRequestTypedDict(TypedDict): delete_chats_request: DeleteChatsRequestTypedDict + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" timezone_offset: NotRequired[int] r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" @@ -21,9 +24,31 @@ class DeletechatsRequestRequest(BaseModel): FieldMetadata(request=RequestMetadata(media_type="application/json")), ] + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + timezone_offset: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale", "timezoneOffset"]) + 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/deletecollectionitemop.py b/src/glean/api_client/models/deletecollectionitemop.py new file mode 100644 index 00000000..10966910 --- /dev/null +++ b/src/glean/api_client/models/deletecollectionitemop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .deletecollectionitemrequest import ( + DeleteCollectionItemRequest, + DeleteCollectionItemRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeletecollectionitemRequestRequestTypedDict(TypedDict): + delete_collection_item_request: DeleteCollectionItemRequestTypedDict + r"""Data describing the delete operation.""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class DeletecollectionitemRequestRequest(BaseModel): + delete_collection_item_request: Annotated[ + DeleteCollectionItemRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Data describing the delete operation.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/deletecollectionitemrequest.py b/src/glean/api_client/models/deletecollectionitemrequest.py index adec2f3f..ac801e8c 100644 --- a/src/glean/api_client/models/deletecollectionitemrequest.py +++ b/src/glean/api_client/models/deletecollectionitemrequest.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -25,3 +26,25 @@ class DeleteCollectionItemRequest(BaseModel): document_id: Annotated[Optional[str], pydantic.Field(alias="documentId")] = None r"""The (optional) Glean Document ID of the CollectionItem to remove from this Collection if this is an indexed document.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["documentId"]) + 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: + DeleteCollectionItemRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/deletecollectionitemresponse.py b/src/glean/api_client/models/deletecollectionitemresponse.py index c37b0116..eb2315c4 100644 --- a/src/glean/api_client/models/deletecollectionitemresponse.py +++ b/src/glean/api_client/models/deletecollectionitemresponse.py @@ -2,7 +2,8 @@ from __future__ import annotations from .collection import Collection, CollectionTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -13,3 +14,19 @@ class DeleteCollectionItemResponseTypedDict(TypedDict): class DeleteCollectionItemResponse(BaseModel): collection: Optional[Collection] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["collection"]) + 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/deletecollectionop.py b/src/glean/api_client/models/deletecollectionop.py new file mode 100644 index 00000000..8721ecb5 --- /dev/null +++ b/src/glean/api_client/models/deletecollectionop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .deletecollectionrequest import ( + DeleteCollectionRequest, + DeleteCollectionRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeletecollectionRequestRequestTypedDict(TypedDict): + delete_collection_request: DeleteCollectionRequestTypedDict + r"""DeleteCollection request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class DeletecollectionRequestRequest(BaseModel): + delete_collection_request: Annotated[ + DeleteCollectionRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""DeleteCollection request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/deletecollectionrequest.py b/src/glean/api_client/models/deletecollectionrequest.py index 494d2b6f..cf68ff3b 100644 --- a/src/glean/api_client/models/deletecollectionrequest.py +++ b/src/glean/api_client/models/deletecollectionrequest.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -22,3 +23,25 @@ class DeleteCollectionRequest(BaseModel): Optional[str], pydantic.Field(alias="allowedDatasource") ] = None r"""The datasource allowed in the Collection to be deleted.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["allowedDatasource"]) + 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: + DeleteCollectionRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/deletedocumentrequest.py b/src/glean/api_client/models/deletedocumentrequest.py index 2879d6fa..3fb67bc9 100644 --- a/src/glean/api_client/models/deletedocumentrequest.py +++ b/src/glean/api_client/models/deletedocumentrequest.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -34,3 +35,25 @@ class DeleteDocumentRequest(BaseModel): version: Optional[int] = None r"""Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["version"]) + 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: + DeleteDocumentRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/deleteemployeerequest.py b/src/glean/api_client/models/deleteemployeerequest.py index 301b6b69..b413b516 100644 --- a/src/glean/api_client/models/deleteemployeerequest.py +++ b/src/glean/api_client/models/deleteemployeerequest.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -24,3 +25,25 @@ class DeleteEmployeeRequest(BaseModel): version: Optional[int] = None r"""Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["version"]) + 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: + DeleteEmployeeRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/deletefindingsexportop.py b/src/glean/api_client/models/deletefindingsexportop.py new file mode 100644 index 00000000..f71666c1 --- /dev/null +++ b/src/glean/api_client/models/deletefindingsexportop.py @@ -0,0 +1,18 @@ +"""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 +from typing_extensions import Annotated, TypedDict + + +class DeletefindingsexportRequestTypedDict(TypedDict): + id: int + r"""The ID of the export to delete.""" + + +class DeletefindingsexportRequest(BaseModel): + id: Annotated[ + int, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The ID of the export to delete.""" diff --git a/src/glean/api_client/models/deletegrouprequest.py b/src/glean/api_client/models/deletegrouprequest.py index 49b46855..651551f3 100644 --- a/src/glean/api_client/models/deletegrouprequest.py +++ b/src/glean/api_client/models/deletegrouprequest.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -29,3 +30,25 @@ class DeleteGroupRequest(BaseModel): version: Optional[int] = None r"""Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["version"]) + 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: + DeleteGroupRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/deletemembershiprequest.py b/src/glean/api_client/models/deletemembershiprequest.py index c84cb9af..60f59a29 100644 --- a/src/glean/api_client/models/deletemembershiprequest.py +++ b/src/glean/api_client/models/deletemembershiprequest.py @@ -5,7 +5,8 @@ DatasourceMembershipDefinition, DatasourceMembershipDefinitionTypedDict, ) -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -32,3 +33,19 @@ class DeleteMembershipRequest(BaseModel): version: Optional[int] = None r"""Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["version"]) + 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/deleteshortcutop.py b/src/glean/api_client/models/deleteshortcutop.py new file mode 100644 index 00000000..5862db47 --- /dev/null +++ b/src/glean/api_client/models/deleteshortcutop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .deleteshortcutrequest import DeleteShortcutRequest, DeleteShortcutRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteshortcutRequestRequestTypedDict(TypedDict): + delete_shortcut_request: DeleteShortcutRequestTypedDict + r"""DeleteShortcut request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class DeleteshortcutRequestRequest(BaseModel): + delete_shortcut_request: Annotated[ + DeleteShortcutRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""DeleteShortcut request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/deleteuserrequest.py b/src/glean/api_client/models/deleteuserrequest.py index 86430ed4..a8dd578b 100644 --- a/src/glean/api_client/models/deleteuserrequest.py +++ b/src/glean/api_client/models/deleteuserrequest.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -28,3 +29,19 @@ class DeleteUserRequest(BaseModel): version: Optional[int] = None r"""Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["version"]) + 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/digest.py b/src/glean/api_client/models/digest.py index 36da6227..432716a8 100644 --- a/src/glean/api_client/models/digest.py +++ b/src/glean/api_client/models/digest.py @@ -2,8 +2,9 @@ from __future__ import annotations from .digestsection import DigestSection, DigestSectionTypedDict -from glean.api_client.types import BaseModel +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 @@ -35,3 +36,27 @@ class Digest(BaseModel): sections: Optional[List[DigestSection]] = None r"""Array of digest sections from which the podcast was created.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["podcastFileId", "podcastDuration", "digestDate", "sections"] + ) + 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: + Digest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/digestsection.py b/src/glean/api_client/models/digestsection.py index 4f31c7af..17ac661e 100644 --- a/src/glean/api_client/models/digestsection.py +++ b/src/glean/api_client/models/digestsection.py @@ -3,8 +3,10 @@ from __future__ import annotations from .digestupdate import DigestUpdate, DigestUpdateTypedDict from .sectiontype import SectionType -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -58,3 +60,36 @@ 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( + ["displayName", "channelName", "channelType", "instanceId", "url"] + ) + 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: + DigestSection.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/digestupdate.py b/src/glean/api_client/models/digestupdate.py index 98f04a5a..be822894 100644 --- a/src/glean/api_client/models/digestupdate.py +++ b/src/glean/api_client/models/digestupdate.py @@ -2,7 +2,9 @@ from __future__ import annotations from .updatetype import UpdateType -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -40,3 +42,28 @@ 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"]) + 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/disambiguation.py b/src/glean/api_client/models/disambiguation.py index 2b8a57ca..68a5514f 100644 --- a/src/glean/api_client/models/disambiguation.py +++ b/src/glean/api_client/models/disambiguation.py @@ -2,7 +2,9 @@ from __future__ import annotations from .entitytype import EntityType -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -29,3 +31,28 @@ 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"]) + 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/displayablelistitemuiconfig.py b/src/glean/api_client/models/displayablelistitemuiconfig.py index 5a591828..3e0031b7 100644 --- a/src/glean/api_client/models/displayablelistitemuiconfig.py +++ b/src/glean/api_client/models/displayablelistitemuiconfig.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,3 +22,25 @@ class DisplayableListItemUIConfig(BaseModel): Optional[bool], pydantic.Field(alias="showNewIndicator") ] = None r"""show a \"New\" pill next to the item""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["showNewIndicator"]) + 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: + DisplayableListItemUIConfig.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/dlpconfig.py b/src/glean/api_client/models/dlpconfig.py index 5276ca8e..f68bba2b 100644 --- a/src/glean/api_client/models/dlpconfig.py +++ b/src/glean/api_client/models/dlpconfig.py @@ -14,8 +14,9 @@ ) from .sensitiveinfotype import SensitiveInfoType, SensitiveInfoTypeTypedDict from .sharingoptions import SharingOptions, SharingOptionsTypedDict -from glean.api_client.types import BaseModel +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 @@ -58,7 +59,7 @@ class DlpConfig(BaseModel): sensitive_info_types: Annotated[ Optional[List[SensitiveInfoType]], 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 sensitiveContentOptions instead.", alias="sensitiveInfoTypes", ), ] = None @@ -72,7 +73,7 @@ class DlpConfig(BaseModel): external_sharing_options: Annotated[ Optional[ExternalSharingOptions], 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 broadSharingOptions instead.", alias="externalSharingOptions", ), ] = None @@ -111,3 +112,41 @@ class DlpConfig(BaseModel): Optional[AllowlistOptions], pydantic.Field(alias="allowlistOptions") ] = None r"""Terms that are allow-listed during the scans. If any finding picked up by a rule exactly matches a term in the allow-list, it will not be counted as a violation.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "version", + "sensitiveInfoTypes", + "inputOptions", + "externalSharingOptions", + "broadSharingOptions", + "sensitiveContentOptions", + "reportName", + "frequency", + "createdBy", + "createdAt", + "redactQuote", + "autoHideDocs", + "allowlistOptions", + ] + ) + 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: + DlpConfig.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/dlpexportfindingsrequest.py b/src/glean/api_client/models/dlpexportfindingsrequest.py new file mode 100644 index 00000000..44fedb77 --- /dev/null +++ b/src/glean/api_client/models/dlpexportfindingsrequest.py @@ -0,0 +1,101 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .dlpfindingfilter import DlpFindingFilter, DlpFindingFilterTypedDict +from .dlpissuefilter import DlpIssueFilter, DlpIssueFilterTypedDict +from enum import Enum +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DlpExportFindingsRequestExportType(str, Enum): + r"""The type of export to perform""" + + FINDINGS = "FINDINGS" + DOCUMENTS = "DOCUMENTS" + ISSUES = "ISSUES" + + +class FieldScope(str, Enum): + r"""Controls which fields to include in the export""" + + ALL = "ALL" + EXCLUDE_SENSITIVE = "EXCLUDE_SENSITIVE" + CUSTOM = "CUSTOM" + + +class DlpExportFindingsRequestTypedDict(TypedDict): + export_type: NotRequired[DlpExportFindingsRequestExportType] + r"""The type of export to perform""" + filter_: NotRequired[DlpFindingFilterTypedDict] + issue_filter: NotRequired[DlpIssueFilterTypedDict] + r"""Filter for DLP issues. Includes document-level filters and issue-specific filters.""" + file_name: NotRequired[str] + r"""The name of the file to export the findings to""" + field_scope: NotRequired[FieldScope] + r"""Controls which fields to include in the export""" + fields_to_exclude: NotRequired[List[str]] + r"""List of field names to exclude from the export""" + + +class DlpExportFindingsRequest(BaseModel): + export_type: Annotated[ + Optional[DlpExportFindingsRequestExportType], pydantic.Field(alias="exportType") + ] = None + r"""The type of export to perform""" + + filter_: Annotated[Optional[DlpFindingFilter], pydantic.Field(alias="filter")] = ( + None + ) + + issue_filter: Annotated[ + Optional[DlpIssueFilter], pydantic.Field(alias="issueFilter") + ] = None + r"""Filter for DLP issues. Includes document-level filters and issue-specific filters.""" + + file_name: Annotated[Optional[str], pydantic.Field(alias="fileName")] = None + r"""The name of the file to export the findings to""" + + field_scope: Annotated[Optional[FieldScope], pydantic.Field(alias="fieldScope")] = ( + None + ) + r"""Controls which fields to include in the export""" + + fields_to_exclude: Annotated[ + Optional[List[str]], pydantic.Field(alias="fieldsToExclude") + ] = None + r"""List of field names to exclude from the export""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "exportType", + "filter", + "issueFilter", + "fileName", + "fieldScope", + "fieldsToExclude", + ] + ) + 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: + DlpExportFindingsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/dlpfindingfilter.py b/src/glean/api_client/models/dlpfindingfilter.py new file mode 100644 index 00000000..eacf79f0 --- /dev/null +++ b/src/glean/api_client/models/dlpfindingfilter.py @@ -0,0 +1,103 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .dlpissuestatus import DlpIssueStatus +from .dlpseverity import DlpSeverity +from .timerangefilter import TimeRangeFilter, TimeRangeFilterTypedDict +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import field_serializer, model_serializer +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DlpFindingFilterTypedDict(TypedDict): + info_type: NotRequired[str] + regex_id: NotRequired[str] + report_id: NotRequired[str] + datasource: NotRequired[str] + visibility: NotRequired[str] + document_ids: NotRequired[List[str]] + severity: NotRequired[DlpSeverity] + r"""Severity levels for DLP findings and analyses.""" + document_severity: NotRequired[List[DlpSeverity]] + statuses: NotRequired[List[DlpIssueStatus]] + time_range: NotRequired[TimeRangeFilterTypedDict] + archived: NotRequired[bool] + + +class DlpFindingFilter(BaseModel): + info_type: Annotated[Optional[str], pydantic.Field(alias="infoType")] = None + + regex_id: Annotated[Optional[str], pydantic.Field(alias="regexId")] = None + + report_id: Annotated[Optional[str], pydantic.Field(alias="reportId")] = None + + datasource: Optional[str] = None + + visibility: Optional[str] = None + + document_ids: Annotated[ + Optional[List[str]], pydantic.Field(alias="documentIds") + ] = None + + severity: Optional[DlpSeverity] = None + r"""Severity levels for DLP findings and analyses.""" + + document_severity: Annotated[ + Optional[List[DlpSeverity]], pydantic.Field(alias="documentSeverity") + ] = None + + statuses: Optional[List[DlpIssueStatus]] = None + + time_range: Annotated[ + Optional[TimeRangeFilter], pydantic.Field(alias="timeRange") + ] = None + + 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( + [ + "infoType", + "regexId", + "reportId", + "datasource", + "visibility", + "documentIds", + "severity", + "documentSeverity", + "statuses", + "timeRange", + "archived", + ] + ) + 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: + DlpFindingFilter.model_rebuild() +except NameError: + pass 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/dlpissuefilter.py b/src/glean/api_client/models/dlpissuefilter.py new file mode 100644 index 00000000..ac7f76b7 --- /dev/null +++ b/src/glean/api_client/models/dlpissuefilter.py @@ -0,0 +1,101 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .dlpissuestatus import DlpIssueStatus +from .dlpseverity import DlpSeverity +from .timerangefilter import TimeRangeFilter, TimeRangeFilterTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DlpIssueFilterTypedDict(TypedDict): + r"""Filter for DLP issues. Includes document-level filters and issue-specific filters.""" + + search_text: NotRequired[str] + r"""Text to search for in issue fields.""" + statuses: NotRequired[List[DlpIssueStatus]] + r"""Filter by one or more issue statuses.""" + assignee_id: NotRequired[str] + r"""Filter by assignee user ID.""" + info_type: NotRequired[str] + regex_id: NotRequired[str] + report_ids: NotRequired[List[str]] + r"""Filter by one or more report/policy IDs.""" + doc_id: NotRequired[str] + datasource: NotRequired[str] + visibility: NotRequired[str] + severities: NotRequired[List[DlpSeverity]] + r"""Filter by one or more severity levels.""" + time_range: NotRequired[TimeRangeFilterTypedDict] + + +class DlpIssueFilter(BaseModel): + r"""Filter for DLP issues. Includes document-level filters and issue-specific filters.""" + + search_text: Annotated[Optional[str], pydantic.Field(alias="searchText")] = None + r"""Text to search for in issue fields.""" + + statuses: Optional[List[DlpIssueStatus]] = None + r"""Filter by one or more issue statuses.""" + + assignee_id: Annotated[Optional[str], pydantic.Field(alias="assigneeId")] = None + r"""Filter by assignee user ID.""" + + info_type: Annotated[Optional[str], pydantic.Field(alias="infoType")] = None + + regex_id: Annotated[Optional[str], pydantic.Field(alias="regexId")] = None + + report_ids: Annotated[Optional[List[str]], pydantic.Field(alias="reportIds")] = None + r"""Filter by one or more report/policy IDs.""" + + doc_id: Annotated[Optional[str], pydantic.Field(alias="docId")] = None + + datasource: Optional[str] = None + + visibility: Optional[str] = None + + severities: Optional[List[DlpSeverity]] = None + r"""Filter by one or more severity levels.""" + + time_range: Annotated[ + Optional[TimeRangeFilter], pydantic.Field(alias="timeRange") + ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "searchText", + "statuses", + "assigneeId", + "infoType", + "regexId", + "reportIds", + "docId", + "datasource", + "visibility", + "severities", + "timeRange", + ] + ) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k, serialized.get(n)) + + if val != UNSET_SENTINEL: + if val is not None or k not in optional_fields: + m[k] = val + + return m + + +try: + DlpIssueFilter.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/dlpissuestatus.py b/src/glean/api_client/models/dlpissuestatus.py new file mode 100644 index 00000000..ee6c7d53 --- /dev/null +++ b/src/glean/api_client/models/dlpissuestatus.py @@ -0,0 +1,14 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class DlpIssueStatus(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Status of a DLP issue.""" + + OPEN = "OPEN" + CLOSED = "CLOSED" + IN_PROGRESS = "IN_PROGRESS" + RESOLVED = "RESOLVED" diff --git a/src/glean/api_client/models/dlpperson.py b/src/glean/api_client/models/dlpperson.py index cf67bb62..ee020352 100644 --- a/src/glean/api_client/models/dlpperson.py +++ b/src/glean/api_client/models/dlpperson.py @@ -2,8 +2,9 @@ from __future__ import annotations from .dlppersonmetadata import DlpPersonMetadata, DlpPersonMetadataTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -28,3 +29,25 @@ class DlpPerson(BaseModel): r"""An opaque identifier that can be used to request metadata for a Person.""" metadata: Optional[DlpPersonMetadata] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["metadata"]) + 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: + DlpPerson.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/dlppersonmetadata.py b/src/glean/api_client/models/dlppersonmetadata.py index 2c868c6b..b3d764a6 100644 --- a/src/glean/api_client/models/dlppersonmetadata.py +++ b/src/glean/api_client/models/dlppersonmetadata.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -20,3 +21,25 @@ class DlpPersonMetadata(BaseModel): email: Optional[str] = None r"""The user's primary email address""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["firstName", "email"]) + 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: + DlpPersonMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/dlpreport.py b/src/glean/api_client/models/dlpreport.py index 38e378fe..ff433f12 100644 --- a/src/glean/api_client/models/dlpreport.py +++ b/src/glean/api_client/models/dlpreport.py @@ -6,13 +6,15 @@ from .dlpperson import DlpPerson, DlpPersonTypedDict from .dlpreportstatus import DlpReportStatus from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -90,3 +92,67 @@ 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( + [ + "id", + "name", + "config", + "frequency", + "status", + "createdBy", + "createdAt", + "lastUpdatedAt", + "autoHideDocs", + "lastScanStatus", + "lastScanStartTime", + "updatedBy", + ] + ) + 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: + DlpReport.model_rebuild() +except NameError: + pass 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 new file mode 100644 index 00000000..bd785981 --- /dev/null +++ b/src/glean/api_client/models/dlpseverity.py @@ -0,0 +1,14 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client import utils + + +class DlpSeverity(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Severity levels for DLP findings and analyses.""" + + UNSPECIFIED = "UNSPECIFIED" + LOW = "LOW" + MEDIUM = "MEDIUM" + HIGH = "HIGH" 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 106245e2..cb56b4f3 100644 --- a/src/glean/api_client/models/document.py +++ b/src/glean/api_client/models/document.py @@ -4,8 +4,10 @@ from .connectortype import ConnectorType from .documentcontent import DocumentContent, DocumentContentTypedDict from .documentsection import DocumentSection, DocumentSectionTypedDict -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -69,3 +71,48 @@ 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( + [ + "id", + "datasource", + "connectorType", + "docType", + "content", + "containerDocument", + "parentDocument", + "title", + "url", + "metadata", + "sections", + ] + ) + 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: + Document.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/documentcontent.py b/src/glean/api_client/models/documentcontent.py index 493b94f6..7a6ea0bf 100644 --- a/src/glean/api_client/models/documentcontent.py +++ b/src/glean/api_client/models/documentcontent.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,3 +18,25 @@ class DocumentContent(BaseModel): Optional[List[str]], pydantic.Field(alias="fullTextList") ] = None r"""The plaintext content of the document.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["fullTextList"]) + 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: + DocumentContent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/documentdefinition.py b/src/glean/api_client/models/documentdefinition.py index 0bb465bc..1fa367c9 100644 --- a/src/glean/api_client/models/documentdefinition.py +++ b/src/glean/api_client/models/documentdefinition.py @@ -16,8 +16,9 @@ UserReferenceDefinition, UserReferenceDefinitionTypedDict, ) -from glean.api_client.types import BaseModel +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 @@ -69,6 +70,8 @@ class DocumentDefinitionTypedDict(TypedDict): status: NotRequired[str] additional_urls: NotRequired[List[str]] r"""Additional variations of the URL that this document points to.""" + native_app_url: NotRequired[str] + r"""A deep link, if available, into the datasource's native application for the user's platform (e.g. slack://channel/message).""" comments: NotRequired[List[CommentDefinitionTypedDict]] r"""Comments associated with the document.""" custom_properties: NotRequired[List[CustomPropertyTypedDict]] @@ -151,6 +154,11 @@ class DocumentDefinition(BaseModel): ] = None r"""Additional variations of the URL that this document points to.""" + native_app_url: Annotated[Optional[str], pydantic.Field(alias="nativeAppUrl")] = ( + None + ) + r"""A deep link, if available, into the datasource's native application for the user's platform (e.g. slack://channel/message).""" + comments: Optional[List[CommentDefinition]] = None r"""Comments associated with the document.""" @@ -158,3 +166,51 @@ class DocumentDefinition(BaseModel): Optional[List[CustomProperty]], pydantic.Field(alias="customProperties") ] = None r"""Additional metadata properties of the document. These can surface as [facets and operators](https://developers.glean.com/indexing/datasource/custom-properties/operators_and_facets).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "title", + "filename", + "container", + "containerDatasourceId", + "containerObjectType", + "objectType", + "viewURL", + "id", + "summary", + "body", + "author", + "owner", + "permissions", + "createdAt", + "updatedAt", + "updatedBy", + "tags", + "interactions", + "status", + "additionalUrls", + "nativeAppUrl", + "comments", + "customProperties", + ] + ) + 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: + DocumentDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/documentinsight.py b/src/glean/api_client/models/documentinsight.py deleted file mode 100644 index 3bbdf7d7..00000000 --- a/src/glean/api_client/models/documentinsight.py +++ /dev/null @@ -1,25 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .countinfo import CountInfo, CountInfoTypedDict -from .document import Document, DocumentTypedDict -from glean.api_client.types import BaseModel -import pydantic -from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class DocumentInsightTypedDict(TypedDict): - document: DocumentTypedDict - view_count: NotRequired[CountInfoTypedDict] - visitor_count: NotRequired[CountInfoTypedDict] - - -class DocumentInsight(BaseModel): - document: Document - - view_count: Annotated[Optional[CountInfo], pydantic.Field(alias="viewCount")] = None - - visitor_count: Annotated[ - Optional[CountInfo], pydantic.Field(alias="visitorCount") - ] = None diff --git a/src/glean/api_client/models/documentinteractions.py b/src/glean/api_client/models/documentinteractions.py index 2aca5c2f..84214adb 100644 --- a/src/glean/api_client/models/documentinteractions.py +++ b/src/glean/api_client/models/documentinteractions.py @@ -2,8 +2,9 @@ from __future__ import annotations from .countinfo import CountInfo, CountInfoTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -35,7 +36,7 @@ class DocumentInteractions(BaseModel): reactions: Annotated[ Optional[List[str]], 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 reacts instead." ), ] = None r"""To be deprecated in favor of reacts. A (potentially non-exhaustive) list of reactions for the document.""" @@ -48,3 +49,34 @@ class DocumentInteractions(BaseModel): visitor_count: Annotated[ Optional[CountInfo], pydantic.Field(alias="visitorCount") ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "numComments", + "numReactions", + "reactions", + "reacts", + "shares", + "visitorCount", + ] + ) + 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: + DocumentInteractions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/documentinteractionsdefinition.py b/src/glean/api_client/models/documentinteractionsdefinition.py index 151bc107..2dd25c44 100644 --- a/src/glean/api_client/models/documentinteractionsdefinition.py +++ b/src/glean/api_client/models/documentinteractionsdefinition.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -23,3 +24,25 @@ class DocumentInteractionsDefinition(BaseModel): num_likes: Annotated[Optional[int], pydantic.Field(alias="numLikes")] = None num_comments: Annotated[Optional[int], pydantic.Field(alias="numComments")] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["numViews", "numLikes", "numComments"]) + 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: + DocumentInteractionsDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/documentmetadata.py b/src/glean/api_client/models/documentmetadata.py index a2a63141..4f50069b 100644 --- a/src/glean/api_client/models/documentmetadata.py +++ b/src/glean/api_client/models/documentmetadata.py @@ -9,8 +9,10 @@ from .thumbnail import Thumbnail, ThumbnailTypedDict from .viewerinfo import ViewerInfo, ViewerInfoTypedDict from datetime import datetime -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Dict, List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -226,3 +228,77 @@ 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( + [ + "datasource", + "datasourceInstance", + "objectType", + "container", + "containerId", + "superContainerId", + "parentId", + "mimeType", + "documentId", + "loggingId", + "documentIdHash", + "createTime", + "updateTime", + "author", + "owner", + "mentionedPeople", + "visibility", + "components", + "status", + "statusCategory", + "pins", + "priority", + "assignedTo", + "updatedBy", + "labels", + "collections", + "datasourceId", + "interactions", + "verification", + "viewerInfo", + "permissions", + "visitCount", + "shortcuts", + "path", + "customData", + "documentCategory", + "contactPerson", + "thumbnail", + "indexStatus", + "ancestors", + ] + ) + 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: + DocumentMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/documentpermissionsdefinition.py b/src/glean/api_client/models/documentpermissionsdefinition.py index c555bbac..fd87de54 100644 --- a/src/glean/api_client/models/documentpermissionsdefinition.py +++ b/src/glean/api_client/models/documentpermissionsdefinition.py @@ -9,8 +9,9 @@ UserReferenceDefinition, UserReferenceDefinitionTypedDict, ) -from glean.api_client.types import BaseModel +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 @@ -60,3 +61,33 @@ class DocumentPermissionsDefinition(BaseModel): Optional[bool], pydantic.Field(alias="allowAllDatasourceUsersAccess") ] = None r"""If true, then any user who has an account in the datasource can view the document.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "allowedUsers", + "allowedGroups", + "allowedGroupIntersections", + "allowAnonymousAccess", + "allowAllDatasourceUsersAccess", + ] + ) + 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: + DocumentPermissionsDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/documentsection.py b/src/glean/api_client/models/documentsection.py index d64c6209..6825bbb0 100644 --- a/src/glean/api_client/models/documentsection.py +++ b/src/glean/api_client/models/documentsection.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -19,3 +20,19 @@ class DocumentSection(BaseModel): url: Optional[str] = None r"""The permalink of the document section.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["title", "url"]) + 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/documentspec_union.py b/src/glean/api_client/models/documentspec_union.py index c87ae384..82e3e535 100644 --- a/src/glean/api_client/models/documentspec_union.py +++ b/src/glean/api_client/models/documentspec_union.py @@ -2,17 +2,20 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" ANSWERS = "ANSWERS" + ARTIFACTS = "ARTIFACTS" COLLECTIONS = "COLLECTIONS" SHORTCUTS = "SHORTCUTS" CHATS = "CHATS" @@ -37,8 +40,33 @@ 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 -class DocumentSpecUgcType1(str, Enum): + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["docType"]) + 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 + + +class DocumentSpecUgcType1(str, Enum, metaclass=utils.OpenEnumMeta): r"""The type of the user generated content (UGC datasource).""" ANNOUNCEMENTS = "ANNOUNCEMENTS" @@ -67,6 +95,31 @@ 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"]) + 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 + class DocumentSpec2TypedDict(TypedDict): id: str @@ -103,3 +156,13 @@ class DocumentSpec1(BaseModel): "DocumentSpecUnion", Union[DocumentSpec1, DocumentSpec2, DocumentSpec3, DocumentSpec4], ) + + +try: + DocumentSpec4.model_rebuild() +except NameError: + pass +try: + DocumentSpec3.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/documentstatusresponse.py b/src/glean/api_client/models/documentstatusresponse.py index df265ad5..41cc9ad2 100644 --- a/src/glean/api_client/models/documentstatusresponse.py +++ b/src/glean/api_client/models/documentstatusresponse.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -47,3 +48,33 @@ class DocumentStatusResponse(BaseModel): Optional[str], pydantic.Field(alias="permissionIdentityStatus") ] = None r"""Permission identity status, enum of NOT_UPLOADED, UPLOADED, STATUS_UNKNOWN (Always unknown if `identityDatasourceName` is set). Document visibility may be affected status is `NOT_UPLOADED`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "uploadStatus", + "lastUploadedAt", + "indexingStatus", + "lastIndexedAt", + "permissionIdentityStatus", + ] + ) + 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: + DocumentStatusResponse.model_rebuild() +except NameError: + pass 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 3453978a..e5d6ad03 100644 --- a/src/glean/api_client/models/documentvisibilityoverride.py +++ b/src/glean/api_client/models/documentvisibilityoverride.py @@ -2,13 +2,15 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -28,3 +30,34 @@ 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"]) + 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: + DocumentVisibilityOverride.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/documentvisibilityupdateresult.py b/src/glean/api_client/models/documentvisibilityupdateresult.py index b6d43377..c48a36b1 100644 --- a/src/glean/api_client/models/documentvisibilityupdateresult.py +++ b/src/glean/api_client/models/documentvisibilityupdateresult.py @@ -2,13 +2,15 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -33,3 +35,34 @@ 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"]) + 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: + DocumentVisibilityUpdateResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/downloadfindingsexportop.py b/src/glean/api_client/models/downloadfindingsexportop.py new file mode 100644 index 00000000..ba0204a8 --- /dev/null +++ b/src/glean/api_client/models/downloadfindingsexportop.py @@ -0,0 +1,18 @@ +"""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 +from typing_extensions import Annotated, TypedDict + + +class DownloadfindingsexportRequestTypedDict(TypedDict): + id: str + r"""The ID of the export to download.""" + + +class DownloadfindingsexportRequest(BaseModel): + id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The ID of the export to download.""" diff --git a/src/glean/api_client/models/editagentop.py b/src/glean/api_client/models/editagentop.py new file mode 100644 index 00000000..5d66503e --- /dev/null +++ b/src/glean/api_client/models/editagentop.py @@ -0,0 +1,66 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .editworkflowrequest import EditWorkflowRequest, EditWorkflowRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import ( + FieldMetadata, + PathParamMetadata, + QueryParamMetadata, + RequestMetadata, +) +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class EditAgentRequestTypedDict(TypedDict): + agent_id: str + r"""The ID of the agent.""" + edit_workflow_request: EditWorkflowRequestTypedDict + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + timezone_offset: NotRequired[int] + r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" + + +class EditAgentRequest(BaseModel): + agent_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The ID of the agent.""" + + edit_workflow_request: Annotated[ + EditWorkflowRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + timezone_offset: Annotated[ + Optional[int], + pydantic.Field(alias="timezoneOffset"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale", "timezoneOffset"]) + 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/editanswerop.py b/src/glean/api_client/models/editanswerop.py new file mode 100644 index 00000000..8aef450a --- /dev/null +++ b/src/glean/api_client/models/editanswerop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .editanswerrequest import EditAnswerRequest, EditAnswerRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class EditanswerRequestRequestTypedDict(TypedDict): + edit_answer_request: EditAnswerRequestTypedDict + r"""EditAnswer request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class EditanswerRequestRequest(BaseModel): + edit_answer_request: Annotated[ + EditAnswerRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""EditAnswer request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/editanswerrequest.py b/src/glean/api_client/models/editanswerrequest.py index e190bebc..42fbf75e 100644 --- a/src/glean/api_client/models/editanswerrequest.py +++ b/src/glean/api_client/models/editanswerrequest.py @@ -9,8 +9,9 @@ ) from .userrolespecification import UserRoleSpecification, UserRoleSpecificationTypedDict from enum import Enum -from glean.api_client.types import BaseModel +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 @@ -69,7 +70,7 @@ class EditAnswerRequest(BaseModel): board_id: Annotated[ Optional[int], 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: Answer Boards no longer supported.", alias="boardId", ), ] = None @@ -115,3 +116,42 @@ class EditAnswerRequest(BaseModel): Optional[StructuredTextMutableProperties], pydantic.Field(alias="combinedAnswerText"), ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "docId", + "question", + "questionVariations", + "bodyText", + "boardId", + "audienceFilters", + "addedRoles", + "removedRoles", + "roles", + "sourceDocumentSpec", + "sourceType", + "addedCollections", + "removedCollections", + "combinedAnswerText", + ] + ) + 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: + EditAnswerRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/editcollectionitemop.py b/src/glean/api_client/models/editcollectionitemop.py new file mode 100644 index 00000000..ec47c585 --- /dev/null +++ b/src/glean/api_client/models/editcollectionitemop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .editcollectionitemrequest import ( + EditCollectionItemRequest, + EditCollectionItemRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class EditcollectionitemRequestRequestTypedDict(TypedDict): + edit_collection_item_request: EditCollectionItemRequestTypedDict + r"""Edit Collection Items request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class EditcollectionitemRequestRequest(BaseModel): + edit_collection_item_request: Annotated[ + EditCollectionItemRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Edit Collection Items request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/editcollectionitemrequest.py b/src/glean/api_client/models/editcollectionitemrequest.py index a070bb0b..d263fa2e 100644 --- a/src/glean/api_client/models/editcollectionitemrequest.py +++ b/src/glean/api_client/models/editcollectionitemrequest.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -35,3 +36,25 @@ class EditCollectionItemRequest(BaseModel): icon: Optional[str] = None r"""The emoji icon for this CollectionItem. Only used for Text type items.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name", "description", "icon"]) + 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: + EditCollectionItemRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/editcollectionitemresponse.py b/src/glean/api_client/models/editcollectionitemresponse.py index c1cc2975..0803aa97 100644 --- a/src/glean/api_client/models/editcollectionitemresponse.py +++ b/src/glean/api_client/models/editcollectionitemresponse.py @@ -2,7 +2,8 @@ from __future__ import annotations from .collection import Collection, CollectionTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -13,3 +14,19 @@ class EditCollectionItemResponseTypedDict(TypedDict): class EditCollectionItemResponse(BaseModel): collection: Optional[Collection] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["collection"]) + 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/editcollectionop.py b/src/glean/api_client/models/editcollectionop.py new file mode 100644 index 00000000..89876fc8 --- /dev/null +++ b/src/glean/api_client/models/editcollectionop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .editcollectionrequest import EditCollectionRequest, EditCollectionRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class EditcollectionRequestRequestTypedDict(TypedDict): + edit_collection_request: EditCollectionRequestTypedDict + r"""Collection content plus any additional metadata for the request.""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class EditcollectionRequestRequest(BaseModel): + edit_collection_request: Annotated[ + EditCollectionRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Collection content plus any additional metadata for the request.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/editcollectionrequest.py b/src/glean/api_client/models/editcollectionrequest.py index a9fc63f9..7a4edd70 100644 --- a/src/glean/api_client/models/editcollectionrequest.py +++ b/src/glean/api_client/models/editcollectionrequest.py @@ -4,8 +4,9 @@ from .facetfilter import FacetFilter, FacetFilterTypedDict from .thumbnail import Thumbnail, ThumbnailTypedDict from .userrolespecification import UserRoleSpecification, UserRoleSpecificationTypedDict -from glean.api_client.types import BaseModel +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 @@ -74,3 +75,37 @@ class EditCollectionRequest(BaseModel): Optional[str], pydantic.Field(alias="allowedDatasource") ] = None r"""The datasource type this Collection can hold.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "description", + "addedRoles", + "removedRoles", + "audienceFilters", + "icon", + "adminLocked", + "parentId", + "thumbnail", + "allowedDatasource", + ] + ) + 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: + EditCollectionRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/editcollectionresponse.py b/src/glean/api_client/models/editcollectionresponse.py index bc57b392..734b299b 100644 --- a/src/glean/api_client/models/editcollectionresponse.py +++ b/src/glean/api_client/models/editcollectionresponse.py @@ -15,13 +15,15 @@ from .userrolespecification import UserRoleSpecification, UserRoleSpecificationTypedDict from datetime import datetime from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -29,6 +31,7 @@ class EditCollectionResponseErrorCode(str, Enum): HEIGHT_VIOLATION = "HEIGHT_VIOLATION" WIDTH_VIOLATION = "WIDTH_VIOLATION" NO_PERMISSIONS = "NO_PERMISSIONS" + CORRUPT_ITEM = "CORRUPT_ITEM" class EditCollectionResponseTypedDict(TypedDict): @@ -55,6 +58,8 @@ class EditCollectionResponseTypedDict(TypedDict): allowed_datasource: NotRequired[str] r"""The datasource type this Collection can hold.""" permissions: NotRequired[ObjectPermissionsTypedDict] + tracking_token: NotRequired[str] + r"""An opaque token that represents this particular UGC. To be used for `/feedback` reporting.""" create_time: NotRequired[datetime] update_time: NotRequired[datetime] creator: NotRequired[PersonTypedDict] @@ -123,6 +128,11 @@ class EditCollectionResponse(BaseModel): permissions: Optional[ObjectPermissions] = None + tracking_token: Annotated[Optional[str], pydantic.Field(alias="trackingToken")] = ( + None + ) + r"""An opaque token that represents this particular UGC. To be used for `/feedback` reporting.""" + create_time: Annotated[Optional[datetime], pydantic.Field(alias="createTime")] = ( None ) @@ -160,3 +170,60 @@ class EditCollectionResponse(BaseModel): collection: Optional[Collection] = None 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( + [ + "addedRoles", + "removedRoles", + "audienceFilters", + "icon", + "adminLocked", + "parentId", + "thumbnail", + "allowedDatasource", + "permissions", + "trackingToken", + "createTime", + "updateTime", + "creator", + "updatedBy", + "itemCount", + "childCount", + "items", + "pinMetadata", + "shortcuts", + "children", + "roles", + "collection", + "error", + ] + ) + 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: + EditCollectionResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/editpinop.py b/src/glean/api_client/models/editpinop.py new file mode 100644 index 00000000..608f79b9 --- /dev/null +++ b/src/glean/api_client/models/editpinop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .editpinrequest import EditPinRequest, EditPinRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class EditpinRequestRequestTypedDict(TypedDict): + edit_pin_request: EditPinRequestTypedDict + r"""Edit pins request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class EditpinRequestRequest(BaseModel): + edit_pin_request: Annotated[ + EditPinRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Edit pins request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/editpinrequest.py b/src/glean/api_client/models/editpinrequest.py index 989157be..d19c91a1 100644 --- a/src/glean/api_client/models/editpinrequest.py +++ b/src/glean/api_client/models/editpinrequest.py @@ -2,8 +2,9 @@ from __future__ import annotations from .facetfilter import FacetFilter, FacetFilterTypedDict -from glean.api_client.types import BaseModel +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 @@ -28,3 +29,25 @@ class EditPinRequest(BaseModel): id: Optional[str] = None r"""The opaque id of the pin to be edited.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["queries", "audienceFilters", "id"]) + 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: + EditPinRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/editworkflowrequest.py b/src/glean/api_client/models/editworkflowrequest.py new file mode 100644 index 00000000..5d3ba4f1 --- /dev/null +++ b/src/glean/api_client/models/editworkflowrequest.py @@ -0,0 +1,38 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +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 EditWorkflowRequestTypedDict(TypedDict): + name: NotRequired[str] + r"""The name of the workflow.""" + id: NotRequired[str] + r"""The workflow ID we want to update.""" + + +class EditWorkflowRequest(BaseModel): + name: Optional[str] = None + r"""The name of the workflow.""" + + id: Optional[str] = None + r"""The workflow ID we want to update.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name", "id"]) + 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/employeeinfodefinition.py b/src/glean/api_client/models/employeeinfodefinition.py index 960ebead..0dff10f0 100644 --- a/src/glean/api_client/models/employeeinfodefinition.py +++ b/src/glean/api_client/models/employeeinfodefinition.py @@ -14,8 +14,9 @@ ) from .structuredlocation import StructuredLocation, StructuredLocationTypedDict from datetime import date -from glean.api_client.types import BaseModel +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 @@ -122,7 +123,7 @@ class EmployeeInfoDefinition(BaseModel): location: Annotated[ Optional[str], 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: Field is deprecated." ), ] = None r"""The employee's location (city/office name etc).""" @@ -196,3 +197,53 @@ class EmployeeInfoDefinition(BaseModel): pydantic.Field(alias="additionalFields"), ] = None r"""List of additional fields with more information about the employee.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "firstName", + "lastName", + "preferredName", + "id", + "phoneNumber", + "location", + "structuredLocation", + "title", + "photoUrl", + "businessUnit", + "datasourceProfiles", + "teams", + "startDate", + "endDate", + "bio", + "pronoun", + "alsoKnownAs", + "profileUrl", + "socialNetworks", + "managerEmail", + "managerId", + "type", + "relationships", + "status", + "additionalFields", + ] + ) + 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: + EmployeeInfoDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/employeeteaminfo.py b/src/glean/api_client/models/employeeteaminfo.py index 00ddca58..91d78b8d 100644 --- a/src/glean/api_client/models/employeeteaminfo.py +++ b/src/glean/api_client/models/employeeteaminfo.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -28,3 +29,19 @@ class EmployeeTeamInfo(BaseModel): url: Optional[str] = None r"""Link to internal company team page""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "name", "url"]) + 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/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 dcc51f28..5979617b 100644 --- a/src/glean/api_client/models/errormessage.py +++ b/src/glean/api_client/models/errormessage.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -18,3 +19,25 @@ class ErrorMessage(BaseModel): r"""The datasource this message relates to.""" error_message: Annotated[Optional[str], pydantic.Field(alias="errorMessage")] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["source", "errorMessage"]) + 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: + ErrorMessage.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/eventclassification.py b/src/glean/api_client/models/eventclassification.py index 32164a76..7ed6e3fc 100644 --- a/src/glean/api_client/models/eventclassification.py +++ b/src/glean/api_client/models/eventclassification.py @@ -3,7 +3,8 @@ from __future__ import annotations from .eventclassificationname import EventClassificationName from .eventstrategyname import EventStrategyName -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -23,3 +24,19 @@ class EventClassification(BaseModel): r"""The name for a generated classification of an event.""" strategies: Optional[List[EventStrategyName]] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name", "strategies"]) + 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/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 new file mode 100644 index 00000000..859689a2 --- /dev/null +++ b/src/glean/api_client/models/exportinfo.py @@ -0,0 +1,141 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .dlpfindingfilter import DlpFindingFilter, DlpFindingFilterTypedDict +from .dlpissuefilter import DlpIssueFilter, DlpIssueFilterTypedDict +from .dlpperson import DlpPerson, DlpPersonTypedDict +from enum import Enum +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL +import pydantic +from pydantic import field_serializer, model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ExportInfoExportType(str, Enum, metaclass=utils.OpenEnumMeta): + r"""The type of export to perform""" + + FINDINGS = "FINDINGS" + DOCUMENTS = "DOCUMENTS" + ISSUES = "ISSUES" + + +class ExportInfoStatus(str, Enum, metaclass=utils.OpenEnumMeta): + r"""The status of the export""" + + PENDING = "PENDING" + COMPLETED = "COMPLETED" + FAILED = "FAILED" + + +class ExportInfoTypedDict(TypedDict): + created_by: NotRequired[DlpPersonTypedDict] + r"""Details about the person who created this report/policy.""" + start_time: NotRequired[str] + r"""Timestamp at which this export started.""" + end_time: NotRequired[str] + r"""Timestamp at which this export completed.""" + export_id: NotRequired[str] + r"""The ID of the export""" + file_name: NotRequired[str] + r"""The name of the file to export the findings to""" + export_type: NotRequired[ExportInfoExportType] + r"""The type of export to perform""" + filter_: NotRequired[DlpFindingFilterTypedDict] + issue_filter: NotRequired[DlpIssueFilterTypedDict] + r"""Filter for DLP issues. Includes document-level filters and issue-specific filters.""" + status: NotRequired[ExportInfoStatus] + r"""The status of the export""" + export_size: NotRequired[int] + r"""The size of the exported file in bytes""" + + +class ExportInfo(BaseModel): + created_by: Annotated[Optional[DlpPerson], pydantic.Field(alias="createdBy")] = None + r"""Details about the person who created this report/policy.""" + + start_time: Annotated[Optional[str], pydantic.Field(alias="startTime")] = None + r"""Timestamp at which this export started.""" + + end_time: Annotated[Optional[str], pydantic.Field(alias="endTime")] = None + r"""Timestamp at which this export completed.""" + + export_id: Annotated[Optional[str], pydantic.Field(alias="exportId")] = None + r"""The ID of the export""" + + file_name: Annotated[Optional[str], pydantic.Field(alias="fileName")] = None + r"""The name of the file to export the findings to""" + + export_type: Annotated[ + Optional[ExportInfoExportType], pydantic.Field(alias="exportType") + ] = None + r"""The type of export to perform""" + + filter_: Annotated[Optional[DlpFindingFilter], pydantic.Field(alias="filter")] = ( + None + ) + + issue_filter: Annotated[ + Optional[DlpIssueFilter], pydantic.Field(alias="issueFilter") + ] = None + r"""Filter for DLP issues. Includes document-level filters and issue-specific filters.""" + + status: Optional[ExportInfoStatus] = None + r"""The status of the export""" + + export_size: Annotated[Optional[int], pydantic.Field(alias="exportSize")] = None + r"""The size of the exported file in bytes""" + + @field_serializer("export_type") + def serialize_export_type(self, value): + if isinstance(value, str): + try: + return models.ExportInfoExportType(value) + except ValueError: + return value + return value + + @field_serializer("status") + def serialize_status(self, value): + if isinstance(value, str): + try: + return models.ExportInfoStatus(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "createdBy", + "startTime", + "endTime", + "exportId", + "fileName", + "exportType", + "filter", + "issueFilter", + "status", + "exportSize", + ] + ) + 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: + ExportInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/externalsharingoptions.py b/src/glean/api_client/models/externalsharingoptions.py index 7f187884..0a42520d 100644 --- a/src/glean/api_client/models/externalsharingoptions.py +++ b/src/glean/api_client/models/externalsharingoptions.py @@ -1,14 +1,15 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict, deprecated @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-05, removal scheduled for 2026-10-15: Use broadSharingOptions instead." ) class ExternalSharingOptionsTypedDict(TypedDict): r"""Controls how \"shared\" a document must be to get picked for scans.""" @@ -31,7 +32,7 @@ class ExternalSharingOptionsTypedDict(TypedDict): @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-05, removal scheduled for 2026-10-15: Use broadSharingOptions instead." ) class ExternalSharingOptions(BaseModel): r"""Controls how \"shared\" a document must be to get picked for scans.""" @@ -39,7 +40,7 @@ class ExternalSharingOptions(BaseModel): enabled: Annotated[ Optional[bool], 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: Field is deprecated." ), ] = None @@ -54,7 +55,7 @@ class ExternalSharingOptions(BaseModel): anyone_with_link_enabled: Annotated[ Optional[bool], 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: Field is deprecated.", alias="anyoneWithLinkEnabled", ), ] = None @@ -80,3 +81,37 @@ class ExternalSharingOptions(BaseModel): domain_access_enabled: Annotated[ Optional[bool], pydantic.Field(alias="domainAccessEnabled") ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "enabled", + "threshold", + "thresholdEnabled", + "anyoneWithLinkEnabled", + "anyoneInternalEnabled", + "anonymousAccessEnabled", + "userAccessEnabled", + "userIds", + "domainAccessEnabled", + ] + ) + 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: + ExternalSharingOptions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/externalshortcut.py b/src/glean/api_client/models/externalshortcut.py index ecb88c28..33344b41 100644 --- a/src/glean/api_client/models/externalshortcut.py +++ b/src/glean/api_client/models/externalshortcut.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -67,3 +68,35 @@ class ExternalShortcut(BaseModel): edit_url: Annotated[Optional[str], pydantic.Field(alias="editUrl")] = None r"""The URL using which the user can access the edit page of the shortcut.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "description", + "createTime", + "updatedBy", + "updateTime", + "title", + "decayedVisitScore", + "editUrl", + ] + ) + 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: + ExternalShortcut.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/extractedqna.py b/src/glean/api_client/models/extractedqna.py index d5a9426c..6a255674 100644 --- a/src/glean/api_client/models/extractedqna.py +++ b/src/glean/api_client/models/extractedqna.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -28,3 +29,25 @@ class ExtractedQnA(BaseModel): question_result: Annotated[ Optional["SearchResult"], pydantic.Field(alias="questionResult") ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["heading", "question", "questionResult"]) + 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: + ExtractedQnA.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/facetbucket.py b/src/glean/api_client/models/facetbucket.py index 4d4f01fd..f8d356f7 100644 --- a/src/glean/api_client/models/facetbucket.py +++ b/src/glean/api_client/models/facetbucket.py @@ -2,7 +2,8 @@ from __future__ import annotations from .facetvalue import FacetValue, FacetValueTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -28,3 +29,19 @@ class FacetBucket(BaseModel): r"""Estimated percentage of results in this facet.""" value: Optional[FacetValue] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["count", "datasource", "percentage", "value"]) + 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/facetbucketfilter.py b/src/glean/api_client/models/facetbucketfilter.py index aec0e36b..19df5a17 100644 --- a/src/glean/api_client/models/facetbucketfilter.py +++ b/src/glean/api_client/models/facetbucketfilter.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -19,3 +20,19 @@ class FacetBucketFilter(BaseModel): prefix: Optional[str] = None r"""The per-term prefix that facet buckets should be filtered on.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["facet", "prefix"]) + 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/facetfilter.py b/src/glean/api_client/models/facetfilter.py index 27c22663..d882c35b 100644 --- a/src/glean/api_client/models/facetfilter.py +++ b/src/glean/api_client/models/facetfilter.py @@ -2,8 +2,9 @@ from __future__ import annotations from .facetfiltervalue import FacetFilterValue, FacetFilterValueTypedDict -from glean.api_client.types import BaseModel +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 @@ -24,3 +25,25 @@ class FacetFilter(BaseModel): group_name: Annotated[Optional[str], pydantic.Field(alias="groupName")] = None r"""Indicates the value of a facet, if any, that the given facet is grouped under. This is only used for nested facets, for example, fieldName could be owner and groupName would be Spreadsheet if showing all owners for spreadsheets as a nested facet.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["fieldName", "values", "groupName"]) + 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: + FacetFilter.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/facetfilterset.py b/src/glean/api_client/models/facetfilterset.py index f6ae8b5c..b1f689e7 100644 --- a/src/glean/api_client/models/facetfilterset.py +++ b/src/glean/api_client/models/facetfilterset.py @@ -2,7 +2,8 @@ from __future__ import annotations from .facetfilter import FacetFilter, FacetFilterTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -17,3 +18,19 @@ class FacetFilterSet(BaseModel): r"""Within a single FacetFilterSet, the filters are treated as AND. For example, owner Sumeet and type Spreadsheet shows documents that are by Sumeet AND are Spreadsheets.""" filters: Optional[List[FacetFilter]] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["filters"]) + 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/facetfiltervalue.py b/src/glean/api_client/models/facetfiltervalue.py index fe2cb305..3df02196 100644 --- a/src/glean/api_client/models/facetfiltervalue.py +++ b/src/glean/api_client/models/facetfiltervalue.py @@ -2,13 +2,15 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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. @@ -38,8 +40,39 @@ class FacetFilterValue(BaseModel): is_negated: Annotated[ Optional[bool], 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 relationType instead.", alias="isNegated", ), ] = 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"]) + 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: + FacetFilterValue.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/facetresult.py b/src/glean/api_client/models/facetresult.py index c250a6ba..6cea2b89 100644 --- a/src/glean/api_client/models/facetresult.py +++ b/src/glean/api_client/models/facetresult.py @@ -2,8 +2,9 @@ from __future__ import annotations from .facetbucket import FacetBucket, FacetBucketTypedDict -from glean.api_client.types import BaseModel +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 @@ -38,3 +39,27 @@ class FacetResult(BaseModel): group_name: Annotated[Optional[str], pydantic.Field(alias="groupName")] = None r"""For most facets this will be the empty string, meaning the facet is high-level and applies to all documents for the datasource. When non-empty, this is used to group facets together (i.e. group facets for each doctype for a certain datasource)""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["sourceName", "operatorName", "buckets", "hasMoreBuckets", "groupName"] + ) + 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: + FacetResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/facetvalue.py b/src/glean/api_client/models/facetvalue.py index 21ff8e3e..fdf378c8 100644 --- a/src/glean/api_client/models/facetvalue.py +++ b/src/glean/api_client/models/facetvalue.py @@ -2,8 +2,9 @@ from __future__ import annotations from .iconconfig import IconConfig, IconConfigTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -31,3 +32,27 @@ class FacetValue(BaseModel): None ) r"""Defines how to render an icon""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["stringValue", "integerValue", "displayLabel", "iconConfig"] + ) + 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: + FacetValue.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/favoriteinfo.py b/src/glean/api_client/models/favoriteinfo.py index 1556a690..17359e01 100644 --- a/src/glean/api_client/models/favoriteinfo.py +++ b/src/glean/api_client/models/favoriteinfo.py @@ -2,8 +2,10 @@ from __future__ import annotations from .ugctype import UgcType -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -31,3 +33,34 @@ class FavoriteInfo(BaseModel): Optional[bool], pydantic.Field(alias="favoritedByUser") ] = 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"]) + 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: + FavoriteInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/feedback.py b/src/glean/api_client/models/feedback.py index 986e7162..1dfc5693 100644 --- a/src/glean/api_client/models/feedback.py +++ b/src/glean/api_client/models/feedback.py @@ -13,8 +13,9 @@ from .workflowfeedbackinfo import WorkflowFeedbackInfo, WorkflowFeedbackInfoTypedDict from datetime import datetime from enum import Enum -from glean.api_client.types import BaseModel +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 @@ -23,6 +24,8 @@ class FeedbackCategory(str, Enum): r"""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.""" ANNOUNCEMENT = "ANNOUNCEMENT" + ANSWERS = "ANSWERS" + ARTIFACTS = "ARTIFACTS" AUTOCOMPLETE = "AUTOCOMPLETE" COLLECTIONS = "COLLECTIONS" FEED = "FEED" @@ -36,7 +39,7 @@ class FeedbackCategory(str, Enum): PROMPTS = "PROMPTS" -class Event(str, Enum): +class FeedbackEvent(str, Enum): r"""The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`.""" # The object's primary link was clicked with the intent to view its full representation. Depending on the object type, this may imply an external navigation or navigating to a new page or view within the Glean app. @@ -67,6 +70,8 @@ class Event(str, Enum): MANUAL_FEEDBACK = "MANUAL_FEEDBACK" # The user submitted comparative feedback for multiple side-by-side implementations. MANUAL_FEEDBACK_SIDE_BY_SIDE = "MANUAL_FEEDBACK_SIDE_BY_SIDE" + # The user submitted feedback about time saved by an agent or workflow. + FEEDBACK_TIME_SAVED = "FEEDBACK_TIME_SAVED" # The user explicitly marked the content as read. MARK_AS_READ = "MARK_AS_READ" # The user attempted to send a message using their default messaing app. @@ -110,7 +115,7 @@ class FeedbackChannel(str, Enum): class FeedbackTypedDict(TypedDict): tracking_tokens: List[str] r"""A list of server-generated trackingTokens to which this event applies.""" - event: Event + event: FeedbackEvent r"""The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`.""" id: NotRequired[str] r"""Universally unique identifier of the event. To allow for reliable retransmission, only the earliest received event of a given UUID is considered valid by the server and subsequent are ignored.""" @@ -151,7 +156,7 @@ class Feedback(BaseModel): tracking_tokens: Annotated[List[str], pydantic.Field(alias="trackingTokens")] r"""A list of server-generated trackingTokens to which this event applies.""" - event: Event + event: FeedbackEvent r"""The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`.""" id: Optional[str] = None @@ -218,3 +223,47 @@ class Feedback(BaseModel): agent_id: Annotated[Optional[str], pydantic.Field(alias="agentId")] = None r"""The agent ID of the client that sent the feedback event.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "id", + "category", + "position", + "payload", + "sessionInfo", + "timestamp", + "user", + "pathname", + "channels", + "url", + "uiTree", + "uiElement", + "manualFeedbackInfo", + "manualFeedbackSideBySideInfo", + "seenFeedbackInfo", + "userViewInfo", + "workflowFeedbackInfo", + "applicationId", + "agentId", + ] + ) + 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: + Feedback.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/feedbackchatexchange.py b/src/glean/api_client/models/feedbackchatexchange.py index 5d7a5273..291794c5 100644 --- a/src/glean/api_client/models/feedbackchatexchange.py +++ b/src/glean/api_client/models/feedbackchatexchange.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,6 +18,22 @@ class ResultDocument(BaseModel): url: Optional[str] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["title", "url"]) + 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 + class FeedbackChatExchangeTypedDict(TypedDict): timestamp: NotRequired[int] @@ -51,3 +68,34 @@ class FeedbackChatExchange(BaseModel): r"""List of documents read by the agent.""" response: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "timestamp", + "agent", + "userQuery", + "searchQuery", + "resultDocuments", + "response", + ] + ) + 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: + FeedbackChatExchange.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/feedbackop.py b/src/glean/api_client/models/feedbackop.py index 86bac83c..44041cb3 100644 --- a/src/glean/api_client/models/feedbackop.py +++ b/src/glean/api_client/models/feedbackop.py @@ -2,9 +2,10 @@ from __future__ import annotations from .feedback import Feedback, FeedbackTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -27,3 +28,19 @@ class FeedbackRequest(BaseModel): Optional[Feedback], FieldMetadata(request=RequestMetadata(media_type="application/json")), ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["feedbackQueryParameter", "Feedback1"]) + 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/feedentry.py b/src/glean/api_client/models/feedentry.py index 7abf66ea..eb60f1bd 100644 --- a/src/glean/api_client/models/feedentry.py +++ b/src/glean/api_client/models/feedentry.py @@ -20,8 +20,10 @@ from .useractivity import UserActivity, UserActivityTypedDict from .workflowresult import WorkflowResult, WorkflowResultTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -48,8 +50,24 @@ class UIConfig(BaseModel): ] = None r"""UI configurations for each item of the list""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["format", "additionalFlags"]) + serialized = handler(self) + m = {} -class JustificationType(str, Enum): + 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 + + +class JustificationType(str, Enum, metaclass=utils.OpenEnumMeta): r"""Type of the justification.""" FREQUENTLY_ACCESSED = "FREQUENTLY_ACCESSED" @@ -86,6 +104,26 @@ class JustificationType(str, Enum): ZERO_STATE_AGENT_SUGGESTION = "ZERO_STATE_AGENT_SUGGESTION" PERSONALIZED_CHAT_SUGGESTION = "PERSONALIZED_CHAT_SUGGESTION" DAILY_DIGEST = "DAILY_DIGEST" + TASK = "TASK" + PLAN_MY_DAY = "PLAN_MY_DAY" + END_MY_DAY = "END_MY_DAY" + STARTER_KIT_EXTENSION = "STARTER_KIT_EXTENSION" + STARTER_KIT_ORG_CHART = "STARTER_KIT_ORG_CHART" + STARTER_KIT_ADD_DOC = "STARTER_KIT_ADD_DOC" + MEETING_RECAP = "MEETING_RECAP" + ACTIVE_DISCUSSION = "ACTIVE_DISCUSSION" + MID_DAY_CATCH_UP = "MID_DAY_CATCH_UP" + QUERY_SUGGESTION = "QUERY_SUGGESTION" + COWORK_CUJ_PROMO = "COWORK_CUJ_PROMO" + WEEKLY_MEETINGS = "WEEKLY_MEETINGS" + FOLLOW_UP = "FOLLOW_UP" + MILESTONE_TIMELINE_CHECK = "MILESTONE_TIMELINE_CHECK" + PROJECT_DISCUSSION_DIGEST = "PROJECT_DISCUSSION_DIGEST" + PROJECT_FOCUS_BLOCK = "PROJECT_FOCUS_BLOCK" + PROJECT_NEXT_STEP = "PROJECT_NEXT_STEP" + DEMO_CARD = "DEMO_CARD" + OOO_PLANNER = "OOO_PLANNER" + OOO_CATCH_UP = "OOO_CATCH_UP" class FeedEntryTypedDict(TypedDict): @@ -183,3 +221,62 @@ class FeedEntry(BaseModel): document_visitor_count: Annotated[ 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( + [ + "entryId", + "thumbnail", + "createdBy", + "uiConfig", + "justificationType", + "justification", + "trackingToken", + "viewUrl", + "document", + "event", + "announcement", + "digest", + "collection", + "collectionItem", + "person", + "app", + "chatSuggestion", + "promptTemplate", + "workflow", + "activities", + "documentVisitorCount", + ] + ) + 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: + UIConfig.model_rebuild() +except NameError: + pass +try: + FeedEntry.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/feedop.py b/src/glean/api_client/models/feedop.py new file mode 100644 index 00000000..f3962628 --- /dev/null +++ b/src/glean/api_client/models/feedop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .feedrequest import FeedRequest, FeedRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class FeedRequestRequestTypedDict(TypedDict): + feed_request: FeedRequestTypedDict + r"""Includes request params, client data and more for making user's feed.""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class FeedRequestRequest(BaseModel): + feed_request: Annotated[ + FeedRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Includes request params, client data and more for making user's feed.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/feedrequest.py b/src/glean/api_client/models/feedrequest.py index c656672b..22ab9c4e 100644 --- a/src/glean/api_client/models/feedrequest.py +++ b/src/glean/api_client/models/feedrequest.py @@ -4,8 +4,9 @@ from .feedrequestoptions import FeedRequestOptions, FeedRequestOptionsTypedDict from .sessioninfo import SessionInfo, SessionInfoTypedDict from enum import Enum -from glean.api_client.types import BaseModel +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 @@ -36,6 +37,22 @@ class FeedRequestCategory(str, Enum): ZERO_STATE_WORKFLOW_SUGGESTION = "ZERO_STATE_WORKFLOW_SUGGESTION" PERSONALIZED_CHAT_SUGGESTION = "PERSONALIZED_CHAT_SUGGESTION" DAILY_DIGEST = "DAILY_DIGEST" + TASK = "TASK" + PLAN_MY_DAY = "PLAN_MY_DAY" + END_MY_DAY = "END_MY_DAY" + STARTER_KIT = "STARTER_KIT" + MID_DAY_CATCH_UP = "MID_DAY_CATCH_UP" + QUERY_SUGGESTION = "QUERY_SUGGESTION" + COWORK_CUJ_PROMO = "COWORK_CUJ_PROMO" + WEEKLY_MEETINGS = "WEEKLY_MEETINGS" + FOLLOW_UP = "FOLLOW_UP" + MILESTONE_TIMELINE_CHECK = "MILESTONE_TIMELINE_CHECK" + PROJECT_DISCUSSION_DIGEST = "PROJECT_DISCUSSION_DIGEST" + PROJECT_FOCUS_BLOCK = "PROJECT_FOCUS_BLOCK" + PROJECT_NEXT_STEP = "PROJECT_NEXT_STEP" + DEMO_CARD = "DEMO_CARD" + OOO_PLANNER = "OOO_PLANNER" + OOO_CATCH_UP = "OOO_CATCH_UP" class FeedRequestTypedDict(TypedDict): @@ -63,3 +80,27 @@ class FeedRequest(BaseModel): session_info: Annotated[ Optional[SessionInfo], pydantic.Field(alias="sessionInfo") ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["categories", "requestOptions", "timeoutMillis", "sessionInfo"] + ) + 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: + FeedRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/feedrequestoptions.py b/src/glean/api_client/models/feedrequestoptions.py index c647c5e6..b0d65380 100644 --- a/src/glean/api_client/models/feedrequestoptions.py +++ b/src/glean/api_client/models/feedrequestoptions.py @@ -5,8 +5,9 @@ ChatZeroStateSuggestionOptions, ChatZeroStateSuggestionOptionsTypedDict, ) -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Dict, List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -18,6 +19,22 @@ class CategoryToResultSizeTypedDict(TypedDict): class CategoryToResultSize(BaseModel): result_size: Annotated[Optional[int], pydantic.Field(alias="resultSize")] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["resultSize"]) + 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 + class FeedRequestOptionsTypedDict(TypedDict): result_size: int @@ -57,3 +74,36 @@ class FeedRequestOptions(BaseModel): Optional[ChatZeroStateSuggestionOptions], pydantic.Field(alias="chatZeroStateSuggestionOptions"), ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "timezoneOffset", + "categoryToResultSize", + "datasourceFilter", + "chatZeroStateSuggestionOptions", + ] + ) + 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: + CategoryToResultSize.model_rebuild() +except NameError: + pass +try: + FeedRequestOptions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/feedresponse.py b/src/glean/api_client/models/feedresponse.py index d0c78ace..683438c8 100644 --- a/src/glean/api_client/models/feedresponse.py +++ b/src/glean/api_client/models/feedresponse.py @@ -3,8 +3,9 @@ from __future__ import annotations from .facetresult import FacetResult, FacetResultTypedDict from .feedresult import FeedResult, FeedResultTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Dict, List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -48,3 +49,33 @@ class FeedResponse(BaseModel): Optional[int], pydantic.Field(alias="mentionsTimeWindowInHours") ] = None r"""The time window (in hours) used for generating user mentions.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "experimentIds", + "trackingToken", + "results", + "facetResults", + "mentionsTimeWindowInHours", + ] + ) + 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: + FeedResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/feedresult.py b/src/glean/api_client/models/feedresult.py index 38511cdb..c3ee3e98 100644 --- a/src/glean/api_client/models/feedresult.py +++ b/src/glean/api_client/models/feedresult.py @@ -3,13 +3,15 @@ from __future__ import annotations from .feedentry import FeedEntry, FeedEntryTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -37,6 +39,22 @@ class FeedResultCategory(str, Enum): ZERO_STATE_WORKFLOW_SUGGESTION = "ZERO_STATE_WORKFLOW_SUGGESTION" PERSONALIZED_CHAT_SUGGESTION = "PERSONALIZED_CHAT_SUGGESTION" DAILY_DIGEST = "DAILY_DIGEST" + TASK = "TASK" + PLAN_MY_DAY = "PLAN_MY_DAY" + END_MY_DAY = "END_MY_DAY" + STARTER_KIT = "STARTER_KIT" + MID_DAY_CATCH_UP = "MID_DAY_CATCH_UP" + QUERY_SUGGESTION = "QUERY_SUGGESTION" + COWORK_CUJ_PROMO = "COWORK_CUJ_PROMO" + WEEKLY_MEETINGS = "WEEKLY_MEETINGS" + FOLLOW_UP = "FOLLOW_UP" + MILESTONE_TIMELINE_CHECK = "MILESTONE_TIMELINE_CHECK" + PROJECT_DISCUSSION_DIGEST = "PROJECT_DISCUSSION_DIGEST" + PROJECT_FOCUS_BLOCK = "PROJECT_FOCUS_BLOCK" + PROJECT_NEXT_STEP = "PROJECT_NEXT_STEP" + DEMO_CARD = "DEMO_CARD" + OOO_PLANNER = "OOO_PLANNER" + OOO_CATCH_UP = "OOO_CATCH_UP" class FeedResultTypedDict(TypedDict): @@ -62,3 +80,34 @@ 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"]) + 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: + FeedResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/followupaction.py b/src/glean/api_client/models/followupaction.py index c77eba2d..5a446215 100644 --- a/src/glean/api_client/models/followupaction.py +++ b/src/glean/api_client/models/followupaction.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -55,3 +56,35 @@ class FollowupAction(BaseModel): Optional[bool], pydantic.Field(alias="userConfirmationRequired") ] = None r"""Whether user confirmation is needed before executing this action instance.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "actionRunId", + "actionInstanceId", + "actionId", + "parameters", + "recommendationText", + "actionLabel", + "userConfirmationRequired", + ] + ) + 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: + FollowupAction.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/generatedattachment.py b/src/glean/api_client/models/generatedattachment.py index 3e45adcc..f431eede 100644 --- a/src/glean/api_client/models/generatedattachment.py +++ b/src/glean/api_client/models/generatedattachment.py @@ -10,8 +10,10 @@ ) from .person import Person, PersonTypedDict from .structuredlink import StructuredLink, StructuredLinkTypedDict -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -49,3 +51,43 @@ class GeneratedAttachment(BaseModel): r"""A list of links to external sources outside of Glean.""" 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( + [ + "strategyName", + "documents", + "person", + "customer", + "externalLinks", + "content", + ] + ) + 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: + GeneratedAttachment.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/generatedattachmentcontent.py b/src/glean/api_client/models/generatedattachmentcontent.py index efc70dbd..cc022b56 100644 --- a/src/glean/api_client/models/generatedattachmentcontent.py +++ b/src/glean/api_client/models/generatedattachmentcontent.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -26,3 +27,25 @@ class GeneratedAttachmentContent(BaseModel): text: Optional[str] = None r"""The content that has been generated.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["displayHeader", "text"]) + 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: + GeneratedAttachmentContent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/generatedqna.py b/src/glean/api_client/models/generatedqna.py index 38c1aa8b..f1fbf635 100644 --- a/src/glean/api_client/models/generatedqna.py +++ b/src/glean/api_client/models/generatedqna.py @@ -3,8 +3,10 @@ from __future__ import annotations from .followupaction import FollowupAction, FollowupActionTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -12,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" @@ -74,3 +76,45 @@ class GeneratedQna(BaseModel): None ) 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( + [ + "question", + "answer", + "followUpPrompts", + "followupActions", + "ranges", + "status", + "cursor", + "trackingToken", + ] + ) + 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: + GeneratedQna.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/get_rest_api_index_custom_metadata_schema_groupname_op.py b/src/glean/api_client/models/get_rest_api_index_custom_metadata_schema_groupname_op.py new file mode 100644 index 00000000..af2ec64b --- /dev/null +++ b/src/glean/api_client/models/get_rest_api_index_custom_metadata_schema_groupname_op.py @@ -0,0 +1,26 @@ +"""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 + + +GET_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS = [ + "https://{instance}-be.glean.com", +] + + +class GetRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict(TypedDict): + group_name: str + r"""Name of the metadata group schema""" + + +class GetRestAPIIndexCustomMetadataSchemaGroupNameRequest(BaseModel): + group_name: Annotated[ + str, + pydantic.Field(alias="groupName"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Name of the metadata group schema""" 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 5d4cbffa..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 @@ -1,9 +1,10 @@ """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.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, QueryParamMetadata import pydantic +from pydantic import model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -20,3 +21,19 @@ class GetRestAPIV1ToolsListRequest(BaseModel): FieldMetadata(query=QueryParamMetadata(style="form", explode=False)), ] = None r"""Optional array of tool names to filter by""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["toolNames"]) + 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/getactionpackauthstatusop.py b/src/glean/api_client/models/getactionpackauthstatusop.py new file mode 100644 index 00000000..596234ea --- /dev/null +++ b/src/glean/api_client/models/getactionpackauthstatusop.py @@ -0,0 +1,21 @@ +"""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 GetActionPackAuthStatusRequestTypedDict(TypedDict): + action_pack_id: str + r"""ID of the action pack to query or authorize.""" + + +class GetActionPackAuthStatusRequest(BaseModel): + action_pack_id: Annotated[ + str, + pydantic.Field(alias="actionPackId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""ID of the action pack to query or authorize.""" diff --git a/src/glean/api_client/models/getagentop.py b/src/glean/api_client/models/getagentop.py index 8c46cd53..9cb38383 100644 --- a/src/glean/api_client/models/getagentop.py +++ b/src/glean/api_client/models/getagentop.py @@ -1,9 +1,10 @@ """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.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -11,6 +12,8 @@ class GetAgentRequestTypedDict(TypedDict): agent_id: str r"""The ID of the agent.""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" timezone_offset: NotRequired[int] r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" @@ -21,9 +24,31 @@ class GetAgentRequest(BaseModel): ] r"""The ID of the agent.""" + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + timezone_offset: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale", "timezoneOffset"]) + 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/getagentschemasop.py b/src/glean/api_client/models/getagentschemasop.py index 2ccdeb6d..c381cdae 100644 --- a/src/glean/api_client/models/getagentschemasop.py +++ b/src/glean/api_client/models/getagentschemasop.py @@ -1,9 +1,10 @@ """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.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -11,6 +12,8 @@ class GetAgentSchemasRequestTypedDict(TypedDict): agent_id: str r"""The ID of the agent.""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" timezone_offset: NotRequired[int] r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" @@ -21,9 +24,31 @@ class GetAgentSchemasRequest(BaseModel): ] r"""The ID of the agent.""" + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + timezone_offset: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale", "timezoneOffset"]) + 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/getanswererror.py b/src/glean/api_client/models/getanswererror.py index b22de15f..102fadd9 100644 --- a/src/glean/api_client/models/getanswererror.py +++ b/src/glean/api_client/models/getanswererror.py @@ -3,13 +3,15 @@ from __future__ import annotations from .person import Person, PersonTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -27,3 +29,34 @@ class GetAnswerError(BaseModel): answer_author: Annotated[Optional[Person], pydantic.Field(alias="answerAuthor")] = ( 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"]) + 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: + GetAnswerError.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getanswerop.py b/src/glean/api_client/models/getanswerop.py new file mode 100644 index 00000000..3a649778 --- /dev/null +++ b/src/glean/api_client/models/getanswerop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .getanswerrequest import GetAnswerRequest, GetAnswerRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetanswerRequestRequestTypedDict(TypedDict): + get_answer_request: GetAnswerRequestTypedDict + r"""GetAnswer request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class GetanswerRequestRequest(BaseModel): + get_answer_request: Annotated[ + GetAnswerRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""GetAnswer request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/getanswerrequest.py b/src/glean/api_client/models/getanswerrequest.py index 8fab070a..5a1648a1 100644 --- a/src/glean/api_client/models/getanswerrequest.py +++ b/src/glean/api_client/models/getanswerrequest.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -20,3 +21,25 @@ class GetAnswerRequest(BaseModel): doc_id: Annotated[Optional[str], pydantic.Field(alias="docId")] = None r"""Glean Document ID of the Answer. The Glean Document ID is supported for cases where the Answer ID isn't available. If both are available, using the Answer ID is preferred.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "docId"]) + 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: + GetAnswerRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getanswerresponse.py b/src/glean/api_client/models/getanswerresponse.py index 0c019028..6bb54cef 100644 --- a/src/glean/api_client/models/getanswerresponse.py +++ b/src/glean/api_client/models/getanswerresponse.py @@ -3,8 +3,9 @@ from __future__ import annotations from .answerresult import AnswerResult, AnswerResultTypedDict from .getanswererror import GetAnswerError, GetAnswerErrorTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -20,3 +21,25 @@ class GetAnswerResponse(BaseModel): ] = None error: Optional[GetAnswerError] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["answerResult", "error"]) + 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: + GetAnswerResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getchatapplicationop.py b/src/glean/api_client/models/getchatapplicationop.py index 0125e6b2..8431fc2e 100644 --- a/src/glean/api_client/models/getchatapplicationop.py +++ b/src/glean/api_client/models/getchatapplicationop.py @@ -5,15 +5,18 @@ GetChatApplicationRequest, GetChatApplicationRequestTypedDict, ) -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict class GetchatapplicationRequestRequestTypedDict(TypedDict): get_chat_application_request: GetChatApplicationRequestTypedDict + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" timezone_offset: NotRequired[int] r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" @@ -24,9 +27,31 @@ class GetchatapplicationRequestRequest(BaseModel): FieldMetadata(request=RequestMetadata(media_type="application/json")), ] + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + timezone_offset: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale", "timezoneOffset"]) + 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/getchatapplicationresponse.py b/src/glean/api_client/models/getchatapplicationresponse.py index 35bc5fe9..c4b38871 100644 --- a/src/glean/api_client/models/getchatapplicationresponse.py +++ b/src/glean/api_client/models/getchatapplicationresponse.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Any, Optional from typing_extensions import NotRequired, TypedDict @@ -12,3 +13,19 @@ class GetChatApplicationResponseTypedDict(TypedDict): class GetChatApplicationResponse(BaseModel): application: Optional[Any] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["application"]) + 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/getchatfileop.py b/src/glean/api_client/models/getchatfileop.py new file mode 100644 index 00000000..60bbf327 --- /dev/null +++ b/src/glean/api_client/models/getchatfileop.py @@ -0,0 +1,51 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetChatFileRequestTypedDict(TypedDict): + file_id: str + r"""Identifier of the chat file to download.""" + preview: NotRequired[bool] + r"""When true and the file is a PDF, the response is served inline (Content-Disposition: inline) instead of as an attachment. + + """ + + +class GetChatFileRequest(BaseModel): + file_id: Annotated[ + str, + pydantic.Field(alias="fileId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Identifier of the chat file to download.""" + + preview: Annotated[ + Optional[bool], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""When true and the file is a PDF, the response is served inline (Content-Disposition: inline) instead of as an attachment. + + """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["preview"]) + 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/getchatfilesop.py b/src/glean/api_client/models/getchatfilesop.py index 43d5942b..d0ba2bef 100644 --- a/src/glean/api_client/models/getchatfilesop.py +++ b/src/glean/api_client/models/getchatfilesop.py @@ -2,15 +2,18 @@ from __future__ import annotations from .getchatfilesrequest import GetChatFilesRequest, GetChatFilesRequestTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict class GetchatfilesRequestRequestTypedDict(TypedDict): get_chat_files_request: GetChatFilesRequestTypedDict + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" timezone_offset: NotRequired[int] r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" @@ -21,9 +24,31 @@ class GetchatfilesRequestRequest(BaseModel): FieldMetadata(request=RequestMetadata(media_type="application/json")), ] + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + timezone_offset: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale", "timezoneOffset"]) + 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/getchatfilesrequest.py b/src/glean/api_client/models/getchatfilesrequest.py index 86c92b64..d29ef1be 100644 --- a/src/glean/api_client/models/getchatfilesrequest.py +++ b/src/glean/api_client/models/getchatfilesrequest.py @@ -15,3 +15,9 @@ class GetChatFilesRequestTypedDict(TypedDict): class GetChatFilesRequest(BaseModel): file_ids: Annotated[List[str], pydantic.Field(alias="fileIds")] r"""IDs of files to fetch.""" + + +try: + GetChatFilesRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getchatfilesresponse.py b/src/glean/api_client/models/getchatfilesresponse.py index 01009b4c..c3d8e2e9 100644 --- a/src/glean/api_client/models/getchatfilesresponse.py +++ b/src/glean/api_client/models/getchatfilesresponse.py @@ -2,7 +2,8 @@ from __future__ import annotations from .chatfile import ChatFile, ChatFileTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Dict, Optional from typing_extensions import NotRequired, TypedDict @@ -15,3 +16,19 @@ class GetChatFilesResponseTypedDict(TypedDict): class GetChatFilesResponse(BaseModel): files: Optional[Dict[str, ChatFile]] = None r"""A map of file IDs to ChatFile structs.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["files"]) + 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/getchatop.py b/src/glean/api_client/models/getchatop.py index 223baba2..c4155fe3 100644 --- a/src/glean/api_client/models/getchatop.py +++ b/src/glean/api_client/models/getchatop.py @@ -2,15 +2,18 @@ from __future__ import annotations from .getchatrequest import GetChatRequest, GetChatRequestTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict class GetchatRequestRequestTypedDict(TypedDict): get_chat_request: GetChatRequestTypedDict + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" timezone_offset: NotRequired[int] r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" @@ -21,9 +24,31 @@ class GetchatRequestRequest(BaseModel): FieldMetadata(request=RequestMetadata(media_type="application/json")), ] + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + timezone_offset: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale", "timezoneOffset"]) + 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/getchatresponse.py b/src/glean/api_client/models/getchatresponse.py index 5f24d0ab..7dfadab7 100644 --- a/src/glean/api_client/models/getchatresponse.py +++ b/src/glean/api_client/models/getchatresponse.py @@ -2,8 +2,9 @@ from __future__ import annotations from .chatresult import ChatResult, ChatResultTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -16,3 +17,25 @@ class GetChatResponse(BaseModel): chat_result: Annotated[Optional[ChatResult], pydantic.Field(alias="chatResult")] = ( None ) + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["chatResult"]) + 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: + GetChatResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getcollectionop.py b/src/glean/api_client/models/getcollectionop.py new file mode 100644 index 00000000..92fdcda5 --- /dev/null +++ b/src/glean/api_client/models/getcollectionop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .getcollectionrequest import GetCollectionRequest, GetCollectionRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetcollectionRequestRequestTypedDict(TypedDict): + get_collection_request: GetCollectionRequestTypedDict + r"""GetCollection request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class GetcollectionRequestRequest(BaseModel): + get_collection_request: Annotated[ + GetCollectionRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""GetCollection request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/getcollectionrequest.py b/src/glean/api_client/models/getcollectionrequest.py index 3d4d0c41..36d10443 100644 --- a/src/glean/api_client/models/getcollectionrequest.py +++ b/src/glean/api_client/models/getcollectionrequest.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -34,3 +35,25 @@ class GetCollectionRequest(BaseModel): Optional[str], pydantic.Field(alias="allowedDatasource") ] = None r"""The datasource allowed in the Collection returned.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["withItems", "withHierarchy", "allowedDatasource"]) + 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: + GetCollectionRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getcollectionresponse.py b/src/glean/api_client/models/getcollectionresponse.py index 2360fd29..10123b3a 100644 --- a/src/glean/api_client/models/getcollectionresponse.py +++ b/src/glean/api_client/models/getcollectionresponse.py @@ -3,8 +3,9 @@ from __future__ import annotations from .collection import Collection, CollectionTypedDict from .collectionerror import CollectionError, CollectionErrorTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -12,9 +13,9 @@ class GetCollectionResponseTypedDict(TypedDict): collection: NotRequired[CollectionTypedDict] root_collection: NotRequired[CollectionTypedDict] - tracking_token: NotRequired[str] - r"""An opaque token that represents this particular Collection. To be used for `/feedback` reporting.""" error: NotRequired[CollectionErrorTypedDict] + tracking_token: NotRequired[str] + r"""Use `collection.trackingToken` instead.""" class GetCollectionResponse(BaseModel): @@ -24,9 +25,37 @@ class GetCollectionResponse(BaseModel): Optional[Collection], pydantic.Field(alias="rootCollection") ] = None - tracking_token: Annotated[Optional[str], pydantic.Field(alias="trackingToken")] = ( - None - ) - r"""An opaque token that represents this particular Collection. To be used for `/feedback` reporting.""" - error: Optional[CollectionError] = None + + tracking_token: Annotated[ + Optional[str], + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-05-07, removal scheduled for 2027-01-15: Use `collection.trackingToken` instead..", + alias="trackingToken", + ), + ] = None + r"""Use `collection.trackingToken` instead.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["collection", "rootCollection", "error", "trackingToken"] + ) + 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: + GetCollectionResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdatasourcecredentialstatusop.py b/src/glean/api_client/models/getdatasourcecredentialstatusop.py new file mode 100644 index 00000000..d693ed54 --- /dev/null +++ b/src/glean/api_client/models/getdatasourcecredentialstatusop.py @@ -0,0 +1,21 @@ +"""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 GetDatasourceCredentialStatusRequestTypedDict(TypedDict): + datasource_instance_id: str + r"""The full datasource instance identifier (e.g. o365sharepoint_abc123)""" + + +class GetDatasourceCredentialStatusRequest(BaseModel): + datasource_instance_id: Annotated[ + str, + pydantic.Field(alias="datasourceInstanceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The full datasource instance identifier (e.g. o365sharepoint_abc123)""" 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 910b76f3..7af2ec3d 100644 --- a/src/glean/api_client/models/getdlpreportresponse.py +++ b/src/glean/api_client/models/getdlpreportresponse.py @@ -2,7 +2,8 @@ from __future__ import annotations from .dlpreport import DlpReport, DlpReportTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -15,3 +16,19 @@ class GetDlpReportResponseTypedDict(TypedDict): class GetDlpReportResponse(BaseModel): report: Optional[DlpReport] = None r"""Full policy information that will be used for scans.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["report"]) + 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/getdocpermissionsop.py b/src/glean/api_client/models/getdocpermissionsop.py new file mode 100644 index 00000000..bc562e41 --- /dev/null +++ b/src/glean/api_client/models/getdocpermissionsop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .getdocpermissionsrequest import ( + GetDocPermissionsRequest, + GetDocPermissionsRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetdocpermissionsRequestRequestTypedDict(TypedDict): + get_doc_permissions_request: GetDocPermissionsRequestTypedDict + r"""Document permissions request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class GetdocpermissionsRequestRequest(BaseModel): + get_doc_permissions_request: Annotated[ + GetDocPermissionsRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Document permissions request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/getdocpermissionsrequest.py b/src/glean/api_client/models/getdocpermissionsrequest.py index 87d3980f..4c4a4e5b 100644 --- a/src/glean/api_client/models/getdocpermissionsrequest.py +++ b/src/glean/api_client/models/getdocpermissionsrequest.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -15,3 +16,25 @@ class GetDocPermissionsRequestTypedDict(TypedDict): class GetDocPermissionsRequest(BaseModel): document_id: Annotated[Optional[str], pydantic.Field(alias="documentId")] = None r"""The Glean Document ID to retrieve permissions for.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["documentId"]) + 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: + GetDocPermissionsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdocpermissionsresponse.py b/src/glean/api_client/models/getdocpermissionsresponse.py index 4e466616..061e8975 100644 --- a/src/glean/api_client/models/getdocpermissionsresponse.py +++ b/src/glean/api_client/models/getdocpermissionsresponse.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,3 +18,25 @@ class GetDocPermissionsResponse(BaseModel): Optional[List[str]], pydantic.Field(alias="allowedUserEmails") ] = None r"""A list of emails of users who have access to the document. If the document is visible to all Glean users, a list with only a single value of 'VISIBLE_TO_ALL'.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["allowedUserEmails"]) + 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: + GetDocPermissionsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdocumentcountresponse.py b/src/glean/api_client/models/getdocumentcountresponse.py index a92b11bd..c3400b20 100644 --- a/src/glean/api_client/models/getdocumentcountresponse.py +++ b/src/glean/api_client/models/getdocumentcountresponse.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -21,3 +22,25 @@ class GetDocumentCountResponse(BaseModel): None ) r"""Number of documents corresponding to the specified custom datasource.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["documentCount"]) + 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: + GetDocumentCountResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdocumentsbyfacetsop.py b/src/glean/api_client/models/getdocumentsbyfacetsop.py new file mode 100644 index 00000000..a6bd1531 --- /dev/null +++ b/src/glean/api_client/models/getdocumentsbyfacetsop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .getdocumentsbyfacetsrequest import ( + GetDocumentsByFacetsRequest, + GetDocumentsByFacetsRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetdocumentsbyfacetsRequestRequestTypedDict(TypedDict): + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + get_documents_by_facets_request: NotRequired[GetDocumentsByFacetsRequestTypedDict] + r"""Information about facet conditions for documents to be retrieved.""" + + +class GetdocumentsbyfacetsRequestRequest(BaseModel): + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + get_documents_by_facets_request: Annotated[ + Optional[GetDocumentsByFacetsRequest], + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] = None + r"""Information about facet conditions for documents to be retrieved.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale", "GetDocumentsByFacetsRequest"]) + 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/getdocumentsbyfacetsrequest.py b/src/glean/api_client/models/getdocumentsbyfacetsrequest.py index 2bb8c880..fe741831 100644 --- a/src/glean/api_client/models/getdocumentsbyfacetsrequest.py +++ b/src/glean/api_client/models/getdocumentsbyfacetsrequest.py @@ -2,8 +2,9 @@ from __future__ import annotations from .facetfilterset import FacetFilterSet, FacetFilterSetTypedDict -from glean.api_client.types import BaseModel +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 @@ -28,3 +29,25 @@ class GetDocumentsByFacetsRequest(BaseModel): cursor: Optional[str] = None r"""Pagination cursor. A previously received opaque token representing the position in the overall results at which to start.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["datasourcesFilter", "cursor"]) + 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: + GetDocumentsByFacetsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdocumentsbyfacetsresponse.py b/src/glean/api_client/models/getdocumentsbyfacetsresponse.py index f3f1a394..e7e0337a 100644 --- a/src/glean/api_client/models/getdocumentsbyfacetsresponse.py +++ b/src/glean/api_client/models/getdocumentsbyfacetsresponse.py @@ -2,8 +2,9 @@ from __future__ import annotations from .document import Document, DocumentTypedDict -from glean.api_client.types import BaseModel +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 @@ -28,3 +29,25 @@ class GetDocumentsByFacetsResponse(BaseModel): cursor: Optional[str] = None r"""Cursor that indicates the start of the next page of results. To be passed in \"more\" requests for this query.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["documents", "hasMoreResults", "cursor"]) + 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: + GetDocumentsByFacetsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdocumentsop.py b/src/glean/api_client/models/getdocumentsop.py new file mode 100644 index 00000000..fd29b3ef --- /dev/null +++ b/src/glean/api_client/models/getdocumentsop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .getdocumentsrequest import GetDocumentsRequest, GetDocumentsRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetdocumentsRequestRequestTypedDict(TypedDict): + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + get_documents_request: NotRequired[GetDocumentsRequestTypedDict] + r"""Information about documents requested.""" + + +class GetdocumentsRequestRequest(BaseModel): + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + get_documents_request: Annotated[ + Optional[GetDocumentsRequest], + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] = None + r"""Information about documents requested.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale", "GetDocumentsRequest"]) + 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/getdocumentsrequest.py b/src/glean/api_client/models/getdocumentsrequest.py index fccf9c08..8e64be35 100644 --- a/src/glean/api_client/models/getdocumentsrequest.py +++ b/src/glean/api_client/models/getdocumentsrequest.py @@ -3,8 +3,9 @@ from __future__ import annotations from .documentspec_union import DocumentSpecUnion, DocumentSpecUnionTypedDict from enum import Enum -from glean.api_client.types import BaseModel +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 @@ -14,6 +15,7 @@ class GetDocumentsRequestIncludeField(str, Enum): VISITORS_COUNT = "VISITORS_COUNT" RECENT_SHARES = "RECENT_SHARES" DOCUMENT_CONTENT = "DOCUMENT_CONTENT" + CUSTOM_METADATA = "CUSTOM_METADATA" class GetDocumentsRequestTypedDict(TypedDict): @@ -34,3 +36,25 @@ class GetDocumentsRequest(BaseModel): pydantic.Field(alias="includeFields"), ] = None r"""List of Document fields to return (that aren't returned by default)""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["includeFields"]) + 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: + GetDocumentsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdocumentsresponse.py b/src/glean/api_client/models/getdocumentsresponse.py index 8d88a307..6448b888 100644 --- a/src/glean/api_client/models/getdocumentsresponse.py +++ b/src/glean/api_client/models/getdocumentsresponse.py @@ -2,7 +2,8 @@ from __future__ import annotations from .documentorerror_union import DocumentOrErrorUnion, DocumentOrErrorUnionTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Dict, Optional from typing_extensions import NotRequired, TypedDict @@ -15,3 +16,19 @@ class GetDocumentsResponseTypedDict(TypedDict): class GetDocumentsResponse(BaseModel): documents: Optional[Dict[str, DocumentOrErrorUnion]] = None r"""The document details or the error if document is not found.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["documents"]) + 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/getdocumentstatusrequest.py b/src/glean/api_client/models/getdocumentstatusrequest.py index 47266d92..1a4b391e 100644 --- a/src/glean/api_client/models/getdocumentstatusrequest.py +++ b/src/glean/api_client/models/getdocumentstatusrequest.py @@ -28,3 +28,9 @@ class GetDocumentStatusRequest(BaseModel): doc_id: Annotated[str, pydantic.Field(alias="docId")] r"""Glean Document ID within the datasource to get the status for.""" + + +try: + GetDocumentStatusRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdocumentstatusresponse.py b/src/glean/api_client/models/getdocumentstatusresponse.py index 2d9da081..5bd4fd92 100644 --- a/src/glean/api_client/models/getdocumentstatusresponse.py +++ b/src/glean/api_client/models/getdocumentstatusresponse.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -40,3 +41,27 @@ class GetDocumentStatusResponse(BaseModel): None ) r"""Time of last successful indexing, in epoch seconds""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["uploadStatus", "lastUploadedAt", "indexingStatus", "lastIndexedAt"] + ) + 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: + GetDocumentStatusResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdocumentvisibilityoverridesresponse.py b/src/glean/api_client/models/getdocumentvisibilityoverridesresponse.py index 7b7f9502..cd81ecd7 100644 --- a/src/glean/api_client/models/getdocumentvisibilityoverridesresponse.py +++ b/src/glean/api_client/models/getdocumentvisibilityoverridesresponse.py @@ -5,8 +5,9 @@ DocumentVisibilityOverride, DocumentVisibilityOverrideTypedDict, ) -from glean.api_client.types import BaseModel +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 @@ -20,3 +21,25 @@ class GetDocumentVisibilityOverridesResponse(BaseModel): Optional[List[DocumentVisibilityOverride]], pydantic.Field(alias="visibilityOverrides"), ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["visibilityOverrides"]) + 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: + GetDocumentVisibilityOverridesResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/getdocvisibilityop.py b/src/glean/api_client/models/getdocvisibilityop.py index e6f51f11..198ee640 100644 --- a/src/glean/api_client/models/getdocvisibilityop.py +++ b/src/glean/api_client/models/getdocvisibilityop.py @@ -1,9 +1,10 @@ """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.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, QueryParamMetadata import pydantic +from pydantic import model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -20,3 +21,19 @@ class GetdocvisibilityRequest(BaseModel): FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""List of doc-ids which will have their hide status fetched.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["docIds"]) + 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/getpersonphotoop.py b/src/glean/api_client/models/getpersonphotoop.py new file mode 100644 index 00000000..7d3d9948 --- /dev/null +++ b/src/glean/api_client/models/getpersonphotoop.py @@ -0,0 +1,70 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata +import httpx +from pydantic import model_serializer +from typing import Dict, List, Optional, Union +from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict + + +class GetPersonPhotoRequestTypedDict(TypedDict): + person_id: str + r"""The obfuscated ID of the person whose photo to retrieve.""" + ds: NotRequired[str] + r"""Optional datasource override for crawled photos (e.g. AZURE, GDRIVE, OKTA). When omitted, the datasource is derived from the person's stored photo URL or the deployment's primary person datasource. + + """ + + +class GetPersonPhotoRequest(BaseModel): + person_id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The obfuscated ID of the person whose photo to retrieve.""" + + ds: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Optional datasource override for crawled photos (e.g. AZURE, GDRIVE, OKTA). When omitted, the datasource is derived from the person's stored photo URL or the deployment's primary person datasource. + + """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["ds"]) + 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 + + +GetPersonPhotoResponseResultTypedDict = TypeAliasType( + "GetPersonPhotoResponseResultTypedDict", Union[httpx.Response, httpx.Response] +) + + +GetPersonPhotoResponseResult = TypeAliasType( + "GetPersonPhotoResponseResult", Union[httpx.Response, httpx.Response] +) + + +class GetPersonPhotoResponseTypedDict(TypedDict): + headers: Dict[str, List[str]] + result: GetPersonPhotoResponseResultTypedDict + + +class GetPersonPhotoResponse(BaseModel): + headers: Dict[str, List[str]] + + result: GetPersonPhotoResponseResult diff --git a/src/glean/api_client/models/getpinop.py b/src/glean/api_client/models/getpinop.py new file mode 100644 index 00000000..7c1467b4 --- /dev/null +++ b/src/glean/api_client/models/getpinop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .getpinrequest import GetPinRequest, GetPinRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetpinRequestRequestTypedDict(TypedDict): + get_pin_request: GetPinRequestTypedDict + r"""Get pin request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class GetpinRequestRequest(BaseModel): + get_pin_request: Annotated[ + GetPinRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Get pin request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/getpinrequest.py b/src/glean/api_client/models/getpinrequest.py index 3ad5f923..c11fbc5c 100644 --- a/src/glean/api_client/models/getpinrequest.py +++ b/src/glean/api_client/models/getpinrequest.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -14,3 +15,19 @@ class GetPinRequestTypedDict(TypedDict): class GetPinRequest(BaseModel): id: Optional[str] = None r"""The opaque id of the pin to be fetched.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id"]) + 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/getpinresponse.py b/src/glean/api_client/models/getpinresponse.py index e7e58070..a4562931 100644 --- a/src/glean/api_client/models/getpinresponse.py +++ b/src/glean/api_client/models/getpinresponse.py @@ -2,7 +2,8 @@ from __future__ import annotations from .pindocument import PinDocument, PinDocumentTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -13,3 +14,19 @@ class GetPinResponseTypedDict(TypedDict): class GetPinResponse(BaseModel): pin: Optional[PinDocument] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["pin"]) + 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/getpolicyop.py b/src/glean/api_client/models/getpolicyop.py index 41f8894d..95b3502e 100644 --- a/src/glean/api_client/models/getpolicyop.py +++ b/src/glean/api_client/models/getpolicyop.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -25,3 +26,19 @@ class GetpolicyRequest(BaseModel): FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""The version of the policy to fetch. Each time a policy is updated, the older version is still stored. If this is left empty, the latest policy is fetched.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["version"]) + 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/getshortcutop.py b/src/glean/api_client/models/getshortcutop.py new file mode 100644 index 00000000..3ca7f668 --- /dev/null +++ b/src/glean/api_client/models/getshortcutop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .getshortcutrequest import GetShortcutRequest, GetShortcutRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetshortcutRequestRequestTypedDict(TypedDict): + get_shortcut_request: GetShortcutRequestTypedDict + r"""GetShortcut request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class GetshortcutRequestRequest(BaseModel): + get_shortcut_request: Annotated[ + GetShortcutRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""GetShortcut request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/getshortcutrequest_union.py b/src/glean/api_client/models/getshortcutrequest.py similarity index 60% rename from src/glean/api_client/models/getshortcutrequest_union.py rename to src/glean/api_client/models/getshortcutrequest.py index 6f031d6d..6efe832b 100644 --- a/src/glean/api_client/models/getshortcutrequest_union.py +++ b/src/glean/api_client/models/getshortcutrequest.py @@ -10,22 +10,22 @@ from typing_extensions import TypeAliasType, TypedDict -class GetShortcutRequestTypedDict(TypedDict): +class GetShortcutRequest1TypedDict(TypedDict): alias: str r"""The alias for the shortcut, including any arguments for variable shortcuts.""" -class GetShortcutRequest(BaseModel): +class GetShortcutRequest1(BaseModel): alias: str r"""The alias for the shortcut, including any arguments for variable shortcuts.""" -GetShortcutRequestUnionTypedDict = TypeAliasType( - "GetShortcutRequestUnionTypedDict", - Union[UserGeneratedContentIDTypedDict, GetShortcutRequestTypedDict], +GetShortcutRequestTypedDict = TypeAliasType( + "GetShortcutRequestTypedDict", + Union[UserGeneratedContentIDTypedDict, GetShortcutRequest1TypedDict], ) -GetShortcutRequestUnion = TypeAliasType( - "GetShortcutRequestUnion", Union[UserGeneratedContentID, GetShortcutRequest] +GetShortcutRequest = TypeAliasType( + "GetShortcutRequest", Union[UserGeneratedContentID, GetShortcutRequest1] ) diff --git a/src/glean/api_client/models/getshortcutresponse.py b/src/glean/api_client/models/getshortcutresponse.py index 52a9e1fc..b20fa741 100644 --- a/src/glean/api_client/models/getshortcutresponse.py +++ b/src/glean/api_client/models/getshortcutresponse.py @@ -3,7 +3,8 @@ from __future__ import annotations from .shortcut import Shortcut, ShortcutTypedDict from .shortcuterror import ShortcutError, ShortcutErrorTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -17,3 +18,19 @@ class GetShortcutResponse(BaseModel): shortcut: Optional[Shortcut] = None error: Optional[ShortcutError] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["shortcut", "error"]) + 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/getusercountresponse.py b/src/glean/api_client/models/getusercountresponse.py index cf329c0f..9a042fa5 100644 --- a/src/glean/api_client/models/getusercountresponse.py +++ b/src/glean/api_client/models/getusercountresponse.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -19,3 +20,25 @@ class GetUserCountResponse(BaseModel): user_count: Annotated[Optional[int], pydantic.Field(alias="userCount")] = None r"""Number of users corresponding to the specified custom datasource.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["userCount"]) + 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: + GetUserCountResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/gleanassistinsightsresponse.py b/src/glean/api_client/models/gleanassistinsightsresponse.py index 11fde8c6..e6c29553 100644 --- a/src/glean/api_client/models/gleanassistinsightsresponse.py +++ b/src/glean/api_client/models/gleanassistinsightsresponse.py @@ -2,8 +2,9 @@ from __future__ import annotations from .useractivityinsight import UserActivityInsight, UserActivityInsightTypedDict -from glean.api_client.types import BaseModel +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 @@ -44,3 +45,33 @@ class GleanAssistInsightsResponse(BaseModel): departments: Optional[List[str]] = None r"""List of departments applicable for users tab.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "lastLogTimestamp", + "activityInsights", + "totalActiveUsers", + "datasourceInstances", + "departments", + ] + ) + 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: + GleanAssistInsightsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/gleandataerror.py b/src/glean/api_client/models/gleandataerror.py index 0e3c93c2..7672589b 100644 --- a/src/glean/api_client/models/gleandataerror.py +++ b/src/glean/api_client/models/gleandataerror.py @@ -6,8 +6,9 @@ InvalidOperatorValueError, InvalidOperatorValueErrorTypedDict, ) -from glean.api_client.types import BaseModel +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 @@ -20,6 +21,8 @@ class GleanDataErrorTypedDict(TypedDict): invalid_operators: NotRequired[List[InvalidOperatorValueErrorTypedDict]] r"""Indicates results could not be fetched due to invalid operators in the query.""" 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.""" class GleanDataError(BaseModel): @@ -42,3 +45,38 @@ class GleanDataError(BaseModel): error_messages: Annotated[ Optional[List[ErrorMessage]], pydantic.Field(alias="errorMessages") ] = None + + federated_search_rate_limit_error: Annotated[ + Optional[bool], pydantic.Field(alias="federatedSearchRateLimitError") + ] = None + r"""Indicates the federated search results could not be fetched due to rate limiting.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "badGmailToken", + "badOutlookToken", + "invalidOperators", + "errorMessages", + "federatedSearchRateLimitError", + ] + ) + 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: + GleanDataError.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/grantpermission.py b/src/glean/api_client/models/grantpermission.py index c8b4da2a..a1bb6806 100644 --- a/src/glean/api_client/models/grantpermission.py +++ b/src/glean/api_client/models/grantpermission.py @@ -2,8 +2,10 @@ from __future__ import annotations from .scopetype import ScopeType -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -20,3 +22,34 @@ 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"]) + 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: + GrantPermission.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/group.py b/src/glean/api_client/models/group.py index d6fc82f7..f1b4a7e9 100644 --- a/src/glean/api_client/models/group.py +++ b/src/glean/api_client/models/group.py @@ -2,8 +2,10 @@ from __future__ import annotations from .grouptype import GroupType -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -40,3 +42,34 @@ class Group(BaseModel): Optional[str], pydantic.Field(alias="provisioningId") ] = 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"]) + 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: + Group.model_rebuild() +except NameError: + pass 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 d7fb8583..51dcb030 100644 --- a/src/glean/api_client/models/hotword.py +++ b/src/glean/api_client/models/hotword.py @@ -2,7 +2,8 @@ from __future__ import annotations from .hotwordproximity import HotwordProximity, HotwordProximityTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -16,3 +17,19 @@ class Hotword(BaseModel): regex: Optional[str] = None proximity: Optional[HotwordProximity] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["regex", "proximity"]) + 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/hotwordproximity.py b/src/glean/api_client/models/hotwordproximity.py index 5365ad4e..ebc0ed38 100644 --- a/src/glean/api_client/models/hotwordproximity.py +++ b/src/glean/api_client/models/hotwordproximity.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -16,3 +17,25 @@ class HotwordProximity(BaseModel): window_before: Annotated[Optional[int], pydantic.Field(alias="windowBefore")] = None window_after: Annotated[Optional[int], pydantic.Field(alias="windowAfter")] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["windowBefore", "windowAfter"]) + 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: + HotwordProximity.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/iconconfig.py b/src/glean/api_client/models/iconconfig.py index 5abfc126..b7109f6b 100644 --- a/src/glean/api_client/models/iconconfig.py +++ b/src/glean/api_client/models/iconconfig.py @@ -2,13 +2,15 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -65,3 +67,45 @@ 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( + [ + "generatedBackgroundColorKey", + "backgroundColor", + "color", + "key", + "iconType", + "masked", + "name", + "url", + ] + ) + 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: + IconConfig.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/indexdocumentrequest.py b/src/glean/api_client/models/indexdocumentrequest.py index 4fba3e89..e49af0a9 100644 --- a/src/glean/api_client/models/indexdocumentrequest.py +++ b/src/glean/api_client/models/indexdocumentrequest.py @@ -2,7 +2,8 @@ from __future__ import annotations from .documentdefinition import DocumentDefinition, DocumentDefinitionTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -24,3 +25,19 @@ class IndexDocumentRequest(BaseModel): version: Optional[int] = None r"""Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["version"]) + 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/indexdocumentsrequest.py b/src/glean/api_client/models/indexdocumentsrequest.py index 7b914d56..df0dc41e 100644 --- a/src/glean/api_client/models/indexdocumentsrequest.py +++ b/src/glean/api_client/models/indexdocumentsrequest.py @@ -2,8 +2,9 @@ from __future__ import annotations from .documentdefinition import DocumentDefinition, DocumentDefinitionTypedDict -from glean.api_client.types import BaseModel +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 @@ -30,3 +31,25 @@ class IndexDocumentsRequest(BaseModel): upload_id: Annotated[Optional[str], pydantic.Field(alias="uploadId")] = None r"""Optional id parameter to identify and track a batch of documents.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["uploadId"]) + 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: + IndexDocumentsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/indexemployeerequest.py b/src/glean/api_client/models/indexemployeerequest.py index f991332f..c37c66ac 100644 --- a/src/glean/api_client/models/indexemployeerequest.py +++ b/src/glean/api_client/models/indexemployeerequest.py @@ -5,7 +5,8 @@ EmployeeInfoDefinition, EmployeeInfoDefinitionTypedDict, ) -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -27,3 +28,19 @@ class IndexEmployeeRequest(BaseModel): version: Optional[int] = None r"""Version number for the employee object. If absent or 0 then no version checks are done""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["version"]) + 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/indexgrouprequest.py b/src/glean/api_client/models/indexgrouprequest.py index 061d1f90..f0b242fd 100644 --- a/src/glean/api_client/models/indexgrouprequest.py +++ b/src/glean/api_client/models/indexgrouprequest.py @@ -5,7 +5,8 @@ DatasourceGroupDefinition, DatasourceGroupDefinitionTypedDict, ) -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -32,3 +33,19 @@ class IndexGroupRequest(BaseModel): version: Optional[int] = None r"""Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["version"]) + 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/indexingshortcut.py b/src/glean/api_client/models/indexingshortcut.py index ada9bb84..82edda46 100644 --- a/src/glean/api_client/models/indexingshortcut.py +++ b/src/glean/api_client/models/indexingshortcut.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -55,3 +56,34 @@ class IndexingShortcut(BaseModel): url_template: Annotated[Optional[str], pydantic.Field(alias="urlTemplate")] = None r"""For variable shortcuts, contains the URL template; note, `destinationUrl` contains default URL.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "description", + "createTime", + "updatedBy", + "updateTime", + "unlisted", + "urlTemplate", + ] + ) + 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: + IndexingShortcut.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/indexmembershiprequest.py b/src/glean/api_client/models/indexmembershiprequest.py index 998015da..471ea84b 100644 --- a/src/glean/api_client/models/indexmembershiprequest.py +++ b/src/glean/api_client/models/indexmembershiprequest.py @@ -5,7 +5,8 @@ DatasourceMembershipDefinition, DatasourceMembershipDefinitionTypedDict, ) -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -32,3 +33,19 @@ class IndexMembershipRequest(BaseModel): version: Optional[int] = None r"""Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["version"]) + 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/indexstatus.py b/src/glean/api_client/models/indexstatus.py index 444468cd..51863783 100644 --- a/src/glean/api_client/models/indexstatus.py +++ b/src/glean/api_client/models/indexstatus.py @@ -2,8 +2,9 @@ from __future__ import annotations from datetime import datetime -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -25,3 +26,25 @@ class IndexStatus(BaseModel): Optional[datetime], pydantic.Field(alias="lastIndexedTime") ] = None r"""When the document was last indexed""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["lastCrawledTime", "lastIndexedTime"]) + 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: + IndexStatus.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/indexteamrequest.py b/src/glean/api_client/models/indexteamrequest.py index 487fd368..e524f951 100644 --- a/src/glean/api_client/models/indexteamrequest.py +++ b/src/glean/api_client/models/indexteamrequest.py @@ -2,7 +2,8 @@ from __future__ import annotations from .teaminfodefinition import TeamInfoDefinition, TeamInfoDefinitionTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -24,3 +25,19 @@ class IndexTeamRequest(BaseModel): version: Optional[int] = None r"""Version number for the team object. If absent or 0 then no version checks are done""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["version"]) + 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/indexuserrequest.py b/src/glean/api_client/models/indexuserrequest.py index 233e2f7d..7acd43d1 100644 --- a/src/glean/api_client/models/indexuserrequest.py +++ b/src/glean/api_client/models/indexuserrequest.py @@ -5,7 +5,8 @@ DatasourceUserDefinition, DatasourceUserDefinitionTypedDict, ) -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -32,3 +33,19 @@ class IndexUserRequest(BaseModel): version: Optional[int] = None r"""Version number for document for optimistic concurrency control. If absent or 0 then no version checks are done.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["version"]) + 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/inputoptions.py b/src/glean/api_client/models/inputoptions.py index f733d9fd..63d2569b 100644 --- a/src/glean/api_client/models/inputoptions.py +++ b/src/glean/api_client/models/inputoptions.py @@ -3,20 +3,22 @@ from __future__ import annotations from .timerange import TimeRange, TimeRangeTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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 TimePeriodType(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" @@ -37,9 +39,11 @@ class InputOptionsTypedDict(TypedDict): r"""List of datasources to consider for report. DEPRECATED - use datasourceInstances instead.""" datasource_instances: NotRequired[List[str]] r"""List of datasource instances to consider for report/policy.""" - time_period_type: NotRequired[TimePeriodType] + time_period_type: NotRequired[InputOptionsTimePeriodType] r"""Type of time period for which to run the report/policy. PAST_DAY is deprecated.""" custom_time_range: NotRequired[TimeRangeTypedDict] + subset_doc_ids_to_scan: NotRequired[List[str]] + r"""Subset of document IDs to scan. If empty, all documents matching other scope criteria will be scanned.""" class InputOptions(BaseModel): @@ -48,7 +52,7 @@ class InputOptions(BaseModel): url_greenlist: Annotated[ Optional[List[str]], 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: Field is deprecated.", alias="urlGreenlist", ), ] = None @@ -62,7 +66,7 @@ class InputOptions(BaseModel): datasources: Annotated[ Optional[List[str]], 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 datasourceInstances instead." ), ] = None r"""List of datasources to consider for report. DEPRECATED - use datasourceInstances instead.""" @@ -73,10 +77,65 @@ class InputOptions(BaseModel): r"""List of datasource instances to consider for report/policy.""" time_period_type: Annotated[ - Optional[TimePeriodType], pydantic.Field(alias="timePeriodType") + Optional[InputOptionsTimePeriodType], pydantic.Field(alias="timePeriodType") ] = None r"""Type of time period for which to run the report/policy. PAST_DAY is deprecated.""" custom_time_range: Annotated[ Optional[TimeRange], pydantic.Field(alias="customTimeRange") ] = None + + subset_doc_ids_to_scan: Annotated[ + Optional[List[str]], pydantic.Field(alias="subsetDocIdsToScan") + ] = 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( + [ + "urlGreenlist", + "datasourcesType", + "datasources", + "datasourceInstances", + "timePeriodType", + "customTimeRange", + "subsetDocIdsToScan", + ] + ) + 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: + InputOptions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/insightsagentsrequestoptions.py b/src/glean/api_client/models/insightsagentsrequestoptions.py deleted file mode 100644 index 5d8cc6cd..00000000 --- a/src/glean/api_client/models/insightsagentsrequestoptions.py +++ /dev/null @@ -1,17 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from glean.api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class InsightsAgentsRequestOptionsTypedDict(TypedDict): - agent_ids: NotRequired[List[str]] - r"""IDs of the Agents for which Insights should be returned. An empty array signifies all.""" - - -class InsightsAgentsRequestOptions(BaseModel): - agent_ids: Annotated[Optional[List[str]], pydantic.Field(alias="agentIds")] = None - r"""IDs of the Agents for which Insights should be returned. An empty array signifies all.""" diff --git a/src/glean/api_client/models/insightsaiapprequestoptions.py b/src/glean/api_client/models/insightsaiapprequestoptions.py deleted file mode 100644 index dbe7cf53..00000000 --- a/src/glean/api_client/models/insightsaiapprequestoptions.py +++ /dev/null @@ -1,17 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from glean.api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class InsightsAiAppRequestOptionsTypedDict(TypedDict): - ai_app_ids: NotRequired[List[str]] - r"""IDs of the AI Apps for which Insights should be returned. An empty array signifies all.""" - - -class InsightsAiAppRequestOptions(BaseModel): - ai_app_ids: Annotated[Optional[List[str]], pydantic.Field(alias="aiAppIds")] = None - r"""IDs of the AI Apps for which Insights should be returned. An empty array signifies all.""" diff --git a/src/glean/api_client/models/insightsassistantrequest.py b/src/glean/api_client/models/insightsassistantrequest.py index a42ec5e3..806dc671 100644 --- a/src/glean/api_client/models/insightsassistantrequest.py +++ b/src/glean/api_client/models/insightsassistantrequest.py @@ -2,8 +2,9 @@ from __future__ import annotations from .period import Period, PeriodTypedDict -from glean.api_client.types import BaseModel +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 @@ -11,6 +12,8 @@ class InsightsAssistantRequestTypedDict(TypedDict): departments: NotRequired[List[str]] r"""Departments for which Insights are requested.""" + manager_emails: NotRequired[List[str]] + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" day_range: NotRequired[PeriodTypedDict] @@ -18,4 +21,31 @@ class InsightsAssistantRequest(BaseModel): departments: Optional[List[str]] = None r"""Departments for which Insights are requested.""" + manager_emails: Annotated[ + Optional[List[str]], pydantic.Field(alias="managerEmails") + ] = None + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" + day_range: Annotated[Optional[Period], pydantic.Field(alias="dayRange")] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["departments", "managerEmails", "dayRange"]) + 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: + InsightsAssistantRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/insightschatsummary.py b/src/glean/api_client/models/insightschatsummary.py index f9c150ea..44b76c5a 100644 --- a/src/glean/api_client/models/insightschatsummary.py +++ b/src/glean/api_client/models/insightschatsummary.py @@ -1,17 +1,18 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict class InsightsChatSummaryTypedDict(TypedDict): monthly_active_users: NotRequired[int] - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: NotRequired[int] - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" num_chats: NotRequired[int] r"""Total number of chats by users over the specified time period.""" num_chat_users: NotRequired[int] @@ -22,12 +23,12 @@ class InsightsChatSummary(BaseModel): monthly_active_users: Annotated[ Optional[int], pydantic.Field(alias="monthlyActiveUsers") ] = None - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: Annotated[ Optional[int], pydantic.Field(alias="weeklyActiveUsers") ] = None - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" num_chats: Annotated[Optional[int], pydantic.Field(alias="numChats")] = None r"""Total number of chats by users over the specified time period.""" @@ -36,3 +37,27 @@ class InsightsChatSummary(BaseModel): None ) r"""Total number of distinct users who used Chat over the specified time period.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["monthlyActiveUsers", "weeklyActiveUsers", "numChats", "numChatUsers"] + ) + 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: + InsightsChatSummary.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/insightsop.py b/src/glean/api_client/models/insightsop.py new file mode 100644 index 00000000..c0de2bef --- /dev/null +++ b/src/glean/api_client/models/insightsop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .insightsrequest import InsightsRequest, InsightsRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class InsightsRequestRequestTypedDict(TypedDict): + insights_request: InsightsRequestTypedDict + r"""Includes request parameters for insights requests.""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class InsightsRequestRequest(BaseModel): + insights_request: Annotated[ + InsightsRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Includes request parameters for insights requests.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/insightsoverviewrequest.py b/src/glean/api_client/models/insightsoverviewrequest.py index 1c6f8a40..eda4a606 100644 --- a/src/glean/api_client/models/insightsoverviewrequest.py +++ b/src/glean/api_client/models/insightsoverviewrequest.py @@ -2,8 +2,9 @@ from __future__ import annotations from .period import Period, PeriodTypedDict -from glean.api_client.types import BaseModel +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 @@ -11,6 +12,8 @@ class InsightsOverviewRequestTypedDict(TypedDict): departments: NotRequired[List[str]] r"""Departments for which Insights are requested.""" + manager_emails: NotRequired[List[str]] + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" day_range: NotRequired[PeriodTypedDict] @@ -18,4 +21,31 @@ class InsightsOverviewRequest(BaseModel): departments: Optional[List[str]] = None r"""Departments for which Insights are requested.""" + manager_emails: Annotated[ + Optional[List[str]], pydantic.Field(alias="managerEmails") + ] = None + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" + day_range: Annotated[Optional[Period], pydantic.Field(alias="dayRange")] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["departments", "managerEmails", "dayRange"]) + 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: + InsightsOverviewRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/insightsoverviewresponse.py b/src/glean/api_client/models/insightsoverviewresponse.py index 32b4ca5c..27313ce1 100644 --- a/src/glean/api_client/models/insightsoverviewresponse.py +++ b/src/glean/api_client/models/insightsoverviewresponse.py @@ -6,17 +6,18 @@ from .insightssearchsummary import InsightsSearchSummary, InsightsSearchSummaryTypedDict from .labeledcountinfo import LabeledCountInfo, LabeledCountInfoTypedDict from .peruserinsight import PerUserInsight, PerUserInsightTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Dict, List, Optional from typing_extensions import Annotated, NotRequired, TypedDict class InsightsOverviewResponseTypedDict(TypedDict): monthly_active_users: NotRequired[int] - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: NotRequired[int] - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" departments: NotRequired[List[str]] r"""Department name(s).""" employee_count: NotRequired[int] @@ -25,6 +26,10 @@ class InsightsOverviewResponseTypedDict(TypedDict): r"""Number of current signed up employees in the specified departments, according to the Org Chart.""" search_summary: NotRequired[InsightsSearchSummaryTypedDict] chat_summary: NotRequired[InsightsChatSummaryTypedDict] + search_active_users: NotRequired[CurrentActiveUsersTypedDict] + assistant_active_users: NotRequired[CurrentActiveUsersTypedDict] + agents_active_users: NotRequired[CurrentActiveUsersTypedDict] + mcp_active_users: NotRequired[CurrentActiveUsersTypedDict] extension_summary: NotRequired[CurrentActiveUsersTypedDict] ugc_summary: NotRequired[CurrentActiveUsersTypedDict] last_updated_ts: NotRequired[int] @@ -34,6 +39,22 @@ class InsightsOverviewResponseTypedDict(TypedDict): monthly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] weekly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] daily_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + search_monthly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + search_weekly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + search_daily_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + assistant_monthly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + assistant_weekly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + assistant_daily_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + agents_monthly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + agents_weekly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + agents_daily_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + mcp_monthly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + mcp_weekly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + mcp_daily_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + searches_timeseries: NotRequired[LabeledCountInfoTypedDict] + assistant_interactions_timeseries: NotRequired[LabeledCountInfoTypedDict] + agent_runs_timeseries: NotRequired[LabeledCountInfoTypedDict] + mcp_calls_timeseries: NotRequired[LabeledCountInfoTypedDict] search_datasource_counts: NotRequired[Dict[str, int]] r"""Counts of search result clicks, by datasource, over the specified time period in the specified departments.""" chat_datasource_counts: NotRequired[Dict[str, int]] @@ -46,12 +67,12 @@ class InsightsOverviewResponse(BaseModel): monthly_active_users: Annotated[ Optional[int], pydantic.Field(alias="monthlyActiveUsers") ] = None - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: Annotated[ Optional[int], pydantic.Field(alias="weeklyActiveUsers") ] = None - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" departments: Optional[List[str]] = None r"""Department name(s).""" @@ -72,6 +93,22 @@ class InsightsOverviewResponse(BaseModel): Optional[InsightsChatSummary], pydantic.Field(alias="chatSummary") ] = None + search_active_users: Annotated[ + Optional[CurrentActiveUsers], pydantic.Field(alias="searchActiveUsers") + ] = None + + assistant_active_users: Annotated[ + Optional[CurrentActiveUsers], pydantic.Field(alias="assistantActiveUsers") + ] = None + + agents_active_users: Annotated[ + Optional[CurrentActiveUsers], pydantic.Field(alias="agentsActiveUsers") + ] = None + + mcp_active_users: Annotated[ + Optional[CurrentActiveUsers], pydantic.Field(alias="mcpActiveUsers") + ] = None + extension_summary: Annotated[ Optional[CurrentActiveUsers], pydantic.Field(alias="extensionSummary") ] = None @@ -86,7 +123,11 @@ class InsightsOverviewResponse(BaseModel): r"""Unix timestamp of the last update for the insights data in the response.""" search_session_satisfaction: Annotated[ - Optional[float], pydantic.Field(alias="searchSessionSatisfaction") + Optional[float], + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-05-13, removal scheduled for 2027-01-15: This property is no longer supported. Please contact Support for alternatives..", + alias="searchSessionSatisfaction", + ), ] = None r"""Search session satisfaction rate, over the specified time period in the specified departments.""" @@ -102,6 +143,82 @@ class InsightsOverviewResponse(BaseModel): Optional[LabeledCountInfo], pydantic.Field(alias="dailyActiveUserTimeseries") ] = None + search_monthly_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], + pydantic.Field(alias="searchMonthlyActiveUserTimeseries"), + ] = None + + search_weekly_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], + pydantic.Field(alias="searchWeeklyActiveUserTimeseries"), + ] = None + + search_daily_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], + pydantic.Field(alias="searchDailyActiveUserTimeseries"), + ] = None + + assistant_monthly_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], + pydantic.Field(alias="assistantMonthlyActiveUserTimeseries"), + ] = None + + assistant_weekly_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], + pydantic.Field(alias="assistantWeeklyActiveUserTimeseries"), + ] = None + + assistant_daily_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], + pydantic.Field(alias="assistantDailyActiveUserTimeseries"), + ] = None + + agents_monthly_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], + pydantic.Field(alias="agentsMonthlyActiveUserTimeseries"), + ] = None + + agents_weekly_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], + pydantic.Field(alias="agentsWeeklyActiveUserTimeseries"), + ] = None + + agents_daily_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], + pydantic.Field(alias="agentsDailyActiveUserTimeseries"), + ] = None + + mcp_monthly_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], + pydantic.Field(alias="mcpMonthlyActiveUserTimeseries"), + ] = None + + mcp_weekly_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], + pydantic.Field(alias="mcpWeeklyActiveUserTimeseries"), + ] = None + + mcp_daily_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="mcpDailyActiveUserTimeseries") + ] = None + + searches_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="searchesTimeseries") + ] = None + + assistant_interactions_timeseries: Annotated[ + Optional[LabeledCountInfo], + pydantic.Field(alias="assistantInteractionsTimeseries"), + ] = None + + agent_runs_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="agentRunsTimeseries") + ] = None + + mcp_calls_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="mcpCallsTimeseries") + ] = None + search_datasource_counts: Annotated[ Optional[Dict[str, int]], pydantic.Field(alias="searchDatasourceCounts") ] = None @@ -116,3 +233,65 @@ class InsightsOverviewResponse(BaseModel): Optional[List[PerUserInsight]], pydantic.Field(alias="perUserInsights") ] = None r"""Per-user insights, over the specified time period in the specified departments. All current users in the organization who have signed into Glean at least once are included.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "monthlyActiveUsers", + "weeklyActiveUsers", + "departments", + "employeeCount", + "totalSignups", + "searchSummary", + "chatSummary", + "searchActiveUsers", + "assistantActiveUsers", + "agentsActiveUsers", + "mcpActiveUsers", + "extensionSummary", + "ugcSummary", + "lastUpdatedTs", + "searchSessionSatisfaction", + "monthlyActiveUserTimeseries", + "weeklyActiveUserTimeseries", + "dailyActiveUserTimeseries", + "searchMonthlyActiveUserTimeseries", + "searchWeeklyActiveUserTimeseries", + "searchDailyActiveUserTimeseries", + "assistantMonthlyActiveUserTimeseries", + "assistantWeeklyActiveUserTimeseries", + "assistantDailyActiveUserTimeseries", + "agentsMonthlyActiveUserTimeseries", + "agentsWeeklyActiveUserTimeseries", + "agentsDailyActiveUserTimeseries", + "mcpMonthlyActiveUserTimeseries", + "mcpWeeklyActiveUserTimeseries", + "mcpDailyActiveUserTimeseries", + "searchesTimeseries", + "assistantInteractionsTimeseries", + "agentRunsTimeseries", + "mcpCallsTimeseries", + "searchDatasourceCounts", + "chatDatasourceCounts", + "perUserInsights", + ] + ) + 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: + InsightsOverviewResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/insightsrequest.py b/src/glean/api_client/models/insightsrequest.py index 01f03273..8ec76f9c 100644 --- a/src/glean/api_client/models/insightsrequest.py +++ b/src/glean/api_client/models/insightsrequest.py @@ -5,14 +5,6 @@ AgentsInsightsV2Request, AgentsInsightsV2RequestTypedDict, ) -from .insightsagentsrequestoptions import ( - InsightsAgentsRequestOptions, - InsightsAgentsRequestOptionsTypedDict, -) -from .insightsaiapprequestoptions import ( - InsightsAiAppRequestOptions, - InsightsAiAppRequestOptionsTypedDict, -) from .insightsassistantrequest import ( InsightsAssistantRequest, InsightsAssistantRequestTypedDict, @@ -21,53 +13,26 @@ InsightsOverviewRequest, InsightsOverviewRequestTypedDict, ) -from .period import Period, PeriodTypedDict -from enum import Enum -from glean.api_client.types import BaseModel +from .mcpbreakdowninsightsrequest import ( + McpBreakdownInsightsRequest, + McpBreakdownInsightsRequestTypedDict, +) +from .mcpinsightsrequest import McpInsightsRequest, McpInsightsRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from typing import List, Optional +from pydantic import model_serializer +from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class InsightsRequestCategory(str, Enum): - AGENTS = "AGENTS" - AGENT_USERS = "AGENT_USERS" - TOP_AGENTS = "TOP_AGENTS" - AGENTS_USAGE_BY_DEPARTMENT = "AGENTS_USAGE_BY_DEPARTMENT" - AI = "AI" - AI_APPS = "AI_APPS" - ANNOUNCEMENTS = "ANNOUNCEMENTS" - ANSWERS = "ANSWERS" - COLLECTIONS = "COLLECTIONS" - CONTENT = "CONTENT" - GLEAN_ASSIST = "GLEAN_ASSIST" - QUERIES = "QUERIES" - SHORTCUTS = "SHORTCUTS" - USERS = "USERS" - - -class AssistantActivityType(str, Enum): - GLEAN_CHAT = "GLEAN_CHAT" - AI_SUMMARY = "AI_SUMMARY" - AI_ANSWER = "AI_ANSWER" - GLEANBOT_RESPONSE = "GLEANBOT_RESPONSE" - - class InsightsRequestTypedDict(TypedDict): overview_request: NotRequired[InsightsOverviewRequestTypedDict] assistant_request: NotRequired[InsightsAssistantRequestTypedDict] agents_request: NotRequired[AgentsInsightsV2RequestTypedDict] + mcp_request: NotRequired[McpInsightsRequestTypedDict] + mcp_breakdown_request: NotRequired[McpBreakdownInsightsRequestTypedDict] disable_per_user_insights: NotRequired[bool] r"""If true, suppresses the generation of per-user Insights in the response. Default is false.""" - categories: NotRequired[List[InsightsRequestCategory]] - r"""Categories of data requested. Request can include single or multiple types.""" - departments: NotRequired[List[str]] - r"""Departments that the data is requested for. If this is empty, corresponds to whole company.""" - day_range: NotRequired[PeriodTypedDict] - ai_app_request_options: NotRequired[InsightsAiAppRequestOptionsTypedDict] - agents_request_options: NotRequired[InsightsAgentsRequestOptionsTypedDict] - assistant_activity_types: NotRequired[List[AssistantActivityType]] - r"""Types of activity that should count in the definition of an Assistant Active User. Affects only insights for AI category.""" class InsightsRequest(BaseModel): @@ -83,44 +48,47 @@ class InsightsRequest(BaseModel): Optional[AgentsInsightsV2Request], pydantic.Field(alias="agentsRequest") ] = None - disable_per_user_insights: Annotated[ - Optional[bool], pydantic.Field(alias="disablePerUserInsights") + mcp_request: Annotated[ + Optional[McpInsightsRequest], pydantic.Field(alias="mcpRequest") ] = None - r"""If true, suppresses the generation of per-user Insights in the response. Default is false.""" - categories: Annotated[ - Optional[List[InsightsRequestCategory]], - pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." - ), + mcp_breakdown_request: Annotated[ + Optional[McpBreakdownInsightsRequest], + pydantic.Field(alias="mcpBreakdownRequest"), ] = None - r"""Categories of data requested. Request can include single or multiple types.""" - departments: Annotated[ - Optional[List[str]], - pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." - ), - ] = None - r"""Departments that the data is requested for. If this is empty, corresponds to whole company.""" - - day_range: Annotated[Optional[Period], pydantic.Field(alias="dayRange")] = None - - ai_app_request_options: Annotated[ - Optional[InsightsAiAppRequestOptions], - pydantic.Field(alias="aiAppRequestOptions"), - ] = None - - agents_request_options: Annotated[ - Optional[InsightsAgentsRequestOptions], - pydantic.Field(alias="agentsRequestOptions"), + disable_per_user_insights: Annotated[ + Optional[bool], pydantic.Field(alias="disablePerUserInsights") ] = None + r"""If true, suppresses the generation of per-user Insights in the response. Default is false.""" - assistant_activity_types: Annotated[ - Optional[List[AssistantActivityType]], - pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible.", - alias="assistantActivityTypes", - ), - ] = None - r"""Types of activity that should count in the definition of an Assistant Active User. Affects only insights for AI category.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "overviewRequest", + "assistantRequest", + "agentsRequest", + "mcpRequest", + "mcpBreakdownRequest", + "disablePerUserInsights", + ] + ) + 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: + InsightsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/insightsresponse.py b/src/glean/api_client/models/insightsresponse.py index 9502ae3f..aa95f0f4 100644 --- a/src/glean/api_client/models/insightsresponse.py +++ b/src/glean/api_client/models/insightsresponse.py @@ -5,19 +5,10 @@ AgentsInsightsV2Response, AgentsInsightsV2ResponseTypedDict, ) -from .aiappsinsightsresponse import ( - AiAppsInsightsResponse, - AiAppsInsightsResponseTypedDict, -) -from .aiinsightsresponse import AiInsightsResponse, AiInsightsResponseTypedDict from .assistantinsightsresponse import ( AssistantInsightsResponse, AssistantInsightsResponseTypedDict, ) -from .contentinsightsresponse import ( - ContentInsightsResponse, - ContentInsightsResponseTypedDict, -) from .gleanassistinsightsresponse import ( GleanAssistInsightsResponse, GleanAssistInsightsResponseTypedDict, @@ -26,85 +17,32 @@ InsightsOverviewResponse, InsightsOverviewResponseTypedDict, ) -from .labeledcountinfo import LabeledCountInfo, LabeledCountInfoTypedDict -from .queryinsightsresponse import QueryInsightsResponse, QueryInsightsResponseTypedDict -from .shortcutinsightsresponse import ( - ShortcutInsightsResponse, - ShortcutInsightsResponseTypedDict, +from .mcpbreakdowninsightsresponse import ( + McpBreakdownInsightsResponse, + McpBreakdownInsightsResponseTypedDict, ) -from .userinsightsresponse import UserInsightsResponse, UserInsightsResponseTypedDict -from glean.api_client.types import BaseModel +from .mcpinsightsresponse import McpInsightsResponse, McpInsightsResponseTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from typing import List, Optional +from pydantic import model_serializer +from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict class InsightsResponseTypedDict(TypedDict): - timeseries: NotRequired[List[LabeledCountInfoTypedDict]] - r"""List of timeseries to make charts (if applicable).""" - users: NotRequired[UserInsightsResponseTypedDict] - content: NotRequired[ContentInsightsResponseTypedDict] - queries: NotRequired[QueryInsightsResponseTypedDict] - collections: NotRequired[ContentInsightsResponseTypedDict] - collections_v2: NotRequired[ContentInsightsResponseTypedDict] - shortcuts: NotRequired[ShortcutInsightsResponseTypedDict] - announcements: NotRequired[ContentInsightsResponseTypedDict] - answers: NotRequired[ContentInsightsResponseTypedDict] - ai: NotRequired[AiInsightsResponseTypedDict] - ai_apps: NotRequired[AiAppsInsightsResponseTypedDict] glean_assist: NotRequired[GleanAssistInsightsResponseTypedDict] - departments: NotRequired[List[str]] - r"""list of all departments.""" overview_response: NotRequired[InsightsOverviewResponseTypedDict] assistant_response: NotRequired[AssistantInsightsResponseTypedDict] agents_response: NotRequired[AgentsInsightsV2ResponseTypedDict] + mcp_response: NotRequired[McpInsightsResponseTypedDict] + mcp_breakdown_response: NotRequired[McpBreakdownInsightsResponseTypedDict] class InsightsResponse(BaseModel): - timeseries: Annotated[ - Optional[List[LabeledCountInfo]], - pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." - ), - ] = None - r"""List of timeseries to make charts (if applicable).""" - - users: Optional[UserInsightsResponse] = None - - content: Optional[ContentInsightsResponse] = None - - queries: Optional[QueryInsightsResponse] = None - - collections: Optional[ContentInsightsResponse] = None - - collections_v2: Annotated[ - Optional[ContentInsightsResponse], pydantic.Field(alias="collectionsV2") - ] = None - - shortcuts: Optional[ShortcutInsightsResponse] = None - - announcements: Optional[ContentInsightsResponse] = None - - answers: Optional[ContentInsightsResponse] = None - - ai: Optional[AiInsightsResponse] = None - - ai_apps: Annotated[ - Optional[AiAppsInsightsResponse], pydantic.Field(alias="aiApps") - ] = None - glean_assist: Annotated[ Optional[GleanAssistInsightsResponse], pydantic.Field(alias="gleanAssist") ] = None - departments: Annotated[ - Optional[List[str]], - pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." - ), - ] = None - r"""list of all departments.""" - overview_response: Annotated[ Optional[InsightsOverviewResponse], pydantic.Field(alias="overviewResponse") ] = None @@ -116,3 +54,43 @@ class InsightsResponse(BaseModel): agents_response: Annotated[ Optional[AgentsInsightsV2Response], pydantic.Field(alias="agentsResponse") ] = None + + mcp_response: Annotated[ + Optional[McpInsightsResponse], pydantic.Field(alias="mcpResponse") + ] = None + + mcp_breakdown_response: Annotated[ + Optional[McpBreakdownInsightsResponse], + pydantic.Field(alias="mcpBreakdownResponse"), + ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "gleanAssist", + "overviewResponse", + "assistantResponse", + "agentsResponse", + "mcpResponse", + "mcpBreakdownResponse", + ] + ) + 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: + InsightsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/insightssearchsummary.py b/src/glean/api_client/models/insightssearchsummary.py index 252c1b0d..481ba43c 100644 --- a/src/glean/api_client/models/insightssearchsummary.py +++ b/src/glean/api_client/models/insightssearchsummary.py @@ -1,17 +1,18 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict class InsightsSearchSummaryTypedDict(TypedDict): monthly_active_users: NotRequired[int] - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: NotRequired[int] - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" num_searches: NotRequired[int] r"""Total number of searches by users over the specified time period.""" num_search_users: NotRequired[int] @@ -22,12 +23,12 @@ class InsightsSearchSummary(BaseModel): monthly_active_users: Annotated[ Optional[int], pydantic.Field(alias="monthlyActiveUsers") ] = None - r"""Number of current Monthly Active Users, in the specified departments.""" + r"""Number of current Monthly Active Users.""" weekly_active_users: Annotated[ Optional[int], pydantic.Field(alias="weeklyActiveUsers") ] = None - r"""Number of current Weekly Active Users, in the specified departments.""" + r"""Number of current Weekly Active Users.""" num_searches: Annotated[Optional[int], pydantic.Field(alias="numSearches")] = None r"""Total number of searches by users over the specified time period.""" @@ -36,3 +37,27 @@ class InsightsSearchSummary(BaseModel): Optional[int], pydantic.Field(alias="numSearchUsers") ] = None r"""Total number of distinct users who searched over the specified time period.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["monthlyActiveUsers", "weeklyActiveUsers", "numSearches", "numSearchUsers"] + ) + 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: + InsightsSearchSummary.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/invalidoperatorvalueerror.py b/src/glean/api_client/models/invalidoperatorvalueerror.py index ce4b0f67..e9e0ee2b 100644 --- a/src/glean/api_client/models/invalidoperatorvalueerror.py +++ b/src/glean/api_client/models/invalidoperatorvalueerror.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -19,3 +20,19 @@ class InvalidOperatorValueError(BaseModel): value: Optional[str] = None r"""The invalid operator value.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["key", "value"]) + 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/inviteinfo.py b/src/glean/api_client/models/inviteinfo.py index a7cbaf75..34094c53 100644 --- a/src/glean/api_client/models/inviteinfo.py +++ b/src/glean/api_client/models/inviteinfo.py @@ -2,8 +2,9 @@ from __future__ import annotations from datetime import datetime -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -42,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 @@ -51,8 +52,32 @@ 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 r"""The time this person was reminded in ISO format (ISO 8601) if a reminder was sent.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["signUpTime", "invites", "inviter", "inviteTime", "reminderTime"] + ) + 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: + InviteInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/labeledcountinfo.py b/src/glean/api_client/models/labeledcountinfo.py index d7f33f18..c123fd88 100644 --- a/src/glean/api_client/models/labeledcountinfo.py +++ b/src/glean/api_client/models/labeledcountinfo.py @@ -2,8 +2,9 @@ from __future__ import annotations from .countinfo import CountInfo, CountInfoTypedDict -from glean.api_client.types import BaseModel +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 @@ -23,3 +24,25 @@ class LabeledCountInfo(BaseModel): Optional[List[CountInfo]], pydantic.Field(alias="countInfo") ] = None r"""List of data points for counts for a given date period.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["countInfo"]) + 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: + LabeledCountInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/lifecycleevent.py b/src/glean/api_client/models/lifecycleevent.py new file mode 100644 index 00000000..d30704e6 --- /dev/null +++ b/src/glean/api_client/models/lifecycleevent.py @@ -0,0 +1,58 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +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 field_serializer, model_serializer +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class LifeCycleEventEvent(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Type of event""" + + UPLOADED = "UPLOADED" + INDEXED = "INDEXED" + DELETION_REQUESTED = "DELETION_REQUESTED" + DELETED = "DELETED" + + +class LifeCycleEventTypedDict(TypedDict): + event: NotRequired[LifeCycleEventEvent] + r"""Type of event""" + timestamp: NotRequired[str] + r"""Timestamp of the event""" + + +class LifeCycleEvent(BaseModel): + event: Optional[LifeCycleEventEvent] = None + r"""Type of event""" + + timestamp: Optional[str] = None + r"""Timestamp of the event""" + + @field_serializer("event") + def serialize_event(self, value): + if isinstance(value, str): + try: + return models.LifeCycleEventEvent(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["event", "timestamp"]) + 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/listanswersop.py b/src/glean/api_client/models/listanswersop.py new file mode 100644 index 00000000..eb99f446 --- /dev/null +++ b/src/glean/api_client/models/listanswersop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .listanswersrequest import ListAnswersRequest, ListAnswersRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListanswersRequestRequestTypedDict(TypedDict): + list_answers_request: ListAnswersRequestTypedDict + r"""ListAnswers request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class ListanswersRequestRequest(BaseModel): + list_answers_request: Annotated[ + ListAnswersRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""ListAnswers request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/listanswersrequest.py b/src/glean/api_client/models/listanswersrequest.py index 28e5130a..6868a538 100644 --- a/src/glean/api_client/models/listanswersrequest.py +++ b/src/glean/api_client/models/listanswersrequest.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -15,3 +16,25 @@ class ListAnswersRequestTypedDict(TypedDict): class ListAnswersRequest(BaseModel): board_id: Annotated[Optional[int], pydantic.Field(alias="boardId")] = None r"""The Answer Board Id to list answers on.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["boardId"]) + 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: + ListAnswersRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/listanswersresponse.py b/src/glean/api_client/models/listanswersresponse.py index 6afb7851..e92608b1 100644 --- a/src/glean/api_client/models/listanswersresponse.py +++ b/src/glean/api_client/models/listanswersresponse.py @@ -16,3 +16,9 @@ class ListAnswersResponseTypedDict(TypedDict): class ListAnswersResponse(BaseModel): answer_results: Annotated[List[AnswerResult], pydantic.Field(alias="answerResults")] r"""List of answers with tracking tokens.""" + + +try: + ListAnswersResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/listchatsop.py b/src/glean/api_client/models/listchatsop.py index 7523b314..cdd71758 100644 --- a/src/glean/api_client/models/listchatsop.py +++ b/src/glean/api_client/models/listchatsop.py @@ -1,22 +1,47 @@ """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.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, QueryParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict class ListchatsRequestTypedDict(TypedDict): + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" timezone_offset: NotRequired[int] r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" class ListchatsRequest(BaseModel): + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + timezone_offset: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale", "timezoneOffset"]) + 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/listchatsresponse.py b/src/glean/api_client/models/listchatsresponse.py index 00c90dea..4c33ac6b 100644 --- a/src/glean/api_client/models/listchatsresponse.py +++ b/src/glean/api_client/models/listchatsresponse.py @@ -2,17 +2,45 @@ from __future__ import annotations from .chatmetadataresult import ChatMetadataResult, ChatMetadataResultTypedDict -from glean.api_client.types import BaseModel +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 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): chat_results: Annotated[ 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", "cursor"]) + 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: + ListChatsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/listcollectionsop.py b/src/glean/api_client/models/listcollectionsop.py new file mode 100644 index 00000000..ad00f15c --- /dev/null +++ b/src/glean/api_client/models/listcollectionsop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .listcollectionsrequest import ( + ListCollectionsRequest, + ListCollectionsRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListcollectionsRequestRequestTypedDict(TypedDict): + list_collections_request: ListCollectionsRequestTypedDict + r"""ListCollections request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class ListcollectionsRequestRequest(BaseModel): + list_collections_request: Annotated[ + ListCollectionsRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""ListCollections request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/listcollectionsrequest.py b/src/glean/api_client/models/listcollectionsrequest.py index 9f35b1d3..88e267e2 100644 --- a/src/glean/api_client/models/listcollectionsrequest.py +++ b/src/glean/api_client/models/listcollectionsrequest.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -35,3 +36,25 @@ class ListCollectionsRequest(BaseModel): r"""The datasource type this Collection can hold. ANSWERS - for Collections representing answer boards """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["includeAudience", "includeRoles", "allowedDatasource"]) + 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: + ListCollectionsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/listdlpfindingsexportsresponse.py b/src/glean/api_client/models/listdlpfindingsexportsresponse.py new file mode 100644 index 00000000..4920345f --- /dev/null +++ b/src/glean/api_client/models/listdlpfindingsexportsresponse.py @@ -0,0 +1,32 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .exportinfo import ExportInfo, ExportInfoTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class ListDlpFindingsExportsResponseTypedDict(TypedDict): + exports: NotRequired[List[ExportInfoTypedDict]] + + +class ListDlpFindingsExportsResponse(BaseModel): + exports: Optional[List[ExportInfo]] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["exports"]) + 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/listdlpreportsresponse.py b/src/glean/api_client/models/listdlpreportsresponse.py index 32b68e06..df22a92d 100644 --- a/src/glean/api_client/models/listdlpreportsresponse.py +++ b/src/glean/api_client/models/listdlpreportsresponse.py @@ -2,7 +2,8 @@ from __future__ import annotations from .dlpreport import DlpReport, DlpReportTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -13,3 +14,19 @@ class ListDlpReportsResponseTypedDict(TypedDict): class ListDlpReportsResponse(BaseModel): reports: Optional[List[DlpReport]] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["reports"]) + 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/listentitiesop.py b/src/glean/api_client/models/listentitiesop.py new file mode 100644 index 00000000..c64939c3 --- /dev/null +++ b/src/glean/api_client/models/listentitiesop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .listentitiesrequest import ListEntitiesRequest, ListEntitiesRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListentitiesRequestRequestTypedDict(TypedDict): + list_entities_request: ListEntitiesRequestTypedDict + r"""List people request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class ListentitiesRequestRequest(BaseModel): + list_entities_request: Annotated[ + ListEntitiesRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""List people request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/listentitiesrequest.py b/src/glean/api_client/models/listentitiesrequest.py index 8e4f00f0..699e39c2 100644 --- a/src/glean/api_client/models/listentitiesrequest.py +++ b/src/glean/api_client/models/listentitiesrequest.py @@ -4,8 +4,9 @@ from .facetfilter import FacetFilter, FacetFilterTypedDict from .sortoptions import SortOptions, SortOptionsTypedDict from enum import Enum -from glean.api_client.types import BaseModel +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 @@ -95,3 +96,38 @@ class ListEntitiesRequest(BaseModel): Optional[RequestType], pydantic.Field(alias="requestType") ] = RequestType.STANDARD r"""The type of request being made.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "filter", + "sort", + "entityType", + "datasource", + "query", + "includeFields", + "pageSize", + "cursor", + "source", + "requestType", + ] + ) + 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: + ListEntitiesRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/listentitiesresponse.py b/src/glean/api_client/models/listentitiesresponse.py index 1ad37e6b..6f8be48a 100644 --- a/src/glean/api_client/models/listentitiesresponse.py +++ b/src/glean/api_client/models/listentitiesresponse.py @@ -6,8 +6,9 @@ from .facetresult import FacetResult, FacetResultTypedDict from .person import Person, PersonTypedDict from .team import Team, TeamTypedDict -from glean.api_client.types import BaseModel +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 @@ -64,3 +65,37 @@ class ListEntitiesResponse(BaseModel): Optional[List[str]], pydantic.Field(alias="customFacetNames") ] = None r"""list of Person attributes that are custom setup by deployment""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "results", + "teamResults", + "customEntityResults", + "facetResults", + "cursor", + "totalCount", + "hasMoreResults", + "sortOptions", + "customFacetNames", + ] + ) + 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: + ListEntitiesResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/listpinsop.py b/src/glean/api_client/models/listpinsop.py index c31a5c29..147e4bd9 100644 --- a/src/glean/api_client/models/listpinsop.py +++ b/src/glean/api_client/models/listpinsop.py @@ -1,13 +1,53 @@ """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 glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListpinsRequestBodyTypedDict(TypedDict): + r"""List pins request""" + + +class ListpinsRequestBody(BaseModel): + r"""List pins request""" class ListpinsRequestTypedDict(TypedDict): + request_body: ListpinsRequestBodyTypedDict r"""List pins request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" class ListpinsRequest(BaseModel): + request_body: Annotated[ + ListpinsRequestBody, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] r"""List pins request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/listpoliciesop.py b/src/glean/api_client/models/listpoliciesop.py index 1ebdb4bd..d0b1cc73 100644 --- a/src/glean/api_client/models/listpoliciesop.py +++ b/src/glean/api_client/models/listpoliciesop.py @@ -1,9 +1,10 @@ """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.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, QueryParamMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -28,3 +29,19 @@ class ListpoliciesRequest(BaseModel): FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""Filter to return reports with a given frequency.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["autoHide", "frequency"]) + 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/listshortcutsop.py b/src/glean/api_client/models/listshortcutsop.py new file mode 100644 index 00000000..8b99ab97 --- /dev/null +++ b/src/glean/api_client/models/listshortcutsop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .listshortcutspaginatedrequest import ( + ListShortcutsPaginatedRequest, + ListShortcutsPaginatedRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListshortcutsRequestTypedDict(TypedDict): + list_shortcuts_paginated_request: ListShortcutsPaginatedRequestTypedDict + r"""Filters, sorters, paging params required for pagination""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class ListshortcutsRequest(BaseModel): + list_shortcuts_paginated_request: Annotated[ + ListShortcutsPaginatedRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Filters, sorters, paging params required for pagination""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/listshortcutspaginatedrequest.py b/src/glean/api_client/models/listshortcutspaginatedrequest.py index ce1c0600..30b1e2d7 100644 --- a/src/glean/api_client/models/listshortcutspaginatedrequest.py +++ b/src/glean/api_client/models/listshortcutspaginatedrequest.py @@ -4,8 +4,9 @@ from .facetfilter import FacetFilter, FacetFilterTypedDict from .sortoptions import SortOptions, SortOptionsTypedDict from enum import Enum -from glean.api_client.types import BaseModel +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 @@ -47,3 +48,25 @@ class ListShortcutsPaginatedRequest(BaseModel): query: Optional[str] = None r"""Search query that should be a substring in atleast one of the fields (alias , inputAlias, destinationUrl, description). Empty query does not filter shortcuts.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["includeFields", "cursor", "filters", "sort", "query"]) + 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: + ListShortcutsPaginatedRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/listshortcutspaginatedresponse.py b/src/glean/api_client/models/listshortcutspaginatedresponse.py index c3b7359d..d8359a2f 100644 --- a/src/glean/api_client/models/listshortcutspaginatedresponse.py +++ b/src/glean/api_client/models/listshortcutspaginatedresponse.py @@ -7,8 +7,9 @@ ShortcutsPaginationMetadata, ShortcutsPaginationMetadataTypedDict, ) -from glean.api_client.types import BaseModel +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 @@ -29,3 +30,25 @@ class ListShortcutsPaginatedResponse(BaseModel): facet_results: Annotated[ Optional[List[FacetResult]], pydantic.Field(alias="facetResults") ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["facetResults"]) + 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: + ListShortcutsPaginatedResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/listverificationsop.py b/src/glean/api_client/models/listverificationsop.py index f8967a3d..16e9645a 100644 --- a/src/glean/api_client/models/listverificationsop.py +++ b/src/glean/api_client/models/listverificationsop.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, QueryParamMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -10,6 +11,8 @@ class ListverificationsRequestTypedDict(TypedDict): count: NotRequired[int] r"""Maximum number of documents to return""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" class ListverificationsRequest(BaseModel): @@ -18,3 +21,25 @@ class ListverificationsRequest(BaseModel): FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""Maximum number of documents to return""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["count", "locale"]) + 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/manualfeedbackinfo.py b/src/glean/api_client/models/manualfeedbackinfo.py index 1d8c46ad..dc8463af 100644 --- a/src/glean/api_client/models/manualfeedbackinfo.py +++ b/src/glean/api_client/models/manualfeedbackinfo.py @@ -3,8 +3,9 @@ from __future__ import annotations from .feedbackchatexchange import FeedbackChatExchange, FeedbackChatExchangeTypedDict from enum import Enum -from glean.api_client.types import BaseModel +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 @@ -33,9 +34,14 @@ class ManualFeedbackInfoSource(str, Enum): SIDEBAR = "SIDEBAR" SUMMARY = "SUMMARY" TASKS = "TASKS" + TASK_EXECUTION = "TASK_EXECUTION" class Issue(str, Enum): + AGENT_CANVAS_FAILED = "AGENT_CANVAS_FAILED" + AGENT_CLARIFYING_QUESTIONS = "AGENT_CLARIFYING_QUESTIONS" + AGENT_INTERMEDIATE_STEPS_FAILED = "AGENT_INTERMEDIATE_STEPS_FAILED" + AGENT_TOOL_CALL_FAILED = "AGENT_TOOL_CALL_FAILED" INACCURATE_RESPONSE = "INACCURATE_RESPONSE" INCOMPLETE_OR_NO_ANSWER = "INCOMPLETE_OR_NO_ANSWER" INCORRECT_CITATION = "INCORRECT_CITATION" @@ -164,3 +170,45 @@ class ManualFeedbackInfo(BaseModel): rating_scale: Annotated[Optional[int], pydantic.Field(alias="ratingScale")] = None r"""The scale of comparison for a rating associated with the feedback. Rating values start from one and go up to the maximum specified by ratingScale. For example, a five-option satisfaction rating will have a ratingScale of 5 and a thumbs-up/thumbs-down rating will have a ratingScale of 2.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "email", + "source", + "issue", + "issues", + "imageUrls", + "query", + "obscuredQuery", + "activeTab", + "comments", + "searchResults", + "previousMessages", + "chatTranscript", + "numQueriesFromFirstRun", + "vote", + "rating", + "ratingKey", + "ratingScale", + ] + ) + 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: + ManualFeedbackInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/manualfeedbacksidebysideinfo.py b/src/glean/api_client/models/manualfeedbacksidebysideinfo.py index 562b42c3..f0f51104 100644 --- a/src/glean/api_client/models/manualfeedbacksidebysideinfo.py +++ b/src/glean/api_client/models/manualfeedbacksidebysideinfo.py @@ -6,8 +6,9 @@ SideBySideImplementationTypedDict, ) from enum import Enum -from glean.api_client.types import BaseModel +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 @@ -75,3 +76,36 @@ class ManualFeedbackSideBySideInfo(BaseModel): comments: Optional[str] = None r"""Specific feedback comments for this implementation.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "email", + "source", + "query", + "implementations", + "evaluationSessionId", + "implementationId", + "vote", + "comments", + ] + ) + 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: + ManualFeedbackSideBySideInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/mcpbreakdowninsightsrequest.py b/src/glean/api_client/models/mcpbreakdowninsightsrequest.py new file mode 100644 index 00000000..2893dadf --- /dev/null +++ b/src/glean/api_client/models/mcpbreakdowninsightsrequest.py @@ -0,0 +1,103 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .period import Period, PeriodTypedDict +from enum import Enum +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 BreakdownType(str, Enum): + r"""Type of breakdown to return.""" + + USERS = "USERS" + HOST_APPLICATIONS = "HOST_APPLICATIONS" + TOOLS = "TOOLS" + SERVERS = "SERVERS" + + +class McpBreakdownInsightsRequestTypedDict(TypedDict): + departments: NotRequired[List[str]] + r"""Departments for which Insights are requested.""" + manager_ids: NotRequired[List[str]] + r"""Manager user IDs whose teams should be filtered for. Empty array means no filtering.""" + manager_emails: NotRequired[List[str]] + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" + day_range: NotRequired[PeriodTypedDict] + breakdown_type: NotRequired[BreakdownType] + r"""Type of breakdown to return.""" + host_applications: NotRequired[List[str]] + r"""Host applications to filter by. Empty array means all host applications.""" + tools: NotRequired[List[str]] + r"""MCP tools to filter by. Empty array means all tools.""" + servers: NotRequired[List[str]] + r"""MCP servers to filter by. Empty array means all servers.""" + + +class McpBreakdownInsightsRequest(BaseModel): + departments: Optional[List[str]] = None + r"""Departments for which Insights are requested.""" + + manager_ids: Annotated[Optional[List[str]], pydantic.Field(alias="managerIds")] = ( + None + ) + r"""Manager user IDs whose teams should be filtered for. Empty array means no filtering.""" + + manager_emails: Annotated[ + Optional[List[str]], pydantic.Field(alias="managerEmails") + ] = None + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" + + day_range: Annotated[Optional[Period], pydantic.Field(alias="dayRange")] = None + + breakdown_type: Annotated[ + Optional[BreakdownType], pydantic.Field(alias="breakdownType") + ] = None + r"""Type of breakdown to return.""" + + host_applications: Annotated[ + Optional[List[str]], pydantic.Field(alias="hostApplications") + ] = None + r"""Host applications to filter by. Empty array means all host applications.""" + + tools: Optional[List[str]] = None + r"""MCP tools to filter by. Empty array means all tools.""" + + servers: Optional[List[str]] = None + r"""MCP servers to filter by. Empty array means all servers.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "departments", + "managerIds", + "managerEmails", + "dayRange", + "breakdownType", + "hostApplications", + "tools", + "servers", + ] + ) + 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: + McpBreakdownInsightsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/mcpbreakdowninsightsresponse.py b/src/glean/api_client/models/mcpbreakdowninsightsresponse.py new file mode 100644 index 00000000..5afd6a5c --- /dev/null +++ b/src/glean/api_client/models/mcpbreakdowninsightsresponse.py @@ -0,0 +1,70 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .mcphostapplicationbreakdown import ( + McpHostApplicationBreakdown, + McpHostApplicationBreakdownTypedDict, +) +from .mcpserverbreakdown import McpServerBreakdown, McpServerBreakdownTypedDict +from .mcptoolbreakdown import McpToolBreakdown, McpToolBreakdownTypedDict +from .mcpuserbreakdown import McpUserBreakdown, McpUserBreakdownTypedDict +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 McpBreakdownInsightsResponseTypedDict(TypedDict): + users_breakdown: NotRequired[List[McpUserBreakdownTypedDict]] + host_applications_breakdown: NotRequired[List[McpHostApplicationBreakdownTypedDict]] + tools_breakdown: NotRequired[List[McpToolBreakdownTypedDict]] + servers_breakdown: NotRequired[List[McpServerBreakdownTypedDict]] + + +class McpBreakdownInsightsResponse(BaseModel): + users_breakdown: Annotated[ + Optional[List[McpUserBreakdown]], pydantic.Field(alias="usersBreakdown") + ] = None + + host_applications_breakdown: Annotated[ + Optional[List[McpHostApplicationBreakdown]], + pydantic.Field(alias="hostApplicationsBreakdown"), + ] = None + + tools_breakdown: Annotated[ + Optional[List[McpToolBreakdown]], pydantic.Field(alias="toolsBreakdown") + ] = None + + servers_breakdown: Annotated[ + Optional[List[McpServerBreakdown]], pydantic.Field(alias="serversBreakdown") + ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "usersBreakdown", + "hostApplicationsBreakdown", + "toolsBreakdown", + "serversBreakdown", + ] + ) + 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: + McpBreakdownInsightsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/mcphostapplicationbreakdown.py b/src/glean/api_client/models/mcphostapplicationbreakdown.py new file mode 100644 index 00000000..687302ac --- /dev/null +++ b/src/glean/api_client/models/mcphostapplicationbreakdown.py @@ -0,0 +1,52 @@ +"""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 Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class McpHostApplicationBreakdownTypedDict(TypedDict): + host_application: NotRequired[str] + r"""Host application name.""" + total_calls: NotRequired[int] + r"""Total number of MCP calls made from this host application in the specified time period.""" + active_users: NotRequired[int] + r"""Total number of active users from this host application in the specified time period.""" + + +class McpHostApplicationBreakdown(BaseModel): + host_application: Annotated[ + Optional[str], pydantic.Field(alias="hostApplication") + ] = None + r"""Host application name.""" + + total_calls: Annotated[Optional[int], pydantic.Field(alias="totalCalls")] = None + r"""Total number of MCP calls made from this host application in the specified time period.""" + + active_users: Annotated[Optional[int], pydantic.Field(alias="activeUsers")] = None + r"""Total number of active users from this host application in the specified time period.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["hostApplication", "totalCalls", "activeUsers"]) + 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: + McpHostApplicationBreakdown.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/mcpinsightsrequest.py b/src/glean/api_client/models/mcpinsightsrequest.py new file mode 100644 index 00000000..270fed0d --- /dev/null +++ b/src/glean/api_client/models/mcpinsightsrequest.py @@ -0,0 +1,60 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .period import Period, PeriodTypedDict +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 McpInsightsRequestTypedDict(TypedDict): + departments: NotRequired[List[str]] + r"""Departments for which Insights are requested.""" + manager_ids: NotRequired[List[str]] + r"""Manager user IDs whose teams should be filtered for. Empty array means no filtering.""" + manager_emails: NotRequired[List[str]] + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" + day_range: NotRequired[PeriodTypedDict] + + +class McpInsightsRequest(BaseModel): + departments: Optional[List[str]] = None + r"""Departments for which Insights are requested.""" + + manager_ids: Annotated[Optional[List[str]], pydantic.Field(alias="managerIds")] = ( + None + ) + r"""Manager user IDs whose teams should be filtered for. Empty array means no filtering.""" + + manager_emails: Annotated[ + Optional[List[str]], pydantic.Field(alias="managerEmails") + ] = None + r"""Manager emails whose teams should be filtered for. Empty array means no filtering.""" + + day_range: Annotated[Optional[Period], pydantic.Field(alias="dayRange")] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["departments", "managerIds", "managerEmails", "dayRange"] + ) + 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: + McpInsightsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/mcpinsightsresponse.py b/src/glean/api_client/models/mcpinsightsresponse.py new file mode 100644 index 00000000..e4dd8004 --- /dev/null +++ b/src/glean/api_client/models/mcpinsightsresponse.py @@ -0,0 +1,97 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .labeledcountinfo import LabeledCountInfo, LabeledCountInfoTypedDict +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 McpInsightsResponseTypedDict(TypedDict): + monthly_active_users: NotRequired[int] + r"""Number of current Monthly Active Users.""" + weekly_active_users: NotRequired[int] + r"""Number of current Weekly Active Users.""" + daily_active_users: NotRequired[int] + r"""Number of current Daily Active Users.""" + monthly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + weekly_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + daily_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + overall_daily_active_user_timeseries: NotRequired[LabeledCountInfoTypedDict] + top_host_applications_active_user_timeseries: NotRequired[ + List[LabeledCountInfoTypedDict] + ] + + +class McpInsightsResponse(BaseModel): + monthly_active_users: Annotated[ + Optional[int], pydantic.Field(alias="monthlyActiveUsers") + ] = None + r"""Number of current Monthly Active Users.""" + + weekly_active_users: Annotated[ + Optional[int], pydantic.Field(alias="weeklyActiveUsers") + ] = None + r"""Number of current Weekly Active Users.""" + + daily_active_users: Annotated[ + Optional[int], pydantic.Field(alias="dailyActiveUsers") + ] = None + r"""Number of current Daily Active Users.""" + + monthly_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="monthlyActiveUserTimeseries") + ] = None + + weekly_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="weeklyActiveUserTimeseries") + ] = None + + daily_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], pydantic.Field(alias="dailyActiveUserTimeseries") + ] = None + + overall_daily_active_user_timeseries: Annotated[ + Optional[LabeledCountInfo], + pydantic.Field(alias="overallDailyActiveUserTimeseries"), + ] = None + + top_host_applications_active_user_timeseries: Annotated[ + Optional[List[LabeledCountInfo]], + pydantic.Field(alias="topHostApplicationsActiveUserTimeseries"), + ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "monthlyActiveUsers", + "weeklyActiveUsers", + "dailyActiveUsers", + "monthlyActiveUserTimeseries", + "weeklyActiveUserTimeseries", + "dailyActiveUserTimeseries", + "overallDailyActiveUserTimeseries", + "topHostApplicationsActiveUserTimeseries", + ] + ) + 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: + McpInsightsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/mcpserverbreakdown.py b/src/glean/api_client/models/mcpserverbreakdown.py new file mode 100644 index 00000000..aad32563 --- /dev/null +++ b/src/glean/api_client/models/mcpserverbreakdown.py @@ -0,0 +1,59 @@ +"""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 McpServerBreakdownTypedDict(TypedDict): + server: NotRequired[str] + r"""MCP server name.""" + total_calls: NotRequired[int] + r"""Total number of MCP calls for this server in the specified time period.""" + active_users: NotRequired[int] + r"""Total number of active users for this server in the specified time period.""" + host_applications: NotRequired[List[str]] + r"""Host applications using this server in the specified time period.""" + + +class McpServerBreakdown(BaseModel): + server: Optional[str] = None + r"""MCP server name.""" + + total_calls: Annotated[Optional[int], pydantic.Field(alias="totalCalls")] = None + r"""Total number of MCP calls for this server in the specified time period.""" + + active_users: Annotated[Optional[int], pydantic.Field(alias="activeUsers")] = None + r"""Total number of active users for this server in the specified time period.""" + + host_applications: Annotated[ + Optional[List[str]], pydantic.Field(alias="hostApplications") + ] = None + r"""Host applications using this server in the specified time period.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["server", "totalCalls", "activeUsers", "hostApplications"] + ) + 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: + McpServerBreakdown.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/mcptoolbreakdown.py b/src/glean/api_client/models/mcptoolbreakdown.py new file mode 100644 index 00000000..5fcb1924 --- /dev/null +++ b/src/glean/api_client/models/mcptoolbreakdown.py @@ -0,0 +1,57 @@ +"""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 McpToolBreakdownTypedDict(TypedDict): + tool: NotRequired[str] + r"""MCP tool name.""" + total_calls: NotRequired[int] + r"""Total number of MCP calls for this tool in the specified time period.""" + active_users: NotRequired[int] + r"""Total number of active users for this tool in the specified time period.""" + host_applications: NotRequired[List[str]] + r"""Host applications using this tool in the specified time period.""" + + +class McpToolBreakdown(BaseModel): + tool: Optional[str] = None + r"""MCP tool name.""" + + total_calls: Annotated[Optional[int], pydantic.Field(alias="totalCalls")] = None + r"""Total number of MCP calls for this tool in the specified time period.""" + + active_users: Annotated[Optional[int], pydantic.Field(alias="activeUsers")] = None + r"""Total number of active users for this tool in the specified time period.""" + + host_applications: Annotated[ + Optional[List[str]], pydantic.Field(alias="hostApplications") + ] = None + r"""Host applications using this tool in the specified time period.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tool", "totalCalls", "activeUsers", "hostApplications"]) + 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: + McpToolBreakdown.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/mcpuserbreakdown.py b/src/glean/api_client/models/mcpuserbreakdown.py new file mode 100644 index 00000000..ec4587ff --- /dev/null +++ b/src/glean/api_client/models/mcpuserbreakdown.py @@ -0,0 +1,63 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .person import Person, PersonTypedDict +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 McpUserBreakdownTypedDict(TypedDict): + person: NotRequired[PersonTypedDict] + total_calls: NotRequired[int] + r"""Total number of MCP calls made by this user in the specified time period.""" + host_applications: NotRequired[List[str]] + r"""Host applications used by this user in the specified time period.""" + tools: NotRequired[List[str]] + r"""MCP tools used by this user in the specified time period.""" + servers: NotRequired[List[str]] + r"""MCP servers used by this user in the specified time period.""" + + +class McpUserBreakdown(BaseModel): + person: Optional[Person] = None + + total_calls: Annotated[Optional[int], pydantic.Field(alias="totalCalls")] = None + r"""Total number of MCP calls made by this user in the specified time period.""" + + host_applications: Annotated[ + Optional[List[str]], pydantic.Field(alias="hostApplications") + ] = None + r"""Host applications used by this user in the specified time period.""" + + tools: Optional[List[str]] = None + r"""MCP tools used by this user in the specified time period.""" + + servers: Optional[List[str]] = None + r"""MCP servers used by this user in the specified time period.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["person", "totalCalls", "hostApplications", "tools", "servers"] + ) + 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: + McpUserBreakdown.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/meeting.py b/src/glean/api_client/models/meeting.py index 956309eb..c3c75325 100644 --- a/src/glean/api_client/models/meeting.py +++ b/src/glean/api_client/models/meeting.py @@ -2,8 +2,9 @@ from __future__ import annotations from datetime import datetime -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -19,6 +20,16 @@ class MeetingTypedDict(TypedDict): start_time: NotRequired[datetime] end_time: NotRequired[datetime] attendees: NotRequired["CalendarAttendeesTypedDict"] + is_cancelled: NotRequired[bool] + r"""Whether the meeting has been cancelled""" + location: NotRequired[str] + r"""The location/venue of the meeting""" + response_status: NotRequired[str] + r"""The current user's response status (accepted, declined, tentativelyAccepted, none)""" + conference_uri: NotRequired[str] + r"""The meeting join link (Teams, Zoom, etc.)""" + conference_provider: NotRequired[str] + r"""The conference provider (e.g., \"Microsoft Teams\", \"Zoom\")""" class Meeting(BaseModel): @@ -35,3 +46,61 @@ class Meeting(BaseModel): end_time: Annotated[Optional[datetime], pydantic.Field(alias="endTime")] = None attendees: Optional["CalendarAttendees"] = None + + is_cancelled: Annotated[Optional[bool], pydantic.Field(alias="isCancelled")] = None + r"""Whether the meeting has been cancelled""" + + location: Optional[str] = None + r"""The location/venue of the meeting""" + + response_status: Annotated[ + Optional[str], pydantic.Field(alias="responseStatus") + ] = None + r"""The current user's response status (accepted, declined, tentativelyAccepted, none)""" + + conference_uri: Annotated[Optional[str], pydantic.Field(alias="conferenceUri")] = ( + None + ) + r"""The meeting join link (Teams, Zoom, etc.)""" + + conference_provider: Annotated[ + Optional[str], pydantic.Field(alias="conferenceProvider") + ] = None + r"""The conference provider (e.g., \"Microsoft Teams\", \"Zoom\")""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "id", + "title", + "description", + "url", + "startTime", + "endTime", + "attendees", + "isCancelled", + "location", + "responseStatus", + "conferenceUri", + "conferenceProvider", + ] + ) + 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: + Meeting.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/message.py b/src/glean/api_client/models/message.py index fe32980c..9af1fc14 100644 --- a/src/glean/api_client/models/message.py +++ b/src/glean/api_client/models/message.py @@ -2,7 +2,8 @@ from __future__ import annotations from .contenttype import ContentType -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -31,3 +32,19 @@ class Message(BaseModel): content: Optional[List[MessageTextBlock]] = None r"""The content of the message.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["role", "content"]) + 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/messagesop.py b/src/glean/api_client/models/messagesop.py new file mode 100644 index 00000000..8e1735a0 --- /dev/null +++ b/src/glean/api_client/models/messagesop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .messagesrequest import MessagesRequest, MessagesRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MessagesRequestRequestTypedDict(TypedDict): + messages_request: MessagesRequestTypedDict + r"""Includes request params such as the id for channel/message and direction.""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class MessagesRequestRequest(BaseModel): + messages_request: Annotated[ + MessagesRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Includes request params such as the id for channel/message and direction.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/messagesrequest.py b/src/glean/api_client/models/messagesrequest.py index 38b97077..2076bc4f 100644 --- a/src/glean/api_client/models/messagesrequest.py +++ b/src/glean/api_client/models/messagesrequest.py @@ -2,8 +2,9 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -82,3 +83,33 @@ class MessagesRequest(BaseModel): Optional[str], pydantic.Field(alias="datasourceInstanceDisplayName") ] = None r"""The datasource instance display name from which the document was extracted. This is used for appinstance facet filter for datasources that support multiple instances.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "workspaceId", + "direction", + "timestampMillis", + "includeRootMessage", + "datasourceInstanceDisplayName", + ] + ) + 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: + MessagesRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/messagesresponse.py b/src/glean/api_client/models/messagesresponse.py index eb85f7fd..d68228bc 100644 --- a/src/glean/api_client/models/messagesresponse.py +++ b/src/glean/api_client/models/messagesresponse.py @@ -3,8 +3,9 @@ from __future__ import annotations from .searchresponse import SearchResponse, SearchResponseTypedDict from .searchresult import SearchResult, SearchResultTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -27,3 +28,25 @@ class MessagesResponse(BaseModel): root_message: Annotated[ Optional[SearchResult], pydantic.Field(alias="rootMessage") ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["searchResponse", "rootMessage"]) + 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: + MessagesResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/objectdefinition.py b/src/glean/api_client/models/objectdefinition.py index 400f64bf..f9c359d3 100644 --- a/src/glean/api_client/models/objectdefinition.py +++ b/src/glean/api_client/models/objectdefinition.py @@ -4,13 +4,15 @@ from .propertydefinition import PropertyDefinition, PropertyDefinitionTypedDict from .propertygroup import PropertyGroup, PropertyGroupTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -74,3 +76,43 @@ 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( + [ + "name", + "displayLabel", + "docCategory", + "propertyDefinitions", + "propertyGroups", + "summarizable", + ] + ) + 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: + ObjectDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/objectpermissions.py b/src/glean/api_client/models/objectpermissions.py index c36464f5..efe9cecc 100644 --- a/src/glean/api_client/models/objectpermissions.py +++ b/src/glean/api_client/models/objectpermissions.py @@ -2,7 +2,8 @@ from __future__ import annotations from .writepermission import WritePermission, WritePermissionTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -15,3 +16,19 @@ class ObjectPermissionsTypedDict(TypedDict): class ObjectPermissions(BaseModel): write: Optional[WritePermission] = None r"""Describes the write permissions levels that a user has for a specific feature""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["write"]) + 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/operatormetadata.py b/src/glean/api_client/models/operatormetadata.py index 58f49e58..09ba687a 100644 --- a/src/glean/api_client/models/operatormetadata.py +++ b/src/glean/api_client/models/operatormetadata.py @@ -3,13 +3,15 @@ from __future__ import annotations from .operatorscope import OperatorScope, OperatorScopeTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -48,3 +50,36 @@ 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( + ["isCustom", "operatorType", "helpText", "scopes", "value", "displayValue"] + ) + 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: + OperatorMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/operatorscope.py b/src/glean/api_client/models/operatorscope.py index 0cfabb96..ebb5f578 100644 --- a/src/glean/api_client/models/operatorscope.py +++ b/src/glean/api_client/models/operatorscope.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -16,3 +17,25 @@ class OperatorScope(BaseModel): datasource: Optional[str] = None doc_type: Annotated[Optional[str], pydantic.Field(alias="docType")] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["datasource", "docType"]) + 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: + OperatorScope.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/peopleop.py b/src/glean/api_client/models/peopleop.py new file mode 100644 index 00000000..ab286401 --- /dev/null +++ b/src/glean/api_client/models/peopleop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .peoplerequest import PeopleRequest, PeopleRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PeopleRequestRequestTypedDict(TypedDict): + people_request: PeopleRequestTypedDict + r"""People request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class PeopleRequestRequest(BaseModel): + people_request: Annotated[ + PeopleRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""People request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/peoplerequest.py b/src/glean/api_client/models/peoplerequest.py index 9b578bfc..520c04d8 100644 --- a/src/glean/api_client/models/peoplerequest.py +++ b/src/glean/api_client/models/peoplerequest.py @@ -2,8 +2,9 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +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 @@ -67,3 +68,34 @@ class PeopleRequest(BaseModel): source: Optional[str] = None r"""A string denoting the search surface from which the endpoint is called.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "timezoneOffset", + "obfuscatedIds", + "emailIds", + "includeFields", + "includeTypes", + "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 + + +try: + PeopleRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/peopleresponse.py b/src/glean/api_client/models/peopleresponse.py index 789930ea..d882d545 100644 --- a/src/glean/api_client/models/peopleresponse.py +++ b/src/glean/api_client/models/peopleresponse.py @@ -3,8 +3,9 @@ from __future__ import annotations from .person import Person, PersonTypedDict from .relateddocuments import RelatedDocuments, RelatedDocumentsTypedDict -from glean.api_client.types import BaseModel +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 @@ -29,3 +30,25 @@ class PeopleResponse(BaseModel): errors: Optional[List[str]] = None r"""A list of IDs that could not be found.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["results", "relatedDocuments", "errors"]) + 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: + PeopleResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/peragentinsight.py b/src/glean/api_client/models/peragentinsight.py index 9680ad54..6b711e39 100644 --- a/src/glean/api_client/models/peragentinsight.py +++ b/src/glean/api_client/models/peragentinsight.py @@ -2,8 +2,10 @@ from __future__ import annotations from .iconconfig import IconConfig, IconConfigTypedDict -from glean.api_client.types import BaseModel +from .person import Person, PersonTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -25,6 +27,7 @@ class PerAgentInsightTypedDict(TypedDict): r"""Total number of upvotes for this agent over the specified time period.""" downvote_count: NotRequired[int] r"""Total number of downvotes for this agent over the specified time period.""" + owner: NotRequired[PersonTypedDict] class PerAgentInsight(BaseModel): @@ -53,3 +56,39 @@ class PerAgentInsight(BaseModel): None ) r"""Total number of downvotes for this agent over the specified time period.""" + + owner: Optional[Person] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "agentId", + "agentName", + "icon", + "isDeleted", + "userCount", + "runCount", + "upvoteCount", + "downvoteCount", + "owner", + ] + ) + 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: + PerAgentInsight.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/period.py b/src/glean/api_client/models/period.py index 2796c2fe..5e03da4d 100644 --- a/src/glean/api_client/models/period.py +++ b/src/glean/api_client/models/period.py @@ -2,8 +2,9 @@ from __future__ import annotations from .timepoint import TimePoint, TimePointTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -39,3 +40,25 @@ class Period(BaseModel): start: Optional[TimePoint] = None end: Optional[TimePoint] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["minDaysFromNow", "maxDaysFromNow", "start", "end"]) + 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: + Period.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/permissions.py b/src/glean/api_client/models/permissions.py index 1e425fb5..51f12fd4 100644 --- a/src/glean/api_client/models/permissions.py +++ b/src/glean/api_client/models/permissions.py @@ -4,8 +4,9 @@ from .grantpermission import GrantPermission, GrantPermissionTypedDict from .readpermission import ReadPermission, ReadPermissionTypedDict from .writepermission import WritePermission, WritePermissionTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Dict, List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -65,3 +66,36 @@ class Permissions(BaseModel): roles: Optional[List[str]] = None r"""The roleIds of the roles a user has.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "canAdminSearch", + "canAdminClientApiGlobalTokens", + "canDlp", + "read", + "write", + "grant", + "role", + "roles", + ] + ) + 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: + Permissions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/permissionsgroupintersectiondefinition.py b/src/glean/api_client/models/permissionsgroupintersectiondefinition.py index b0d3c386..52b20386 100644 --- a/src/glean/api_client/models/permissionsgroupintersectiondefinition.py +++ b/src/glean/api_client/models/permissionsgroupintersectiondefinition.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -19,3 +20,25 @@ class PermissionsGroupIntersectionDefinition(BaseModel): required_groups: Annotated[ Optional[List[str]], pydantic.Field(alias="requiredGroups") ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["requiredGroups"]) + 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: + PermissionsGroupIntersectionDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/person.py b/src/glean/api_client/models/person.py index c1edbe87..24355a99 100644 --- a/src/glean/api_client/models/person.py +++ b/src/glean/api_client/models/person.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -34,3 +35,25 @@ class Person(BaseModel): r"""A list of documents related to this person.""" metadata: Optional["PersonMetadata"] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["relatedDocuments", "metadata"]) + 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: + Person.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/persondistance.py b/src/glean/api_client/models/persondistance.py index 8a4af8da..e9511127 100644 --- a/src/glean/api_client/models/persondistance.py +++ b/src/glean/api_client/models/persondistance.py @@ -24,3 +24,9 @@ class PersonDistance(BaseModel): distance: float r"""Distance to person, refer to PeopleDistance pipeline on interpretation of the value.""" + + +try: + PersonDistance.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/personmetadata.py b/src/glean/api_client/models/personmetadata.py index 69b4984a..4cddfb2e 100644 --- a/src/glean/api_client/models/personmetadata.py +++ b/src/glean/api_client/models/personmetadata.py @@ -11,8 +11,10 @@ from .structuredlocation import StructuredLocation, StructuredLocationTypedDict from datetime import date, datetime from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Dict, List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -23,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. @@ -69,6 +71,8 @@ class PersonMetadataTypedDict(TypedDict): r"""The timezone of the person. E.g. \"Pacific Daylight Time\".""" timezone_offset: NotRequired[int] r"""The offset of the person's timezone in seconds from UTC.""" + timezone_iana: NotRequired[str] + r"""The IANA timezone identifier, e.g. \"America/Los_Angeles\".""" photo_url: NotRequired[str] r"""The URL of the person's avatar. Public, glean-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs).""" unedited_photo_url: NotRequired[str] @@ -188,6 +192,9 @@ class PersonMetadata(BaseModel): ] = None r"""The offset of the person's timezone in seconds from UTC.""" + timezone_iana: Annotated[Optional[str], pydantic.Field(alias="timezoneIANA")] = None + r"""The IANA timezone identifier, e.g. \"America/Los_Angeles\".""" + photo_url: Annotated[Optional[str], pydantic.Field(alias="photoUrl")] = None r"""The URL of the person's avatar. Public, glean-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs).""" @@ -293,3 +300,82 @@ 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( + [ + "type", + "firstName", + "lastName", + "title", + "businessUnit", + "department", + "teams", + "departmentCount", + "email", + "aliasEmails", + "location", + "structuredLocation", + "externalProfileLink", + "manager", + "managementChain", + "phone", + "timezone", + "timezoneOffset", + "timezoneIANA", + "photoUrl", + "uneditedPhotoUrl", + "bannerUrl", + "reports", + "startDate", + "endDate", + "bio", + "pronoun", + "orgSizeCount", + "directReportsCount", + "preferredName", + "socialNetwork", + "datasourceProfile", + "querySuggestions", + "peopleDistance", + "inviteInfo", + "isSignedUp", + "lastExtensionUse", + "permissions", + "customFields", + "loggingId", + "startDatePercentile", + "busyEvents", + "profileBoolSettings", + "badges", + "isOrgRoot", + ] + ) + 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: + PersonMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/personobject.py b/src/glean/api_client/models/personobject.py index af5a7318..ab476930 100644 --- a/src/glean/api_client/models/personobject.py +++ b/src/glean/api_client/models/personobject.py @@ -19,3 +19,9 @@ class PersonObject(BaseModel): obfuscated_id: Annotated[str, pydantic.Field(alias="obfuscatedId")] r"""An opaque identifier that can be used to request metadata for a Person.""" + + +try: + PersonObject.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/personteam.py b/src/glean/api_client/models/personteam.py index 0b2a386b..f0b080d9 100644 --- a/src/glean/api_client/models/personteam.py +++ b/src/glean/api_client/models/personteam.py @@ -3,13 +3,15 @@ from __future__ import annotations from datetime import datetime from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -51,3 +53,36 @@ 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( + ["id", "name", "externalLink", "relationship", "joinDate"] + ) + 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: + PersonTeam.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/persontoteamrelationship.py b/src/glean/api_client/models/persontoteamrelationship.py index e9e026ba..e2f30552 100644 --- a/src/glean/api_client/models/persontoteamrelationship.py +++ b/src/glean/api_client/models/persontoteamrelationship.py @@ -3,8 +3,10 @@ from __future__ import annotations from datetime import datetime from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -12,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" @@ -51,3 +53,34 @@ 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"]) + 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: + PersonToTeamRelationship.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/peruserassistantinsight.py b/src/glean/api_client/models/peruserassistantinsight.py index 64d8ce7d..a24e6f5d 100644 --- a/src/glean/api_client/models/peruserassistantinsight.py +++ b/src/glean/api_client/models/peruserassistantinsight.py @@ -2,8 +2,9 @@ from __future__ import annotations from .person import Person, PersonTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -49,3 +50,34 @@ class PerUserAssistantInsight(BaseModel): None ) r"""Total number of days this user was active on the Assistant over the specified time period.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "person", + "numChatMessages", + "numSummarizations", + "numAiAnswers", + "numGleanbotInteractions", + "numDaysActive", + ] + ) + 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: + PerUserAssistantInsight.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/peruserinsight.py b/src/glean/api_client/models/peruserinsight.py index d2d30cc5..37af149f 100644 --- a/src/glean/api_client/models/peruserinsight.py +++ b/src/glean/api_client/models/peruserinsight.py @@ -2,8 +2,9 @@ from __future__ import annotations from .person import Person, PersonTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -20,6 +21,14 @@ class PerUserInsightTypedDict(TypedDict): r"""Total number of Gleanbot responses marked useful by this user over the specified time period.""" num_days_active: NotRequired[int] r"""Total number of days this user was an Active User over the specified time period.""" + num_summarizations: NotRequired[int] + r"""Total number of summarized items by this user over the specified time period.""" + num_ai_answers: NotRequired[int] + r"""Total number of AI Answers interacted with by this user over the specified time period.""" + num_agent_runs: NotRequired[int] + r"""Total number of agent runs for this user over the specified time period.""" + num_mcp_calls: NotRequired[int] + r"""Total number of MCP calls for this user over the specified time period.""" class PerUserInsight(BaseModel): @@ -45,3 +54,56 @@ class PerUserInsight(BaseModel): None ) r"""Total number of days this user was an Active User over the specified time period.""" + + num_summarizations: Annotated[ + Optional[int], pydantic.Field(alias="numSummarizations") + ] = None + r"""Total number of summarized items by this user over the specified time period.""" + + num_ai_answers: Annotated[Optional[int], pydantic.Field(alias="numAiAnswers")] = ( + None + ) + r"""Total number of AI Answers interacted with by this user over the specified time period.""" + + num_agent_runs: Annotated[Optional[int], pydantic.Field(alias="numAgentRuns")] = ( + None + ) + r"""Total number of agent runs for this user over the specified time period.""" + + num_mcp_calls: Annotated[Optional[int], pydantic.Field(alias="numMcpCalls")] = None + r"""Total number of MCP calls for this user over the specified time period.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "person", + "numSearches", + "numChats", + "numActiveSessions", + "numGleanbotUsefulResponses", + "numDaysActive", + "numSummarizations", + "numAiAnswers", + "numAgentRuns", + "numMcpCalls", + ] + ) + 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: + PerUserInsight.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/pindocument.py b/src/glean/api_client/models/pindocument.py index 66d2ae39..7d438a35 100644 --- a/src/glean/api_client/models/pindocument.py +++ b/src/glean/api_client/models/pindocument.py @@ -3,8 +3,9 @@ from __future__ import annotations from .facetfilter import FacetFilter, FacetFilterTypedDict from datetime import datetime -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -53,3 +54,35 @@ class PinDocument(BaseModel): update_time: Annotated[Optional[datetime], pydantic.Field(alias="updateTime")] = ( None ) + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "queries", + "audienceFilters", + "id", + "attribution", + "updatedBy", + "createTime", + "updateTime", + ] + ) + 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: + PinDocument.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/pinop.py b/src/glean/api_client/models/pinop.py new file mode 100644 index 00000000..fb63cdf7 --- /dev/null +++ b/src/glean/api_client/models/pinop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .pinrequest import PinRequest, PinRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PinRequestRequestTypedDict(TypedDict): + pin_request: PinRequestTypedDict + r"""Details about the document and query for the pin.""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class PinRequestRequest(BaseModel): + pin_request: Annotated[ + PinRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Details about the document and query for the pin.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/pinrequest.py b/src/glean/api_client/models/pinrequest.py index 36d8b7c7..1e291af2 100644 --- a/src/glean/api_client/models/pinrequest.py +++ b/src/glean/api_client/models/pinrequest.py @@ -2,8 +2,9 @@ from __future__ import annotations from .facetfilter import FacetFilter, FacetFilterTypedDict -from glean.api_client.types import BaseModel +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 @@ -28,3 +29,25 @@ class PinRequest(BaseModel): document_id: Annotated[Optional[str], pydantic.Field(alias="documentId")] = None r"""The document to be pinned.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["queries", "audienceFilters", "documentId"]) + 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: + PinRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/possiblevalue.py b/src/glean/api_client/models/possiblevalue.py index a77e2ae8..1881d203 100644 --- a/src/glean/api_client/models/possiblevalue.py +++ b/src/glean/api_client/models/possiblevalue.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -23,3 +24,19 @@ class PossibleValue(BaseModel): label: Optional[str] = None r"""User-friendly label associated with the value""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["value", "label"]) + 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/post_api_index_v1_debug_datasource_document_eventsop.py b/src/glean/api_client/models/post_api_index_v1_debug_datasource_document_eventsop.py new file mode 100644 index 00000000..e9d136d3 --- /dev/null +++ b/src/glean/api_client/models/post_api_index_v1_debug_datasource_document_eventsop.py @@ -0,0 +1,28 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .debugdocumentlifecyclerequest import ( + DebugDocumentLifecycleRequest, + DebugDocumentLifecycleRequestTypedDict, +) +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata, RequestMetadata +from typing_extensions import Annotated, TypedDict + + +class PostAPIIndexV1DebugDatasourceDocumentEventsRequestTypedDict(TypedDict): + datasource: str + r"""The datasource to which the document belongs""" + debug_document_lifecycle_request: DebugDocumentLifecycleRequestTypedDict + + +class PostAPIIndexV1DebugDatasourceDocumentEventsRequest(BaseModel): + datasource: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The datasource to which the document belongs""" + + debug_document_lifecycle_request: Annotated[ + DebugDocumentLifecycleRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] diff --git a/src/glean/api_client/models/processalldocumentsrequest.py b/src/glean/api_client/models/processalldocumentsrequest.py index a0a21dea..aa29557c 100644 --- a/src/glean/api_client/models/processalldocumentsrequest.py +++ b/src/glean/api_client/models/processalldocumentsrequest.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -18,3 +19,19 @@ class ProcessAllDocumentsRequest(BaseModel): datasource: Optional[str] = None r"""If provided, process documents only for this custom datasource. Otherwise all uploaded documents are processed.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["datasource"]) + 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/processallmembershipsrequest.py b/src/glean/api_client/models/processallmembershipsrequest.py index 30f48f78..f1bba49d 100644 --- a/src/glean/api_client/models/processallmembershipsrequest.py +++ b/src/glean/api_client/models/processallmembershipsrequest.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -18,3 +19,19 @@ class ProcessAllMembershipsRequest(BaseModel): datasource: Optional[str] = None r"""If provided, process group memberships only for this custom datasource. Otherwise all uploaded memberships are processed.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["datasource"]) + 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/processinghistoryevent.py b/src/glean/api_client/models/processinghistoryevent.py index c6e69fcf..61b4c047 100644 --- a/src/glean/api_client/models/processinghistoryevent.py +++ b/src/glean/api_client/models/processinghistoryevent.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -24,3 +25,25 @@ class ProcessingHistoryEvent(BaseModel): end_time: Annotated[Optional[str], pydantic.Field(alias="endTime")] = None r"""The end time of the processing in ISO 8601 format, 'NA' if still in progress""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["startTime", "endTime"]) + 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: + ProcessingHistoryEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/prompttemplate.py b/src/glean/api_client/models/prompttemplate.py index 54b225b1..90327467 100644 --- a/src/glean/api_client/models/prompttemplate.py +++ b/src/glean/api_client/models/prompttemplate.py @@ -8,8 +8,9 @@ from .objectpermissions import ObjectPermissions, ObjectPermissionsTypedDict from .person import Person, PersonTypedDict from .userrolespecification import UserRoleSpecification, UserRoleSpecificationTypedDict -from glean.api_client.types import BaseModel +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 @@ -86,3 +87,40 @@ class PromptTemplate(BaseModel): roles: Optional[List[UserRoleSpecification]] = None r"""A list of roles for this prompt template explicitly granted.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "name", + "applicationId", + "inclusions", + "addedRoles", + "removedRoles", + "permissions", + "id", + "author", + "createTimestamp", + "lastUpdateTimestamp", + "lastUpdatedBy", + "roles", + ] + ) + 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: + PromptTemplate.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/prompttemplateresult.py b/src/glean/api_client/models/prompttemplateresult.py index 6b88984a..efd9ff47 100644 --- a/src/glean/api_client/models/prompttemplateresult.py +++ b/src/glean/api_client/models/prompttemplateresult.py @@ -4,8 +4,9 @@ from .countinfo import CountInfo, CountInfoTypedDict from .favoriteinfo import FavoriteInfo, FavoriteInfoTypedDict from .prompttemplate import PromptTemplate, PromptTemplateTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -33,3 +34,27 @@ class PromptTemplateResult(BaseModel): ] = None run_count: Annotated[Optional[CountInfo], pydantic.Field(alias="runCount")] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["promptTemplate", "trackingToken", "favoriteInfo", "runCount"] + ) + 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: + PromptTemplateResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/propertydefinition.py b/src/glean/api_client/models/propertydefinition.py index 202519a9..6ec503a2 100644 --- a/src/glean/api_client/models/propertydefinition.py +++ b/src/glean/api_client/models/propertydefinition.py @@ -2,13 +2,15 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class PropertyType(str, Enum): +class PropertyDefinitionPropertyType(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" @@ -20,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" @@ -33,7 +35,7 @@ class PropertyDefinitionTypedDict(TypedDict): r"""The user friendly label for the property.""" display_label_plural: NotRequired[str] r"""The user friendly label for the property that will be used if a plural context.""" - property_type: NotRequired[PropertyType] + property_type: NotRequired[PropertyDefinitionPropertyType] r"""The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported.""" ui_options: NotRequired[UIOptions] hide_ui_facet: NotRequired[bool] @@ -59,7 +61,7 @@ class PropertyDefinition(BaseModel): r"""The user friendly label for the property that will be used if a plural context.""" property_type: Annotated[ - Optional[PropertyType], pydantic.Field(alias="propertyType") + Optional[PropertyDefinitionPropertyType], pydantic.Field(alias="propertyType") ] = None r"""The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported.""" @@ -80,3 +82,55 @@ 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.PropertyDefinitionPropertyType(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( + [ + "name", + "displayLabel", + "displayLabelPlural", + "propertyType", + "uiOptions", + "hideUiFacet", + "uiFacetOrder", + "skipIndexing", + "group", + ] + ) + 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: + PropertyDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/propertygroup.py b/src/glean/api_client/models/propertygroup.py index c60fd6d4..f3ed0cfd 100644 --- a/src/glean/api_client/models/propertygroup.py +++ b/src/glean/api_client/models/propertygroup.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -24,3 +25,25 @@ class PropertyGroup(BaseModel): display_label: Annotated[Optional[str], pydantic.Field(alias="displayLabel")] = None r"""The user-friendly group label to display.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name", "displayLabel"]) + 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: + PropertyGroup.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/put_rest_api_index_custom_metadata_schema_groupname_op.py b/src/glean/api_client/models/put_rest_api_index_custom_metadata_schema_groupname_op.py new file mode 100644 index 00000000..8f79bfe0 --- /dev/null +++ b/src/glean/api_client/models/put_rest_api_index_custom_metadata_schema_groupname_op.py @@ -0,0 +1,33 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .custommetadataschema import CustomMetadataSchema, CustomMetadataSchemaTypedDict +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata, RequestMetadata +import pydantic +from typing_extensions import Annotated, TypedDict + + +PUT_REST_API_INDEX_CUSTOM_METADATA_SCHEMA_GROUP_NAME_OP_SERVERS = [ + "https://{instance}-be.glean.com", +] + + +class PutRestAPIIndexCustomMetadataSchemaGroupNameRequestTypedDict(TypedDict): + group_name: str + r"""Name of the metadata group schema""" + custom_metadata_schema: CustomMetadataSchemaTypedDict + + +class PutRestAPIIndexCustomMetadataSchemaGroupNameRequest(BaseModel): + group_name: Annotated[ + str, + pydantic.Field(alias="groupName"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Name of the metadata group schema""" + + custom_metadata_schema: Annotated[ + CustomMetadataSchema, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] diff --git a/src/glean/api_client/models/put_rest_api_index_document_docid_custom_metadata_groupname_op.py b/src/glean/api_client/models/put_rest_api_index_document_docid_custom_metadata_groupname_op.py new file mode 100644 index 00000000..b8da6cec --- /dev/null +++ b/src/glean/api_client/models/put_rest_api_index_document_docid_custom_metadata_groupname_op.py @@ -0,0 +1,45 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .custommetadataputrequest import ( + CustomMetadataPutRequest, + CustomMetadataPutRequestTypedDict, +) +from glean.api_client.types import BaseModel +from glean.api_client.utils import FieldMetadata, PathParamMetadata, RequestMetadata +import pydantic +from typing_extensions import Annotated, TypedDict + + +PUT_REST_API_INDEX_DOCUMENT_DOC_ID_CUSTOM_METADATA_GROUP_NAME_OP_SERVERS = [ + "https://{instance}-be.glean.com", +] + + +class PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequestTypedDict(TypedDict): + doc_id: str + r"""Unique Glean identifier of the document""" + group_name: str + r"""Name of the metadata group as specified while adding schema""" + custom_metadata_put_request: CustomMetadataPutRequestTypedDict + + +class PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest(BaseModel): + doc_id: Annotated[ + str, + pydantic.Field(alias="docId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Unique Glean identifier of the document""" + + group_name: Annotated[ + str, + pydantic.Field(alias="groupName"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Name of the metadata group as specified while adding schema""" + + custom_metadata_put_request: Annotated[ + CustomMetadataPutRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] diff --git a/src/glean/api_client/models/queryinsight.py b/src/glean/api_client/models/queryinsight.py deleted file mode 100644 index 762df192..00000000 --- a/src/glean/api_client/models/queryinsight.py +++ /dev/null @@ -1,45 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .countinfo import CountInfo, CountInfoTypedDict -from glean.api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class QueryInsightTypedDict(TypedDict): - query: str - r"""The query string the information is about.""" - search_count: NotRequired[CountInfoTypedDict] - searchor_count: NotRequired[CountInfoTypedDict] - search_with_click_count: NotRequired[CountInfoTypedDict] - click_count: NotRequired[CountInfoTypedDict] - similar_queries: NotRequired[List[QueryInsightTypedDict]] - r"""list of similar queries to current one.""" - - -class QueryInsight(BaseModel): - query: str - r"""The query string the information is about.""" - - search_count: Annotated[ - Optional[CountInfo], pydantic.Field(alias="searchCount") - ] = None - - searchor_count: Annotated[ - Optional[CountInfo], pydantic.Field(alias="searchorCount") - ] = None - - search_with_click_count: Annotated[ - Optional[CountInfo], pydantic.Field(alias="searchWithClickCount") - ] = None - - click_count: Annotated[Optional[CountInfo], pydantic.Field(alias="clickCount")] = ( - None - ) - - similar_queries: Annotated[ - Optional[List[QueryInsight]], pydantic.Field(alias="similarQueries") - ] = None - r"""list of similar queries to current one.""" diff --git a/src/glean/api_client/models/queryinsightsresponse.py b/src/glean/api_client/models/queryinsightsresponse.py deleted file mode 100644 index ba290047..00000000 --- a/src/glean/api_client/models/queryinsightsresponse.py +++ /dev/null @@ -1,46 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .queryinsight import QueryInsight, QueryInsightTypedDict -from glean.api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class QueryInsightsResponseTypedDict(TypedDict): - last_log_timestamp: NotRequired[int] - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - query_insights: NotRequired[List[QueryInsightTypedDict]] - r"""Insights for queries.""" - low_performing_query_insights: NotRequired[List[QueryInsightTypedDict]] - r"""Insights for low performing queries without good results.""" - departments: NotRequired[List[str]] - r"""list of departments applicable for queries tab.""" - min_visitor_threshold: NotRequired[int] - r"""Min threshold in number of visitors while populating results, otherwise 0.""" - - -class QueryInsightsResponse(BaseModel): - last_log_timestamp: Annotated[ - Optional[int], pydantic.Field(alias="lastLogTimestamp") - ] = None - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - - query_insights: Annotated[ - Optional[List[QueryInsight]], pydantic.Field(alias="queryInsights") - ] = None - r"""Insights for queries.""" - - low_performing_query_insights: Annotated[ - Optional[List[QueryInsight]], pydantic.Field(alias="lowPerformingQueryInsights") - ] = None - r"""Insights for low performing queries without good results.""" - - departments: Optional[List[str]] = None - r"""list of departments applicable for queries tab.""" - - min_visitor_threshold: Annotated[ - Optional[int], pydantic.Field(alias="minVisitorThreshold") - ] = None - r"""Min threshold in number of visitors while populating results, otherwise 0.""" diff --git a/src/glean/api_client/models/querysuggestion.py b/src/glean/api_client/models/querysuggestion.py index 70b2289c..39b6d5e5 100644 --- a/src/glean/api_client/models/querysuggestion.py +++ b/src/glean/api_client/models/querysuggestion.py @@ -1,14 +1,16 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations +from .resulttab import ResultTab, ResultTabTypedDict from .searchproviderinfo import SearchProviderInfo, SearchProviderInfoTypedDict from .searchrequestinputdetails import ( SearchRequestInputDetails, SearchRequestInputDetailsTypedDict, ) from .searchrequestoptions import SearchRequestOptions, SearchRequestOptionsTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -26,6 +28,7 @@ class QuerySuggestionTypedDict(TypedDict): r"""A user-facing description to display for the suggestion.""" datasource: NotRequired[str] r"""The datasource associated with the suggestion.""" + result_tab: NotRequired[ResultTabTypedDict] request_options: NotRequired[SearchRequestOptionsTypedDict] ranges: NotRequired[List["TextRangeTypedDict"]] r"""The bolded ranges within the query of the QuerySuggestion.""" @@ -49,6 +52,8 @@ class QuerySuggestion(BaseModel): datasource: Optional[str] = None r"""The datasource associated with the suggestion.""" + result_tab: Annotated[Optional[ResultTab], pydantic.Field(alias="resultTab")] = None + request_options: Annotated[ Optional[SearchRequestOptions], pydantic.Field(alias="requestOptions") ] = None @@ -59,3 +64,36 @@ class QuerySuggestion(BaseModel): input_details: Annotated[ Optional[SearchRequestInputDetails], pydantic.Field(alias="inputDetails") ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "missingTerm", + "searchProviderInfo", + "label", + "datasource", + "resultTab", + "requestOptions", + "ranges", + "inputDetails", + ] + ) + 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: + QuerySuggestion.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/querysuggestionlist.py b/src/glean/api_client/models/querysuggestionlist.py index 57fa7f92..8723c878 100644 --- a/src/glean/api_client/models/querysuggestionlist.py +++ b/src/glean/api_client/models/querysuggestionlist.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import NotRequired, TypedDict @@ -19,3 +20,19 @@ class QuerySuggestionList(BaseModel): suggestions: Optional[List["QuerySuggestion"]] = None person: Optional["Person"] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["suggestions", "person"]) + 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/quicklink.py b/src/glean/api_client/models/quicklink.py index 95bd967e..75045a1f 100644 --- a/src/glean/api_client/models/quicklink.py +++ b/src/glean/api_client/models/quicklink.py @@ -3,13 +3,15 @@ from __future__ import annotations from .iconconfig import IconConfig, IconConfigTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import utils +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 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" @@ -56,3 +58,27 @@ class Quicklink(BaseModel): scopes: Optional[List[Scope]] = None r"""The scopes for which this quicklink is applicable""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["name", "shortName", "url", "iconConfig", "id", "scopes"] + ) + 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: + Quicklink.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/reaction.py b/src/glean/api_client/models/reaction.py index ac1bb02b..40dd0af4 100644 --- a/src/glean/api_client/models/reaction.py +++ b/src/glean/api_client/models/reaction.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -31,3 +32,25 @@ class Reaction(BaseModel): Optional[bool], pydantic.Field(alias="reactedByViewer") ] = None r"""Whether the user in context reacted with this type to the document.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["type", "count", "reactors", "reactedByViewer"]) + 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: + Reaction.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/readpermission.py b/src/glean/api_client/models/readpermission.py index 81526247..b82781fd 100644 --- a/src/glean/api_client/models/readpermission.py +++ b/src/glean/api_client/models/readpermission.py @@ -2,8 +2,10 @@ from __future__ import annotations from .scopetype import ScopeType -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -20,3 +22,34 @@ 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"]) + 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: + ReadPermission.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/recommendationsop.py b/src/glean/api_client/models/recommendationsop.py new file mode 100644 index 00000000..02f83b74 --- /dev/null +++ b/src/glean/api_client/models/recommendationsop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .recommendationsrequest import ( + RecommendationsRequest, + RecommendationsRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class RecommendationsRequestRequestTypedDict(TypedDict): + recommendations_request: RecommendationsRequestTypedDict + r"""Recommendations request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class RecommendationsRequestRequest(BaseModel): + recommendations_request: Annotated[ + RecommendationsRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Recommendations request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/recommendationsrequest.py b/src/glean/api_client/models/recommendationsrequest.py index 68b30ada..507d92fa 100644 --- a/src/glean/api_client/models/recommendationsrequest.py +++ b/src/glean/api_client/models/recommendationsrequest.py @@ -9,8 +9,9 @@ ) from .sessioninfo import SessionInfo, SessionInfoTypedDict from datetime import datetime -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -62,3 +63,36 @@ class RecommendationsRequest(BaseModel): request_options: Annotated[ Optional[RecommendationsRequestOptions], pydantic.Field(alias="requestOptions") ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "timestamp", + "trackingToken", + "sessionInfo", + "sourceDocument", + "pageSize", + "maxSnippetSize", + "recommendationDocumentSpec", + "requestOptions", + ] + ) + 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: + RecommendationsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/recommendationsrequestoptions.py b/src/glean/api_client/models/recommendationsrequestoptions.py index f27ef64c..162c9f76 100644 --- a/src/glean/api_client/models/recommendationsrequestoptions.py +++ b/src/glean/api_client/models/recommendationsrequestoptions.py @@ -4,8 +4,9 @@ from .document import Document, DocumentTypedDict from .facetfilterset import FacetFilterSet, FacetFilterSetTypedDict from .searchresultprominenceenum import SearchResultProminenceEnum -from glean.api_client.types import BaseModel +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 @@ -45,3 +46,33 @@ class RecommendationsRequestOptions(BaseModel): pydantic.Field(alias="resultProminence"), ] = None r"""The types of prominence wanted in results returned. Default is any type.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "datasourceFilter", + "datasourcesFilter", + "facetFilterSets", + "context", + "resultProminence", + ] + ) + 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: + RecommendationsRequestOptions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/referencerange.py b/src/glean/api_client/models/referencerange.py index 3d137cef..851c90fa 100644 --- a/src/glean/api_client/models/referencerange.py +++ b/src/glean/api_client/models/referencerange.py @@ -3,8 +3,9 @@ from __future__ import annotations from .searchresultsnippet import SearchResultSnippet, SearchResultSnippetTypedDict from .textrange import TextRange, TextRangeTypedDict -from glean.api_client.types import BaseModel +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 @@ -24,3 +25,25 @@ class ReferenceRange(BaseModel): r"""A subsection of a given string to which some special formatting should be applied.""" snippets: Optional[List[SearchResultSnippet]] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["textRange", "snippets"]) + 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: + ReferenceRange.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/relateddocuments.py b/src/glean/api_client/models/relateddocuments.py index 676937b7..dd591579 100644 --- a/src/glean/api_client/models/relateddocuments.py +++ b/src/glean/api_client/models/relateddocuments.py @@ -2,8 +2,10 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -13,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" @@ -63,10 +65,49 @@ class RelatedDocuments(BaseModel): documents: Annotated[ Optional[List["Document"]], 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: Field is deprecated." ), ] = None r"""A truncated list of documents with this relation. TO BE DEPRECATED.""" 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( + [ + "relation", + "associatedEntityId", + "querySuggestion", + "documents", + "results", + ] + ) + 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: + RelatedDocuments.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/relatedobject.py b/src/glean/api_client/models/relatedobject.py index d2d611da..94a1515c 100644 --- a/src/glean/api_client/models/relatedobject.py +++ b/src/glean/api_client/models/relatedobject.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -19,6 +20,22 @@ class RelatedObjectMetadata(BaseModel): name: Optional[str] = None r"""Placeholder name of the object, not the relationship.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name"]) + 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 + class RelatedObjectTypedDict(TypedDict): id: str @@ -33,3 +50,19 @@ class RelatedObject(BaseModel): metadata: Optional[RelatedObjectMetadata] = None r"""Some metadata of the object which can be displayed, while not having the actual object.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["metadata"]) + 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/relatedobjectedge.py b/src/glean/api_client/models/relatedobjectedge.py index 2634048d..6a5b0972 100644 --- a/src/glean/api_client/models/relatedobjectedge.py +++ b/src/glean/api_client/models/relatedobjectedge.py @@ -2,7 +2,8 @@ from __future__ import annotations from .relatedobject import RelatedObject, RelatedObjectTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -13,3 +14,19 @@ class RelatedObjectEdgeTypedDict(TypedDict): class RelatedObjectEdge(BaseModel): objects: Optional[List[RelatedObject]] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["objects"]) + 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/relatedquestion.py b/src/glean/api_client/models/relatedquestion.py index c362711f..0bd513ec 100644 --- a/src/glean/api_client/models/relatedquestion.py +++ b/src/glean/api_client/models/relatedquestion.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import NotRequired, TypedDict @@ -27,3 +28,19 @@ class RelatedQuestion(BaseModel): ranges: Optional[List["TextRange"]] = None r"""Subsections of the answer string to which some special formatting should be applied (eg. bold)""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["question", "answer", "ranges"]) + 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/reminder.py b/src/glean/api_client/models/reminder.py index 1b5b0836..8a084dd7 100644 --- a/src/glean/api_client/models/reminder.py +++ b/src/glean/api_client/models/reminder.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -34,3 +35,25 @@ class Reminder(BaseModel): reason: Optional[str] = None r"""An optional free-text reason for the reminder. This is particularly useful when a reminder is used to ask for verification from another user (for example, \"Duplicate\", \"Incomplete\", \"Incorrect\").""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["requestor", "createdAt", "reason"]) + 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: + Reminder.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/reminderrequest.py b/src/glean/api_client/models/reminderrequest.py index 1a941256..5f4e8c64 100644 --- a/src/glean/api_client/models/reminderrequest.py +++ b/src/glean/api_client/models/reminderrequest.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -32,3 +33,25 @@ class ReminderRequest(BaseModel): reason: Optional[str] = None r"""An optional free-text reason for the reminder. This is particularly useful when a reminder is used to ask for verification from another user (for example, \"Duplicate\", \"Incomplete\", \"Incorrect\").""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["assignee", "remindInDays", "reason"]) + 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: + ReminderRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/reportstatusresponse.py b/src/glean/api_client/models/reportstatusresponse.py index 7d241231..ea27cecb 100644 --- a/src/glean/api_client/models/reportstatusresponse.py +++ b/src/glean/api_client/models/reportstatusresponse.py @@ -2,13 +2,15 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -28,3 +30,34 @@ 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"]) + 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: + ReportStatusResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/restrictionfilters.py b/src/glean/api_client/models/restrictionfilters.py index f2db483e..2e649d73 100644 --- a/src/glean/api_client/models/restrictionfilters.py +++ b/src/glean/api_client/models/restrictionfilters.py @@ -2,8 +2,9 @@ from __future__ import annotations from .documentspec_union import DocumentSpecUnion, DocumentSpecUnionTypedDict -from glean.api_client.types import BaseModel +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 @@ -18,3 +19,25 @@ class RestrictionFilters(BaseModel): Optional[List[DocumentSpecUnion]], pydantic.Field(alias="containerSpecs") ] = None r"""Specifications for containers that should be used as part of the restriction (include/exclude). Memberships are recursively defined for a subset of datasources (currently: SharePoint, OneDrive, Google Drive, and Confluence). Please contact the Glean team to enable this for more datasources. Recursive memberships do not apply for Collections.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["containerSpecs"]) + 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: + RestrictionFilters.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/resultsdescription.py b/src/glean/api_client/models/resultsdescription.py index e74d6464..7c8140e5 100644 --- a/src/glean/api_client/models/resultsdescription.py +++ b/src/glean/api_client/models/resultsdescription.py @@ -2,8 +2,9 @@ from __future__ import annotations from .iconconfig import IconConfig, IconConfigTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -23,3 +24,25 @@ class ResultsDescription(BaseModel): None ) r"""Defines how to render an icon""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["text", "iconConfig"]) + 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: + ResultsDescription.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/resultsresponse.py b/src/glean/api_client/models/resultsresponse.py index 51162563..b6ea8902 100644 --- a/src/glean/api_client/models/resultsresponse.py +++ b/src/glean/api_client/models/resultsresponse.py @@ -6,8 +6,9 @@ from .searchresult import SearchResult, SearchResultTypedDict from .sessioninfo import SessionInfo, SessionInfoTypedDict from .structuredresult import StructuredResult, StructuredResultTypedDict -from glean.api_client.types import BaseModel +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 @@ -57,3 +58,36 @@ class ResultsResponse(BaseModel): Optional[int], pydantic.Field(alias="backendTimeMillis") ] = None r"""Time in milliseconds the backend took to respond to the request.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "trackingToken", + "sessionInfo", + "results", + "structuredResults", + "generatedQnaResult", + "GleanDataError", + "requestID", + "backendTimeMillis", + ] + ) + 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: + ResultsResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/resulttab.py b/src/glean/api_client/models/resulttab.py index 60271315..3683f422 100644 --- a/src/glean/api_client/models/resulttab.py +++ b/src/glean/api_client/models/resulttab.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -32,3 +33,25 @@ class ResultTab(BaseModel): Optional[str], pydantic.Field(alias="datasourceInstance") ] = None r"""The datasource instance associated with the tab, if any.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id", "count", "datasource", "datasourceInstance"]) + 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: + ResultTab.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/rotatedatasourcecredentialsop.py b/src/glean/api_client/models/rotatedatasourcecredentialsop.py new file mode 100644 index 00000000..cb554501 --- /dev/null +++ b/src/glean/api_client/models/rotatedatasourcecredentialsop.py @@ -0,0 +1,31 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .rotatedatasourcecredentialsrequest import ( + RotateDatasourceCredentialsRequest, + RotateDatasourceCredentialsRequestTypedDict, +) +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 RotateDatasourceCredentialsRequestRequestTypedDict(TypedDict): + datasource_instance_id: str + r"""The full datasource instance identifier (e.g. o365sharepoint_abc123)""" + rotate_datasource_credentials_request: RotateDatasourceCredentialsRequestTypedDict + + +class RotateDatasourceCredentialsRequestRequest(BaseModel): + datasource_instance_id: Annotated[ + str, + pydantic.Field(alias="datasourceInstanceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The full datasource instance identifier (e.g. o365sharepoint_abc123)""" + + rotate_datasource_credentials_request: Annotated[ + RotateDatasourceCredentialsRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] diff --git a/src/glean/api_client/models/rotatedatasourcecredentialsrequest.py b/src/glean/api_client/models/rotatedatasourcecredentialsrequest.py new file mode 100644 index 00000000..e9dfdd44 --- /dev/null +++ b/src/glean/api_client/models/rotatedatasourcecredentialsrequest.py @@ -0,0 +1,29 @@ +"""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 RotateDatasourceCredentialsRequestTypedDict(TypedDict): + r"""Request to rotate the credentials used by a datasource instance. Replaces the active credential material with the supplied values. + `credentials.values` must contain only keys recognized as credential material for the datasource type (for example `clientSecret` for OAuth, `apiToken` for API-token auth, `privateKey` for certificate auth). Unrecognized keys, or keys that correspond to non-credential configuration, cause a 400; use the configure endpoint to change non-credential config. + + """ + + credentials: DatasourceInstanceConfigurationTypedDict + r"""Configuration for a datasource instance""" + + +class RotateDatasourceCredentialsRequest(BaseModel): + r"""Request to rotate the credentials used by a datasource instance. Replaces the active credential material with the supplied values. + `credentials.values` must contain only keys recognized as credential material for the datasource type (for example `clientSecret` for OAuth, `apiToken` for API-token auth, `privateKey` for certificate auth). Unrecognized keys, or keys that correspond to non-credential configuration, cause a 400; use the configure endpoint to change non-credential config. + + """ + + credentials: DatasourceInstanceConfiguration + r"""Configuration for a datasource instance""" diff --git a/src/glean/api_client/models/rotatetokenresponse.py b/src/glean/api_client/models/rotatetokenresponse.py index 84bf069b..723b5b9c 100644 --- a/src/glean/api_client/models/rotatetokenresponse.py +++ b/src/glean/api_client/models/rotatetokenresponse.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -31,3 +32,25 @@ class RotateTokenResponse(BaseModel): Optional[int], pydantic.Field(alias="rotationPeriodMinutes") ] = None r"""Refers to the time period in minutes before which this token needs to be rotated. It is required to rotate the token within the specified `rotationPeriodMinutes` after each `/rotatetoken` call, otherwise the tokens would expire. Note that the token would still expire at `expiresAt` timestamp provided during token creation even if the token is being regularly rotated. `rotationPeriodMinutes` property is inherited from the parent token being rotated""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["rawSecret", "createdAt", "rotationPeriodMinutes"]) + 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: + RotateTokenResponse.model_rebuild() +except NameError: + pass 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 613d990d..a66f7d03 100644 --- a/src/glean/api_client/models/searchagentsrequest.py +++ b/src/glean/api_client/models/searchagentsrequest.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -14,3 +15,19 @@ class SearchAgentsRequestTypedDict(TypedDict): class SearchAgentsRequest(BaseModel): name: Optional[str] = None r"""Filters on the name of the agent. The keyword search is case-insensitive. If search string is ommited or empty, acts as no filter.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name"]) + 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/searchagentsresponse.py b/src/glean/api_client/models/searchagentsresponse.py index 8f0f47c4..9e6b9852 100644 --- a/src/glean/api_client/models/searchagentsresponse.py +++ b/src/glean/api_client/models/searchagentsresponse.py @@ -2,7 +2,8 @@ from __future__ import annotations from .agent import Agent, AgentTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -13,3 +14,19 @@ class SearchAgentsResponseTypedDict(TypedDict): class SearchAgentsResponse(BaseModel): agents: Optional[List[Agent]] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["agents"]) + 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/searchop.py b/src/glean/api_client/models/searchop.py new file mode 100644 index 00000000..d1dd1a5c --- /dev/null +++ b/src/glean/api_client/models/searchop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .searchrequest import SearchRequest, SearchRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class SearchRequestRequestTypedDict(TypedDict): + search_request: SearchRequestTypedDict + r"""Search request""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class SearchRequestRequest(BaseModel): + search_request: Annotated[ + SearchRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Search request""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/searchproviderinfo.py b/src/glean/api_client/models/searchproviderinfo.py index 39a4eec6..84921983 100644 --- a/src/glean/api_client/models/searchproviderinfo.py +++ b/src/glean/api_client/models/searchproviderinfo.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -27,3 +28,25 @@ class SearchProviderInfo(BaseModel): Optional[str], pydantic.Field(alias="searchLinkUrlTemplate") ] = None r"""URL template that can be used to perform the suggested search by replacing the {query} placeholder with the query suggestion.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name", "logoUrl", "searchLinkUrlTemplate"]) + 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: + SearchProviderInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/searchrequest.py b/src/glean/api_client/models/searchrequest.py index d4b868a0..535df875 100644 --- a/src/glean/api_client/models/searchrequest.py +++ b/src/glean/api_client/models/searchrequest.py @@ -9,8 +9,9 @@ from .searchrequestoptions import SearchRequestOptions, SearchRequestOptionsTypedDict from .sessioninfo import SessionInfo, SessionInfoTypedDict from datetime import datetime -from glean.api_client.types import BaseModel +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 @@ -93,3 +94,40 @@ class SearchRequest(BaseModel): Optional[bool], pydantic.Field(alias="disableSpellcheck") ] = None r"""Whether or not to disable spellcheck.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "timestamp", + "trackingToken", + "sessionInfo", + "sourceDocument", + "pageSize", + "maxSnippetSize", + "cursor", + "resultTabIds", + "inputDetails", + "requestOptions", + "timeoutMillis", + "disableSpellcheck", + ] + ) + 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: + SearchRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/searchrequestinputdetails.py b/src/glean/api_client/models/searchrequestinputdetails.py index 57b61118..900e4ff2 100644 --- a/src/glean/api_client/models/searchrequestinputdetails.py +++ b/src/glean/api_client/models/searchrequestinputdetails.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,3 +18,25 @@ class SearchRequestInputDetails(BaseModel): None ) r"""Whether the associated query was at least partially copy-pasted. If subsequent requests are issued after a copy-pasted query is constructed (e.g. with facet modifications), this bit should continue to be set for those requests.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["hasCopyPaste"]) + 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: + SearchRequestInputDetails.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/searchrequestoptions.py b/src/glean/api_client/models/searchrequestoptions.py index 69ce1c11..f5006c08 100644 --- a/src/glean/api_client/models/searchrequestoptions.py +++ b/src/glean/api_client/models/searchrequestoptions.py @@ -7,13 +7,15 @@ from .facetfilterset import FacetFilterSet, FacetFilterSetTypedDict from .restrictionfilters import RestrictionFilters, RestrictionFiltersTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import utils +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 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. @@ -138,3 +140,44 @@ class SearchRequestOptions(BaseModel): inclusions: Optional[RestrictionFilters] = None exclusions: Optional[RestrictionFilters] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "datasourceFilter", + "datasourcesFilter", + "queryOverridesFacetFilters", + "facetFilters", + "facetFilterSets", + "facetBucketFilter", + "defaultFacets", + "authTokens", + "fetchAllDatasourceCounts", + "responseHints", + "timezoneOffset", + "disableSpellcheck", + "disableQueryAutocorrect", + "returnLlmContentOverSnippets", + "inclusions", + "exclusions", + ] + ) + 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: + SearchRequestOptions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/searchresponse.py b/src/glean/api_client/models/searchresponse.py index ef9c3d8b..0135246b 100644 --- a/src/glean/api_client/models/searchresponse.py +++ b/src/glean/api_client/models/searchresponse.py @@ -14,8 +14,9 @@ from .searchresult import SearchResult, SearchResultTypedDict from .sessioninfo import SessionInfo, SessionInfoTypedDict from .structuredresult import StructuredResult, StructuredResultTypedDict -from glean.api_client.types import BaseModel +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 @@ -118,3 +119,45 @@ class SearchResponse(BaseModel): Optional[bool], pydantic.Field(alias="hasMoreResults") ] = None r"""Whether more results are available. Use cursor to retrieve them.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "trackingToken", + "sessionInfo", + "results", + "structuredResults", + "generatedQnaResult", + "GleanDataError", + "requestID", + "backendTimeMillis", + "experimentIds", + "metadata", + "facetResults", + "resultTabs", + "resultTabIds", + "resultsDescription", + "rewrittenFacetFilters", + "cursor", + "hasMoreResults", + ] + ) + 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: + SearchResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/searchresponsemetadata.py b/src/glean/api_client/models/searchresponsemetadata.py index af9540a2..0d4c2a38 100644 --- a/src/glean/api_client/models/searchresponsemetadata.py +++ b/src/glean/api_client/models/searchresponsemetadata.py @@ -5,8 +5,9 @@ from .querysuggestionlist import QuerySuggestionList, QuerySuggestionListTypedDict from .searchwarning import SearchWarning, SearchWarningTypedDict from .textrange import TextRange, TextRangeTypedDict -from glean.api_client.types import BaseModel +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 @@ -100,3 +101,41 @@ class SearchResponseMetadata(BaseModel): Optional[bool], pydantic.Field(alias="isNoQuotesSuggestion") ] = None r"""Whether the query was modified to remove quotes""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "rewrittenQuery", + "searchedQuery", + "searchedQueryWithoutNegation", + "searchedQueryRanges", + "originalQuery", + "querySuggestion", + "additionalQuerySuggestions", + "negatedTerms", + "modifiedQueryWasUsed", + "originalQueryHadNoResults", + "searchWarning", + "triggeredExpertDetection", + "isNoQuotesSuggestion", + ] + ) + 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: + SearchResponseMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/searchresult.py b/src/glean/api_client/models/searchresult.py index 51538a55..9bcd8639 100644 --- a/src/glean/api_client/models/searchresult.py +++ b/src/glean/api_client/models/searchresult.py @@ -3,8 +3,10 @@ from __future__ import annotations from .clustertypeenum import ClusterTypeEnum from .searchresultprominenceenum import SearchResultProminenceEnum -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -147,3 +149,66 @@ 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( + [ + "structuredResults", + "trackingToken", + "document", + "title", + "nativeAppUrl", + "snippets", + "fullText", + "fullTextList", + "relatedResults", + "clusteredResults", + "allClusteredResults", + "attachmentCount", + "attachments", + "backlinkResults", + "clusterType", + "mustIncludeSuggestions", + "querySuggestion", + "prominence", + "attachmentContext", + "pins", + ] + ) + 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: + SearchResult.model_rebuild() +except NameError: + pass 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 b0e9925f..aff7d94f 100644 --- a/src/glean/api_client/models/searchresultsnippet.py +++ b/src/glean/api_client/models/searchresultsnippet.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -11,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] @@ -23,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.""" @@ -50,3 +43,35 @@ 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", "snippet"] + ) + 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: + SearchResultSnippet.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/searchwarning.py b/src/glean/api_client/models/searchwarning.py index e1ff1a88..79a0826d 100644 --- a/src/glean/api_client/models/searchwarning.py +++ b/src/glean/api_client/models/searchwarning.py @@ -2,13 +2,15 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -49,3 +51,34 @@ class SearchWarning(BaseModel): Optional[List[str]], pydantic.Field(alias="ignoredTerms") ] = 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"]) + 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: + SearchWarning.model_rebuild() +except NameError: + pass 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 da770e94..c248ffd0 100644 --- a/src/glean/api_client/models/security.py +++ b/src/glean/api_client/models/security.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, SecurityMetadata +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -23,3 +24,19 @@ class Security(BaseModel): ) ), ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["APIToken"]) + 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/seenfeedbackinfo.py b/src/glean/api_client/models/seenfeedbackinfo.py index 9f43bbd7..a5ebcfaa 100644 --- a/src/glean/api_client/models/seenfeedbackinfo.py +++ b/src/glean/api_client/models/seenfeedbackinfo.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -15,3 +16,25 @@ class SeenFeedbackInfoTypedDict(TypedDict): class SeenFeedbackInfo(BaseModel): is_explicit: Annotated[Optional[bool], pydantic.Field(alias="isExplicit")] = None r"""The confidence of the user seeing the object is high because they explicitly interacted with it e.g. answer impression in SERP with additional user interaction.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["isExplicit"]) + 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: + SeenFeedbackInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/sensitivecontentoptions.py b/src/glean/api_client/models/sensitivecontentoptions.py index 41619cb7..9c337af1 100644 --- a/src/glean/api_client/models/sensitivecontentoptions.py +++ b/src/glean/api_client/models/sensitivecontentoptions.py @@ -1,10 +1,15 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations +from .customsensitiveexpression import ( + CustomSensitiveExpression, + CustomSensitiveExpressionTypedDict, +) from .sensitiveexpression import SensitiveExpression, SensitiveExpressionTypedDict from .sensitiveinfotype import SensitiveInfoType, SensitiveInfoTypeTypedDict -from glean.api_client.types import BaseModel +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 @@ -13,27 +18,76 @@ class SensitiveContentOptionsTypedDict(TypedDict): r"""Options for defining sensitive content within scanned documents.""" sensitive_info_types: NotRequired[List[SensitiveInfoTypeTypedDict]] - r"""Predefined categories of terms to consider as sensitive content. See https://cloud.google.com/dlp/docs/infotypes-reference for available types.""" + r"""DEPRECATED - use 'customSensitiveExpressions' instead.""" sensitive_terms: NotRequired[List[SensitiveExpressionTypedDict]] - r"""list of words and phrases to consider as sensitive content""" + r"""DEPRECATED - use 'customSensitiveExpressions' instead.""" sensitive_regexes: NotRequired[List[SensitiveExpressionTypedDict]] - r"""list of regular expressions to consider as sensitive content""" + r"""DEPRECATED - use 'customSensitiveExpressions' instead.""" + custom_sensitive_expressions: NotRequired[List[CustomSensitiveExpressionTypedDict]] + r"""list of custom sensitive expressions to consider as sensitive content""" class SensitiveContentOptions(BaseModel): r"""Options for defining sensitive content within scanned documents.""" sensitive_info_types: Annotated[ - Optional[List[SensitiveInfoType]], pydantic.Field(alias="sensitiveInfoTypes") + Optional[List[SensitiveInfoType]], + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead.", + alias="sensitiveInfoTypes", + ), ] = None - r"""Predefined categories of terms to consider as sensitive content. See https://cloud.google.com/dlp/docs/infotypes-reference for available types.""" + r"""DEPRECATED - use 'customSensitiveExpressions' instead.""" sensitive_terms: Annotated[ - Optional[List[SensitiveExpression]], pydantic.Field(alias="sensitiveTerms") + Optional[List[SensitiveExpression]], + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead.", + alias="sensitiveTerms", + ), ] = None - r"""list of words and phrases to consider as sensitive content""" + r"""DEPRECATED - use 'customSensitiveExpressions' instead.""" sensitive_regexes: Annotated[ - Optional[List[SensitiveExpression]], pydantic.Field(alias="sensitiveRegexes") + Optional[List[SensitiveExpression]], + pydantic.Field( + deprecated="warning: ** DEPRECATED ** - Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead.", + alias="sensitiveRegexes", + ), ] = None - r"""list of regular expressions to consider as sensitive content""" + r"""DEPRECATED - use 'customSensitiveExpressions' instead.""" + + custom_sensitive_expressions: Annotated[ + Optional[List[CustomSensitiveExpression]], + pydantic.Field(alias="customSensitiveExpressions"), + ] = None + r"""list of custom sensitive expressions to consider as sensitive content""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "sensitiveInfoTypes", + "sensitiveTerms", + "sensitiveRegexes", + "customSensitiveExpressions", + ] + ) + 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: + SensitiveContentOptions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/sensitiveexpression.py b/src/glean/api_client/models/sensitiveexpression.py index c0bcf68c..4f4970c3 100644 --- a/src/glean/api_client/models/sensitiveexpression.py +++ b/src/glean/api_client/models/sensitiveexpression.py @@ -2,7 +2,8 @@ from __future__ import annotations from .hotword import Hotword, HotwordTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -20,3 +21,19 @@ class SensitiveExpression(BaseModel): hotwords: Optional[List[Hotword]] = None r"""Zero to three proximate regular expressions necessary to consider an expression as sensitive content.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["expression", "hotwords"]) + 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/sensitiveinfotype.py b/src/glean/api_client/models/sensitiveinfotype.py index f180f3bf..61ec4473 100644 --- a/src/glean/api_client/models/sensitiveinfotype.py +++ b/src/glean/api_client/models/sensitiveinfotype.py @@ -2,16 +2,18 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict, deprecated @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-05, removal scheduled for 2026-10-15: Field is deprecated." ) -class LikelihoodThreshold(str, Enum): +class SensitiveInfoTypeLikelihoodThreshold(str, Enum, metaclass=utils.OpenEnumMeta): LIKELY = "LIKELY" VERY_LIKELY = "VERY_LIKELY" POSSIBLE = "POSSIBLE" @@ -20,19 +22,50 @@ class LikelihoodThreshold(str, Enum): class SensitiveInfoTypeTypedDict(TypedDict): - likelihood_threshold: NotRequired[LikelihoodThreshold] + likelihood_threshold: NotRequired[SensitiveInfoTypeLikelihoodThreshold] info_type: NotRequired[str] r"""Text representation of an info-type to scan for.""" class SensitiveInfoType(BaseModel): likelihood_threshold: Annotated[ - Optional[LikelihoodThreshold], + Optional[SensitiveInfoTypeLikelihoodThreshold], 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: Field is deprecated.", alias="likelihoodThreshold", ), ] = None 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"]) + 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: + SensitiveInfoType.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/sessioninfo.py b/src/glean/api_client/models/sessioninfo.py index 4b1e8a30..0a0ab521 100644 --- a/src/glean/api_client/models/sessioninfo.py +++ b/src/glean/api_client/models/sessioninfo.py @@ -2,8 +2,9 @@ from __future__ import annotations from datetime import datetime -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -33,3 +34,27 @@ class SessionInfo(BaseModel): last_query: Annotated[Optional[str], pydantic.Field(alias="lastQuery")] = None r"""The last query seen by the server.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["sessionTrackingToken", "tabId", "lastSeen", "lastQuery"] + ) + 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: + SessionInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/share.py b/src/glean/api_client/models/share.py index 5be4a595..3356d1fb 100644 --- a/src/glean/api_client/models/share.py +++ b/src/glean/api_client/models/share.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -31,3 +32,25 @@ class Share(BaseModel): sharing_document: Annotated[ Optional["Document"], pydantic.Field(alias="sharingDocument") ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["sharer", "sharingDocument"]) + 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: + Share.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/sharingoptions.py b/src/glean/api_client/models/sharingoptions.py index 18adf24b..c6ffe694 100644 --- a/src/glean/api_client/models/sharingoptions.py +++ b/src/glean/api_client/models/sharingoptions.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -32,7 +33,7 @@ class SharingOptions(BaseModel): enabled: Annotated[ Optional[bool], 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: Field is deprecated." ), ] = None @@ -47,7 +48,7 @@ class SharingOptions(BaseModel): anyone_with_link_enabled: Annotated[ Optional[bool], 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: Field is deprecated.", alias="anyoneWithLinkEnabled", ), ] = None @@ -69,3 +70,36 @@ class SharingOptions(BaseModel): user_ids: Annotated[Optional[List[str]], pydantic.Field(alias="userIds")] = None r"""Any one of the specified users can access the document.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "enabled", + "threshold", + "thresholdEnabled", + "anyoneWithLinkEnabled", + "anyoneInternalEnabled", + "anonymousAccessEnabled", + "userAccessEnabled", + "userIds", + ] + ) + 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: + SharingOptions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/shortcut.py b/src/glean/api_client/models/shortcut.py index 6b97d4c7..3b086609 100644 --- a/src/glean/api_client/models/shortcut.py +++ b/src/glean/api_client/models/shortcut.py @@ -3,8 +3,9 @@ from __future__ import annotations from .objectpermissions import ObjectPermissions, ObjectPermissionsTypedDict from datetime import datetime -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -138,3 +139,49 @@ class Shortcut(BaseModel): roles: Optional[List["UserRoleSpecification"]] = None r"""A list of user roles for the Go Link.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "id", + "destinationUrl", + "destinationDocumentId", + "description", + "unlisted", + "urlTemplate", + "addedRoles", + "removedRoles", + "permissions", + "createdBy", + "createTime", + "updatedBy", + "updateTime", + "destinationDocument", + "intermediateUrl", + "viewPrefix", + "isExternal", + "editUrl", + "alias", + "title", + "roles", + ] + ) + 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: + Shortcut.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/shortcuterror.py b/src/glean/api_client/models/shortcuterror.py index 803c24ed..b4922a4c 100644 --- a/src/glean/api_client/models/shortcuterror.py +++ b/src/glean/api_client/models/shortcuterror.py @@ -2,13 +2,15 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -23,3 +25,34 @@ class ShortcutError(BaseModel): error_type: Annotated[ 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"]) + 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: + ShortcutError.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/shortcutinsight.py b/src/glean/api_client/models/shortcutinsight.py deleted file mode 100644 index c6ccd538..00000000 --- a/src/glean/api_client/models/shortcutinsight.py +++ /dev/null @@ -1,27 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .countinfo import CountInfo, CountInfoTypedDict -from .shortcut import Shortcut, ShortcutTypedDict -from glean.api_client.types import BaseModel -import pydantic -from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class ShortcutInsightTypedDict(TypedDict): - shortcut: ShortcutTypedDict - visit_count: NotRequired[CountInfoTypedDict] - visitor_count: NotRequired[CountInfoTypedDict] - - -class ShortcutInsight(BaseModel): - shortcut: Shortcut - - visit_count: Annotated[Optional[CountInfo], pydantic.Field(alias="visitCount")] = ( - None - ) - - visitor_count: Annotated[ - Optional[CountInfo], pydantic.Field(alias="visitorCount") - ] = None diff --git a/src/glean/api_client/models/shortcutinsightsresponse.py b/src/glean/api_client/models/shortcutinsightsresponse.py deleted file mode 100644 index 852e11f2..00000000 --- a/src/glean/api_client/models/shortcutinsightsresponse.py +++ /dev/null @@ -1,39 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .shortcutinsight import ShortcutInsight, ShortcutInsightTypedDict -from glean.api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class ShortcutInsightsResponseTypedDict(TypedDict): - last_log_timestamp: NotRequired[int] - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - shortcut_insights: NotRequired[List[ShortcutInsightTypedDict]] - r"""Insights for shortcuts.""" - departments: NotRequired[List[str]] - r"""list of departments applicable for shortcuts tab.""" - min_visitor_threshold: NotRequired[int] - r"""Min threshold in number of visitors while populating results, otherwise 0.""" - - -class ShortcutInsightsResponse(BaseModel): - last_log_timestamp: Annotated[ - Optional[int], pydantic.Field(alias="lastLogTimestamp") - ] = None - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - - shortcut_insights: Annotated[ - Optional[List[ShortcutInsight]], pydantic.Field(alias="shortcutInsights") - ] = None - r"""Insights for shortcuts.""" - - departments: Optional[List[str]] = None - r"""list of departments applicable for shortcuts tab.""" - - min_visitor_threshold: Annotated[ - Optional[int], pydantic.Field(alias="minVisitorThreshold") - ] = None - r"""Min threshold in number of visitors while populating results, otherwise 0.""" diff --git a/src/glean/api_client/models/shortcutmutableproperties.py b/src/glean/api_client/models/shortcutmutableproperties.py index e19d0a27..a70757ea 100644 --- a/src/glean/api_client/models/shortcutmutableproperties.py +++ b/src/glean/api_client/models/shortcutmutableproperties.py @@ -2,8 +2,9 @@ from __future__ import annotations from .userrolespecification import UserRoleSpecification, UserRoleSpecificationTypedDict -from glean.api_client.types import BaseModel +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 @@ -59,3 +60,36 @@ class ShortcutMutableProperties(BaseModel): Optional[List[UserRoleSpecification]], pydantic.Field(alias="removedRoles") ] = None r"""A list of user roles removed for the Shortcut.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "inputAlias", + "destinationUrl", + "destinationDocumentId", + "description", + "unlisted", + "urlTemplate", + "addedRoles", + "removedRoles", + ] + ) + 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: + ShortcutMutableProperties.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/shortcutspaginationmetadata.py b/src/glean/api_client/models/shortcutspaginationmetadata.py index 80e5dc5d..dd14f76d 100644 --- a/src/glean/api_client/models/shortcutspaginationmetadata.py +++ b/src/glean/api_client/models/shortcutspaginationmetadata.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -23,3 +24,25 @@ class ShortcutsPaginationMetadata(BaseModel): total_item_count: Annotated[ Optional[int], pydantic.Field(alias="totalItemCount") ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["cursor", "hasNextPage", "totalItemCount"]) + 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: + ShortcutsPaginationMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/sidebysideimplementation.py b/src/glean/api_client/models/sidebysideimplementation.py index 02f9010e..2df5ff06 100644 --- a/src/glean/api_client/models/sidebysideimplementation.py +++ b/src/glean/api_client/models/sidebysideimplementation.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -30,6 +31,22 @@ class ResponseMetadata(BaseModel): model_used: Annotated[Optional[str], pydantic.Field(alias="modelUsed")] = None r"""The specific model version used.""" + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["latencyMs", "tokenCount", "modelUsed"]) + 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 + class SideBySideImplementationTypedDict(TypedDict): implementation_id: NotRequired[str] @@ -67,3 +84,37 @@ class SideBySideImplementation(BaseModel): Optional[ResponseMetadata], pydantic.Field(alias="responseMetadata") ] = None r"""Metadata about the response (e.g., latency, token count).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "implementationId", + "implementationName", + "searchParams", + "response", + "responseMetadata", + ] + ) + 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: + ResponseMetadata.model_rebuild() +except NameError: + pass +try: + SideBySideImplementation.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/socialnetwork.py b/src/glean/api_client/models/socialnetwork.py index e9c5173b..6540572a 100644 --- a/src/glean/api_client/models/socialnetwork.py +++ b/src/glean/api_client/models/socialnetwork.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -25,3 +26,25 @@ class SocialNetwork(BaseModel): profile_name: Annotated[Optional[str], pydantic.Field(alias="profileName")] = None r"""Human-readable profile name.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["profileName"]) + 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: + SocialNetwork.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/socialnetworkdefinition.py b/src/glean/api_client/models/socialnetworkdefinition.py index 48f96a67..be8259cd 100644 --- a/src/glean/api_client/models/socialnetworkdefinition.py +++ b/src/glean/api_client/models/socialnetworkdefinition.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -29,3 +30,25 @@ class SocialNetworkDefinition(BaseModel): profile_url: Annotated[Optional[str], pydantic.Field(alias="profileUrl")] = None r"""Link to profile.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name", "profileName", "profileUrl"]) + 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: + SocialNetworkDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/sortoptions.py b/src/glean/api_client/models/sortoptions.py index 4813522f..b47e3975 100644 --- a/src/glean/api_client/models/sortoptions.py +++ b/src/glean/api_client/models/sortoptions.py @@ -2,8 +2,9 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -22,3 +23,25 @@ class SortOptions(BaseModel): order_by: Annotated[Optional[OrderBy], pydantic.Field(alias="orderBy")] = None sort_by: Annotated[Optional[str], pydantic.Field(alias="sortBy")] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["orderBy", "sortBy"]) + 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: + SortOptions.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/structuredlink.py b/src/glean/api_client/models/structuredlink.py index 486038a7..64e4e5b9 100644 --- a/src/glean/api_client/models/structuredlink.py +++ b/src/glean/api_client/models/structuredlink.py @@ -2,8 +2,9 @@ from __future__ import annotations from .iconconfig import IconConfig, IconConfigTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -32,3 +33,25 @@ class StructuredLink(BaseModel): None ) r"""Defines how to render an icon""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["name", "url", "iconConfig"]) + 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: + StructuredLink.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/structuredlocation.py b/src/glean/api_client/models/structuredlocation.py index 55300568..8fc2a7f5 100644 --- a/src/glean/api_client/models/structuredlocation.py +++ b/src/glean/api_client/models/structuredlocation.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -59,3 +60,37 @@ class StructuredLocation(BaseModel): country_code: Annotated[Optional[str], pydantic.Field(alias="countryCode")] = None r"""Alpha-2 or Alpha-3 ISO 3166 country code, e.g. US or USA.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "deskLocation", + "timezone", + "address", + "city", + "state", + "region", + "zipCode", + "country", + "countryCode", + ] + ) + 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: + StructuredLocation.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/structuredresult.py b/src/glean/api_client/models/structuredresult.py index 8d4fbd05..ead2bdf1 100644 --- a/src/glean/api_client/models/structuredresult.py +++ b/src/glean/api_client/models/structuredresult.py @@ -4,14 +4,15 @@ from .appresult import AppResult, AppResultTypedDict from .disambiguation import Disambiguation, DisambiguationTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict if TYPE_CHECKING: from .answer import Answer, AnswerTypedDict - from .answerboard import AnswerBoard, AnswerBoardTypedDict from .chatmetadata import ChatMetadata, ChatMetadataTypedDict from .code import Code, CodeTypedDict from .collection import Collection, CollectionTypedDict @@ -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,11 +42,13 @@ 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" ENTITY_NLQ = "ENTITY_NLQ" + CALENDAR_EVENT = "CALENDAR_EVENT" + AGENT = "AGENT" class StructuredResultTypedDict(TypedDict): @@ -62,7 +65,6 @@ class StructuredResultTypedDict(TypedDict): meeting: NotRequired["MeetingTypedDict"] app: NotRequired[AppResultTypedDict] collection: NotRequired["CollectionTypedDict"] - answer_board: NotRequired["AnswerBoardTypedDict"] code: NotRequired["CodeTypedDict"] shortcut: NotRequired["ShortcutTypedDict"] query_suggestions: NotRequired["QuerySuggestionListTypedDict"] @@ -114,10 +116,6 @@ class StructuredResult(BaseModel): collection: Optional["Collection"] = None - answer_board: Annotated[ - Optional["AnswerBoard"], pydantic.Field(alias="answerBoard") - ] = None - code: Optional["Code"] = None shortcut: Optional["Shortcut"] = None @@ -154,3 +152,68 @@ 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( + [ + "document", + "person", + "customer", + "team", + "customEntity", + "answer", + "generatedQna", + "extractedQnA", + "meeting", + "app", + "collection", + "code", + "shortcut", + "querySuggestions", + "chat", + "relatedDocuments", + "relatedQuestion", + "disambiguation", + "snippets", + "trackingToken", + "prominence", + "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 + + +try: + StructuredResult.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/structuredtext.py b/src/glean/api_client/models/structuredtext.py index 2debe614..dcf058b2 100644 --- a/src/glean/api_client/models/structuredtext.py +++ b/src/glean/api_client/models/structuredtext.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -23,3 +24,25 @@ class StructuredText(BaseModel): Optional[List["StructuredTextItem"]], pydantic.Field(alias="structuredList") ] = None r"""An array of objects each of which contains either a string or a link which optionally corresponds to a document.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["structuredList"]) + 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: + StructuredText.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/structuredtextitem.py b/src/glean/api_client/models/structuredtextitem.py index a473e147..6eeb60a0 100644 --- a/src/glean/api_client/models/structuredtextitem.py +++ b/src/glean/api_client/models/structuredtextitem.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -30,3 +31,25 @@ class StructuredTextItem(BaseModel): Optional["StructuredResult"], pydantic.Field(alias="structuredResult") ] = None r"""A single object that can support any object in the work graph. Only a single object will be populated.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["link", "document", "text", "structuredResult"]) + 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: + StructuredTextItem.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/successresponse.py b/src/glean/api_client/models/successresponse.py new file mode 100644 index 00000000..c48ec864 --- /dev/null +++ b/src/glean/api_client/models/successresponse.py @@ -0,0 +1,37 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +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 SuccessResponseTypedDict(TypedDict): + r"""Success response for custom metadata operations""" + + success: NotRequired[bool] + r"""Indicates if the operation was successful""" + + +class SuccessResponse(BaseModel): + r"""Success response for custom metadata operations""" + + success: Optional[bool] = True + r"""Indicates if the operation was successful""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["success"]) + 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/summarizeop.py b/src/glean/api_client/models/summarizeop.py new file mode 100644 index 00000000..1211d870 --- /dev/null +++ b/src/glean/api_client/models/summarizeop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .summarizerequest import SummarizeRequest, SummarizeRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class SummarizeRequestRequestTypedDict(TypedDict): + summarize_request: SummarizeRequestTypedDict + r"""Includes request params such as the query and specs of the documents to summarize.""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class SummarizeRequestRequest(BaseModel): + summarize_request: Annotated[ + SummarizeRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Includes request params such as the query and specs of the documents to summarize.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/summarizerequest.py b/src/glean/api_client/models/summarizerequest.py index 367ac2cf..2ee5dfa9 100644 --- a/src/glean/api_client/models/summarizerequest.py +++ b/src/glean/api_client/models/summarizerequest.py @@ -3,8 +3,9 @@ from __future__ import annotations from .documentspec_union import DocumentSpecUnion, DocumentSpecUnionTypedDict from datetime import datetime -from glean.api_client.types import BaseModel +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 @@ -47,3 +48,27 @@ class SummarizeRequest(BaseModel): None ) r"""An opaque token that represents this particular result. To be used for /feedback reporting.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["timestamp", "query", "preferredSummaryLength", "trackingToken"] + ) + 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: + SummarizeRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/summarizeresponse.py b/src/glean/api_client/models/summarizeresponse.py index d92dcee1..ca5dc1b6 100644 --- a/src/glean/api_client/models/summarizeresponse.py +++ b/src/glean/api_client/models/summarizeresponse.py @@ -2,8 +2,9 @@ from __future__ import annotations from .summary import Summary, SummaryTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -15,6 +16,22 @@ class ErrorTypedDict(TypedDict): class Error(BaseModel): message: Optional[str] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["message"]) + 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 + class SummarizeResponseTypedDict(TypedDict): error: NotRequired[ErrorTypedDict] @@ -32,3 +49,25 @@ class SummarizeResponse(BaseModel): None ) r"""An opaque token that represents this summary in this particular query. To be used for /feedback reporting.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["error", "summary", "trackingToken"]) + 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: + SummarizeResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/summary.py b/src/glean/api_client/models/summary.py index 0ba4d7c7..35573db7 100644 --- a/src/glean/api_client/models/summary.py +++ b/src/glean/api_client/models/summary.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -20,3 +21,25 @@ class Summary(BaseModel): Optional[List[str]], pydantic.Field(alias="followUpPrompts") ] = None r"""Follow-up prompts based on the summarized doc""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["text", "followUpPrompts"]) + 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: + Summary.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/team.py b/src/glean/api_client/models/team.py index e6004910..7fa4e162 100644 --- a/src/glean/api_client/models/team.py +++ b/src/glean/api_client/models/team.py @@ -7,8 +7,10 @@ from .teamemail import TeamEmail, TeamEmailTypedDict from datetime import datetime from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Dict, List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -20,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" @@ -144,3 +146,56 @@ 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( + [ + "relatedObjects", + "permissions", + "description", + "businessUnit", + "department", + "photoUrl", + "bannerUrl", + "externalLink", + "members", + "memberCount", + "emails", + "customFields", + "datasourceProfiles", + "datasource", + "createdFrom", + "lastUpdatedAt", + "status", + "canBeDeleted", + "loggingId", + ] + ) + 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: + Team.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/teamemail.py b/src/glean/api_client/models/teamemail.py index 8bdb438f..73f5b4cd 100644 --- a/src/glean/api_client/models/teamemail.py +++ b/src/glean/api_client/models/teamemail.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -23,3 +24,19 @@ class TeamEmail(BaseModel): type: Optional[str] = "OTHER" r"""An enum of `PRIMARY`, `SECONDARY`, `ONCALL`, `OTHER`""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["type"]) + 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/teaminfodefinition.py b/src/glean/api_client/models/teaminfodefinition.py index 675b9b47..d5e57583 100644 --- a/src/glean/api_client/models/teaminfodefinition.py +++ b/src/glean/api_client/models/teaminfodefinition.py @@ -8,8 +8,9 @@ from .datasourceprofile import DatasourceProfile, DatasourceProfileTypedDict from .teamemail import TeamEmail, TeamEmailTypedDict from .teammember import TeamMember, TeamMemberTypedDict -from glean.api_client.types import BaseModel +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 @@ -85,3 +86,36 @@ class TeamInfoDefinition(BaseModel): pydantic.Field(alias="additionalFields"), ] = None r"""List of additional fields with more information about the team.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "description", + "businessUnit", + "department", + "photoUrl", + "externalLink", + "emails", + "datasourceProfiles", + "additionalFields", + ] + ) + 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: + TeamInfoDefinition.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/teammember.py b/src/glean/api_client/models/teammember.py index a4f6d272..9b534f8c 100644 --- a/src/glean/api_client/models/teammember.py +++ b/src/glean/api_client/models/teammember.py @@ -2,7 +2,8 @@ from __future__ import annotations from datetime import date -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -29,3 +30,19 @@ class TeamMember(BaseModel): join_date: Optional[date] = None r"""The member's start date""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["relationship", "join_date"]) + 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/textrange.py b/src/glean/api_client/models/textrange.py index 8cf75c00..9cd52eba 100644 --- a/src/glean/api_client/models/textrange.py +++ b/src/glean/api_client/models/textrange.py @@ -2,8 +2,10 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -11,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" @@ -46,3 +48,34 @@ class TextRange(BaseModel): r"""The URL associated with the range, if applicable. For example, the linked URL for a LINK range.""" 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"]) + 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: + TextRange.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/thumbnail.py b/src/glean/api_client/models/thumbnail.py index 0b139d49..decf9c1f 100644 --- a/src/glean/api_client/models/thumbnail.py +++ b/src/glean/api_client/models/thumbnail.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -20,3 +21,25 @@ class Thumbnail(BaseModel): url: Optional[str] = None r"""Thumbnail URL. This can be user provided image and/or from downloaded images hosted by Glean.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["photoId", "url"]) + 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: + Thumbnail.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/timepoint.py b/src/glean/api_client/models/timepoint.py index cb67cc9c..64b09fea 100644 --- a/src/glean/api_client/models/timepoint.py +++ b/src/glean/api_client/models/timepoint.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -11,7 +12,7 @@ class TimePointTypedDict(TypedDict): epoch_seconds: NotRequired[int] r"""Epoch seconds. Has precedence over daysFromNow.""" days_from_now: NotRequired[int] - r"""The number of days from now. Specification relative to current time. Can be negative.""" + r"""Number of days in the past, relative to the current date.""" class TimePoint(BaseModel): @@ -19,4 +20,26 @@ class TimePoint(BaseModel): r"""Epoch seconds. Has precedence over daysFromNow.""" days_from_now: Annotated[Optional[int], pydantic.Field(alias="daysFromNow")] = None - r"""The number of days from now. Specification relative to current time. Can be negative.""" + r"""Number of days in the past, relative to the current date.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["epochSeconds", "daysFromNow"]) + 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: + TimePoint.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/timerange.py b/src/glean/api_client/models/timerange.py index 7b703df7..7ac2cf3c 100644 --- a/src/glean/api_client/models/timerange.py +++ b/src/glean/api_client/models/timerange.py @@ -2,8 +2,9 @@ from __future__ import annotations from datetime import datetime -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -28,3 +29,25 @@ class TimeRange(BaseModel): Optional[int], pydantic.Field(alias="lastNDaysValue") ] = None r"""The number of days to look back from the current time, applicable for the LAST_N_DAYS type.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["startTime", "endTime", "lastNDaysValue"]) + 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: + TimeRange.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/timerangefilter.py b/src/glean/api_client/models/timerangefilter.py new file mode 100644 index 00000000..b8ad3178 --- /dev/null +++ b/src/glean/api_client/models/timerangefilter.py @@ -0,0 +1,69 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +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 field_serializer, model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class TimeRangeFilterTimePeriodType(str, Enum, metaclass=utils.OpenEnumMeta): + r"""The type of time period for which to filter findings.""" + + PAST_DAY = "PAST_DAY" + PAST_WEEK = "PAST_WEEK" + PAST_MONTH = "PAST_MONTH" + PAST_YEAR = "PAST_YEAR" + CUSTOM = "CUSTOM" + + +class TimeRangeFilterTypedDict(TypedDict): + time_period_type: NotRequired[TimeRangeFilterTimePeriodType] + r"""The type of time period for which to filter findings.""" + custom_time_range: NotRequired[TimeRangeTypedDict] + + +class TimeRangeFilter(BaseModel): + time_period_type: Annotated[ + Optional[TimeRangeFilterTimePeriodType], pydantic.Field(alias="timePeriodType") + ] = None + r"""The type of time period for which to filter findings.""" + + custom_time_range: Annotated[ + 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"]) + 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: + TimeRangeFilter.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/tool.py b/src/glean/api_client/models/tool.py index 45a31d22..86839d1b 100644 --- a/src/glean/api_client/models/tool.py +++ b/src/glean/api_client/models/tool.py @@ -3,13 +3,15 @@ from __future__ import annotations from .toolparameter import ToolParameter, ToolParameterTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -44,3 +46,36 @@ 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( + ["type", "name", "displayName", "description", "parameters"] + ) + 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: + Tool.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/toolinfo.py b/src/glean/api_client/models/toolinfo.py index 672bba86..9bbfdf32 100644 --- a/src/glean/api_client/models/toolinfo.py +++ b/src/glean/api_client/models/toolinfo.py @@ -3,7 +3,8 @@ from __future__ import annotations from .toolmetadata import ToolMetadata, ToolMetadataTypedDict from .writeactionparameter import WriteActionParameter, WriteActionParameterTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Dict, Optional from typing_extensions import NotRequired, TypedDict @@ -21,3 +22,19 @@ class ToolInfo(BaseModel): parameters: Optional[Dict[str, WriteActionParameter]] = None r"""Parameters supported by the tool.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["metadata", "parameters"]) + 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/toolmetadata.py b/src/glean/api_client/models/toolmetadata.py index 70c6bad8..a87122b4 100644 --- a/src/glean/api_client/models/toolmetadata.py +++ b/src/glean/api_client/models/toolmetadata.py @@ -6,20 +6,22 @@ from .personobject import PersonObject, PersonObjectTypedDict from datetime import datetime from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -27,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" @@ -35,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. @@ -169,3 +171,78 @@ class ToolMetadata(BaseModel): Optional[bool], pydantic.Field(alias="isSetupFinished") ] = 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( + [ + "toolId", + "logoUrl", + "objectName", + "knowledgeType", + "createdBy", + "lastUpdatedBy", + "createdAt", + "lastUpdatedAt", + "writeActionType", + "authType", + "auth", + "permissions", + "usageInstructions", + "isSetupFinished", + ] + ) + 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: + ToolMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/toolparameter.py b/src/glean/api_client/models/toolparameter.py index 91b81ce8..2e00547d 100644 --- a/src/glean/api_client/models/toolparameter.py +++ b/src/glean/api_client/models/toolparameter.py @@ -2,13 +2,15 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -56,3 +58,44 @@ 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( + [ + "type", + "name", + "description", + "isRequired", + "possibleValues", + "items", + "properties", + ] + ) + 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: + ToolParameter.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/toolscallparameter.py b/src/glean/api_client/models/toolscallparameter.py index 132fd96f..43b68c3e 100644 --- a/src/glean/api_client/models/toolscallparameter.py +++ b/src/glean/api_client/models/toolscallparameter.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Dict, List, Optional from typing_extensions import NotRequired, TypedDict @@ -29,3 +30,19 @@ class ToolsCallParameter(BaseModel): properties: Optional[Dict[str, ToolsCallParameter]] = None r"""The value of the parameter (for object types)""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["items", "properties"]) + 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/toolscallresponse.py b/src/glean/api_client/models/toolscallresponse.py index 797f3f57..9949402b 100644 --- a/src/glean/api_client/models/toolscallresponse.py +++ b/src/glean/api_client/models/toolscallresponse.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Any, Dict, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -22,3 +23,25 @@ class ToolsCallResponse(BaseModel): error: Optional[str] = None r"""The error message if applicable""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["rawResponse", "error"]) + 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: + ToolsCallResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/toolsets.py b/src/glean/api_client/models/toolsets.py index 8ef128a9..c1ecb2c2 100644 --- a/src/glean/api_client/models/toolsets.py +++ b/src/glean/api_client/models/toolsets.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -28,3 +29,25 @@ class ToolSets(BaseModel): Optional[bool], pydantic.Field(alias="enableCompanyTools") ] = None r"""Whether the agent is allowed to search internal company resources (default: true).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["enableWebSearch", "enableCompanyTools"]) + 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: + ToolSets.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/toolslistresponse.py b/src/glean/api_client/models/toolslistresponse.py index f544d750..8b5a32cc 100644 --- a/src/glean/api_client/models/toolslistresponse.py +++ b/src/glean/api_client/models/toolslistresponse.py @@ -2,7 +2,8 @@ from __future__ import annotations from .tool import Tool, ToolTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -13,3 +14,19 @@ class ToolsListResponseTypedDict(TypedDict): class ToolsListResponse(BaseModel): tools: Optional[List[Tool]] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["tools"]) + 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/ugctype.py b/src/glean/api_client/models/ugctype.py index 383b3994..7775bf5a 100644 --- a/src/glean/api_client/models/ugctype.py +++ b/src/glean/api_client/models/ugctype.py @@ -2,12 +2,27 @@ 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): + AGENT_TYPE = "AGENT_TYPE" ANNOUNCEMENTS_TYPE = "ANNOUNCEMENTS_TYPE" ANSWERS_TYPE = "ANSWERS_TYPE" + CHATS_TYPE = "CHATS_TYPE" COLLECTIONS_TYPE = "COLLECTIONS_TYPE" + EMAIL_TYPE = "EMAIL_TYPE" + HTML_CODE_TYPE = "HTML_CODE_TYPE" + IMAGE_TYPE = "IMAGE_TYPE" + MESSAGE_TYPE = "MESSAGE_TYPE" + PAPER_TYPE = "PAPER_TYPE" + PRISM_VIEWS_TYPE = "PRISM_VIEWS_TYPE" + PROMPT_TEMPLATES_TYPE = "PROMPT_TEMPLATES_TYPE" + PINS_TYPE = "PINS_TYPE" + SCRIBES_TYPE = "SCRIBES_TYPE" SHORTCUTS_TYPE = "SHORTCUTS_TYPE" + SLIDE_TYPE = "SLIDE_TYPE" + SPREADSHEET_TYPE = "SPREADSHEET_TYPE" + INLINE_HTML_TYPE = "INLINE_HTML_TYPE" + PODCAST_TYPE = "PODCAST_TYPE" WORKFLOWS_TYPE = "WORKFLOWS_TYPE" - PROMPT_TEMPLATES_TYPE = "PROMPT_TEMPLATES_TYPE" diff --git a/src/glean/api_client/models/unauthorizeddatasourceinstance.py b/src/glean/api_client/models/unauthorizeddatasourceinstance.py new file mode 100644 index 00000000..526f7724 --- /dev/null +++ b/src/glean/api_client/models/unauthorizeddatasourceinstance.py @@ -0,0 +1,86 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +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 field_serializer, model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class UnauthorizedDatasourceInstanceTypedDict(TypedDict): + r"""A datasource instance that could not return results for this request because the user has not completed or has expired per-user OAuth.""" + + datasource_instance: NotRequired[str] + r"""The instance identifier (e.g. \"github\", \"github_enterprise_0\", \"slack_0\"). Matches the instance names used in datasource configuration. + + """ + display_name: NotRequired[str] + r"""Human-readable name of the datasource instance for display.""" + auth_status: NotRequired[AuthStatus] + r"""The per-user authorization status for a datasource.""" + auth_url_relative_path: NotRequired[str] + r"""Relative path to initiate or resume OAuth for the current user and instance, including a one-time authentication token as a query parameter. Clients should prepend their configured Glean backend base URL. + + """ + + +class UnauthorizedDatasourceInstance(BaseModel): + r"""A datasource instance that could not return results for this request because the user has not completed or has expired per-user OAuth.""" + + datasource_instance: Annotated[ + Optional[str], pydantic.Field(alias="datasourceInstance") + ] = None + r"""The instance identifier (e.g. \"github\", \"github_enterprise_0\", \"slack_0\"). Matches the instance names used in datasource configuration. + + """ + + display_name: Annotated[Optional[str], pydantic.Field(alias="displayName")] = None + r"""Human-readable name of the datasource instance for display.""" + + auth_status: Annotated[Optional[AuthStatus], pydantic.Field(alias="authStatus")] = ( + None + ) + r"""The per-user authorization status for a datasource.""" + + auth_url_relative_path: Annotated[ + Optional[str], pydantic.Field(alias="authUrlRelativePath") + ] = None + r"""Relative path to initiate or resume OAuth for the current user and instance, including a one-time authentication token as a query parameter. Clients should prepend their configured Glean backend base URL. + + """ + + @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( + ["datasourceInstance", "displayName", "authStatus", "authUrlRelativePath"] + ) + 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: + UnauthorizedDatasourceInstance.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/unpin.py b/src/glean/api_client/models/unpin.py index a4c49e40..406ddefe 100644 --- a/src/glean/api_client/models/unpin.py +++ b/src/glean/api_client/models/unpin.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -14,3 +15,19 @@ class UnpinTypedDict(TypedDict): class Unpin(BaseModel): id: Optional[str] = None r"""The opaque id of the pin to be unpinned.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id"]) + 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/unpinop.py b/src/glean/api_client/models/unpinop.py new file mode 100644 index 00000000..788b1fdb --- /dev/null +++ b/src/glean/api_client/models/unpinop.py @@ -0,0 +1,45 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .unpin import Unpin, UnpinTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class UnpinRequestTypedDict(TypedDict): + unpin: UnpinTypedDict + r"""Details about the pin being unpinned.""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class UnpinRequest(BaseModel): + unpin: Annotated[ + Unpin, FieldMetadata(request=RequestMetadata(media_type="application/json")) + ] + r"""Details about the pin being unpinned.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/updateannouncementop.py b/src/glean/api_client/models/updateannouncementop.py new file mode 100644 index 00000000..8ccce4d0 --- /dev/null +++ b/src/glean/api_client/models/updateannouncementop.py @@ -0,0 +1,49 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .updateannouncementrequest import ( + UpdateAnnouncementRequest, + UpdateAnnouncementRequestTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class UpdateannouncementRequestRequestTypedDict(TypedDict): + update_announcement_request: UpdateAnnouncementRequestTypedDict + r"""Announcement content. Id need to be specified for the announcement.""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class UpdateannouncementRequestRequest(BaseModel): + update_announcement_request: Annotated[ + UpdateAnnouncementRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Announcement content. Id need to be specified for the announcement.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/updateannouncementrequest.py b/src/glean/api_client/models/updateannouncementrequest.py index 21c7532d..04efd103 100644 --- a/src/glean/api_client/models/updateannouncementrequest.py +++ b/src/glean/api_client/models/updateannouncementrequest.py @@ -6,8 +6,9 @@ from .thumbnail import Thumbnail, ThumbnailTypedDict from datetime import datetime from enum import Enum -from glean.api_client.types import BaseModel +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 @@ -108,3 +109,39 @@ class UpdateAnnouncementRequest(BaseModel): view_url: Annotated[Optional[str], pydantic.Field(alias="viewUrl")] = None r"""URL for viewing the announcement. It will be set to document URL for announcements from other datasources e.g. simpplr. Can only be written when channel=\"SOCIAL_FEED\".""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "body", + "emoji", + "thumbnail", + "banner", + "audienceFilters", + "sourceDocumentId", + "hideAttribution", + "channel", + "postType", + "isPrioritized", + "viewUrl", + ] + ) + 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: + UpdateAnnouncementRequest.model_rebuild() +except NameError: + pass 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 c6066cc3..dfa51ced 100644 --- a/src/glean/api_client/models/updatedlpconfigrequest.py +++ b/src/glean/api_client/models/updatedlpconfigrequest.py @@ -2,7 +2,8 @@ from __future__ import annotations from .dlpconfig import DlpConfig, DlpConfigTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -20,3 +21,19 @@ class UpdateDlpConfigRequest(BaseModel): frequency: Optional[str] = None r"""Only \"ONCE\" is supported for reports.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["config", "frequency"]) + 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/updatedlpconfigresponse.py b/src/glean/api_client/models/updatedlpconfigresponse.py index ff266a09..216e80d9 100644 --- a/src/glean/api_client/models/updatedlpconfigresponse.py +++ b/src/glean/api_client/models/updatedlpconfigresponse.py @@ -2,8 +2,10 @@ from __future__ import annotations from .dlpsimpleresult import DlpSimpleResult -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -19,3 +21,34 @@ 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"]) + 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: + UpdateDlpConfigResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/updatedlpreportrequest.py b/src/glean/api_client/models/updatedlpreportrequest.py index d7ca51b1..8fdd3dd1 100644 --- a/src/glean/api_client/models/updatedlpreportrequest.py +++ b/src/glean/api_client/models/updatedlpreportrequest.py @@ -4,8 +4,10 @@ from .dlpconfig import DlpConfig, DlpConfigTypedDict from .dlpfrequency import DlpFrequency from .dlpreportstatus import DlpReportStatus -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -40,3 +42,45 @@ 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( + ["config", "frequency", "status", "autoHideDocs", "reportName"] + ) + 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: + UpdateDlpReportRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/updatedlpreportresponse.py b/src/glean/api_client/models/updatedlpreportresponse.py index ce3171a3..ecb9e43f 100644 --- a/src/glean/api_client/models/updatedlpreportresponse.py +++ b/src/glean/api_client/models/updatedlpreportresponse.py @@ -2,7 +2,9 @@ from __future__ import annotations from .dlpsimpleresult import DlpSimpleResult -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -13,3 +15,28 @@ 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"]) + 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/updatedocumentvisibilityoverridesrequest.py b/src/glean/api_client/models/updatedocumentvisibilityoverridesrequest.py index fd268508..94e18dac 100644 --- a/src/glean/api_client/models/updatedocumentvisibilityoverridesrequest.py +++ b/src/glean/api_client/models/updatedocumentvisibilityoverridesrequest.py @@ -5,8 +5,9 @@ DocumentVisibilityOverride, DocumentVisibilityOverrideTypedDict, ) -from glean.api_client.types import BaseModel +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 @@ -20,3 +21,25 @@ class UpdateDocumentVisibilityOverridesRequest(BaseModel): Optional[List[DocumentVisibilityOverride]], pydantic.Field(alias="visibilityOverrides"), ] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["visibilityOverrides"]) + 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: + UpdateDocumentVisibilityOverridesRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/updatedocumentvisibilityoverridesresponse.py b/src/glean/api_client/models/updatedocumentvisibilityoverridesresponse.py index e2a3e0fd..48078741 100644 --- a/src/glean/api_client/models/updatedocumentvisibilityoverridesresponse.py +++ b/src/glean/api_client/models/updatedocumentvisibilityoverridesresponse.py @@ -5,7 +5,8 @@ DocumentVisibilityUpdateResult, DocumentVisibilityUpdateResultTypedDict, ) -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -18,3 +19,19 @@ class UpdateDocumentVisibilityOverridesResponseTypedDict(TypedDict): class UpdateDocumentVisibilityOverridesResponse(BaseModel): results: Optional[List[DocumentVisibilityUpdateResult]] = None r"""The documents and whether their visibility was successfully updated.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["results"]) + 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/updatepermissionsrequest.py b/src/glean/api_client/models/updatepermissionsrequest.py index c8040633..0c622986 100644 --- a/src/glean/api_client/models/updatepermissionsrequest.py +++ b/src/glean/api_client/models/updatepermissionsrequest.py @@ -5,8 +5,9 @@ DocumentPermissionsDefinition, DocumentPermissionsDefinitionTypedDict, ) -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -45,3 +46,25 @@ class UpdatePermissionsRequest(BaseModel): r"""The permalink for viewing the document. **Note: viewURL is a required field if id was not set when uploading the document.**' """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["objectType", "id", "viewURL"]) + 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: + UpdatePermissionsRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/updateshortcutop.py b/src/glean/api_client/models/updateshortcutop.py new file mode 100644 index 00000000..f047f8ac --- /dev/null +++ b/src/glean/api_client/models/updateshortcutop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .updateshortcutrequest import UpdateShortcutRequest, UpdateShortcutRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class UpdateshortcutRequestRequestTypedDict(TypedDict): + update_shortcut_request: UpdateShortcutRequestTypedDict + r"""Shortcut content. Id need to be specified for the shortcut.""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class UpdateshortcutRequestRequest(BaseModel): + update_shortcut_request: Annotated[ + UpdateShortcutRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Shortcut content. Id need to be specified for the shortcut.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/updateshortcutrequest.py b/src/glean/api_client/models/updateshortcutrequest.py index ef0bd710..4b89b63a 100644 --- a/src/glean/api_client/models/updateshortcutrequest.py +++ b/src/glean/api_client/models/updateshortcutrequest.py @@ -2,8 +2,9 @@ from __future__ import annotations from .userrolespecification import UserRoleSpecification, UserRoleSpecificationTypedDict -from glean.api_client.types import BaseModel +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 @@ -64,3 +65,36 @@ class UpdateShortcutRequest(BaseModel): Optional[List[UserRoleSpecification]], pydantic.Field(alias="removedRoles") ] = None r"""A list of user roles removed for the Shortcut.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "inputAlias", + "destinationUrl", + "destinationDocumentId", + "description", + "unlisted", + "urlTemplate", + "addedRoles", + "removedRoles", + ] + ) + 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: + UpdateShortcutRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/updateshortcutresponse.py b/src/glean/api_client/models/updateshortcutresponse.py index c7798e9a..9c51a9a4 100644 --- a/src/glean/api_client/models/updateshortcutresponse.py +++ b/src/glean/api_client/models/updateshortcutresponse.py @@ -3,7 +3,8 @@ from __future__ import annotations from .shortcut import Shortcut, ShortcutTypedDict from .shortcuterror import ShortcutError, ShortcutErrorTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -17,3 +18,19 @@ class UpdateShortcutResponse(BaseModel): shortcut: Optional[Shortcut] = None error: Optional[ShortcutError] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["shortcut", "error"]) + 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/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 8659c6a0..4aafc910 100644 --- a/src/glean/api_client/models/uploadchatfilesop.py +++ b/src/glean/api_client/models/uploadchatfilesop.py @@ -5,15 +5,18 @@ UploadChatFilesRequest, UploadChatFilesRequestTypedDict, ) -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict class UploadchatfilesRequestRequestTypedDict(TypedDict): upload_chat_files_request: UploadChatFilesRequestTypedDict + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" timezone_offset: NotRequired[int] r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" @@ -24,9 +27,31 @@ class UploadchatfilesRequestRequest(BaseModel): FieldMetadata(request=RequestMetadata(media_type="multipart/form-data")), ] + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + timezone_offset: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset"), FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None r"""The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale", "timezoneOffset"]) + 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/uploadchatfilesrequest.py b/src/glean/api_client/models/uploadchatfilesrequest.py index c169f4ac..8e8d01c0 100644 --- a/src/glean/api_client/models/uploadchatfilesrequest.py +++ b/src/glean/api_client/models/uploadchatfilesrequest.py @@ -1,10 +1,11 @@ """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.types import BaseModel, UNSET_SENTINEL from glean.api_client.utils import FieldMetadata, MultipartFormMetadata import io import pydantic +from pydantic import model_serializer from typing import IO, List, Optional, Union from typing_extensions import Annotated, NotRequired, TypedDict @@ -32,6 +33,22 @@ class File(BaseModel): FieldMetadata(multipart=True), ] = None + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["contentType"]) + 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 + class UploadChatFilesRequestTypedDict(TypedDict): files: List[FileTypedDict] diff --git a/src/glean/api_client/models/uploadchatfilesresponse.py b/src/glean/api_client/models/uploadchatfilesresponse.py index 976f3665..a707d722 100644 --- a/src/glean/api_client/models/uploadchatfilesresponse.py +++ b/src/glean/api_client/models/uploadchatfilesresponse.py @@ -2,7 +2,8 @@ from __future__ import annotations from .chatfile import ChatFile, ChatFileTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -15,3 +16,19 @@ class UploadChatFilesResponseTypedDict(TypedDict): class UploadChatFilesResponse(BaseModel): files: Optional[List[ChatFile]] = None r"""Files uploaded for chat.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["files"]) + 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/uploadshortcutsrequest.py b/src/glean/api_client/models/uploadshortcutsrequest.py index 9043d477..e73b9c17 100644 --- a/src/glean/api_client/models/uploadshortcutsrequest.py +++ b/src/glean/api_client/models/uploadshortcutsrequest.py @@ -2,8 +2,9 @@ from __future__ import annotations from .indexingshortcut import IndexingShortcut, IndexingShortcutTypedDict -from glean.api_client.types import BaseModel +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 @@ -42,3 +43,25 @@ class UploadShortcutsRequest(BaseModel): Optional[bool], pydantic.Field(alias="forceRestartUpload") ] = None r"""Flag to discard previous upload attempts and start from scratch. Must be specified with isFirstPage=true""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["isFirstPage", "isLastPage", "forceRestartUpload"]) + 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: + UploadShortcutsRequest.model_rebuild() +except NameError: + pass 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 733b3be3..3a8ab795 100644 --- a/src/glean/api_client/models/user.py +++ b/src/glean/api_client/models/user.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -20,3 +21,25 @@ class User(BaseModel): orig_id: Annotated[Optional[str], pydantic.Field(alias="origID")] = None r"""An opaque user ID for the authenticated user (ignores actas).""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["userID", "origID"]) + 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: + User.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/useractivity.py b/src/glean/api_client/models/useractivity.py index 462905bb..17d6333e 100644 --- a/src/glean/api_client/models/useractivity.py +++ b/src/glean/api_client/models/useractivity.py @@ -4,13 +4,15 @@ from .countinfo import CountInfo, CountInfoTypedDict from .person import Person, PersonTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -50,3 +52,34 @@ class UserActivity(BaseModel): aggregate_visit_count: Annotated[ 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"]) + 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: + UserActivity.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/useractivityinsight.py b/src/glean/api_client/models/useractivityinsight.py index 309f88a6..692a1035 100644 --- a/src/glean/api_client/models/useractivityinsight.py +++ b/src/glean/api_client/models/useractivityinsight.py @@ -4,13 +4,15 @@ from .countinfo import CountInfo, CountInfoTypedDict from .person import Person, PersonTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -45,3 +47,36 @@ class UserActivityInsight(BaseModel): active_day_count: Annotated[ 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( + ["lastActivityTimestamp", "activityCount", "activeDayCount"] + ) + 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: + UserActivityInsight.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/usergeneratedcontentid.py b/src/glean/api_client/models/usergeneratedcontentid.py index c5655d64..cd30606c 100644 --- a/src/glean/api_client/models/usergeneratedcontentid.py +++ b/src/glean/api_client/models/usergeneratedcontentid.py @@ -1,7 +1,8 @@ """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.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -14,3 +15,19 @@ class UserGeneratedContentIDTypedDict(TypedDict): class UserGeneratedContentID(BaseModel): id: Optional[int] = None r"""The opaque id of the user generated content.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["id"]) + 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/userinsightsresponse.py b/src/glean/api_client/models/userinsightsresponse.py deleted file mode 100644 index 7e01f2ba..00000000 --- a/src/glean/api_client/models/userinsightsresponse.py +++ /dev/null @@ -1,53 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from .useractivityinsight import UserActivityInsight, UserActivityInsightTypedDict -from glean.api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class UserInsightsResponseTypedDict(TypedDict): - last_log_timestamp: NotRequired[int] - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - activity_insights: NotRequired[List[UserActivityInsightTypedDict]] - r"""Insights for all active users with respect to set of actions.""" - inactive_insights: NotRequired[List[UserActivityInsightTypedDict]] - r"""Insights for all in inactive users with respect to set of actions and time period. Activity count will be set to 0.""" - total_teammates: NotRequired[int] - r"""Total number of teammates that have logged in to the product, that are still valid teammates.""" - total_active_users: NotRequired[int] - r"""Total number of active users in the requested period.""" - departments: NotRequired[List[str]] - r"""list of departments applicable for users tab.""" - - -class UserInsightsResponse(BaseModel): - last_log_timestamp: Annotated[ - Optional[int], pydantic.Field(alias="lastLogTimestamp") - ] = None - r"""Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC).""" - - activity_insights: Annotated[ - Optional[List[UserActivityInsight]], pydantic.Field(alias="activityInsights") - ] = None - r"""Insights for all active users with respect to set of actions.""" - - inactive_insights: Annotated[ - Optional[List[UserActivityInsight]], pydantic.Field(alias="inactiveInsights") - ] = None - r"""Insights for all in inactive users with respect to set of actions and time period. Activity count will be set to 0.""" - - total_teammates: Annotated[ - Optional[int], pydantic.Field(alias="totalTeammates") - ] = None - r"""Total number of teammates that have logged in to the product, that are still valid teammates.""" - - total_active_users: Annotated[ - Optional[int], pydantic.Field(alias="totalActiveUsers") - ] = None - r"""Total number of active users in the requested period.""" - - departments: Optional[List[str]] = None - r"""list of departments applicable for users tab.""" diff --git a/src/glean/api_client/models/userreferencedefinition.py b/src/glean/api_client/models/userreferencedefinition.py index 531dd213..ae7ab296 100644 --- a/src/glean/api_client/models/userreferencedefinition.py +++ b/src/glean/api_client/models/userreferencedefinition.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -27,3 +28,25 @@ class UserReferenceDefinition(BaseModel): r"""some datasources refer to the user by the datasource user id in the document""" name: Optional[str] = None + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["email", "datasourceUserId", "name"]) + 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: + UserReferenceDefinition.model_rebuild() +except NameError: + pass 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 2330faaf..485de693 100644 --- a/src/glean/api_client/models/userrolespecification.py +++ b/src/glean/api_client/models/userrolespecification.py @@ -4,8 +4,10 @@ from .documentspec_union import DocumentSpecUnion, DocumentSpecUnionTypedDict from .group import Group, GroupTypedDict from .userrole import UserRole -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -32,3 +34,34 @@ class UserRoleSpecification(BaseModel): person: Optional["Person"] = None 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"]) + 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: + UserRoleSpecification.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/userstatusresponse.py b/src/glean/api_client/models/userstatusresponse.py index c9189228..0ee6f353 100644 --- a/src/glean/api_client/models/userstatusresponse.py +++ b/src/glean/api_client/models/userstatusresponse.py @@ -2,8 +2,10 @@ from __future__ import annotations from .uploadstatusenum import UploadStatusEnum -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -36,3 +38,34 @@ class UserStatusResponse(BaseModel): Optional[str], pydantic.Field(alias="lastUploadedAt") ] = 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"]) + 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: + UserStatusResponse.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/userviewinfo.py b/src/glean/api_client/models/userviewinfo.py index a8b4831f..9dfde209 100644 --- a/src/glean/api_client/models/userviewinfo.py +++ b/src/glean/api_client/models/userviewinfo.py @@ -1,8 +1,9 @@ """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.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -25,3 +26,25 @@ class UserViewInfo(BaseModel): doc_url: Annotated[Optional[str], pydantic.Field(alias="docUrl")] = None r"""URL of associated document.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["docId", "docTitle", "docUrl"]) + 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: + UserViewInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/verification.py b/src/glean/api_client/models/verification.py index 503085a1..014203d0 100644 --- a/src/glean/api_client/models/verification.py +++ b/src/glean/api_client/models/verification.py @@ -2,7 +2,9 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import field_serializer, model_serializer from typing import Optional, TYPE_CHECKING from typing_extensions import NotRequired, TypedDict @@ -13,7 +15,7 @@ ) -class State(str, Enum): +class State(str, Enum, metaclass=utils.OpenEnumMeta): r"""The verification state for the document.""" UNVERIFIED = "UNVERIFIED" @@ -32,3 +34,28 @@ class Verification(BaseModel): r"""The verification state for the document.""" 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"]) + 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/verificationfeed.py b/src/glean/api_client/models/verificationfeed.py index e2ac050e..46752ed8 100644 --- a/src/glean/api_client/models/verificationfeed.py +++ b/src/glean/api_client/models/verificationfeed.py @@ -2,7 +2,8 @@ from __future__ import annotations from .verification import Verification, VerificationTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import List, Optional from typing_extensions import NotRequired, TypedDict @@ -15,3 +16,19 @@ class VerificationFeedTypedDict(TypedDict): class VerificationFeed(BaseModel): documents: Optional[List[Verification]] = None r"""List of document infos that include verification related information for them.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["documents"]) + 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/verificationmetadata.py b/src/glean/api_client/models/verificationmetadata.py index 14a25e02..a04d6ea3 100644 --- a/src/glean/api_client/models/verificationmetadata.py +++ b/src/glean/api_client/models/verificationmetadata.py @@ -2,8 +2,9 @@ from __future__ import annotations from .countinfo import CountInfo, CountInfoTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import List, Optional, TYPE_CHECKING from typing_extensions import Annotated, NotRequired, TypedDict @@ -60,3 +61,36 @@ class VerificationMetadata(BaseModel): Optional[List["Person"]], pydantic.Field(alias="candidateVerifiers") ] = None r"""List of potential verifiers for the document e.g. old verifiers and/or users with view/edit permissions.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "lastVerifier", + "lastVerificationTs", + "expirationTs", + "document", + "reminders", + "lastReminder", + "visitorCount", + "candidateVerifiers", + ] + ) + 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: + VerificationMetadata.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/verifyop.py b/src/glean/api_client/models/verifyop.py new file mode 100644 index 00000000..c4c3e681 --- /dev/null +++ b/src/glean/api_client/models/verifyop.py @@ -0,0 +1,46 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .verifyrequest import VerifyRequest, VerifyRequestTypedDict +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import FieldMetadata, QueryParamMetadata, RequestMetadata +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class VerifyRequestRequestTypedDict(TypedDict): + verify_request: VerifyRequestTypedDict + r"""Details about the verification request.""" + locale: NotRequired[str] + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + +class VerifyRequestRequest(BaseModel): + verify_request: Annotated[ + VerifyRequest, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + r"""Details about the verification request.""" + + locale: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["locale"]) + 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/verifyrequest.py b/src/glean/api_client/models/verifyrequest.py index a06f5f05..7c93b46f 100644 --- a/src/glean/api_client/models/verifyrequest.py +++ b/src/glean/api_client/models/verifyrequest.py @@ -2,8 +2,9 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -29,3 +30,25 @@ class VerifyRequest(BaseModel): action: Optional[VerifyRequestAction] = None r"""The verification action requested.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["action"]) + 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: + VerifyRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/viewerinfo.py b/src/glean/api_client/models/viewerinfo.py index 1854c828..c85d80b8 100644 --- a/src/glean/api_client/models/viewerinfo.py +++ b/src/glean/api_client/models/viewerinfo.py @@ -3,16 +3,18 @@ from __future__ import annotations from datetime import datetime from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict, deprecated @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-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" @@ -30,7 +32,7 @@ class ViewerInfo(BaseModel): role: Annotated[ Optional[Role], 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 permissions instead." ), ] = None r"""DEPRECATED - use permissions instead. Viewer's role on the specific document.""" @@ -38,3 +40,34 @@ class ViewerInfo(BaseModel): last_viewed_time: Annotated[ 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"]) + 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: + ViewerInfo.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/workflow.py b/src/glean/api_client/models/workflow.py index 99c5e8df..defc45e2 100644 --- a/src/glean/api_client/models/workflow.py +++ b/src/glean/api_client/models/workflow.py @@ -3,8 +3,9 @@ from __future__ import annotations from .objectpermissions import ObjectPermissions, ObjectPermissionsTypedDict from .person import Person, PersonTypedDict -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -17,10 +18,19 @@ class WorkflowTypedDict(TypedDict): r"""Server Unix timestamp of the creation time.""" last_update_timestamp: NotRequired[int] r"""Server Unix timestamp of the last update time.""" + last_draft_saved_at: NotRequired[int] + r"""Server Unix timestamp of the last time the draft was saved.""" + last_draft_saved_by: NotRequired[PersonTypedDict] + last_draft_git_author_id: NotRequired[str] + r"""ID of the VCS user (e.g. GitHub username) who last saved the draft. Set only by the draft save path via the external Git integration API.""" last_updated_by: NotRequired[PersonTypedDict] permissions: NotRequired[ObjectPermissionsTypedDict] id: NotRequired[str] r"""The ID of the workflow.""" + verified: NotRequired[bool] + r"""When present, indicates this workflow is admin-verified. Set via the dedicated admin settings endpoint, not by regular edits.""" + show_organization_as_author: NotRequired[bool] + r"""When true, displays organization name instead of author name in agent card. Set via the dedicated admin settings endpoint, not by regular edits.""" class Workflow(BaseModel): @@ -39,6 +49,20 @@ class Workflow(BaseModel): ] = None r"""Server Unix timestamp of the last update time.""" + last_draft_saved_at: Annotated[ + Optional[int], pydantic.Field(alias="lastDraftSavedAt") + ] = None + r"""Server Unix timestamp of the last time the draft was saved.""" + + last_draft_saved_by: Annotated[ + Optional[Person], pydantic.Field(alias="lastDraftSavedBy") + ] = None + + last_draft_git_author_id: Annotated[ + Optional[str], pydantic.Field(alias="lastDraftGitAuthorId") + ] = None + r"""ID of the VCS user (e.g. GitHub username) who last saved the draft. Set only by the draft save path via the external Git integration API.""" + last_updated_by: Annotated[ Optional[Person], pydantic.Field(alias="lastUpdatedBy") ] = None @@ -47,3 +71,48 @@ class Workflow(BaseModel): id: Optional[str] = None r"""The ID of the workflow.""" + + verified: Optional[bool] = None + r"""When present, indicates this workflow is admin-verified. Set via the dedicated admin settings endpoint, not by regular edits.""" + + show_organization_as_author: Annotated[ + Optional[bool], pydantic.Field(alias="showOrganizationAsAuthor") + ] = None + r"""When true, displays organization name instead of author name in agent card. Set via the dedicated admin settings endpoint, not by regular edits.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + [ + "name", + "author", + "createTimestamp", + "lastUpdateTimestamp", + "lastDraftSavedAt", + "lastDraftSavedBy", + "lastDraftGitAuthorId", + "lastUpdatedBy", + "permissions", + "id", + "verified", + "showOrganizationAsAuthor", + ] + ) + 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: + Workflow.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/workflowfeedbackinfo.py b/src/glean/api_client/models/workflowfeedbackinfo.py index 5326dfe3..a0d06dbc 100644 --- a/src/glean/api_client/models/workflowfeedbackinfo.py +++ b/src/glean/api_client/models/workflowfeedbackinfo.py @@ -2,7 +2,8 @@ from __future__ import annotations from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from pydantic import model_serializer from typing import Optional from typing_extensions import NotRequired, TypedDict @@ -23,3 +24,19 @@ class WorkflowFeedbackInfoTypedDict(TypedDict): class WorkflowFeedbackInfo(BaseModel): source: Optional[WorkflowFeedbackInfoSource] = None r"""Where the feedback of the workflow originated from""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["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/writeactionparameter.py b/src/glean/api_client/models/writeactionparameter.py index e425de28..65b3d94c 100644 --- a/src/glean/api_client/models/writeactionparameter.py +++ b/src/glean/api_client/models/writeactionparameter.py @@ -3,13 +3,15 @@ from __future__ import annotations from .possiblevalue import PossibleValue, PossibleValueTypedDict from enum import Enum -from glean.api_client.types import BaseModel +from glean.api_client import models, utils +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +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" @@ -53,3 +55,43 @@ class WriteActionParameter(BaseModel): Optional[List[PossibleValue]], pydantic.Field(alias="possibleValues") ] = 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( + [ + "type", + "displayName", + "value", + "isRequired", + "description", + "possibleValues", + ] + ) + 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: + WriteActionParameter.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/writepermission.py b/src/glean/api_client/models/writepermission.py index d7511267..85e816dc 100644 --- a/src/glean/api_client/models/writepermission.py +++ b/src/glean/api_client/models/writepermission.py @@ -2,8 +2,10 @@ from __future__ import annotations from .scopetype import ScopeType -from glean.api_client.types import BaseModel +from glean.api_client import models +from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic +from pydantic import field_serializer, model_serializer from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -35,3 +37,34 @@ 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"]) + 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: + WritePermission.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/people.py b/src/glean/api_client/people.py index d669b960..8f853d2a 100644 --- a/src/glean/api_client/people.py +++ b/src/glean/api_client/people.py @@ -72,6 +72,7 @@ def debug( "json", models.DebugUserRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -94,7 +95,7 @@ def debug( ), ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -170,6 +171,7 @@ async def debug_async( "json", models.DebugUserRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -192,7 +194,7 @@ async def debug_async( ), ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -208,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, @@ -262,6 +264,7 @@ def count( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.GetUserCountRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -284,7 +287,7 @@ def count( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -300,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, @@ -354,6 +357,7 @@ async def count_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.GetUserCountRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -376,7 +380,7 @@ async def count_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -405,7 +409,7 @@ def index( ): r"""Index employee - Adds an employee or updates information about an employee + Adds an employee or replaces the existing information about an employee. :param employee: Describes employee info :param version: Version number for the employee object. If absent or 0 then no version checks are done @@ -445,6 +449,7 @@ def index( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.IndexEmployeeRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -467,7 +472,7 @@ def index( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -496,7 +501,7 @@ async def index_async( ): r"""Index employee - Adds an employee or updates information about an employee + Adds an employee or replaces the existing information about an employee. :param employee: Describes employee info :param version: Version number for the employee object. If absent or 0 then no version checks are done @@ -536,6 +541,7 @@ async def index_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.IndexEmployeeRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -558,7 +564,7 @@ async def index_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -573,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, *, @@ -642,6 +651,7 @@ def bulk_index( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.BulkIndexEmployeesRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -664,7 +674,7 @@ def bulk_index( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -679,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, *, @@ -748,6 +761,7 @@ async def bulk_index_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.BulkIndexEmployeesRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -770,7 +784,7 @@ async def bulk_index_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -825,6 +839,7 @@ def process_all_employees_and_teams( accept_header_value="*/*", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -847,7 +862,7 @@ def process_all_employees_and_teams( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -902,6 +917,7 @@ async def process_all_employees_and_teams_async( accept_header_value="*/*", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -924,7 +940,7 @@ async def process_all_employees_and_teams_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -991,6 +1007,7 @@ def delete( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.DeleteEmployeeRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1013,7 +1030,7 @@ def delete( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1080,6 +1097,7 @@ async def delete_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.DeleteEmployeeRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1102,7 +1120,7 @@ async def delete_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1169,6 +1187,7 @@ def index_team( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.IndexTeamRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1191,7 +1210,7 @@ def index_team( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1258,6 +1277,7 @@ async def index_team_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.IndexTeamRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1280,7 +1300,7 @@ async def index_team_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1344,6 +1364,7 @@ def delete_team( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.DeleteTeamRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1366,7 +1387,7 @@ def delete_team( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1430,6 +1451,7 @@ async def delete_team_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.DeleteTeamRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1452,7 +1474,7 @@ async def delete_team_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1530,6 +1552,7 @@ def bulk_index_teams( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.BulkIndexTeamsRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1552,7 +1575,7 @@ def bulk_index_teams( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1630,6 +1653,7 @@ async def bulk_index_teams_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.BulkIndexTeamsRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1652,7 +1676,7 @@ async def bulk_index_teams_async( ), ), request=req, - error_status_codes=["400", "401", "409", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/pins.py b/src/glean/api_client/pins.py index d48d09ce..0127c007 100644 --- a/src/glean/api_client/pins.py +++ b/src/glean/api_client/pins.py @@ -3,16 +3,17 @@ 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 BaseModel, OptionalNullable, UNSET +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, cast +from typing import List, Mapping, Optional, Union class Pins(BaseSDK): def update( self, *, + locale: Optional[str] = None, queries: Optional[List[str]] = None, audience_filters: Optional[ Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] @@ -27,6 +28,7 @@ def update( Update an existing user-generated pin. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param queries: The query strings for which the pinned result will show. :param audience_filters: Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. :param id: The opaque id of the pin to be edited. @@ -45,12 +47,15 @@ def update( else: base_url = self._get_url(base_url, url_variables) - request = models.EditPinRequest( - queries=queries, - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.EditpinRequestRequest( + locale=locale, + edit_pin_request=models.EditPinRequest( + queries=queries, + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + id=id, ), - id=id, ) req = self._build_request( @@ -67,8 +72,9 @@ def update( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.EditPinRequest + request.edit_pin_request, False, False, "json", models.EditPinRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -91,7 +97,7 @@ def update( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -109,6 +115,7 @@ def update( async def update_async( self, *, + locale: Optional[str] = None, queries: Optional[List[str]] = None, audience_filters: Optional[ Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] @@ -123,6 +130,7 @@ async def update_async( Update an existing user-generated pin. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param queries: The query strings for which the pinned result will show. :param audience_filters: Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. :param id: The opaque id of the pin to be edited. @@ -141,12 +149,15 @@ async def update_async( else: base_url = self._get_url(base_url, url_variables) - request = models.EditPinRequest( - queries=queries, - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.EditpinRequestRequest( + locale=locale, + edit_pin_request=models.EditPinRequest( + queries=queries, + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + id=id, ), - id=id, ) req = self._build_request_async( @@ -163,8 +174,9 @@ async def update_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.EditPinRequest + request.edit_pin_request, False, False, "json", models.EditPinRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -187,7 +199,7 @@ async def update_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -205,6 +217,7 @@ async def update_async( def retrieve( self, *, + locale: Optional[str] = None, id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -215,6 +228,7 @@ def retrieve( Read pin details given its ID. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param id: The opaque id of the pin to be fetched. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -231,8 +245,11 @@ def retrieve( else: base_url = self._get_url(base_url, url_variables) - request = models.GetPinRequest( - id=id, + request = models.GetpinRequestRequest( + locale=locale, + get_pin_request=models.GetPinRequest( + id=id, + ), ) req = self._build_request( @@ -249,8 +266,9 @@ def retrieve( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetPinRequest + request.get_pin_request, False, False, "json", models.GetPinRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -273,7 +291,7 @@ def retrieve( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -291,6 +309,7 @@ def retrieve( async def retrieve_async( self, *, + locale: Optional[str] = None, id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -301,6 +320,7 @@ async def retrieve_async( Read pin details given its ID. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param id: The opaque id of the pin to be fetched. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -317,8 +337,11 @@ async def retrieve_async( else: base_url = self._get_url(base_url, url_variables) - request = models.GetPinRequest( - id=id, + request = models.GetpinRequestRequest( + locale=locale, + get_pin_request=models.GetPinRequest( + id=id, + ), ) req = self._build_request_async( @@ -335,8 +358,9 @@ async def retrieve_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.GetPinRequest + request.get_pin_request, False, False, "json", models.GetPinRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -359,7 +383,7 @@ async def retrieve_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -377,7 +401,10 @@ async def retrieve_async( def list( self, *, - request: Union[models.ListpinsRequest, models.ListpinsRequestTypedDict], + request_body: Union[ + models.ListpinsRequestBody, models.ListpinsRequestBodyTypedDict + ], + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -387,7 +414,8 @@ def list( Lists all pins. - :param request: The request object to send. + :param request_body: List pins request + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :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 @@ -403,9 +431,12 @@ def list( else: base_url = self._get_url(base_url, url_variables) - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, models.ListpinsRequest) - request = cast(models.ListpinsRequest, request) + request = models.ListpinsRequest( + locale=locale, + request_body=utils.get_pydantic_model( + request_body, models.ListpinsRequestBody + ), + ) req = self._build_request( method="POST", @@ -421,8 +452,9 @@ def list( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ListpinsRequest + request.request_body, False, False, "json", models.ListpinsRequestBody ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -445,7 +477,7 @@ def list( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -463,7 +495,10 @@ def list( async def list_async( self, *, - request: Union[models.ListpinsRequest, models.ListpinsRequestTypedDict], + request_body: Union[ + models.ListpinsRequestBody, models.ListpinsRequestBodyTypedDict + ], + locale: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -473,7 +508,8 @@ async def list_async( Lists all pins. - :param request: The request object to send. + :param request_body: List pins request + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :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 @@ -489,9 +525,12 @@ async def list_async( else: base_url = self._get_url(base_url, url_variables) - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, models.ListpinsRequest) - request = cast(models.ListpinsRequest, request) + request = models.ListpinsRequest( + locale=locale, + request_body=utils.get_pydantic_model( + request_body, models.ListpinsRequestBody + ), + ) req = self._build_request_async( method="POST", @@ -507,8 +546,9 @@ async def list_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.ListpinsRequest + request.request_body, False, False, "json", models.ListpinsRequestBody ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -531,7 +571,7 @@ async def list_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -549,6 +589,7 @@ async def list_async( def create( self, *, + locale: Optional[str] = None, queries: Optional[List[str]] = None, audience_filters: Optional[ Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] @@ -563,6 +604,7 @@ def create( Pin a document as a result for a given search query.Pin results that are known to be a good match. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param queries: The query strings for which the pinned result will show. :param audience_filters: Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. :param document_id: The document to be pinned. @@ -581,12 +623,15 @@ def create( else: base_url = self._get_url(base_url, url_variables) - request = models.PinRequest( - queries=queries, - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.PinRequestRequest( + locale=locale, + pin_request=models.PinRequest( + queries=queries, + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + document_id=document_id, ), - document_id=document_id, ) req = self._build_request( @@ -603,8 +648,9 @@ def create( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.PinRequest + request.pin_request, False, False, "json", models.PinRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -627,7 +673,7 @@ def create( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -645,6 +691,7 @@ def create( async def create_async( self, *, + locale: Optional[str] = None, queries: Optional[List[str]] = None, audience_filters: Optional[ Union[List[models.FacetFilter], List[models.FacetFilterTypedDict]] @@ -659,6 +706,7 @@ async def create_async( Pin a document as a result for a given search query.Pin results that are known to be a good match. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param queries: The query strings for which the pinned result will show. :param audience_filters: Filters which restrict who should see the pinned document. Values are taken from the corresponding filters in people search. :param document_id: The document to be pinned. @@ -677,12 +725,15 @@ async def create_async( else: base_url = self._get_url(base_url, url_variables) - request = models.PinRequest( - queries=queries, - audience_filters=utils.get_pydantic_model( - audience_filters, Optional[List[models.FacetFilter]] + request = models.PinRequestRequest( + locale=locale, + pin_request=models.PinRequest( + queries=queries, + audience_filters=utils.get_pydantic_model( + audience_filters, Optional[List[models.FacetFilter]] + ), + document_id=document_id, ), - document_id=document_id, ) req = self._build_request_async( @@ -699,8 +750,9 @@ async def create_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.PinRequest + request.pin_request, False, False, "json", models.PinRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -723,7 +775,7 @@ async def create_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -741,6 +793,7 @@ async def create_async( def remove( self, *, + locale: Optional[str] = None, id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -751,6 +804,7 @@ def remove( Unpin a previously pinned result. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param id: The opaque id of the pin to be unpinned. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -767,8 +821,11 @@ def remove( else: base_url = self._get_url(base_url, url_variables) - request = models.Unpin( - id=id, + request = models.UnpinRequest( + locale=locale, + unpin=models.Unpin( + id=id, + ), ) req = self._build_request( @@ -785,8 +842,9 @@ def remove( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.Unpin + request.unpin, False, False, "json", models.Unpin ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -809,7 +867,7 @@ def remove( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -827,6 +885,7 @@ def remove( async def remove_async( self, *, + locale: Optional[str] = None, id: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -837,6 +896,7 @@ async def remove_async( Unpin a previously pinned result. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param id: The opaque id of the pin to be unpinned. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -853,8 +913,11 @@ async def remove_async( else: base_url = self._get_url(base_url, url_variables) - request = models.Unpin( - id=id, + request = models.UnpinRequest( + locale=locale, + unpin=models.Unpin( + id=id, + ), ) req = self._build_request_async( @@ -871,8 +934,9 @@ async def remove_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.Unpin + request.unpin, False, False, "json", models.Unpin ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -895,7 +959,7 @@ async def remove_async( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/policies.py b/src/glean/api_client/policies.py index 13bf75b3..91b7c01d 100644 --- a/src/glean/api_client/policies.py +++ b/src/glean/api_client/policies.py @@ -59,6 +59,7 @@ def retrieve( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -81,7 +82,7 @@ def retrieve( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -145,6 +146,7 @@ async def retrieve_async( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -167,7 +169,7 @@ async def retrieve_async( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -252,6 +254,7 @@ def update( "json", models.UpdateDlpReportRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -274,7 +277,7 @@ def update( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -359,6 +362,7 @@ async def update_async( "json", models.UpdateDlpReportRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -381,7 +385,7 @@ async def update_async( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -445,6 +449,7 @@ def list( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -467,7 +472,7 @@ def list( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -531,6 +536,7 @@ async def list_async( accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -553,7 +559,7 @@ async def list_async( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -626,6 +632,7 @@ def create( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.CreateDlpReportRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -648,7 +655,7 @@ def create( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -721,6 +728,7 @@ async def create_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.CreateDlpReportRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -743,7 +751,7 @@ async def create_async( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -804,6 +812,7 @@ def download( accept_header_value="text/csv; charset=UTF-8", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -826,13 +835,13 @@ def download( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) if utils.match_response(http_res, "200", "text/csv; charset=UTF-8"): return http_res.text - if utils.match_response(http_res, ["403", "4XX"], "*"): + 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"], "*"): @@ -887,6 +896,7 @@ async def download_async( accept_header_value="text/csv; charset=UTF-8", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -909,13 +919,13 @@ async def download_async( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) if utils.match_response(http_res, "200", "text/csv; charset=UTF-8"): return http_res.text - if utils.match_response(http_res, ["403", "4XX"], "*"): + 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/reports.py b/src/glean/api_client/reports.py index fe0e1926..1a11b253 100644 --- a/src/glean/api_client/reports.py +++ b/src/glean/api_client/reports.py @@ -62,6 +62,7 @@ def create( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.UpdateDlpConfigRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -84,7 +85,7 @@ def create( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -151,6 +152,7 @@ async def create_async( get_serialized_body=lambda: utils.serialize_request_body( request, False, False, "json", models.UpdateDlpConfigRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -173,7 +175,7 @@ async def create_async( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -234,6 +236,7 @@ def download( accept_header_value="text/csv; charset=UTF-8", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -256,7 +259,7 @@ def download( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -317,6 +320,7 @@ async def download_async( accept_header_value="text/csv; charset=UTF-8", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -339,7 +343,7 @@ async def download_async( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -400,6 +404,7 @@ def status( accept_header_value="application/json; charset=UTF-8", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -422,7 +427,7 @@ def status( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -483,6 +488,7 @@ async def status_async( accept_header_value="application/json; charset=UTF-8", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -505,7 +511,7 @@ async def status_async( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/sdk.py b/src/glean/api_client/sdk.py index d8019741..7f064950 100644 --- a/src/glean/api_client/sdk.py +++ b/src/glean/api_client/sdk.py @@ -15,8 +15,16 @@ import weakref if TYPE_CHECKING: + from glean.api_client.agents import Agents + from glean.api_client.authentication import Authentication + from glean.api_client.chat_sdk import ChatSDK from glean.api_client.client import Client + from glean.api_client.datasources import Datasources + from glean.api_client.entities import Entities + from glean.api_client.governance import Governance from glean.api_client.indexing import Indexing + from glean.api_client.tools import Tools + from glean.api_client.troubleshooting import Troubleshooting class Glean(BaseSDK): @@ -40,10 +48,28 @@ class Glean(BaseSDK): """ client: "Client" + authentication: "Authentication" + r"""Manage indexing API tokens.""" + chat: "ChatSDK" + agents: "Agents" + entities: "Entities" + tools: "Tools" indexing: "Indexing" + troubleshooting: "Troubleshooting" + governance: "Governance" + datasources: "Datasources" + r"""Manage datasources.""" _sub_sdk_map = { "client": ("glean.api_client.client", "Client"), + "authentication": ("glean.api_client.authentication", "Authentication"), + "chat": ("glean.api_client.chat_sdk", "ChatSDK"), + "agents": ("glean.api_client.agents", "Agents"), + "entities": ("glean.api_client.entities", "Entities"), + "tools": ("glean.api_client.tools", "Tools"), "indexing": ("glean.api_client.indexing", "Indexing"), + "troubleshooting": ("glean.api_client.troubleshooting", "Troubleshooting"), + "governance": ("glean.api_client.governance", "Governance"), + "datasources": ("glean.api_client.datasources", "Datasources"), } def __init__( @@ -51,8 +77,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, @@ -93,7 +119,9 @@ def __init__( ), "The provided async_client must implement the AsyncHttpClient protocol." security: Any = None - if callable(api_token): + if api_token is None: + security = None + elif callable(api_token): # pylint: disable=unnecessary-lambda-assignment security = lambda: models.Security(api_token=api_token()) else: diff --git a/src/glean/api_client/search.py b/src/glean/api_client/search.py index 46394954..22746832 100644 --- a/src/glean/api_client/search.py +++ b/src/glean/api_client/search.py @@ -15,6 +15,7 @@ def query_as_admin( self, *, query: str, + locale: Optional[str] = None, timestamp: Optional[datetime] = None, tracking_token: Optional[str] = None, session_info: Optional[ @@ -48,6 +49,7 @@ def query_as_admin( Retrieves results for search query without respect for permissions. This is available only to privileged users. :param query: The search terms. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timestamp: The ISO 8601 timestamp associated with the client request. :param tracking_token: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. :param session_info: @@ -75,28 +77,31 @@ def query_as_admin( else: base_url = self._get_url(base_url, url_variables) - request = models.SearchRequest( - timestamp=timestamp, - tracking_token=tracking_token, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] - ), - source_document=utils.get_pydantic_model( - source_document, Optional[models.Document] - ), - page_size=page_size, - max_snippet_size=max_snippet_size, - query=query, - cursor=cursor, - result_tab_ids=result_tab_ids, - input_details=utils.get_pydantic_model( - input_details, Optional[models.SearchRequestInputDetails] - ), - request_options=utils.get_pydantic_model( - request_options, Optional[models.SearchRequestOptions] + request = models.AdminsearchRequest( + locale=locale, + search_request=models.SearchRequest( + timestamp=timestamp, + tracking_token=tracking_token, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), + source_document=utils.get_pydantic_model( + source_document, Optional[models.Document] + ), + page_size=page_size, + max_snippet_size=max_snippet_size, + query=query, + cursor=cursor, + result_tab_ids=result_tab_ids, + input_details=utils.get_pydantic_model( + input_details, Optional[models.SearchRequestInputDetails] + ), + request_options=utils.get_pydantic_model( + request_options, Optional[models.SearchRequestOptions] + ), + timeout_millis=timeout_millis, + disable_spellcheck=disable_spellcheck, ), - timeout_millis=timeout_millis, - disable_spellcheck=disable_spellcheck, ) req = self._build_request( @@ -113,8 +118,9 @@ def query_as_admin( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.SearchRequest + request.search_request, False, False, "json", models.SearchRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -137,7 +143,7 @@ def query_as_admin( ), ), request=req, - error_status_codes=["400", "401", "403", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -160,6 +166,7 @@ async def query_as_admin_async( self, *, query: str, + locale: Optional[str] = None, timestamp: Optional[datetime] = None, tracking_token: Optional[str] = None, session_info: Optional[ @@ -193,6 +200,7 @@ async def query_as_admin_async( Retrieves results for search query without respect for permissions. This is available only to privileged users. :param query: The search terms. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timestamp: The ISO 8601 timestamp associated with the client request. :param tracking_token: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. :param session_info: @@ -220,28 +228,31 @@ async def query_as_admin_async( else: base_url = self._get_url(base_url, url_variables) - request = models.SearchRequest( - timestamp=timestamp, - tracking_token=tracking_token, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] - ), - source_document=utils.get_pydantic_model( - source_document, Optional[models.Document] - ), - page_size=page_size, - max_snippet_size=max_snippet_size, - query=query, - cursor=cursor, - result_tab_ids=result_tab_ids, - input_details=utils.get_pydantic_model( - input_details, Optional[models.SearchRequestInputDetails] - ), - request_options=utils.get_pydantic_model( - request_options, Optional[models.SearchRequestOptions] + request = models.AdminsearchRequest( + locale=locale, + search_request=models.SearchRequest( + timestamp=timestamp, + tracking_token=tracking_token, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), + source_document=utils.get_pydantic_model( + source_document, Optional[models.Document] + ), + page_size=page_size, + max_snippet_size=max_snippet_size, + query=query, + cursor=cursor, + result_tab_ids=result_tab_ids, + input_details=utils.get_pydantic_model( + input_details, Optional[models.SearchRequestInputDetails] + ), + request_options=utils.get_pydantic_model( + request_options, Optional[models.SearchRequestOptions] + ), + timeout_millis=timeout_millis, + disable_spellcheck=disable_spellcheck, ), - timeout_millis=timeout_millis, - disable_spellcheck=disable_spellcheck, ) req = self._build_request_async( @@ -258,8 +269,9 @@ async def query_as_admin_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.SearchRequest + request.search_request, False, False, "json", models.SearchRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -282,7 +294,7 @@ async def query_as_admin_async( ), ), request=req, - error_status_codes=["400", "401", "403", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -304,6 +316,7 @@ async def query_as_admin_async( def autocomplete( self, *, + locale: Optional[str] = None, tracking_token: Optional[str] = None, session_info: Optional[ Union[models.SessionInfo, models.SessionInfoTypedDict] @@ -325,6 +338,7 @@ def autocomplete( Retrieve query suggestions, operators and documents for the given partially typed query. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param tracking_token: :param session_info: :param query: Partially typed query. @@ -349,18 +363,21 @@ def autocomplete( else: base_url = self._get_url(base_url, url_variables) - request = models.AutocompleteRequest( - tracking_token=tracking_token, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] - ), - query=query, - datasources_filter=datasources_filter, - datasource=datasource, - result_types=result_types, - result_size=result_size, - auth_tokens=utils.get_pydantic_model( - auth_tokens, Optional[List[models.AuthToken]] + request = models.AutocompleteRequestRequest( + locale=locale, + autocomplete_request=models.AutocompleteRequest( + tracking_token=tracking_token, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), + query=query, + datasources_filter=datasources_filter, + datasource=datasource, + result_types=result_types, + result_size=result_size, + auth_tokens=utils.get_pydantic_model( + auth_tokens, Optional[List[models.AuthToken]] + ), ), ) @@ -378,8 +395,13 @@ def autocomplete( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.AutocompleteRequest + request.autocomplete_request, + False, + False, + "json", + models.AutocompleteRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -402,7 +424,7 @@ def autocomplete( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -420,6 +442,7 @@ def autocomplete( async def autocomplete_async( self, *, + locale: Optional[str] = None, tracking_token: Optional[str] = None, session_info: Optional[ Union[models.SessionInfo, models.SessionInfoTypedDict] @@ -441,6 +464,7 @@ async def autocomplete_async( Retrieve query suggestions, operators and documents for the given partially typed query. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param tracking_token: :param session_info: :param query: Partially typed query. @@ -465,18 +489,21 @@ async def autocomplete_async( else: base_url = self._get_url(base_url, url_variables) - request = models.AutocompleteRequest( - tracking_token=tracking_token, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] - ), - query=query, - datasources_filter=datasources_filter, - datasource=datasource, - result_types=result_types, - result_size=result_size, - auth_tokens=utils.get_pydantic_model( - auth_tokens, Optional[List[models.AuthToken]] + request = models.AutocompleteRequestRequest( + locale=locale, + autocomplete_request=models.AutocompleteRequest( + tracking_token=tracking_token, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), + query=query, + datasources_filter=datasources_filter, + datasource=datasource, + result_types=result_types, + result_size=result_size, + auth_tokens=utils.get_pydantic_model( + auth_tokens, Optional[List[models.AuthToken]] + ), ), ) @@ -494,8 +521,13 @@ async def autocomplete_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.AutocompleteRequest + request.autocomplete_request, + False, + False, + "json", + models.AutocompleteRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -518,7 +550,7 @@ async def autocomplete_async( ), ), request=req, - error_status_codes=["400", "401", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -536,6 +568,7 @@ async def autocomplete_async( def retrieve_feed( self, *, + locale: Optional[str] = None, categories: Optional[List[models.FeedRequestCategory]] = None, request_options: Optional[ Union[models.FeedRequestOptions, models.FeedRequestOptionsTypedDict] @@ -553,6 +586,7 @@ def retrieve_feed( The personalized feed/home includes different types of contents including suggestions, recents, calendar events and many more. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param categories: Categories of content requested. An allowlist gives flexibility to request content separately or together. :param request_options: :param timeout_millis: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. @@ -572,14 +606,17 @@ def retrieve_feed( else: base_url = self._get_url(base_url, url_variables) - request = models.FeedRequest( - categories=categories, - request_options=utils.get_pydantic_model( - request_options, Optional[models.FeedRequestOptions] - ), - timeout_millis=timeout_millis, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] + request = models.FeedRequestRequest( + locale=locale, + feed_request=models.FeedRequest( + categories=categories, + request_options=utils.get_pydantic_model( + request_options, Optional[models.FeedRequestOptions] + ), + timeout_millis=timeout_millis, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), ), ) @@ -597,8 +634,9 @@ def retrieve_feed( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.FeedRequest + request.feed_request, False, False, "json", models.FeedRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -621,7 +659,7 @@ def retrieve_feed( ), ), request=req, - error_status_codes=["400", "401", "408", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -639,6 +677,7 @@ def retrieve_feed( async def retrieve_feed_async( self, *, + locale: Optional[str] = None, categories: Optional[List[models.FeedRequestCategory]] = None, request_options: Optional[ Union[models.FeedRequestOptions, models.FeedRequestOptionsTypedDict] @@ -656,6 +695,7 @@ async def retrieve_feed_async( The personalized feed/home includes different types of contents including suggestions, recents, calendar events and many more. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param categories: Categories of content requested. An allowlist gives flexibility to request content separately or together. :param request_options: :param timeout_millis: Timeout in milliseconds for the request. A `408` error will be returned if handling the request takes longer. @@ -675,14 +715,17 @@ async def retrieve_feed_async( else: base_url = self._get_url(base_url, url_variables) - request = models.FeedRequest( - categories=categories, - request_options=utils.get_pydantic_model( - request_options, Optional[models.FeedRequestOptions] - ), - timeout_millis=timeout_millis, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] + request = models.FeedRequestRequest( + locale=locale, + feed_request=models.FeedRequest( + categories=categories, + request_options=utils.get_pydantic_model( + request_options, Optional[models.FeedRequestOptions] + ), + timeout_millis=timeout_millis, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), ), ) @@ -700,8 +743,9 @@ async def retrieve_feed_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.FeedRequest + request.feed_request, False, False, "json", models.FeedRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -724,7 +768,7 @@ async def retrieve_feed_async( ), ), request=req, - error_status_codes=["400", "401", "408", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -742,6 +786,7 @@ async def retrieve_feed_async( def recommendations( self, *, + locale: Optional[str] = None, timestamp: Optional[datetime] = None, tracking_token: Optional[str] = None, session_info: Optional[ @@ -770,6 +815,7 @@ def recommendations( Retrieve recommended documents for the given URL or Glean Document ID. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timestamp: The ISO 8601 timestamp associated with the client request. :param tracking_token: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. :param session_info: @@ -793,22 +839,25 @@ def recommendations( else: base_url = self._get_url(base_url, url_variables) - request = models.RecommendationsRequest( - timestamp=timestamp, - tracking_token=tracking_token, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] - ), - source_document=utils.get_pydantic_model( - source_document, Optional[models.Document] - ), - page_size=page_size, - max_snippet_size=max_snippet_size, - recommendation_document_spec=utils.get_pydantic_model( - recommendation_document_spec, Optional[models.DocumentSpecUnion] - ), - request_options=utils.get_pydantic_model( - request_options, Optional[models.RecommendationsRequestOptions] + request = models.RecommendationsRequestRequest( + locale=locale, + recommendations_request=models.RecommendationsRequest( + timestamp=timestamp, + tracking_token=tracking_token, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), + source_document=utils.get_pydantic_model( + source_document, Optional[models.Document] + ), + page_size=page_size, + max_snippet_size=max_snippet_size, + recommendation_document_spec=utils.get_pydantic_model( + recommendation_document_spec, Optional[models.DocumentSpecUnion] + ), + request_options=utils.get_pydantic_model( + request_options, Optional[models.RecommendationsRequestOptions] + ), ), ) @@ -826,8 +875,13 @@ def recommendations( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.RecommendationsRequest + request.recommendations_request, + False, + False, + "json", + models.RecommendationsRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -850,7 +904,7 @@ def recommendations( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -870,6 +924,7 @@ def recommendations( async def recommendations_async( self, *, + locale: Optional[str] = None, timestamp: Optional[datetime] = None, tracking_token: Optional[str] = None, session_info: Optional[ @@ -898,6 +953,7 @@ async def recommendations_async( Retrieve recommended documents for the given URL or Glean Document ID. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timestamp: The ISO 8601 timestamp associated with the client request. :param tracking_token: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. :param session_info: @@ -921,22 +977,25 @@ async def recommendations_async( else: base_url = self._get_url(base_url, url_variables) - request = models.RecommendationsRequest( - timestamp=timestamp, - tracking_token=tracking_token, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] - ), - source_document=utils.get_pydantic_model( - source_document, Optional[models.Document] - ), - page_size=page_size, - max_snippet_size=max_snippet_size, - recommendation_document_spec=utils.get_pydantic_model( - recommendation_document_spec, Optional[models.DocumentSpecUnion] - ), - request_options=utils.get_pydantic_model( - request_options, Optional[models.RecommendationsRequestOptions] + request = models.RecommendationsRequestRequest( + locale=locale, + recommendations_request=models.RecommendationsRequest( + timestamp=timestamp, + tracking_token=tracking_token, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), + source_document=utils.get_pydantic_model( + source_document, Optional[models.Document] + ), + page_size=page_size, + max_snippet_size=max_snippet_size, + recommendation_document_spec=utils.get_pydantic_model( + recommendation_document_spec, Optional[models.DocumentSpecUnion] + ), + request_options=utils.get_pydantic_model( + request_options, Optional[models.RecommendationsRequestOptions] + ), ), ) @@ -954,8 +1013,13 @@ async def recommendations_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.RecommendationsRequest + request.recommendations_request, + False, + False, + "json", + models.RecommendationsRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -978,7 +1042,7 @@ async def recommendations_async( ), ), request=req, - error_status_codes=["400", "401", "403", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -999,6 +1063,7 @@ def query( self, *, query: str, + locale: Optional[str] = None, timestamp: Optional[datetime] = None, tracking_token: Optional[str] = None, session_info: Optional[ @@ -1032,6 +1097,7 @@ def query( Retrieve results from the index for the given query and filters. :param query: The search terms. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timestamp: The ISO 8601 timestamp associated with the client request. :param tracking_token: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. :param session_info: @@ -1059,28 +1125,31 @@ def query( else: base_url = self._get_url(base_url, url_variables) - request = models.SearchRequest( - timestamp=timestamp, - tracking_token=tracking_token, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] - ), - source_document=utils.get_pydantic_model( - source_document, Optional[models.Document] - ), - page_size=page_size, - max_snippet_size=max_snippet_size, - query=query, - cursor=cursor, - result_tab_ids=result_tab_ids, - input_details=utils.get_pydantic_model( - input_details, Optional[models.SearchRequestInputDetails] - ), - request_options=utils.get_pydantic_model( - request_options, Optional[models.SearchRequestOptions] + request = models.SearchRequestRequest( + locale=locale, + search_request=models.SearchRequest( + timestamp=timestamp, + tracking_token=tracking_token, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), + source_document=utils.get_pydantic_model( + source_document, Optional[models.Document] + ), + page_size=page_size, + max_snippet_size=max_snippet_size, + query=query, + cursor=cursor, + result_tab_ids=result_tab_ids, + input_details=utils.get_pydantic_model( + input_details, Optional[models.SearchRequestInputDetails] + ), + request_options=utils.get_pydantic_model( + request_options, Optional[models.SearchRequestOptions] + ), + timeout_millis=timeout_millis, + disable_spellcheck=disable_spellcheck, ), - timeout_millis=timeout_millis, - disable_spellcheck=disable_spellcheck, ) req = self._build_request( @@ -1097,8 +1166,9 @@ def query( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.SearchRequest + request.search_request, False, False, "json", models.SearchRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1121,7 +1191,7 @@ def query( ), ), request=req, - error_status_codes=["400", "401", "403", "408", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -1144,6 +1214,7 @@ async def query_async( self, *, query: str, + locale: Optional[str] = None, timestamp: Optional[datetime] = None, tracking_token: Optional[str] = None, session_info: Optional[ @@ -1177,6 +1248,7 @@ async def query_async( Retrieve results from the index for the given query and filters. :param query: The search terms. + :param locale: The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. :param timestamp: The ISO 8601 timestamp associated with the client request. :param tracking_token: A previously received trackingToken for a search associated with the same query. Useful for more requests and requests for other tabs. :param session_info: @@ -1204,28 +1276,31 @@ async def query_async( else: base_url = self._get_url(base_url, url_variables) - request = models.SearchRequest( - timestamp=timestamp, - tracking_token=tracking_token, - session_info=utils.get_pydantic_model( - session_info, Optional[models.SessionInfo] - ), - source_document=utils.get_pydantic_model( - source_document, Optional[models.Document] - ), - page_size=page_size, - max_snippet_size=max_snippet_size, - query=query, - cursor=cursor, - result_tab_ids=result_tab_ids, - input_details=utils.get_pydantic_model( - input_details, Optional[models.SearchRequestInputDetails] - ), - request_options=utils.get_pydantic_model( - request_options, Optional[models.SearchRequestOptions] + request = models.SearchRequestRequest( + locale=locale, + search_request=models.SearchRequest( + timestamp=timestamp, + tracking_token=tracking_token, + session_info=utils.get_pydantic_model( + session_info, Optional[models.SessionInfo] + ), + source_document=utils.get_pydantic_model( + source_document, Optional[models.Document] + ), + page_size=page_size, + max_snippet_size=max_snippet_size, + query=query, + cursor=cursor, + result_tab_ids=result_tab_ids, + input_details=utils.get_pydantic_model( + input_details, Optional[models.SearchRequestInputDetails] + ), + request_options=utils.get_pydantic_model( + request_options, Optional[models.SearchRequestOptions] + ), + timeout_millis=timeout_millis, + disable_spellcheck=disable_spellcheck, ), - timeout_millis=timeout_millis, - disable_spellcheck=disable_spellcheck, ) req = self._build_request_async( @@ -1242,8 +1317,9 @@ async def query_async( http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "json", models.SearchRequest + request.search_request, False, False, "json", models.SearchRequest ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -1266,7 +1342,7 @@ async def query_async( ), ), request=req, - error_status_codes=["400", "401", "403", "408", "422", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/src/glean/api_client/tools.py b/src/glean/api_client/tools.py index 6d96a530..42b0a0c4 100644 --- a/src/glean/api_client/tools.py +++ b/src/glean/api_client/tools.py @@ -6,24 +6,27 @@ 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 Dict, List, Mapping, Optional, Union +from typing import Mapping, Optional class Tools(BaseSDK): - def list( + def get_action_pack_auth_status( self, *, - tool_names: Optional[List[str]] = None, + action_pack_id: str, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.ToolsListResponse: - r"""List available tools + ) -> models.ActionPackAuthStatusResponse: + r"""Get end-user authentication status for an action pack. - Returns a filtered set of available tools based on optional tool name parameters. If no filters are provided, all available tools are returned. + Reports whether the calling user is already authenticated against the third-party + tool backing the specified action pack. Intended for headless / server-driven clients + that render an \"Authorize\" prompt when the user has not yet consented to the tool. - :param tool_names: Optional array of tool names to filter by + + :param action_pack_id: ID of the action pack to query or authorize. :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 @@ -39,23 +42,24 @@ def list( else: base_url = self._get_url(base_url, url_variables) - request = models.GetRestAPIV1ToolsListRequest( - tool_names=tool_names, + request = models.GetActionPackAuthStatusRequest( + action_pack_id=action_pack_id, ) req = self._build_request( method="GET", - path="/rest/api/v1/tools/list", + path="/rest/api/v1/actions/actionpack/{actionPackId}/auth", base_url=base_url, url_variables=url_variables, request=request, request_body_required=False, - 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, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -71,19 +75,21 @@ def list( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="get_/rest/api/v1/tools/list", + operation_id="getActionPackAuthStatus", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), ), request=req, - error_status_codes=["400", "401", "404", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.ToolsListResponse, http_res) + return unmarshal_json_response( + models.ActionPackAuthStatusResponse, http_res + ) if utils.match_response(http_res, ["400", "401", "404", "429", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.GleanError("API error occurred", http_res, http_res_text) @@ -93,20 +99,23 @@ def list( raise errors.GleanError("Unexpected response received", http_res) - async def list_async( + async def get_action_pack_auth_status_async( self, *, - tool_names: Optional[List[str]] = None, + action_pack_id: str, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.ToolsListResponse: - r"""List available tools + ) -> models.ActionPackAuthStatusResponse: + r"""Get end-user authentication status for an action pack. + + Reports whether the calling user is already authenticated against the third-party + tool backing the specified action pack. Intended for headless / server-driven clients + that render an \"Authorize\" prompt when the user has not yet consented to the tool. - Returns a filtered set of available tools based on optional tool name parameters. If no filters are provided, all available tools are returned. - :param tool_names: Optional array of tool names to filter by + :param action_pack_id: ID of the action pack to query or authorize. :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 @@ -122,23 +131,24 @@ async def list_async( else: base_url = self._get_url(base_url, url_variables) - request = models.GetRestAPIV1ToolsListRequest( - tool_names=tool_names, + request = models.GetActionPackAuthStatusRequest( + action_pack_id=action_pack_id, ) req = self._build_request_async( method="GET", - path="/rest/api/v1/tools/list", + path="/rest/api/v1/actions/actionpack/{actionPackId}/auth", base_url=base_url, url_variables=url_variables, request=request, request_body_required=False, - 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, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -154,19 +164,21 @@ async def list_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="get_/rest/api/v1/tools/list", + operation_id="getActionPackAuthStatus", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), ), request=req, - error_status_codes=["400", "401", "404", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.ToolsListResponse, http_res) + return unmarshal_json_response( + models.ActionPackAuthStatusResponse, http_res + ) if utils.match_response(http_res, ["400", "401", "404", "429", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.GleanError("API error occurred", http_res, http_res_text) @@ -176,25 +188,31 @@ async def list_async( raise errors.GleanError("Unexpected response received", http_res) - def run( + def authorize_action_pack( self, *, - name: str, - parameters: Union[ - Dict[str, models.ToolsCallParameter], - Dict[str, models.ToolsCallParameterTypedDict], - ], + action_pack_id: str, + return_url: str, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.ToolsCallResponse: - r"""Execute the specified tool + ) -> models.AuthorizeActionPackResponse: + r"""Start the OAuth authorization flow for an action pack. + + Starts the third-party OAuth flow for the specified action pack and returns the + redirect URL that the client should navigate the end user to. After the OAuth + callback completes, the user's browser is redirected back to `returnUrl` with a + status query parameter (`?glean_action_auth=success|error&actionPackId=...`). + + `returnUrl` must match the tenant's configured return URL allowlist; otherwise the + request is rejected with 400. + - Execute the specified tool with provided parameters + :param action_pack_id: ID of the action pack to query or authorize. + :param return_url: URL on the customer's domain to redirect the end user's browser back to after the third-party OAuth + callback completes. Must be present in the tenant's return URL allowlist. - :param name: Required name of the tool to execute - :param parameters: The parameters for the tool. Each key is the name of the parameter and the value is the parameter object. :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 @@ -210,29 +228,34 @@ def run( else: base_url = self._get_url(base_url, url_variables) - request = models.ToolsCallRequest( - name=name, - parameters=utils.get_pydantic_model( - parameters, Dict[str, models.ToolsCallParameter] + request = models.AuthorizeActionPackRequestRequest( + action_pack_id=action_pack_id, + authorize_action_pack_request=models.AuthorizeActionPackRequest( + return_url=return_url, ), ) req = self._build_request( method="POST", - path="/rest/api/v1/tools/call", + path="/rest/api/v1/actions/actionpack/{actionPackId}/auth", 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.ToolsCallRequest + request.authorize_action_pack_request, + False, + False, + "json", + models.AuthorizeActionPackRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -248,20 +271,22 @@ def run( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="post_/rest/api/v1/tools/call", + operation_id="authorizeActionPack", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), ), request=req, - error_status_codes=["400", "401", "404", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.ToolsCallResponse, http_res) - if utils.match_response(http_res, ["400", "401", "404", "429", "4XX"], "*"): + return unmarshal_json_response(models.AuthorizeActionPackResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "403", "404", "429", "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", "*"): @@ -270,25 +295,31 @@ def run( raise errors.GleanError("Unexpected response received", http_res) - async def run_async( + async def authorize_action_pack_async( self, *, - name: str, - parameters: Union[ - Dict[str, models.ToolsCallParameter], - Dict[str, models.ToolsCallParameterTypedDict], - ], + action_pack_id: str, + return_url: str, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.ToolsCallResponse: - r"""Execute the specified tool + ) -> models.AuthorizeActionPackResponse: + r"""Start the OAuth authorization flow for an action pack. + + Starts the third-party OAuth flow for the specified action pack and returns the + redirect URL that the client should navigate the end user to. After the OAuth + callback completes, the user's browser is redirected back to `returnUrl` with a + status query parameter (`?glean_action_auth=success|error&actionPackId=...`). + + `returnUrl` must match the tenant's configured return URL allowlist; otherwise the + request is rejected with 400. - Execute the specified tool with provided parameters - :param name: Required name of the tool to execute - :param parameters: The parameters for the tool. Each key is the name of the parameter and the value is the parameter object. + :param action_pack_id: ID of the action pack to query or authorize. + :param return_url: URL on the customer's domain to redirect the end user's browser back to after the third-party OAuth + callback completes. Must be present in the tenant's return URL allowlist. + :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 @@ -304,29 +335,34 @@ async def run_async( else: base_url = self._get_url(base_url, url_variables) - request = models.ToolsCallRequest( - name=name, - parameters=utils.get_pydantic_model( - parameters, Dict[str, models.ToolsCallParameter] + request = models.AuthorizeActionPackRequestRequest( + action_pack_id=action_pack_id, + authorize_action_pack_request=models.AuthorizeActionPackRequest( + return_url=return_url, ), ) req = self._build_request_async( method="POST", - path="/rest/api/v1/tools/call", + path="/rest/api/v1/actions/actionpack/{actionPackId}/auth", 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.ToolsCallRequest + request.authorize_action_pack_request, + False, + False, + "json", + models.AuthorizeActionPackRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -342,20 +378,22 @@ async def run_async( hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="post_/rest/api/v1/tools/call", + operation_id="authorizeActionPack", oauth2_scopes=None, security_source=get_security_from_env( self.sdk_configuration.security, models.Security ), ), request=req, - error_status_codes=["400", "401", "404", "429", "4XX", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) if utils.match_response(http_res, "200", "application/json"): - return unmarshal_json_response(models.ToolsCallResponse, http_res) - if utils.match_response(http_res, ["400", "401", "404", "429", "4XX"], "*"): + return unmarshal_json_response(models.AuthorizeActionPackResponse, http_res) + if utils.match_response( + http_res, ["400", "401", "403", "404", "429", "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/troubleshooting.py b/src/glean/api_client/troubleshooting.py new file mode 100644 index 00000000..5f427234 --- /dev/null +++ b/src/glean/api_client/troubleshooting.py @@ -0,0 +1,227 @@ +"""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 Mapping, Optional + + +class Troubleshooting(BaseSDK): + def post_api_index_v1_debug_datasource_document_events( + self, + *, + datasource: str, + object_type: str, + doc_id: str, + start_date: Optional[str] = None, + max_events: Optional[int] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.DebugDocumentLifecycleResponse: + r"""Beta: Get document lifecycle events + + Retrieves lifecycle events for a specific document including upload time, index times and deletions. Rate limited to 1 request per minute per datasource. Currently in beta, might undergo breaking changes without prior notice. + + + :param datasource: The datasource to which the document belongs + :param object_type: Object type of the document to get lifecycle events for. + :param doc_id: Glean Document ID within the datasource to get lifecycle events for. + :param start_date: The start date for events to be fetched. Cannot be more than 30 days (default 7 days) in the past. + :param max_events: Max number of events to be fetched. Cannot be more than 100 (default 20). + :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.PostAPIIndexV1DebugDatasourceDocumentEventsRequest( + datasource=datasource, + debug_document_lifecycle_request=models.DebugDocumentLifecycleRequest( + object_type=object_type, + doc_id=doc_id, + start_date=start_date, + max_events=max_events, + ), + ) + + req = self._build_request( + method="POST", + path="/api/index/v1/debug/{datasource}/document/events", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json; charset=UTF-8", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.debug_document_lifecycle_request, + False, + False, + "json", + models.DebugDocumentLifecycleRequest, + ), + 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/debug/{datasource}/document/events", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json; charset=UTF-8"): + return unmarshal_json_response( + models.DebugDocumentLifecycleResponse, http_res + ) + if utils.match_response(http_res, ["400", "401", "429", "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 post_api_index_v1_debug_datasource_document_events_async( + self, + *, + datasource: str, + object_type: str, + doc_id: str, + start_date: Optional[str] = None, + max_events: Optional[int] = None, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.DebugDocumentLifecycleResponse: + r"""Beta: Get document lifecycle events + + Retrieves lifecycle events for a specific document including upload time, index times and deletions. Rate limited to 1 request per minute per datasource. Currently in beta, might undergo breaking changes without prior notice. + + + :param datasource: The datasource to which the document belongs + :param object_type: Object type of the document to get lifecycle events for. + :param doc_id: Glean Document ID within the datasource to get lifecycle events for. + :param start_date: The start date for events to be fetched. Cannot be more than 30 days (default 7 days) in the past. + :param max_events: Max number of events to be fetched. Cannot be more than 100 (default 20). + :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.PostAPIIndexV1DebugDatasourceDocumentEventsRequest( + datasource=datasource, + debug_document_lifecycle_request=models.DebugDocumentLifecycleRequest( + object_type=object_type, + doc_id=doc_id, + start_date=start_date, + max_events=max_events, + ), + ) + + req = self._build_request_async( + method="POST", + path="/api/index/v1/debug/{datasource}/document/events", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json; charset=UTF-8", + http_headers=http_headers, + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.debug_document_lifecycle_request, + False, + False, + "json", + models.DebugDocumentLifecycleRequest, + ), + 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/debug/{datasource}/document/events", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json; charset=UTF-8"): + return unmarshal_json_response( + models.DebugDocumentLifecycleResponse, http_res + ) + if utils.match_response(http_res, ["400", "401", "429", "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/types/__init__.py b/src/glean/api_client/types/__init__.py index fc76fe0c..faa26813 100644 --- a/src/glean/api_client/types/__init__.py +++ b/src/glean/api_client/types/__init__.py @@ -1,5 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" +from .base64fileinput import Base64EncodedString, Base64FileInput from .basemodel import ( BaseModel, Nullable, @@ -11,6 +12,8 @@ ) __all__ = [ + "Base64EncodedString", + "Base64FileInput", "BaseModel", "Nullable", "OptionalNullable", diff --git a/src/glean/api_client/types/base64fileinput.py b/src/glean/api_client/types/base64fileinput.py new file mode 100644 index 00000000..25fc5398 --- /dev/null +++ b/src/glean/api_client/types/base64fileinput.py @@ -0,0 +1,39 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations + +import base64 +import io +from os import PathLike +from typing import IO, Any, Union + +from pydantic.functional_validators import BeforeValidator +from typing_extensions import Annotated + + +Base64FileInput = Union[IO[bytes], PathLike[str]] + + +def encode_base64_file_input(value: Any) -> Any: + """Convert PathLike or IO[bytes] inputs to a base64 string. All standard binary streams + that inherit from io.IOBase are handled. Other values pass through. + """ + if isinstance(value, (PathLike, io.IOBase)): + if isinstance(value, PathLike): + with open(value, "rb") as fh: + binary = fh.read() + else: + binary = value.read() + if isinstance(binary, str): + binary = binary.encode() + if not isinstance(binary, (bytes, bytearray)): + raise TypeError( + f"Base64FileInput expected binary IO returning bytes; got {type(binary).__name__}" + ) + return base64.b64encode(binary).decode("ascii") + return value + + +# Non-str inputs are converted to base64 by the BeforeValidator at construction time. +# Callers can also pass a pre-encoded base64 str. +Base64EncodedString = Annotated[str, BeforeValidator(encode_base64_file_input)] diff --git a/src/glean/api_client/types/basemodel.py b/src/glean/api_client/types/basemodel.py index 231c2e37..a9a640a1 100644 --- a/src/glean/api_client/types/basemodel.py +++ b/src/glean/api_client/types/basemodel.py @@ -2,7 +2,8 @@ from pydantic import ConfigDict, model_serializer from pydantic import BaseModel as PydanticBaseModel -from typing import TYPE_CHECKING, Literal, Optional, TypeVar, Union +from pydantic_core import core_schema +from typing import TYPE_CHECKING, Any, Literal, Optional, TypeVar, Union from typing_extensions import TypeAliasType, TypeAlias @@ -35,5 +36,42 @@ def __bool__(self) -> Literal[False]: "OptionalNullable", Union[Optional[Nullable[T]], Unset], type_params=(T,) ) -UnrecognizedInt: TypeAlias = int -UnrecognizedStr: TypeAlias = str + +class UnrecognizedStr(str): + @classmethod + def __get_pydantic_core_schema__(cls, _source_type: Any, _handler: Any) -> core_schema.CoreSchema: + # Make UnrecognizedStr only work in lax mode, not strict mode + # This makes it a "fallback" option when more specific types (like Literals) don't match + def validate_lax(v: Any) -> 'UnrecognizedStr': + if isinstance(v, cls): + return v + return cls(str(v)) + + # Use lax_or_strict_schema where strict always fails + # This forces Pydantic to prefer other union members in strict mode + # and only fall back to UnrecognizedStr in lax mode + return core_schema.lax_or_strict_schema( + lax_schema=core_schema.chain_schema([ + core_schema.str_schema(), + core_schema.no_info_plain_validator_function(validate_lax) + ]), + strict_schema=core_schema.none_schema(), # Always fails in strict mode + ) + + +class UnrecognizedInt(int): + @classmethod + def __get_pydantic_core_schema__(cls, _source_type: Any, _handler: Any) -> core_schema.CoreSchema: + # Make UnrecognizedInt only work in lax mode, not strict mode + # This makes it a "fallback" option when more specific types (like Literals) don't match + def validate_lax(v: Any) -> 'UnrecognizedInt': + if isinstance(v, cls): + return v + return cls(int(v)) + return core_schema.lax_or_strict_schema( + lax_schema=core_schema.chain_schema([ + core_schema.int_schema(), + core_schema.no_info_plain_validator_function(validate_lax) + ]), + strict_schema=core_schema.none_schema(), # Always fails in strict mode + ) diff --git a/src/glean/api_client/utils/__init__.py b/src/glean/api_client/utils/__init__.py index 87192dde..aded7597 100644 --- a/src/glean/api_client/utils/__init__.py +++ b/src/glean/api_client/utils/__init__.py @@ -1,9 +1,17 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" -from typing import TYPE_CHECKING -from importlib import import_module -import builtins -import sys +from typing import Any, TYPE_CHECKING, Callable, TypeVar +import asyncio + +from .dynamic_imports import lazy_getattr, lazy_dir + +_T = TypeVar("_T") + + +async def run_sync_in_thread(func: Callable[..., _T], *args) -> _T: + """Run a synchronous function in a thread pool to avoid blocking the event loop.""" + return await asyncio.to_thread(func, *args) + if TYPE_CHECKING: from .annotations import get_discriminator @@ -42,7 +50,6 @@ validate_decimal, validate_float, validate_int, - validate_open_enum, ) from .url import generate_url, template_url, remove_suffix from .values import ( @@ -104,7 +111,6 @@ "validate_const", "validate_float", "validate_int", - "validate_open_enum", "cast_partial", ] @@ -158,43 +164,15 @@ "validate_const": ".serializers", "validate_float": ".serializers", "validate_int": ".serializers", - "validate_open_enum": ".serializers", "cast_partial": ".values", } -def dynamic_import(modname, retries=3): - for attempt in range(retries): - try: - return import_module(modname, __package__) - except KeyError: - # Clear any half-initialized module and retry - sys.modules.pop(modname, None) - if attempt == retries - 1: - break - raise KeyError(f"Failed to import module '{modname}' after {retries} attempts") - - -def __getattr__(attr_name: str) -> object: - module_name = _dynamic_imports.get(attr_name) - if module_name is None: - raise AttributeError( - f"no {attr_name} found in _dynamic_imports, module name -> {__name__} " - ) - - try: - module = dynamic_import(module_name) - return getattr(module, attr_name) - except ImportError as e: - raise ImportError( - f"Failed to import {attr_name} from {module_name}: {e}" - ) from e - except AttributeError as e: - raise AttributeError( - f"Failed to get {attr_name} from {module_name}: {e}" - ) from e +def __getattr__(attr_name: str) -> Any: + return lazy_getattr( + attr_name, package=__package__, dynamic_imports=_dynamic_imports + ) def __dir__(): - lazy_attrs = builtins.list(_dynamic_imports.keys()) - return builtins.sorted(lazy_attrs) + return lazy_dir(dynamic_imports=_dynamic_imports) diff --git a/src/glean/api_client/utils/dynamic_imports.py b/src/glean/api_client/utils/dynamic_imports.py new file mode 100644 index 00000000..673edf82 --- /dev/null +++ b/src/glean/api_client/utils/dynamic_imports.py @@ -0,0 +1,54 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from importlib import import_module +import builtins +import sys + + +def dynamic_import(package, modname, retries=3): + """Import a module relative to package, retrying on KeyError from half-initialized modules.""" + for attempt in range(retries): + try: + return import_module(modname, package) + except KeyError: + sys.modules.pop(modname, None) + if attempt == retries - 1: + break + raise KeyError(f"Failed to import module '{modname}' after {retries} attempts") + + +def lazy_getattr(attr_name, *, package, dynamic_imports, sub_packages=None): + """Module-level __getattr__ that lazily loads from a dynamic_imports mapping. + + Args: + attr_name: The attribute being looked up. + package: The caller's __package__ (for relative imports). + dynamic_imports: Dict mapping attribute names to relative module paths. + sub_packages: Optional list of subpackage names to lazy-load. + """ + module_name = dynamic_imports.get(attr_name) + if module_name is not None: + try: + module = dynamic_import(package, module_name) + return getattr(module, attr_name) + except ImportError as e: + raise ImportError( + f"Failed to import {attr_name} from {module_name}: {e}" + ) from e + except AttributeError as e: + raise AttributeError( + f"Failed to get {attr_name} from {module_name}: {e}" + ) from e + + if sub_packages and attr_name in sub_packages: + return import_module(f".{attr_name}", package) + + raise AttributeError(f"module '{package}' has no attribute '{attr_name}'") + + +def lazy_dir(*, dynamic_imports, sub_packages=None): + """Module-level __dir__ that lists lazily-loadable attributes.""" + lazy_attrs = builtins.list(dynamic_imports.keys()) + if sub_packages: + lazy_attrs.extend(sub_packages) + return builtins.sorted(lazy_attrs) diff --git a/src/glean/api_client/utils/enums.py b/src/glean/api_client/utils/enums.py index c3bc13cf..3324e1bc 100644 --- a/src/glean/api_client/utils/enums.py +++ b/src/glean/api_client/utils/enums.py @@ -2,6 +2,10 @@ import enum import sys +from typing import Any + +from pydantic_core import core_schema + class OpenEnumMeta(enum.EnumMeta): # The __call__ method `boundary` kwarg was added in 3.11 and must be present @@ -72,3 +76,59 @@ def __call__( ) except ValueError: return value + + def __new__(mcs, name, bases, namespace, **kwargs): + cls = super().__new__(mcs, name, bases, namespace, **kwargs) + + # Add __get_pydantic_core_schema__ to make open enums work correctly + # in union discrimination. In strict mode (used by Pydantic for unions), + # only known enum values match. In lax mode, unknown values are accepted. + def __get_pydantic_core_schema__( + cls_inner: Any, _source_type: Any, _handler: Any + ) -> core_schema.CoreSchema: + # Create a validator that only accepts known enum values (for strict mode) + def validate_strict(v: Any) -> Any: + if isinstance(v, cls_inner): + return v + # Use the parent EnumMeta's __call__ which raises ValueError for unknown values + return enum.EnumMeta.__call__(cls_inner, v) + + # Create a lax validator that accepts unknown values + def validate_lax(v: Any) -> Any: + if isinstance(v, cls_inner): + return v + try: + return enum.EnumMeta.__call__(cls_inner, v) + except ValueError: + # Return the raw value for unknown enum values + return v + + # Determine the base type schema (str or int) + is_int_enum = False + for base in cls_inner.__mro__: + if base is int: + is_int_enum = True + break + if base is str: + break + + base_schema = ( + core_schema.int_schema() + if is_int_enum + else core_schema.str_schema() + ) + + # Use lax_or_strict_schema: + # - strict mode: only known enum values match (raises ValueError for unknown) + # - lax mode: accept any value, return enum member or raw value + return core_schema.lax_or_strict_schema( + lax_schema=core_schema.chain_schema( + [base_schema, core_schema.no_info_plain_validator_function(validate_lax)] + ), + strict_schema=core_schema.chain_schema( + [base_schema, core_schema.no_info_plain_validator_function(validate_strict)] + ), + ) + + setattr(cls, "__get_pydantic_core_schema__", classmethod(__get_pydantic_core_schema__)) + return cls diff --git a/src/glean/api_client/utils/eventstreaming.py b/src/glean/api_client/utils/eventstreaming.py index 0969899b..3bdcd6d3 100644 --- a/src/glean/api_client/utils/eventstreaming.py +++ b/src/glean/api_client/utils/eventstreaming.py @@ -2,7 +2,9 @@ import re import json +from dataclasses import dataclass, asdict from typing import ( + Any, Callable, Generic, TypeVar, @@ -22,6 +24,7 @@ class EventStream(Generic[T]): client_ref: Optional[object] response: httpx.Response generator: Generator[T, None, None] + _closed: bool def __init__( self, @@ -29,21 +32,28 @@ def __init__( decoder: Callable[[str], T], sentinel: Optional[str] = None, client_ref: Optional[object] = None, + data_required: bool = True, ): self.response = response - self.generator = stream_events(response, decoder, sentinel) + self.generator = stream_events( + response, decoder, sentinel, data_required=data_required + ) self.client_ref = client_ref + self._closed = False def __iter__(self): return self def __next__(self): + if self._closed: + raise StopIteration return next(self.generator) def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): + self._closed = True self.response.close() @@ -53,6 +63,7 @@ class EventStreamAsync(Generic[T]): client_ref: Optional[object] response: httpx.Response generator: AsyncGenerator[T, None] + _closed: bool def __init__( self, @@ -60,53 +71,65 @@ def __init__( decoder: Callable[[str], T], sentinel: Optional[str] = None, client_ref: Optional[object] = None, + data_required: bool = True, ): self.response = response - self.generator = stream_events_async(response, decoder, sentinel) + self.generator = stream_events_async( + response, decoder, sentinel, data_required=data_required + ) self.client_ref = client_ref + self._closed = False def __aiter__(self): return self async def __anext__(self): + if self._closed: + raise StopAsyncIteration return await self.generator.__anext__() async def __aenter__(self): return self async def __aexit__(self, exc_type, exc_val, exc_tb): + self._closed = True await self.response.aclose() +@dataclass class ServerEvent: id: Optional[str] = None event: Optional[str] = None - data: Optional[str] = None + data: Any = None retry: Optional[int] = None MESSAGE_BOUNDARIES = [ b"\r\n\r\n", - b"\n\n", + b"\r\n\r", + b"\r\n\n", + b"\r\r\n", + b"\n\r\n", b"\r\r", + b"\n\r", + b"\n\n", ] +UTF8_BOM = b"\xef\xbb\xbf" + async def stream_events_async( response: httpx.Response, decoder: Callable[[str], T], sentinel: Optional[str] = None, + data_required: bool = True, ) -> AsyncGenerator[T, None]: buffer = bytearray() position = 0 - discard = False + event_id: Optional[str] = None async for chunk in response.aiter_bytes(): - # We've encountered the sentinel value and should no longer process - # incoming data. Instead we throw new data away until the server closes - # the connection. - if discard: - continue - + if len(buffer) == 0 and chunk.startswith(UTF8_BOM): + chunk = chunk[len(UTF8_BOM) :] buffer += chunk for i in range(position, len(buffer)): char = buffer[i : i + 1] @@ -121,15 +144,30 @@ async def stream_events_async( block = buffer[position:i] position = i + len(seq) - event, discard = _parse_event(block, decoder, sentinel) + event, discard, event_id = _parse_event( + raw=block, + decoder=decoder, + sentinel=sentinel, + event_id=event_id, + data_required=data_required, + ) if event is not None: yield event + if discard: + await response.aclose() + return if position > 0: buffer = buffer[position:] position = 0 - event, discard = _parse_event(buffer, decoder, sentinel) + event, discard, _ = _parse_event( + raw=buffer, + decoder=decoder, + sentinel=sentinel, + event_id=event_id, + data_required=data_required, + ) if event is not None: yield event @@ -138,17 +176,14 @@ def stream_events( response: httpx.Response, decoder: Callable[[str], T], sentinel: Optional[str] = None, + data_required: bool = True, ) -> Generator[T, None, None]: buffer = bytearray() position = 0 - discard = False + event_id: Optional[str] = None for chunk in response.iter_bytes(): - # We've encountered the sentinel value and should no longer process - # incoming data. Instead we throw new data away until the server closes - # the connection. - if discard: - continue - + if len(buffer) == 0 and chunk.startswith(UTF8_BOM): + chunk = chunk[len(UTF8_BOM) :] buffer += chunk for i in range(position, len(buffer)): char = buffer[i : i + 1] @@ -163,22 +198,42 @@ def stream_events( block = buffer[position:i] position = i + len(seq) - event, discard = _parse_event(block, decoder, sentinel) + event, discard, event_id = _parse_event( + raw=block, + decoder=decoder, + sentinel=sentinel, + event_id=event_id, + data_required=data_required, + ) if event is not None: yield event + if discard: + response.close() + return if position > 0: buffer = buffer[position:] position = 0 - event, discard = _parse_event(buffer, decoder, sentinel) + event, discard, _ = _parse_event( + raw=buffer, + decoder=decoder, + sentinel=sentinel, + event_id=event_id, + data_required=data_required, + ) if event is not None: yield event def _parse_event( - raw: bytearray, decoder: Callable[[str], T], sentinel: Optional[str] = None -) -> Tuple[Optional[T], bool]: + *, + raw: bytearray, + decoder: Callable[[str], T], + sentinel: Optional[str] = None, + event_id: Optional[str] = None, + data_required: bool = True, +) -> Tuple[Optional[T], bool, Optional[str]]: block = raw.decode() lines = re.split(r"\r?\n|\r", block) publish = False @@ -189,13 +244,16 @@ def _parse_event( continue delim = line.find(":") - if delim <= 0: + if delim == 0: continue - field = line[0:delim] - value = line[delim + 1 :] if delim < len(line) - 1 else "" - if len(value) and value[0] == " ": - value = value[1:] + field = line + value = "" + if delim > 0: + field = line[0:delim] + value = line[delim + 1 :] if delim < len(line) - 1 else "" + if len(value) and value[0] == " ": + value = value[1:] if field == "event": event.event = value @@ -204,37 +262,40 @@ def _parse_event( data += value + "\n" publish = True elif field == "id": - event.id = value publish = True + if "\x00" not in value: + event_id = value elif field == "retry": - event.retry = int(value) if value.isdigit() else None + if value.isdigit(): + event.retry = int(value) publish = True + event.id = event_id + if sentinel and data == f"{sentinel}\n": - return None, True + return None, True, event_id + + # Skip data-less events when data is required + if not data and publish and data_required: + return None, False, event_id if data: data = data[:-1] - event.data = data - - data_is_primitive = ( - data.isnumeric() or data == "true" or data == "false" or data == "null" - ) - data_is_json = ( - data.startswith("{") or data.startswith("[") or data.startswith('"') - ) - - if data_is_primitive or data_is_json: - try: - event.data = json.loads(data) - except Exception: - pass + try: + event.data = json.loads(data) + except json.JSONDecodeError: + event.data = data out = None if publish: - out = decoder(json.dumps(event.__dict__)) - - return out, False + out_dict = { + k: v + for k, v in asdict(event).items() + if v is not None or (k == "data" and data) + } + out = decoder(json.dumps(out_dict)) + + return out, False, event_id def _peek_sequence(position: int, buffer: bytearray, sequence: bytes): diff --git a/src/glean/api_client/utils/forms.py b/src/glean/api_client/utils/forms.py index e873495f..1e550bd5 100644 --- a/src/glean/api_client/utils/forms.py +++ b/src/glean/api_client/utils/forms.py @@ -142,16 +142,21 @@ def serialize_multipart_form( if field_metadata.file: if isinstance(val, List): # Handle array of files + array_field_name = f_name for file_obj in val: if not _is_set(file_obj): continue - - file_name, content, content_type = _extract_file_properties(file_obj) + + file_name, content, content_type = _extract_file_properties( + file_obj + ) if content_type is not None: - files.append((f_name + "[]", (file_name, content, content_type))) + files.append( + (array_field_name, (file_name, content, content_type)) + ) else: - files.append((f_name + "[]", (file_name, content))) + files.append((array_field_name, (file_name, content))) else: # Handle single file file_name, content, content_type = _extract_file_properties(val) @@ -161,11 +166,16 @@ def serialize_multipart_form( else: files.append((f_name, (file_name, content))) elif field_metadata.json: - files.append((f_name, ( - None, - marshal_json(val, request_field_types[name]), - "application/json", - ))) + files.append( + ( + f_name, + ( + None, + marshal_json(val, request_field_types[name]), + "application/json", + ), + ) + ) else: if isinstance(val, List): values = [] @@ -175,7 +185,8 @@ def serialize_multipart_form( continue values.append(_val_to_string(value)) - form[f_name + "[]"] = values + array_field_name = f_name + form[array_field_name] = values else: form[f_name] = _val_to_string(val) return media_type, form, files diff --git a/src/glean/api_client/utils/metadata.py b/src/glean/api_client/utils/metadata.py index 173b3e5c..5abddd58 100644 --- a/src/glean/api_client/utils/metadata.py +++ b/src/glean/api_client/utils/metadata.py @@ -15,6 +15,7 @@ class SecurityMetadata: scheme_type: Optional[str] = None sub_type: Optional[str] = None field_name: Optional[str] = None + composite: bool = False def get_field_name(self, default: str) -> str: return self.field_name or default diff --git a/src/glean/api_client/utils/queryparams.py b/src/glean/api_client/utils/queryparams.py index 37a6e7f9..c04e0db8 100644 --- a/src/glean/api_client/utils/queryparams.py +++ b/src/glean/api_client/utils/queryparams.py @@ -27,12 +27,13 @@ def get_query_params( query_params: Any, gbls: Optional[Any] = None, + allow_empty_value: Optional[List[str]] = None, ) -> Dict[str, List[str]]: params: Dict[str, List[str]] = {} - globals_already_populated = _populate_query_params(query_params, gbls, params, []) + globals_already_populated = _populate_query_params(query_params, gbls, params, [], allow_empty_value) if _is_set(gbls): - _populate_query_params(gbls, None, params, globals_already_populated) + _populate_query_params(gbls, None, params, globals_already_populated, allow_empty_value) return params @@ -42,6 +43,7 @@ def _populate_query_params( gbls: Any, query_param_values: Dict[str, List[str]], skip_fields: List[str], + allow_empty_value: Optional[List[str]] = None, ) -> List[str]: globals_already_populated: List[str] = [] @@ -69,6 +71,16 @@ def _populate_query_params( globals_already_populated.append(name) f_name = field.alias if field.alias is not None else name + + allow_empty_set = set(allow_empty_value or []) + should_include_empty = f_name in allow_empty_set and ( + value is None or value == [] or value == "" + ) + + if should_include_empty: + query_param_values[f_name] = [""] + continue + serialization = metadata.serialization if serialization is not None: serialized_parms = _get_serialized_params( diff --git a/src/glean/api_client/utils/requestbodies.py b/src/glean/api_client/utils/requestbodies.py index d5240dd5..591415af 100644 --- a/src/glean/api_client/utils/requestbodies.py +++ b/src/glean/api_client/utils/requestbodies.py @@ -44,15 +44,16 @@ def serialize_request_body( serialized_request_body = SerializedRequestBody(media_type) - if re.match(r"(application|text)\/.*?\+*json.*", media_type) is not None: + if re.match(r"^(application|text)\/([^+]+\+)*json.*", media_type) is not None: serialized_request_body.content = marshal_json(request_body, request_body_type) - elif re.match(r"multipart\/.*", media_type) is not None: + + elif re.match(r"^multipart\/.*", media_type) is not None: ( serialized_request_body.media_type, serialized_request_body.data, serialized_request_body.files, ) = serialize_multipart_form(media_type, request_body) - elif re.match(r"application\/x-www-form-urlencoded.*", media_type) is not None: + elif re.match(r"^application\/x-www-form-urlencoded.*", media_type) is not None: serialized_request_body.data = serialize_form_data(request_body) elif isinstance(request_body, (bytes, bytearray, io.BytesIO, io.BufferedReader)): serialized_request_body.content = request_body diff --git a/src/glean/api_client/utils/retries.py b/src/glean/api_client/utils/retries.py index 4d608671..af07d4e9 100644 --- a/src/glean/api_client/utils/retries.py +++ b/src/glean/api_client/utils/retries.py @@ -3,7 +3,9 @@ import asyncio import random import time -from typing import List +from datetime import datetime +from email.utils import parsedate_to_datetime +from typing import List, Optional import httpx @@ -51,9 +53,11 @@ def __init__(self, config: RetryConfig, status_codes: List[str]): class TemporaryError(Exception): response: httpx.Response + retry_after: Optional[int] def __init__(self, response: httpx.Response): self.response = response + self.retry_after = _parse_retry_after_header(response) class PermanentError(Exception): @@ -63,6 +67,62 @@ def __init__(self, inner: Exception): self.inner = inner +def _parse_retry_after_header(response: httpx.Response) -> Optional[int]: + """Parse Retry-After header from response. + + Returns: + Retry interval in milliseconds, or None if header is missing or invalid. + """ + retry_after_header = response.headers.get("retry-after") + if not retry_after_header: + return None + + try: + seconds = float(retry_after_header) + return round(seconds * 1000) + except ValueError: + pass + + try: + retry_date = parsedate_to_datetime(retry_after_header) + delta = (retry_date - datetime.now(retry_date.tzinfo)).total_seconds() + return round(max(0, delta) * 1000) + except (ValueError, TypeError): + pass + + return None + + +def _get_sleep_interval( + exception: Exception, + initial_interval: int, + max_interval: int, + exponent: float, + retries: int, +) -> float: + """Get sleep interval for retry with exponential backoff. + + Args: + exception: The exception that triggered the retry. + initial_interval: Initial retry interval in milliseconds. + max_interval: Maximum retry interval in milliseconds. + exponent: Base for exponential backoff calculation. + retries: Current retry attempt count. + + Returns: + Sleep interval in seconds. + """ + if ( + isinstance(exception, TemporaryError) + and exception.retry_after is not None + and exception.retry_after > 0 + ): + return exception.retry_after / 1000 + + sleep = (initial_interval / 1000) * exponent**retries + random.uniform(0, 1) + return min(sleep, max_interval / 1000) + + def retry(func, retries: Retries): if retries.config.strategy == "backoff": @@ -84,12 +144,7 @@ def do_request() -> httpx.Response: if res.status_code == parsed_code: raise TemporaryError(res) - except httpx.ConnectError as exception: - if retries.config.retry_connection_errors: - raise - - raise PermanentError(exception) from exception - except httpx.TimeoutException as exception: + except (httpx.NetworkError, httpx.TimeoutException) as exception: if retries.config.retry_connection_errors: raise @@ -133,12 +188,7 @@ async def do_request() -> httpx.Response: if res.status_code == parsed_code: raise TemporaryError(res) - except httpx.ConnectError as exception: - if retries.config.retry_connection_errors: - raise - - raise PermanentError(exception) from exception - except httpx.TimeoutException as exception: + except (httpx.NetworkError, httpx.TimeoutException) as exception: if retries.config.retry_connection_errors: raise @@ -183,8 +233,10 @@ def retry_with_backoff( return exception.response raise - sleep = (initial_interval / 1000) * exponent**retries + random.uniform(0, 1) - sleep = min(sleep, max_interval / 1000) + + sleep = _get_sleep_interval( + exception, initial_interval, max_interval, exponent, retries + ) time.sleep(sleep) retries += 1 @@ -211,7 +263,9 @@ async def retry_with_backoff_async( return exception.response raise - sleep = (initial_interval / 1000) * exponent**retries + random.uniform(0, 1) - sleep = min(sleep, max_interval / 1000) + + sleep = _get_sleep_interval( + exception, initial_interval, max_interval, exponent, retries + ) await asyncio.sleep(sleep) retries += 1 diff --git a/src/glean/api_client/utils/security.py b/src/glean/api_client/utils/security.py index 9a8b701e..4a272f16 100644 --- a/src/glean/api_client/utils/security.py +++ b/src/glean/api_client/utils/security.py @@ -19,7 +19,9 @@ import os -def get_security(security: Any) -> Tuple[Dict[str, str], Dict[str, List[str]]]: +def get_security( + security: Any, allowed_fields: Optional[List[str]] = None +) -> Tuple[Dict[str, str], Dict[str, List[str]]]: headers: Dict[str, str] = {} query_params: Dict[str, List[str]] = {} @@ -30,7 +32,14 @@ def get_security(security: Any) -> Tuple[Dict[str, str], Dict[str, List[str]]]: raise TypeError("security must be a pydantic model") sec_fields: Dict[str, FieldInfo] = security.__class__.model_fields - for name in sec_fields: + sec_field_names = ( + list(sec_fields.keys()) if allowed_fields is None else allowed_fields + ) + + for name in sec_field_names: + if name not in sec_fields: + continue + sec_field = sec_fields[name] value = getattr(security, name) @@ -52,6 +61,9 @@ def get_security(security: Any) -> Tuple[Dict[str, str], Dict[str, List[str]]]: else: _parse_security_scheme(headers, query_params, metadata, name, value) + if not metadata.composite: + return headers, query_params + return headers, query_params @@ -77,15 +89,24 @@ def _parse_security_option( raise TypeError("security option must be a pydantic model") opt_fields: Dict[str, FieldInfo] = option.__class__.model_fields + for name in opt_fields: opt_field = opt_fields[name] metadata = find_field_metadata(opt_field, SecurityMetadata) if metadata is None or not metadata.scheme: continue - _parse_security_scheme( - headers, query_params, metadata, name, getattr(option, name) - ) + + value = getattr(option, name) + if ( + metadata.scheme_type == "http" + and metadata.sub_type == "basic" + and not isinstance(value, BaseModel) + ): + _parse_basic_auth_scheme(headers, option) + return + + _parse_security_scheme(headers, query_params, metadata, name, value) def _parse_security_scheme( @@ -153,6 +174,8 @@ def _parse_security_scheme_value( elif scheme_type == "http": if sub_type == "bearer": headers[header_name] = _apply_bearer(value) + elif sub_type == "basic": + headers[header_name] = value elif sub_type == "custom": return else: diff --git a/src/glean/api_client/utils/serializers.py b/src/glean/api_client/utils/serializers.py index 378a14c0..d2149f8b 100644 --- a/src/glean/api_client/utils/serializers.py +++ b/src/glean/api_client/utils/serializers.py @@ -17,8 +17,7 @@ def serialize_decimal(as_str: bool): def serialize(d): - # Optional[T] is a Union[T, None] - if is_union(type(d)) and type(None) in get_args(type(d)) and d is None: + if d is None: return None if isinstance(d, Unset): return d @@ -46,8 +45,7 @@ def validate_decimal(d): def serialize_float(as_str: bool): def serialize(f): - # Optional[T] is a Union[T, None] - if is_union(type(f)) and type(None) in get_args(type(f)) and f is None: + if f is None: return None if isinstance(f, Unset): return f @@ -75,8 +73,7 @@ def validate_float(f): def serialize_int(as_str: bool): def serialize(i): - # Optional[T] is a Union[T, None] - if is_union(type(i)) and type(None) in get_args(type(i)) and i is None: + if i is None: return None if isinstance(i, Unset): return i @@ -102,30 +99,9 @@ def validate_int(b): return int(b) -def validate_open_enum(is_int: bool): - def validate(e): - if e is None: - return None - - if isinstance(e, Unset): - return e - - if is_int: - if not isinstance(e, int): - raise ValueError("Expected int") - else: - if not isinstance(e, str): - raise ValueError("Expected string") - - return e - - return validate - - def validate_const(v): def validate(c): - # Optional[T] is a Union[T, None] - if is_union(type(c)) and type(None) in get_args(type(c)) and c is None: + if c is None: return None if v != c: diff --git a/src/glean/api_client/utils/unmarshal_json_response.py b/src/glean/api_client/utils/unmarshal_json_response.py index 3f631b83..d65a9662 100644 --- a/src/glean/api_client/utils/unmarshal_json_response.py +++ b/src/glean/api_client/utils/unmarshal_json_response.py @@ -1,12 +1,26 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" -from typing import Any, Optional +from typing import Any, Optional, Type, TypeVar, overload import httpx from .serializers import unmarshal_json from glean.api_client import errors +T = TypeVar("T") + + +@overload +def unmarshal_json_response( + typ: Type[T], http_res: httpx.Response, body: Optional[str] = None +) -> T: ... + + +@overload +def unmarshal_json_response( + typ: Any, http_res: httpx.Response, body: Optional[str] = None +) -> Any: ... + def unmarshal_json_response( typ: Any, http_res: httpx.Response, body: Optional[str] = None diff --git a/src/glean/api_client/visibilityoverrides.py b/src/glean/api_client/visibilityoverrides.py index 32886db5..ecbc256b 100644 --- a/src/glean/api_client/visibilityoverrides.py +++ b/src/glean/api_client/visibilityoverrides.py @@ -56,6 +56,7 @@ def list( accept_header_value="application/json; charset=UTF-8", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -78,7 +79,7 @@ def list( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -141,6 +142,7 @@ async def list_async( accept_header_value="application/json; charset=UTF-8", http_headers=http_headers, security=self.sdk_configuration.security, + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -163,7 +165,7 @@ async def list_async( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -240,6 +242,7 @@ def create( "json", models.UpdateDocumentVisibilityOverridesRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -262,7 +265,7 @@ def create( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) @@ -339,6 +342,7 @@ async def create_async( "json", models.UpdateDocumentVisibilityOverridesRequest, ), + allow_empty_value=None, timeout_ms=timeout_ms, ) @@ -361,7 +365,7 @@ async def create_async( ), ), request=req, - error_status_codes=["403", "4XX", "500", "5XX"], + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), retry_config=retry_config, ) diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 00000000..8929d317 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,15 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +"""Pytest configuration for parallel test execution. + +Pre-imports modules that are lazily loaded during DNS resolution to prevent +race conditions when pytest-xdist runs multiple workers simultaneously. +""" + +# Pre-import modules that may be lazily imported during DNS resolution. +# This prevents Python import lock race conditions (KeyError with memory address) +# when multiple pytest-xdist workers make network requests simultaneously. +# See: https://bugs.python.org/issue38884 +import codecs # noqa: F401 +import encodings.idna # noqa: F401 +import stringprep # noqa: F401 diff --git a/tests/mockserver/go.mod b/tests/mockserver/go.mod index 38b2d5e8..8b924407 100644 --- a/tests/mockserver/go.mod +++ b/tests/mockserver/go.mod @@ -1,15 +1,16 @@ module mockserver -go 1.22 +go 1.25.10 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 7ad7aaa9..6400b090 100644 --- a/tests/mockserver/internal/handler/generated_handlers.go +++ b/tests/mockserver/internal/handler/generated_handlers.go @@ -12,11 +12,21 @@ import ( // GeneratedHandlers returns all generated handlers. func GeneratedHandlers(ctx context.Context, dir *logging.HTTPFileDirectory, rt *tracking.RequestTracker) []*GeneratedHandler { return []*GeneratedHandler{ + NewGeneratedHandler(ctx, http.MethodDelete, "/rest/api/index/custom-metadata/schema/{groupName}", pathDeleteRestAPIIndexCustomMetadataSchemaGroupName(dir, rt)), + NewGeneratedHandler(ctx, http.MethodDelete, "/rest/api/index/document/{docId}/custom-metadata/{groupName}", pathDeleteRestAPIIndexDocumentDocIDCustomMetadataGroupName(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/index/custom-metadata/schema/{groupName}", pathGetRestAPIIndexCustomMetadataSchemaGroupName(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/actions/actionpack/{actionPackId}/auth", pathGetRestAPIV1ActionsActionpackActionPackIDAuth(dir, rt)), 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/chat-files/{fileId}", pathGetRestAPIV1ChatFilesFileID(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/configure/datasources/{datasourceId}/instances/{instanceId}", pathGetRestAPIV1ConfigureDatasourcesDatasourceIDInstancesInstanceID(dir, rt)), + NewGeneratedHandler(ctx, http.MethodGet, "/rest/api/v1/datasource/{datasourceInstanceId}/credentialstatus", pathGetRestAPIV1DatasourceDatasourceInstanceIDCredentialstatus(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/people/{person_id}/photo", pathGetRestAPIV1PeoplePersonIDPhoto(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)), @@ -42,17 +52,20 @@ func GeneratedHandlers(ctx context.Context, dir *logging.HTTPFileDirectory, rt * NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/processallmemberships", pathPostAPIIndexV1Processallmemberships(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/rotatetoken", pathPostAPIIndexV1Rotatetoken(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/api/index/v1/updatepermissions", pathPostAPIIndexV1Updatepermissions(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/actions/actionpack/{actionPackId}/auth", pathPostRestAPIV1ActionsActionpackActionPackIDAuth(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/activity", pathPostRestAPIV1Activity(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/addcollectionitems", pathPostRestAPIV1Addcollectionitems(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/addverificationreminder", pathPostRestAPIV1Addverificationreminder(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/adminsearch", pathPostRestAPIV1Adminsearch(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/autocomplete", pathPostRestAPIV1Autocomplete(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/chat", pathPostRestAPIV1Chat(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/checkdatasourceauth", pathPostRestAPIV1Checkdatasourceauth(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/createannouncement", pathPostRestAPIV1Createannouncement(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/createanswer", pathPostRestAPIV1Createanswer(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/createauthtoken", pathPostRestAPIV1Createauthtoken(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/createcollection", pathPostRestAPIV1Createcollection(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/createshortcut", pathPostRestAPIV1Createshortcut(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/datasource/{datasourceInstanceId}/credentials", pathPostRestAPIV1DatasourceDatasourceInstanceIDCredentials(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/deleteallchats", pathPostRestAPIV1Deleteallchats(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/deleteannouncement", pathPostRestAPIV1Deleteannouncement(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/deleteanswer", pathPostRestAPIV1Deleteanswer(dir, rt)), @@ -96,5 +109,7 @@ func GeneratedHandlers(ctx context.Context, dir *logging.HTTPFileDirectory, rt * NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/updateannouncement", pathPostRestAPIV1Updateannouncement(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/updateshortcut", pathPostRestAPIV1Updateshortcut(dir, rt)), NewGeneratedHandler(ctx, http.MethodPost, "/rest/api/v1/verify", pathPostRestAPIV1Verify(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPut, "/rest/api/index/custom-metadata/schema/{groupName}", pathPutRestAPIIndexCustomMetadataSchemaGroupName(dir, rt)), + NewGeneratedHandler(ctx, http.MethodPut, "/rest/api/index/document/{docId}/custom-metadata/{groupName}", pathPutRestAPIIndexDocumentDocIDCustomMetadataGroupName(dir, rt)), } } diff --git a/tests/mockserver/internal/handler/pathdeleterestapiindexcustommetadataschemagroupname.go b/tests/mockserver/internal/handler/pathdeleterestapiindexcustommetadataschemagroupname.go new file mode 100644 index 00000000..1aa2e9f6 --- /dev/null +++ b/tests/mockserver/internal/handler/pathdeleterestapiindexcustommetadataschemagroupname.go @@ -0,0 +1,65 @@ +// 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/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathDeleteRestAPIIndexCustomMetadataSchemaGroupName(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 "delete_/rest/api/index/custom-metadata/schema/{groupName}[0]": + dir.HandlerFunc("delete_/rest/api/index/custom-metadata/schema/{groupName}", testDeleteRestAPIIndexCustomMetadataSchemaGroupNameDeleteRestAPIIndexCustomMetadataSchemaGroupName0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testDeleteRestAPIIndexCustomMetadataSchemaGroupNameDeleteRestAPIIndexCustomMetadataSchemaGroupName0(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.SuccessResponse = &components.SuccessResponse{ + Success: types.Bool(true), + } + 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/pathdeleterestapiindexdocumentdocidcustommetadatagroupname.go b/tests/mockserver/internal/handler/pathdeleterestapiindexdocumentdocidcustommetadatagroupname.go new file mode 100644 index 00000000..ff7097f8 --- /dev/null +++ b/tests/mockserver/internal/handler/pathdeleterestapiindexdocumentdocidcustommetadatagroupname.go @@ -0,0 +1,65 @@ +// 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/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathDeleteRestAPIIndexDocumentDocIDCustomMetadataGroupName(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 "delete_/rest/api/index/document/{docId}/custom-metadata/{groupName}[0]": + dir.HandlerFunc("delete_/rest/api/index/document/{docId}/custom-metadata/{groupName}", testDeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameDeleteRestAPIIndexDocumentDocIDCustomMetadataGroupName0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testDeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameDeleteRestAPIIndexDocumentDocIDCustomMetadataGroupName0(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.SuccessResponse = &components.SuccessResponse{ + Success: types.Bool(true), + } + 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/pathgetrestapiindexcustommetadataschemagroupname.go b/tests/mockserver/internal/handler/pathgetrestapiindexcustommetadataschemagroupname.go new file mode 100644 index 00000000..2c4b02fd --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetrestapiindexcustommetadataschemagroupname.go @@ -0,0 +1,64 @@ +// 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 pathGetRestAPIIndexCustomMetadataSchemaGroupName(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 "get_/rest/api/index/custom-metadata/schema/{groupName}[0]": + dir.HandlerFunc("get_/rest/api/index/custom-metadata/schema/{groupName}", testGetRestAPIIndexCustomMetadataSchemaGroupNameGetRestAPIIndexCustomMetadataSchemaGroupName0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testGetRestAPIIndexCustomMetadataSchemaGroupNameGetRestAPIIndexCustomMetadataSchemaGroupName0(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.CustomMetadataSchema = &components.CustomMetadataSchema{ + MetadataKeys: []components.CustomMetadataPropertyDefinition{}, + } + 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/pathgetrestapiv1actionsactionpackactionpackidauth.go b/tests/mockserver/internal/handler/pathgetrestapiv1actionsactionpackactionpackidauth.go new file mode 100644 index 00000000..97d3b63e --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetrestapiv1actionsactionpackactionpackidauth.go @@ -0,0 +1,67 @@ +// 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 pathGetRestAPIV1ActionsActionpackActionPackIDAuth(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 "getActionPackAuthStatus[0]": + dir.HandlerFunc("getActionPackAuthStatus", testGetActionPackAuthStatusGetActionPackAuthStatus0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testGetActionPackAuthStatusGetActionPackAuthStatus0(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.ActionPackAuthStatusResponse = &components.ActionPackAuthStatusResponse{ + ActionPack: components.ActionPackAuthStatus{ + Authenticated: true, + AuthType: components.ActionAuthTypeAuthUserOauth, + }, + } + 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/pathgetrestapiv1chatfilesfileid.go b/tests/mockserver/internal/handler/pathgetrestapiv1chatfilesfileid.go new file mode 100644 index 00000000..17e141f6 --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetrestapiv1chatfilesfileid.go @@ -0,0 +1,51 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/handler/values" + "mockserver/internal/logging" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetRestAPIV1ChatFilesFileID(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 "getChatFile[0]": + dir.HandlerFunc("getChatFile", testGetChatFileGetChatFile0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testGetChatFileGetChatFile0(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/octet-stream"}); 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 + } + respBodyBytes := values.ReadFileToBytes("./testdata/example.file") + w.Header().Set("Content-Type", "application/octet-stream") + w.WriteHeader(http.StatusOK) + _, _ = w.Write(respBodyBytes) +} 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/pathgetrestapiv1datasourcedatasourceinstanceidcredentialstatus.go b/tests/mockserver/internal/handler/pathgetrestapiv1datasourcedatasourceinstanceidcredentialstatus.go new file mode 100644 index 00000000..92d8c1fa --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetrestapiv1datasourcedatasourceinstanceidcredentialstatus.go @@ -0,0 +1,64 @@ +// 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 pathGetRestAPIV1DatasourceDatasourceInstanceIDCredentialstatus(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 "getDatasourceCredentialStatus[0]": + dir.HandlerFunc("getDatasourceCredentialStatus", testGetDatasourceCredentialStatusGetDatasourceCredentialStatus0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testGetDatasourceCredentialStatusGetDatasourceCredentialStatus0(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.DatasourceCredentialStatusResponse = &components.DatasourceCredentialStatusResponse{ + Status: components.DatasourceCredentialStatusValid, + } + 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/pathgetrestapiv1governancedatafindingsexports.go b/tests/mockserver/internal/handler/pathgetrestapiv1governancedatafindingsexports.go new file mode 100644 index 00000000..777d476b --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetrestapiv1governancedatafindingsexports.go @@ -0,0 +1,62 @@ +// 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 pathGetRestAPIV1GovernanceDataFindingsExports(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 "listfindingsexports[0]": + dir.HandlerFunc("listfindingsexports", testListfindingsexportsListfindingsexports0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testListfindingsexportsListfindingsexports0(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.ListDlpFindingsExportsResponse = &components.ListDlpFindingsExportsResponse{} + 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/pathgetrestapiv1peoplepersonidphoto.go b/tests/mockserver/internal/handler/pathgetrestapiv1peoplepersonidphoto.go new file mode 100644 index 00000000..253b4d87 --- /dev/null +++ b/tests/mockserver/internal/handler/pathgetrestapiv1peoplepersonidphoto.go @@ -0,0 +1,51 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package handler + +import ( + "fmt" + "log" + "mockserver/internal/handler/assert" + "mockserver/internal/handler/values" + "mockserver/internal/logging" + "mockserver/internal/tracking" + "net/http" +) + +func pathGetRestAPIV1PeoplePersonIDPhoto(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 "getPersonPhoto[0]": + dir.HandlerFunc("getPersonPhoto", testGetPersonPhotoGetPersonPhoto0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testGetPersonPhotoGetPersonPhoto0(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{"image/jpeg;q=1", "image/png;q=0"}); 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 + } + respBodyBytes := values.ReadFileToBytes("./testdata/example.file") + w.Header().Set("Content-Type", "image/png") + 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/pathpostrestapiv1actionsactionpackactionpackidauth.go b/tests/mockserver/internal/handler/pathpostrestapiv1actionsactionpackactionpackidauth.go new file mode 100644 index 00000000..5ae4ea12 --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostrestapiv1actionsactionpackactionpackidauth.go @@ -0,0 +1,69 @@ +// 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 pathPostRestAPIV1ActionsActionpackActionPackIDAuth(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 "authorizeActionPack[0]": + dir.HandlerFunc("authorizeActionPack", testAuthorizeActionPackAuthorizeActionPack0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testAuthorizeActionPackAuthorizeActionPack0(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.AuthorizeActionPackResponse = &components.AuthorizeActionPackResponse{ + RedirectURL: "https://unconscious-diversity.net", + } + 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/pathpostrestapiv1checkdatasourceauth.go b/tests/mockserver/internal/handler/pathpostrestapiv1checkdatasourceauth.go new file mode 100644 index 00000000..41731f5c --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostrestapiv1checkdatasourceauth.go @@ -0,0 +1,70 @@ +// 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/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPostRestAPIV1Checkdatasourceauth(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 "checkdatasourceauth[0]": + dir.HandlerFunc("checkdatasourceauth", testCheckdatasourceauthCheckdatasourceauth0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testCheckdatasourceauthCheckdatasourceauth0(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.CheckDatasourceAuthResponse = &components.CheckDatasourceAuthResponse{ + UnauthorizedDatasourceInstances: []components.UnauthorizedDatasourceInstance{ + components.UnauthorizedDatasourceInstance{ + DatasourceInstance: types.String("slack_0"), + DisplayName: types.String("Slack"), + }, + }, + } + 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/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 b6a5090d..31b8c1ca 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1createanswer.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1createanswer.go @@ -468,34 +468,6 @@ func testCreateanswerCreateanswer0(w http.ResponseWriter, req *http.Request) { }, }, }, - Board: &components.AnswerBoard{ - Name: "", - Description: "up shrill except hmph blowgun mechanically seldom beyond", - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 198996, - Creator: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - }, - }, Collections: []components.Collection{ components.Collection{ Name: "", @@ -830,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{ @@ -926,34 +898,6 @@ func testCreateanswerCreateanswer0(w http.ResponseWriter, req *http.Request) { }, }, }, - AnswerBoard: &components.AnswerBoard{ - Name: "", - Description: "wordy coincide near where husky at meh terrible", - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 994124, - Creator: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - }, - }, Code: &components.Code{ RepoName: types.String("scio"), FileName: types.String("README.md"), @@ -1062,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{ @@ -1289,34 +1233,6 @@ func testCreateanswerCreateanswer0(w http.ResponseWriter, req *http.Request) { }, }, }, - Board: &components.AnswerBoard{ - Name: "", - Description: "up shrill except hmph blowgun mechanically seldom beyond", - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 198996, - Creator: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - }, - }, SourceDocument: &components.Document{ ContainerDocument: &components.Document{ Metadata: &components.DocumentMetadata{ diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1datasourcedatasourceinstanceidcredentials.go b/tests/mockserver/internal/handler/pathpostrestapiv1datasourcedatasourceinstanceidcredentials.go new file mode 100644 index 00000000..af37421f --- /dev/null +++ b/tests/mockserver/internal/handler/pathpostrestapiv1datasourcedatasourceinstanceidcredentials.go @@ -0,0 +1,69 @@ +// 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 pathPostRestAPIV1DatasourceDatasourceInstanceIDCredentials(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 "rotateDatasourceCredentials[0]": + dir.HandlerFunc("rotateDatasourceCredentials", testRotateDatasourceCredentialsRotateDatasourceCredentials0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testRotateDatasourceCredentialsRotateDatasourceCredentials0(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.DatasourceCredentialStatusResponse = &components.DatasourceCredentialStatusResponse{ + Status: components.DatasourceCredentialStatusMissing, + } + 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/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 7bb18293..c4e632d1 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1editanswer.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1editanswer.go @@ -461,34 +461,6 @@ func testEditanswerEditanswer0(w http.ResponseWriter, req *http.Request) { }, }, }, - Board: &components.AnswerBoard{ - Name: "", - Description: "around eek frenetically unfortunately via pretty", - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 835038, - Creator: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - }, - }, Collections: []components.Collection{ components.Collection{ Name: "", @@ -823,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{ @@ -919,34 +891,6 @@ func testEditanswerEditanswer0(w http.ResponseWriter, req *http.Request) { }, }, }, - AnswerBoard: &components.AnswerBoard{ - Name: "", - Description: "deform swanling atop uh-huh hmph against meanwhile untimely allocation", - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 79789, - Creator: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - }, - }, Code: &components.Code{ RepoName: types.String("scio"), FileName: types.String("README.md"), @@ -1055,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{ @@ -1275,34 +1219,6 @@ func testEditanswerEditanswer0(w http.ResponseWriter, req *http.Request) { }, }, }, - Board: &components.AnswerBoard{ - Name: "", - Description: "around eek frenetically unfortunately via pretty", - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 835038, - Creator: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - }, - }, SourceDocument: &components.Document{ ContainerDocument: &components.Document{ Metadata: &components.DocumentMetadata{ 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 290caaa8..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"), }, }, }, @@ -2174,102 +2174,6 @@ func testGetanswerGetanswer0(w http.ResponseWriter, req *http.Request) { }, }, }, - Board: &components.AnswerBoard{ - Name: "", - Description: "whether deflate book knotty er beneath nervously than", - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 194354, - Creator: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, SourceDocument: &components.Document{ Metadata: &components.DocumentMetadata{ Datasource: types.String("datasource"), diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go b/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go index 35e69d35..87401958 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(""), }, }, }, @@ -807,37 +807,6 @@ func testGetchatGetchat0(w http.ResponseWriter, req *http.Request) { CandidateVerifiers: []components.Person{}, }, }, - Board: &components.AnswerBoard{ - Name: "", - Description: "indolent vainly closely", - AddedRoles: []components.UserRoleSpecification{}, - RemovedRoles: []components.UserRoleSpecification{}, - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 601522, - Creator: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - }, - Roles: []components.UserRoleSpecification{}, - }, Collections: []components.Collection{}, DocumentCategory: types.String(""), SourceDocument: &components.Document{ @@ -1011,46 +980,6 @@ func testGetchatGetchat0(w http.ResponseWriter, req *http.Request) { Children: []components.Collection{}, Roles: []components.UserRoleSpecification{}, }, - AnswerBoard: &components.AnswerBoard{ - Name: "", - Description: "innocent downchange ick rudely what youthfully lightly yum", - AddedRoles: []components.UserRoleSpecification{}, - RemovedRoles: []components.UserRoleSpecification{}, - AudienceFilters: []components.FacetFilter{}, - ID: 569914, - CreateTime: types.MustNewTimeFromString("2023-02-12T07:51:20.736Z"), - UpdateTime: types.MustNewTimeFromString("2024-03-18T02:09:52.587Z"), - Creator: &components.Person{ - Name: "", - ObfuscatedID: "", - RelatedDocuments: []components.RelatedDocuments{}, - Metadata: &components.PersonMetadata{ - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - }, - }, - UpdatedBy: &components.Person{ - Name: "", - ObfuscatedID: "", - RelatedDocuments: []components.RelatedDocuments{}, - Metadata: &components.PersonMetadata{ - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - }, - }, - ItemCount: types.Int64(771154), - Roles: []components.UserRoleSpecification{}, - }, Code: &components.Code{ RepoName: types.String("scio"), FileName: types.String("README.md"), 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/pathpostrestapiv1insights.go b/tests/mockserver/internal/handler/pathpostrestapiv1insights.go index 02d5ac19..6e9737ca 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1insights.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1insights.go @@ -52,5158 +52,6 @@ func testInsightsInsights0(w http.ResponseWriter, req *http.Request) { return } var respBody *components.InsightsResponse = &components.InsightsResponse{ - Users: &components.UserInsightsResponse{ - ActivityInsights: []components.UserActivityInsight{ - components.UserActivityInsight{ - User: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - RelatedDocuments: []components.RelatedDocuments{ - components.RelatedDocuments{ - QuerySuggestion: &components.QuerySuggestion{ - Query: "app:github type:pull author:mortimer", - SearchProviderInfo: &components.SearchProviderInfo{ - Name: types.String("Google"), - SearchLinkURLTemplate: types.String("https://www.google.com/search?q={query}&hl=en"), - }, - Label: types.String("Mortimer's PRs"), - Datasource: types.String("github"), - RequestOptions: &components.SearchRequestOptions{ - DatasourceFilter: types.String("JIRA"), - DatasourcesFilter: []string{ - "JIRA", - }, - QueryOverridesFacetFilters: types.Bool(true), - FacetFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - FacetFilterSets: []components.FacetFilterSet{ - components.FacetFilterSet{ - Filters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - }, - components.FacetFilterSet{ - Filters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - }, - }, - FacetBucketSize: 450824, - AuthTokens: []components.AuthToken{ - components.AuthToken{ - AccessToken: "123abc", - Datasource: "gmail", - Scope: types.String("email profile https://www.googleapis.com/auth/gmail.readonly"), - TokenType: types.String("Bearer"), - AuthUser: types.String("1"), - }, - }, - }, - Ranges: []components.TextRange{ - components.TextRange{ - StartIndex: 213457, - Document: &components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - Pins: []components.PinDocument{ - components.PinDocument{ - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - DocumentID: "", - }, - components.PinDocument{ - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - DocumentID: "", - }, - components.PinDocument{ - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - DocumentID: "", - }, - }, - Collections: []components.Collection{ - components.Collection{ - Name: "", - Description: "yahoo disapprove glum ugh roundabout middle ha rise readily", - AddedRoles: []components.UserRoleSpecification{ - components.UserRoleSpecification{ - Role: components.UserRoleVerifier, - }, - components.UserRoleSpecification{ - Role: components.UserRoleOwner, - }, - components.UserRoleSpecification{ - Role: components.UserRoleEditor, - }, - }, - RemovedRoles: []components.UserRoleSpecification{ - components.UserRoleSpecification{ - Role: components.UserRoleViewer, - }, - components.UserRoleSpecification{ - Role: components.UserRoleVerifier, - }, - components.UserRoleSpecification{ - Role: components.UserRoleViewer, - }, - }, - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 237994, - Items: []components.CollectionItem{ - components.CollectionItem{ - CollectionID: 256758, - ItemType: components.CollectionItemItemTypeCollection, - }, - components.CollectionItem{ - CollectionID: 783459, - ItemType: components.CollectionItemItemTypeURL, - }, - components.CollectionItem{ - CollectionID: 188420, - ItemType: components.CollectionItemItemTypeText, - }, - }, - Roles: []components.UserRoleSpecification{ - components.UserRoleSpecification{ - Role: components.UserRoleVerifier, - }, - components.UserRoleSpecification{ - Role: components.UserRoleViewer, - }, - }, - }, - components.Collection{ - Name: "", - Description: "bell unabashedly unwilling disk", - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 698722, - }, - }, - Interactions: &components.DocumentInteractions{ - Reacts: []components.Reaction{ - components.Reaction{}, - components.Reaction{}, - }, - Shares: []components.Share{ - components.Share{ - NumDaysAgo: 365275, - }, - components.Share{ - NumDaysAgo: 790898, - }, - }, - }, - Verification: &components.Verification{ - State: components.StateUnverified, - Metadata: &components.VerificationMetadata{ - Reminders: []components.Reminder{ - components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - }, - RemindAt: 856562, - }, - components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - }, - RemindAt: 328633, - }, - }, - LastReminder: &components.Reminder{ - RemindAt: 287673, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - }, - }, - }, - }, - InputDetails: &components.SearchRequestInputDetails{ - HasCopyPaste: types.Bool(true), - }, - }, - Results: []components.SearchResult{ - components.SearchResult{ - Title: types.String("title"), - URL: "https://example.com/foo/bar", - NativeAppURL: types.String("slack://foo/bar"), - Snippets: []components.SearchResultSnippet{ - components.SearchResultSnippet{ - MimeType: types.String("mimeType"), - Snippet: "snippet", - }, - }, - }, - }, - }, - components.RelatedDocuments{ - QuerySuggestion: &components.QuerySuggestion{ - Query: "app:github type:pull author:mortimer", - SearchProviderInfo: &components.SearchProviderInfo{ - Name: types.String("Google"), - SearchLinkURLTemplate: types.String("https://www.google.com/search?q={query}&hl=en"), - }, - Label: types.String("Mortimer's PRs"), - Datasource: types.String("github"), - RequestOptions: &components.SearchRequestOptions{ - DatasourceFilter: types.String("JIRA"), - DatasourcesFilter: []string{ - "JIRA", - }, - QueryOverridesFacetFilters: types.Bool(true), - FacetFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - FacetFilterSets: []components.FacetFilterSet{ - components.FacetFilterSet{ - Filters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - }, - components.FacetFilterSet{ - Filters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - }, - components.FacetFilterSet{ - Filters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - }, - }, - FacetBucketSize: 140875, - AuthTokens: []components.AuthToken{ - components.AuthToken{ - AccessToken: "123abc", - Datasource: "gmail", - Scope: types.String("email profile https://www.googleapis.com/auth/gmail.readonly"), - TokenType: types.String("Bearer"), - AuthUser: types.String("1"), - }, - }, - }, - InputDetails: &components.SearchRequestInputDetails{ - HasCopyPaste: types.Bool(true), - }, - }, - }, - components.RelatedDocuments{ - QuerySuggestion: &components.QuerySuggestion{ - Query: "app:github type:pull author:mortimer", - SearchProviderInfo: &components.SearchProviderInfo{ - Name: types.String("Google"), - SearchLinkURLTemplate: types.String("https://www.google.com/search?q={query}&hl=en"), - }, - Label: types.String("Mortimer's PRs"), - Datasource: types.String("github"), - RequestOptions: &components.SearchRequestOptions{ - DatasourceFilter: types.String("JIRA"), - DatasourcesFilter: []string{ - "JIRA", - }, - QueryOverridesFacetFilters: types.Bool(true), - FacetFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - FacetFilterSets: []components.FacetFilterSet{ - components.FacetFilterSet{ - Filters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - }, - components.FacetFilterSet{ - Filters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - }, - }, - FacetBucketSize: 210313, - AuthTokens: []components.AuthToken{ - components.AuthToken{ - AccessToken: "123abc", - Datasource: "gmail", - Scope: types.String("email profile https://www.googleapis.com/auth/gmail.readonly"), - TokenType: types.String("Bearer"), - AuthUser: types.String("1"), - }, - }, - }, - InputDetails: &components.SearchRequestInputDetails{ - HasCopyPaste: types.Bool(true), - }, - }, - }, - }, - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{ - Suggestions: []components.QuerySuggestion{ - components.QuerySuggestion{ - Query: "app:github type:pull author:mortimer", - Label: types.String("Mortimer's PRs"), - Datasource: types.String("github"), - }, - }, - }, - InviteInfo: &components.InviteInfo{ - Invites: []components.ChannelInviteInfo{ - components.ChannelInviteInfo{}, - components.ChannelInviteInfo{}, - }, - }, - CustomFields: []components.CustomFieldData{ - components.CustomFieldData{ - Label: "", - Values: []components.CustomFieldValue{ - components.CreateCustomFieldValueCustomFieldValueStr( - components.CustomFieldValueStr{}, - ), - }, - Displayable: types.Bool(true), - }, - }, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Activity: components.ActivityEnumSearch, - }, - components.UserActivityInsight{ - User: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Activity: components.ActivityEnumAll, - }, - }, - InactiveInsights: []components.UserActivityInsight{ - components.UserActivityInsight{ - User: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Activity: components.ActivityEnumSearch, - }, - components.UserActivityInsight{ - User: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Activity: components.ActivityEnumSearch, - }, - components.UserActivityInsight{ - User: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Activity: components.ActivityEnumAll, - }, - }, - }, - Content: &components.ContentInsightsResponse{ - DocumentInsights: []components.DocumentInsight{ - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateDeprecated, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 783566, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateDeprecated, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 519998, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateVerified, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 500839, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - Collections: &components.ContentInsightsResponse{ - DocumentInsights: []components.DocumentInsight{ - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateDeprecated, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 609810, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateVerified, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 413854, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateUnverified, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 150399, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - CollectionsV2: &components.ContentInsightsResponse{ - DocumentInsights: []components.DocumentInsight{ - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateUnverified, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 148964, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateUnverified, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 541220, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateUnverified, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 222075, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - Announcements: &components.ContentInsightsResponse{ - DocumentInsights: []components.DocumentInsight{ - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateUnverified, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 15843, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - Answers: &components.ContentInsightsResponse{ - DocumentInsights: []components.DocumentInsight{ - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateDeprecated, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 39567, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateDeprecated, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 892341, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - components.DocumentInsight{ - Document: components.Document{ - Metadata: &components.DocumentMetadata{ - Datasource: types.String("datasource"), - ObjectType: types.String("Feature Request"), - Container: types.String("container"), - ParentID: types.String("JIRA_EN-1337"), - MimeType: types.String("mimeType"), - DocumentID: types.String("documentId"), - CreateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - UpdateTime: types.MustNewTimeFromString("2000-01-23T04:56:07.000Z"), - Author: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Owner: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Components: []string{ - "Backend", - "Networking", - }, - Status: types.String("[\"Done\"]"), - AssignedTo: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Interactions: &components.DocumentInteractions{}, - Verification: &components.Verification{ - State: components.StateUnverified, - Metadata: &components.VerificationMetadata{ - LastVerifier: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - LastReminder: &components.Reminder{ - Assignee: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Requestor: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - RemindAt: 486092, - }, - }, - }, - CustomData: map[string]components.CustomDataValue{ - "someCustomField": components.CustomDataValue{}, - }, - ContactPerson: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, - }, - }, - }, - }, - Ai: &components.AiInsightsResponse{ - AssistantInsights: []components.UserActivityInsight{ - components.UserActivityInsight{ - User: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Activity: components.ActivityEnumSearch, - }, - }, - }, - AiApps: &components.AiAppsInsightsResponse{ - AiAppInsights: []components.UserActivityInsight{ - components.UserActivityInsight{ - User: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Activity: components.ActivityEnumSearch, - }, - components.UserActivityInsight{ - User: components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - Activity: components.ActivityEnumAll, - }, - }, - }, GleanAssist: &components.GleanAssistInsightsResponse{ ActivityInsights: []components.UserActivityInsight{ components.UserActivityInsight{ diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1listanswers.go b/tests/mockserver/internal/handler/pathpostrestapiv1listanswers.go index f14faccd..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"), }, }, }, @@ -1342,98 +1342,6 @@ func testListanswersListanswers0(w http.ResponseWriter, req *http.Request) { }, }, }, - Board: &components.AnswerBoard{ - Name: "", - Description: "boo massive sorrowful aw strict behind along energetic oddball", - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 472871, - Creator: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, SourceDocument: &components.Document{ Metadata: &components.DocumentMetadata{ Datasource: types.String("datasource"), @@ -2199,98 +2107,6 @@ func testListanswersListanswers0(w http.ResponseWriter, req *http.Request) { }, }, }, - Board: &components.AnswerBoard{ - Name: "", - Description: "likely up questionably forgery glow warmhearted", - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 674469, - Creator: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, SourceDocument: &components.Document{ Metadata: &components.DocumentMetadata{ Datasource: types.String("datasource"), @@ -3064,94 +2880,6 @@ func testListanswersListanswers0(w http.ResponseWriter, req *http.Request) { }, }, }, - Board: &components.AnswerBoard{ - Name: "", - Description: "freely overcook till boo ack", - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 477827, - Creator: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, SourceDocument: &components.Document{ Metadata: &components.DocumentMetadata{ Datasource: types.String("datasource"), 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 41144f0e..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"), }, }, }, @@ -3186,98 +3186,6 @@ func testMessagesMessages0(w http.ResponseWriter, req *http.Request) { }, }, }, - Board: &components.AnswerBoard{ - Name: "", - Description: "absolve beside makeover amidst diver if behind drat", - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 435401, - Creator: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, SourceDocument: &components.Document{ Metadata: &components.DocumentMetadata{ Datasource: types.String("datasource"), @@ -4510,102 +4418,6 @@ func testMessagesMessages0(w http.ResponseWriter, req *http.Request) { }, }, }, - AnswerBoard: &components.AnswerBoard{ - Name: "", - Description: "unnecessarily medium following pfft bashfully before", - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 534236, - Creator: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, Code: &components.Code{ RepoName: types.String("scio"), FileName: types.String("README.md"), @@ -5510,106 +5322,6 @@ func testMessagesMessages0(w http.ResponseWriter, req *http.Request) { }, }, }, - Board: &components.AnswerBoard{ - Name: "", - Description: "parade since delightfully", - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 207365, - Creator: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, SourceDocument: &components.Document{ Metadata: &components.DocumentMetadata{ Datasource: types.String("datasource"), @@ -6509,94 +6221,6 @@ func testMessagesMessages0(w http.ResponseWriter, req *http.Request) { }, }, }, - AnswerBoard: &components.AnswerBoard{ - Name: "", - Description: "er until seal er", - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 591321, - Creator: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, Code: &components.Code{ RepoName: types.String("scio"), FileName: types.String("README.md"), @@ -6979,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 cd02b02d..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"), }, }, }, @@ -3097,106 +3097,6 @@ func testRecommendationsRecommendations0(w http.ResponseWriter, req *http.Reques }, }, }, - Board: &components.AnswerBoard{ - Name: "", - Description: "adventurously notwithstanding canter generously tenderly helpfully front schnitzel", - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 324124, - Creator: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, SourceDocument: &components.Document{ Metadata: &components.DocumentMetadata{ Datasource: types.String("datasource"), @@ -4498,94 +4398,6 @@ func testRecommendationsRecommendations0(w http.ResponseWriter, req *http.Reques }, }, }, - AnswerBoard: &components.AnswerBoard{ - Name: "", - Description: "fess um whoa times boohoo down", - AudienceFilters: []components.FacetFilter{ - components.FacetFilter{ - FieldName: types.String("type"), - Values: []components.FacetFilterValue{ - components.FacetFilterValue{ - Value: types.String("Spreadsheet"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - components.FacetFilterValue{ - Value: types.String("Presentation"), - RelationType: components.RelationTypeEquals.ToPointer(), - }, - }, - }, - }, - ID: 762536, - Creator: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - UpdatedBy: &components.Person{ - Name: "George Clooney", - ObfuscatedID: "abc123", - Metadata: &components.PersonMetadata{ - Type: components.PersonMetadataTypeFullTime.ToPointer(), - Title: types.String("Actor"), - Department: types.String("Movies"), - Email: types.String("george@example.com"), - Location: types.String("Hollywood, CA"), - Phone: types.String("6505551234"), - PhotoURL: types.String("https://example.com/george.jpg"), - StartDate: types.MustNewDateFromString("2000-01-23"), - DatasourceProfile: []components.DatasourceProfile{ - components.DatasourceProfile{ - Datasource: "github", - Handle: "", - }, - }, - QuerySuggestions: &components.QuerySuggestionList{}, - InviteInfo: &components.InviteInfo{}, - Badges: []components.Badge{ - components.Badge{ - Key: types.String("deployment_name_new_hire"), - DisplayName: types.String("New hire"), - IconConfig: &components.IconConfig{ - Color: types.String("#343CED"), - Key: types.String("person_icon"), - IconType: components.IconTypeGlyph.ToPointer(), - Name: types.String("user"), - }, - }, - }, - }, - }, - }, Code: &components.Code{ RepoName: types.String("scio"), FileName: types.String("README.md"), 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/handler/pathputrestapiindexcustommetadataschemagroupname.go b/tests/mockserver/internal/handler/pathputrestapiindexcustommetadataschemagroupname.go new file mode 100644 index 00000000..b9aa8f5d --- /dev/null +++ b/tests/mockserver/internal/handler/pathputrestapiindexcustommetadataschemagroupname.go @@ -0,0 +1,70 @@ +// 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/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPutRestAPIIndexCustomMetadataSchemaGroupName(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 "put_/rest/api/index/custom-metadata/schema/{groupName}[0]": + dir.HandlerFunc("put_/rest/api/index/custom-metadata/schema/{groupName}", testPutRestAPIIndexCustomMetadataSchemaGroupNamePutRestAPIIndexCustomMetadataSchemaGroupName0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPutRestAPIIndexCustomMetadataSchemaGroupNamePutRestAPIIndexCustomMetadataSchemaGroupName0(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.SuccessResponse = &components.SuccessResponse{ + Success: types.Bool(true), + } + 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/pathputrestapiindexdocumentdocidcustommetadatagroupname.go b/tests/mockserver/internal/handler/pathputrestapiindexdocumentdocidcustommetadatagroupname.go new file mode 100644 index 00000000..acee8819 --- /dev/null +++ b/tests/mockserver/internal/handler/pathputrestapiindexdocumentdocidcustommetadatagroupname.go @@ -0,0 +1,70 @@ +// 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/types" + "mockserver/internal/sdk/utils" + "mockserver/internal/tracking" + "net/http" +) + +func pathPutRestAPIIndexDocumentDocIDCustomMetadataGroupName(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 "put_/rest/api/index/document/{docId}/custom-metadata/{groupName}[0]": + dir.HandlerFunc("put_/rest/api/index/document/{docId}/custom-metadata/{groupName}", testPutRestAPIIndexDocumentDocIDCustomMetadataGroupNamePutRestAPIIndexDocumentDocIDCustomMetadataGroupName0)(w, req) + default: + http.Error(w, fmt.Sprintf("Unknown test: %s[%d]", test, count), http.StatusBadRequest) + } + } +} + +func testPutRestAPIIndexDocumentDocIDCustomMetadataGroupNamePutRestAPIIndexDocumentDocIDCustomMetadataGroupName0(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.SuccessResponse = &components.SuccessResponse{ + Success: types.Bool(true), + } + 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/sdk/models/components/actionauthtype.go b/tests/mockserver/internal/sdk/models/components/actionauthtype.go new file mode 100644 index 00000000..4547fc36 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/actionauthtype.go @@ -0,0 +1,41 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// ActionAuthType - Authentication mechanism used by an action pack. +// - `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool. +// - `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually. +// - `AUTH_NONE`: Action pack requires no authentication. +type ActionAuthType string + +const ( + ActionAuthTypeAuthUserOauth ActionAuthType = "AUTH_USER_OAUTH" + ActionAuthTypeAuthAdmin ActionAuthType = "AUTH_ADMIN" + ActionAuthTypeAuthNone ActionAuthType = "AUTH_NONE" +) + +func (e ActionAuthType) ToPointer() *ActionAuthType { + return &e +} +func (e *ActionAuthType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "AUTH_USER_OAUTH": + fallthrough + case "AUTH_ADMIN": + fallthrough + case "AUTH_NONE": + *e = ActionAuthType(v) + return nil + default: + return fmt.Errorf("invalid value for ActionAuthType: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/actionpackauthstatus.go b/tests/mockserver/internal/sdk/models/components/actionpackauthstatus.go new file mode 100644 index 00000000..fb8e700a --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/actionpackauthstatus.go @@ -0,0 +1,28 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type ActionPackAuthStatus struct { + // Whether the calling user is already authenticated to the tool backing the action pack. + Authenticated bool `json:"authenticated"` + // Authentication mechanism used by an action pack. + // - `AUTH_USER_OAUTH`: Requires per-user OAuth consent to the third-party tool. + // - `AUTH_ADMIN`: Uses a service-account / admin-owned credential. End users do not authorize individually. + // - `AUTH_NONE`: Action pack requires no authentication. + // + AuthType ActionAuthType `json:"authType"` +} + +func (o *ActionPackAuthStatus) GetAuthenticated() bool { + if o == nil { + return false + } + return o.Authenticated +} + +func (o *ActionPackAuthStatus) GetAuthType() ActionAuthType { + if o == nil { + return ActionAuthType("") + } + return o.AuthType +} diff --git a/tests/mockserver/internal/sdk/models/components/actionpackauthstatusresponse.go b/tests/mockserver/internal/sdk/models/components/actionpackauthstatusresponse.go new file mode 100644 index 00000000..b5d71982 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/actionpackauthstatusresponse.go @@ -0,0 +1,14 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type ActionPackAuthStatusResponse struct { + ActionPack ActionPackAuthStatus `json:"actionPack"` +} + +func (o *ActionPackAuthStatusResponse) GetActionPack() ActionPackAuthStatus { + if o == nil { + return ActionPackAuthStatus{} + } + return o.ActionPack +} diff --git a/tests/mockserver/internal/sdk/models/components/actionsummary.go b/tests/mockserver/internal/sdk/models/components/actionsummary.go new file mode 100644 index 00000000..b2ab4884 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/actionsummary.go @@ -0,0 +1,79 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// ActionSummary - Represents a minimal summary of an action. +type ActionSummary struct { + // The unique identifier of the action. + 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 { + if o == nil { + return "" + } + return o.ToolID +} + +func (o *ActionSummary) GetDisplayName() string { + if o == nil { + return "" + } + 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/addcollectionitemserror.go b/tests/mockserver/internal/sdk/models/components/addcollectionitemserror.go index 215308e8..43f93195 100644 --- a/tests/mockserver/internal/sdk/models/components/addcollectionitemserror.go +++ b/tests/mockserver/internal/sdk/models/components/addcollectionitemserror.go @@ -11,6 +11,7 @@ type AddCollectionItemsErrorErrorType string const ( AddCollectionItemsErrorErrorTypeExistingItem AddCollectionItemsErrorErrorType = "EXISTING_ITEM" + AddCollectionItemsErrorErrorTypeCorruptItem AddCollectionItemsErrorErrorType = "CORRUPT_ITEM" ) func (e AddCollectionItemsErrorErrorType) ToPointer() *AddCollectionItemsErrorErrorType { @@ -23,6 +24,8 @@ func (e *AddCollectionItemsErrorErrorType) UnmarshalJSON(data []byte) error { } switch v { case "EXISTING_ITEM": + fallthrough + case "CORRUPT_ITEM": *e = AddCollectionItemsErrorErrorType(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/agentconfig.go b/tests/mockserver/internal/sdk/models/components/agentconfig.go index be2e03e8..679f7f32 100644 --- a/tests/mockserver/internal/sdk/models/components/agentconfig.go +++ b/tests/mockserver/internal/sdk/models/components/agentconfig.go @@ -16,6 +16,7 @@ const ( AgentEnumUniversal AgentEnum = "UNIVERSAL" AgentEnumFast AgentEnum = "FAST" AgentEnumAdvanced AgentEnum = "ADVANCED" + AgentEnumAuto AgentEnum = "AUTO" ) func (e AgentEnum) ToPointer() *AgentEnum { @@ -36,6 +37,8 @@ func (e *AgentEnum) UnmarshalJSON(data []byte) error { case "FAST": fallthrough case "ADVANCED": + fallthrough + case "AUTO": *e = AgentEnum(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/agentrun.go b/tests/mockserver/internal/sdk/models/components/agentrun.go index 23ab5120..dcff6d12 100644 --- a/tests/mockserver/internal/sdk/models/components/agentrun.go +++ b/tests/mockserver/internal/sdk/models/components/agentrun.go @@ -2,11 +2,11 @@ package components -// AgentRun - Payload for creating a run. +// AgentRun - Payload for creating a run. **Important**: If the agent uses an input form trigger, the `input` field is required and must include all fields defined in the form schema. Even fields marked as optional in the UI must be included in the request—use an empty string (`""`) for optional fields without values. Omitting required form fields will result in a 500 error. type AgentRun struct { // The ID of the agent to run. AgentID string `json:"agent_id"` - // The input to the agent. + // The input to the agent. Required when the agent uses an input form trigger. Input map[string]any `json:"input,omitempty"` // The messages to pass an input to the agent. Messages []Message `json:"messages,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/agentruncreate.go b/tests/mockserver/internal/sdk/models/components/agentruncreate.go index c095a382..e0f2b034 100644 --- a/tests/mockserver/internal/sdk/models/components/agentruncreate.go +++ b/tests/mockserver/internal/sdk/models/components/agentruncreate.go @@ -2,11 +2,11 @@ package components -// AgentRunCreate - Payload for creating a run. +// AgentRunCreate - Payload for creating a run. **Important**: If the agent uses an input form trigger, the `input` field is required and must include all fields defined in the form schema. Even fields marked as optional in the UI must be included in the request—use an empty string (`""`) for optional fields without values. Omitting required form fields will result in a 500 error. type AgentRunCreate struct { // The ID of the agent to run. AgentID string `json:"agent_id"` - // The input to the agent. + // The input to the agent. Required when the agent uses an input form trigger. Input map[string]any `json:"input,omitempty"` // The messages to pass an input to the agent. Messages []Message `json:"messages,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/agentschemas.go b/tests/mockserver/internal/sdk/models/components/agentschemas.go index 4fe8d12d..262d8813 100644 --- a/tests/mockserver/internal/sdk/models/components/agentschemas.go +++ b/tests/mockserver/internal/sdk/models/components/agentschemas.go @@ -14,10 +14,14 @@ type OutputSchema struct { type AgentSchemas struct { // The ID of the agent. AgentID string `json:"agent_id"` + // The name of the agent. + Name *string `json:"name,omitempty"` // The schema for the agent input. In JSON Schema format. InputSchema InputSchema `json:"input_schema"` // The schema for the agent output. In JSON Schema format. OutputSchema OutputSchema `json:"output_schema"` + // List of tools that the agent can invoke. Only included when include_tools query parameter is set to true. + Tools []ActionSummary `json:"tools,omitempty"` } func (o *AgentSchemas) GetAgentID() string { @@ -27,6 +31,13 @@ func (o *AgentSchemas) GetAgentID() string { return o.AgentID } +func (o *AgentSchemas) GetName() *string { + if o == nil { + return nil + } + return o.Name +} + func (o *AgentSchemas) GetInputSchema() InputSchema { if o == nil { return InputSchema{} @@ -40,3 +51,10 @@ func (o *AgentSchemas) GetOutputSchema() OutputSchema { } return o.OutputSchema } + +func (o *AgentSchemas) GetTools() []ActionSummary { + if o == nil { + return nil + } + return o.Tools +} diff --git a/tests/mockserver/internal/sdk/models/components/agentsinsightsv2request.go b/tests/mockserver/internal/sdk/models/components/agentsinsightsv2request.go index 30af15e6..83467d6a 100644 --- a/tests/mockserver/internal/sdk/models/components/agentsinsightsv2request.go +++ b/tests/mockserver/internal/sdk/models/components/agentsinsightsv2request.go @@ -7,7 +7,9 @@ type AgentsInsightsV2Request struct { AgentIds []string `json:"agentIds,omitempty"` // Departments for which Insights are requested. Departments []string `json:"departments,omitempty"` - DayRange *Period `json:"dayRange,omitempty"` + // Manager emails whose teams should be filtered for. Empty array means no filtering. + ManagerEmails []string `json:"managerEmails,omitempty"` + DayRange *Period `json:"dayRange,omitempty"` } func (o *AgentsInsightsV2Request) GetAgentIds() []string { @@ -24,6 +26,13 @@ func (o *AgentsInsightsV2Request) GetDepartments() []string { return o.Departments } +func (o *AgentsInsightsV2Request) GetManagerEmails() []string { + if o == nil { + return nil + } + return o.ManagerEmails +} + func (o *AgentsInsightsV2Request) GetDayRange() *Period { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/agentsinsightsv2response.go b/tests/mockserver/internal/sdk/models/components/agentsinsightsv2response.go index 590fe93f..25139a60 100644 --- a/tests/mockserver/internal/sdk/models/components/agentsinsightsv2response.go +++ b/tests/mockserver/internal/sdk/models/components/agentsinsightsv2response.go @@ -3,9 +3,9 @@ package components type AgentsInsightsV2Response struct { - // Number of current Monthly Active Users, in the specified departments. + // Number of current Monthly Active Users. MonthlyActiveUsers *int64 `json:"monthlyActiveUsers,omitempty"` - // Number of current Weekly Active Users, in the specified departments. + // Number of current Weekly Active Users. WeeklyActiveUsers *int64 `json:"weeklyActiveUsers,omitempty"` MonthlyActiveUserTimeseries *LabeledCountInfo `json:"monthlyActiveUserTimeseries,omitempty"` WeeklyActiveUserTimeseries *LabeledCountInfo `json:"weeklyActiveUserTimeseries,omitempty"` @@ -13,11 +13,17 @@ type AgentsInsightsV2Response struct { // Total number of shared agents. SharedAgentsCount *int64 `json:"sharedAgentsCount,omitempty"` TopAgentsInsights []PerAgentInsight `json:"topAgentsInsights,omitempty"` + TopUseCasesInsights []AgentUseCaseInsight `json:"topUseCasesInsights,omitempty"` AgentsUsageByDepartmentInsights []AgentsUsageByDepartmentInsight `json:"agentsUsageByDepartmentInsights,omitempty"` AgentUsersInsights []AgentUsersInsight `json:"agentUsersInsights,omitempty"` - DailyAgentRunsTimeseries *LabeledCountInfo `json:"dailyAgentRunsTimeseries,omitempty"` - UpvotesTimeseries *LabeledCountInfo `json:"upvotesTimeseries,omitempty"` - DownvotesTimeseries *LabeledCountInfo `json:"downvotesTimeseries,omitempty"` + // Insights for agents time saved over the specified time period. + AgentsTimeSavedInsights []AgentsTimeSavedInsight `json:"agentsTimeSavedInsights,omitempty"` + DailyAgentRunsTimeseries *LabeledCountInfo `json:"dailyAgentRunsTimeseries,omitempty"` + SuccessfulRunsTimeseries *LabeledCountInfo `json:"successfulRunsTimeseries,omitempty"` + FailedRunsTimeseries *LabeledCountInfo `json:"failedRunsTimeseries,omitempty"` + PausedRunsTimeseries *LabeledCountInfo `json:"pausedRunsTimeseries,omitempty"` + UpvotesTimeseries *LabeledCountInfo `json:"upvotesTimeseries,omitempty"` + DownvotesTimeseries *LabeledCountInfo `json:"downvotesTimeseries,omitempty"` } func (o *AgentsInsightsV2Response) GetMonthlyActiveUsers() *int64 { @@ -69,6 +75,13 @@ func (o *AgentsInsightsV2Response) GetTopAgentsInsights() []PerAgentInsight { return o.TopAgentsInsights } +func (o *AgentsInsightsV2Response) GetTopUseCasesInsights() []AgentUseCaseInsight { + if o == nil { + return nil + } + return o.TopUseCasesInsights +} + func (o *AgentsInsightsV2Response) GetAgentsUsageByDepartmentInsights() []AgentsUsageByDepartmentInsight { if o == nil { return nil @@ -83,6 +96,13 @@ func (o *AgentsInsightsV2Response) GetAgentUsersInsights() []AgentUsersInsight { return o.AgentUsersInsights } +func (o *AgentsInsightsV2Response) GetAgentsTimeSavedInsights() []AgentsTimeSavedInsight { + if o == nil { + return nil + } + return o.AgentsTimeSavedInsights +} + func (o *AgentsInsightsV2Response) GetDailyAgentRunsTimeseries() *LabeledCountInfo { if o == nil { return nil @@ -90,6 +110,27 @@ func (o *AgentsInsightsV2Response) GetDailyAgentRunsTimeseries() *LabeledCountIn return o.DailyAgentRunsTimeseries } +func (o *AgentsInsightsV2Response) GetSuccessfulRunsTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.SuccessfulRunsTimeseries +} + +func (o *AgentsInsightsV2Response) GetFailedRunsTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.FailedRunsTimeseries +} + +func (o *AgentsInsightsV2Response) GetPausedRunsTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.PausedRunsTimeseries +} + func (o *AgentsInsightsV2Response) GetUpvotesTimeseries() *LabeledCountInfo { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/agentstimesavedinsight.go b/tests/mockserver/internal/sdk/models/components/agentstimesavedinsight.go new file mode 100644 index 00000000..2a8e31d9 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/agentstimesavedinsight.go @@ -0,0 +1,69 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type AgentsTimeSavedInsight struct { + // Agent ID + AgentID *string `json:"agentId,omitempty"` + // Agent name + AgentName *string `json:"agentName,omitempty"` + // Defines how to render an icon + Icon *IconConfig `json:"icon,omitempty"` + // Indicates whether the agent has been deleted + IsDeleted *bool `json:"isDeleted,omitempty"` + // Total number of runs for this agent over the specified time period. + RunCount *int64 `json:"runCount,omitempty"` + // Average minutes saved per run for this agent over the specified time period. + MinsPerRun *float32 `json:"minsPerRun,omitempty"` + // Total number of users who provided feedback on time saved for this agent over the specified time period. + FeedbackUserCount *int64 `json:"feedbackUserCount,omitempty"` +} + +func (o *AgentsTimeSavedInsight) GetAgentID() *string { + if o == nil { + return nil + } + return o.AgentID +} + +func (o *AgentsTimeSavedInsight) GetAgentName() *string { + if o == nil { + return nil + } + return o.AgentName +} + +func (o *AgentsTimeSavedInsight) GetIcon() *IconConfig { + if o == nil { + return nil + } + return o.Icon +} + +func (o *AgentsTimeSavedInsight) GetIsDeleted() *bool { + if o == nil { + return nil + } + return o.IsDeleted +} + +func (o *AgentsTimeSavedInsight) GetRunCount() *int64 { + if o == nil { + return nil + } + return o.RunCount +} + +func (o *AgentsTimeSavedInsight) GetMinsPerRun() *float32 { + if o == nil { + return nil + } + return o.MinsPerRun +} + +func (o *AgentsTimeSavedInsight) GetFeedbackUserCount() *int64 { + if o == nil { + return nil + } + return o.FeedbackUserCount +} diff --git a/tests/mockserver/internal/sdk/models/components/agentusecaseinsight.go b/tests/mockserver/internal/sdk/models/components/agentusecaseinsight.go new file mode 100644 index 00000000..3caa1836 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/agentusecaseinsight.go @@ -0,0 +1,78 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type AgentUseCaseInsight struct { + // Use case name + UseCase *string `json:"useCase,omitempty"` + // Total number of runs for this use case over the specified time period. + RunCount *int64 `json:"runCount,omitempty"` + // Percentage change in runs compared to the previous equivalent time period. + Trend *float32 `json:"trend,omitempty"` + // Comma-separated list of the top departments using this use case. + TopDepartments *string `json:"topDepartments,omitempty"` + // ID of the most-used agent for this use case. + TopAgentID *string `json:"topAgentId,omitempty"` + // Name of the most-used agent for this use case. + TopAgentName *string `json:"topAgentName,omitempty"` + // Defines how to render an icon + TopAgentIcon *IconConfig `json:"topAgentIcon,omitempty"` + // Indicates whether the top agent has been deleted. + TopAgentIsDeleted *bool `json:"topAgentIsDeleted,omitempty"` +} + +func (o *AgentUseCaseInsight) GetUseCase() *string { + if o == nil { + return nil + } + return o.UseCase +} + +func (o *AgentUseCaseInsight) GetRunCount() *int64 { + if o == nil { + return nil + } + return o.RunCount +} + +func (o *AgentUseCaseInsight) GetTrend() *float32 { + if o == nil { + return nil + } + return o.Trend +} + +func (o *AgentUseCaseInsight) GetTopDepartments() *string { + if o == nil { + return nil + } + return o.TopDepartments +} + +func (o *AgentUseCaseInsight) GetTopAgentID() *string { + if o == nil { + return nil + } + return o.TopAgentID +} + +func (o *AgentUseCaseInsight) GetTopAgentName() *string { + if o == nil { + return nil + } + return o.TopAgentName +} + +func (o *AgentUseCaseInsight) GetTopAgentIcon() *IconConfig { + if o == nil { + return nil + } + return o.TopAgentIcon +} + +func (o *AgentUseCaseInsight) GetTopAgentIsDeleted() *bool { + if o == nil { + return nil + } + return o.TopAgentIsDeleted +} diff --git a/tests/mockserver/internal/sdk/models/components/aiappactioncounts.go b/tests/mockserver/internal/sdk/models/components/aiappactioncounts.go deleted file mode 100644 index f8307b79..00000000 --- a/tests/mockserver/internal/sdk/models/components/aiappactioncounts.go +++ /dev/null @@ -1,84 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -import ( - "mockserver/internal/sdk/utils" -) - -// AiAppActionCounts - Map from action to frequency. -type AiAppActionCounts struct { - // Total number of Slackbot responses, both proactive and reactive. - TotalSlackbotResponses *int64 `json:"totalSlackbotResponses,omitempty"` - // Total number of Slackbot responses shared publicly (upvoted). - TotalSlackbotResponsesShared *int64 `json:"totalSlackbotResponsesShared,omitempty"` - // Total number of Slackbot responses rejected as not helpful (downvoted). - TotalSlackbotResponsesNotHelpful *int64 `json:"totalSlackbotResponsesNotHelpful,omitempty"` - // Total number of Chat messages sent in requested period. - TotalChatMessages *int64 `json:"totalChatMessages,omitempty"` - // Total number of Chat messages which received upvotes by the user. - TotalUpvotes *int64 `json:"totalUpvotes,omitempty"` - // Total number of Chat messages which received downvotes by the user. - TotalDownvotes *int64 `json:"totalDownvotes,omitempty"` - AdditionalProperties map[string]int64 `additionalProperties:"true" json:"-"` -} - -func (a AiAppActionCounts) MarshalJSON() ([]byte, error) { - return utils.MarshalJSON(a, "", false) -} - -func (a *AiAppActionCounts) UnmarshalJSON(data []byte) error { - if err := utils.UnmarshalJSON(data, &a, "", false, nil); err != nil { - return err - } - return nil -} - -func (o *AiAppActionCounts) GetTotalSlackbotResponses() *int64 { - if o == nil { - return nil - } - return o.TotalSlackbotResponses -} - -func (o *AiAppActionCounts) GetTotalSlackbotResponsesShared() *int64 { - if o == nil { - return nil - } - return o.TotalSlackbotResponsesShared -} - -func (o *AiAppActionCounts) GetTotalSlackbotResponsesNotHelpful() *int64 { - if o == nil { - return nil - } - return o.TotalSlackbotResponsesNotHelpful -} - -func (o *AiAppActionCounts) GetTotalChatMessages() *int64 { - if o == nil { - return nil - } - return o.TotalChatMessages -} - -func (o *AiAppActionCounts) GetTotalUpvotes() *int64 { - if o == nil { - return nil - } - return o.TotalUpvotes -} - -func (o *AiAppActionCounts) GetTotalDownvotes() *int64 { - if o == nil { - return nil - } - return o.TotalDownvotes -} - -func (o *AiAppActionCounts) GetAdditionalProperties() map[string]int64 { - if o == nil { - return nil - } - return o.AdditionalProperties -} diff --git a/tests/mockserver/internal/sdk/models/components/aiappsinsightsresponse.go b/tests/mockserver/internal/sdk/models/components/aiappsinsightsresponse.go deleted file mode 100644 index 8de39cd4..00000000 --- a/tests/mockserver/internal/sdk/models/components/aiappsinsightsresponse.go +++ /dev/null @@ -1,50 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type AiAppsInsightsResponse struct { - // Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - LastLogTimestamp *int64 `json:"lastLogTimestamp,omitempty"` - AiAppInsights []UserActivityInsight `json:"aiAppInsights,omitempty"` - // Total number of active users on the Ai App in the requested period. - TotalActiveUsers *int64 `json:"totalActiveUsers,omitempty"` - // Map from action to frequency. - ActionCounts *AiAppActionCounts `json:"actionCounts,omitempty"` - // list of departments applicable for users tab. - Departments []string `json:"departments,omitempty"` -} - -func (o *AiAppsInsightsResponse) GetLastLogTimestamp() *int64 { - if o == nil { - return nil - } - return o.LastLogTimestamp -} - -func (o *AiAppsInsightsResponse) GetAiAppInsights() []UserActivityInsight { - if o == nil { - return nil - } - return o.AiAppInsights -} - -func (o *AiAppsInsightsResponse) GetTotalActiveUsers() *int64 { - if o == nil { - return nil - } - return o.TotalActiveUsers -} - -func (o *AiAppsInsightsResponse) GetActionCounts() *AiAppActionCounts { - if o == nil { - return nil - } - return o.ActionCounts -} - -func (o *AiAppsInsightsResponse) GetDepartments() []string { - if o == nil { - return nil - } - return o.Departments -} diff --git a/tests/mockserver/internal/sdk/models/components/aiinsightsresponse.go b/tests/mockserver/internal/sdk/models/components/aiinsightsresponse.go deleted file mode 100644 index 478529db..00000000 --- a/tests/mockserver/internal/sdk/models/components/aiinsightsresponse.go +++ /dev/null @@ -1,113 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type AiInsightsResponse struct { - // Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - LastLogTimestamp *int64 `json:"lastLogTimestamp,omitempty"` - AssistantInsights []UserActivityInsight `json:"assistantInsights,omitempty"` - // Total number of Active Assistant users (chat, summary, AIA) in requested period. - TotalActiveAssistantUsers *int64 `json:"totalActiveAssistantUsers,omitempty"` - // Total number of Chat messages sent in requested period. - TotalChatMessages *int64 `json:"totalChatMessages,omitempty"` - // Total number of AI Document Summarizations invoked in the requested period. - TotalAiSummarizations *int64 `json:"totalAiSummarizations,omitempty"` - // Total number of AI Answers generated in the requested period. - TotalAiAnswers *int64 `json:"totalAiAnswers,omitempty"` - // Total number of Chat messages which received upvotes by the user. - TotalUpvotes *int64 `json:"totalUpvotes,omitempty"` - // Total number of Chat messages which received downvotes by the user. - TotalDownvotes *int64 `json:"totalDownvotes,omitempty"` - // Total number of Gleanbot responses, both proactive and reactive. - TotalGleanbotResponses *int64 `json:"totalGleanbotResponses,omitempty"` - // Total number of Gleanbot responses shared publicly (upvoted). - TotalGleanbotResponsesShared *int64 `json:"totalGleanbotResponsesShared,omitempty"` - // Total number of Glean responses rejected as not helpful (downvoted). - TotalGleanbotResponsesNotHelpful *int64 `json:"totalGleanbotResponsesNotHelpful,omitempty"` - // list of departments applicable for users tab. - Departments []string `json:"departments,omitempty"` -} - -func (o *AiInsightsResponse) GetLastLogTimestamp() *int64 { - if o == nil { - return nil - } - return o.LastLogTimestamp -} - -func (o *AiInsightsResponse) GetAssistantInsights() []UserActivityInsight { - if o == nil { - return nil - } - return o.AssistantInsights -} - -func (o *AiInsightsResponse) GetTotalActiveAssistantUsers() *int64 { - if o == nil { - return nil - } - return o.TotalActiveAssistantUsers -} - -func (o *AiInsightsResponse) GetTotalChatMessages() *int64 { - if o == nil { - return nil - } - return o.TotalChatMessages -} - -func (o *AiInsightsResponse) GetTotalAiSummarizations() *int64 { - if o == nil { - return nil - } - return o.TotalAiSummarizations -} - -func (o *AiInsightsResponse) GetTotalAiAnswers() *int64 { - if o == nil { - return nil - } - return o.TotalAiAnswers -} - -func (o *AiInsightsResponse) GetTotalUpvotes() *int64 { - if o == nil { - return nil - } - return o.TotalUpvotes -} - -func (o *AiInsightsResponse) GetTotalDownvotes() *int64 { - if o == nil { - return nil - } - return o.TotalDownvotes -} - -func (o *AiInsightsResponse) GetTotalGleanbotResponses() *int64 { - if o == nil { - return nil - } - return o.TotalGleanbotResponses -} - -func (o *AiInsightsResponse) GetTotalGleanbotResponsesShared() *int64 { - if o == nil { - return nil - } - return o.TotalGleanbotResponsesShared -} - -func (o *AiInsightsResponse) GetTotalGleanbotResponsesNotHelpful() *int64 { - if o == nil { - return nil - } - return o.TotalGleanbotResponsesNotHelpful -} - -func (o *AiInsightsResponse) GetDepartments() []string { - if o == nil { - return nil - } - return o.Departments -} diff --git a/tests/mockserver/internal/sdk/models/components/announcement.go b/tests/mockserver/internal/sdk/models/components/announcement.go index c8744e43..c2e1c399 100644 --- a/tests/mockserver/internal/sdk/models/components/announcement.go +++ b/tests/mockserver/internal/sdk/models/components/announcement.go @@ -113,6 +113,8 @@ type Announcement struct { // The opaque id of the associated draft. DraftID *int64 `json:"draftId,omitempty"` Permissions *ObjectPermissions `json:"permissions,omitempty"` + // An opaque token that represents this particular UGC. To be used for `/feedback` reporting. + TrackingToken *string `json:"trackingToken,omitempty"` // The opaque id of the announcement. ID *int64 `json:"id,omitempty"` Author *Person `json:"author,omitempty"` @@ -250,6 +252,13 @@ func (o *Announcement) GetPermissions() *ObjectPermissions { return o.Permissions } +func (o *Announcement) GetTrackingToken() *string { + if o == nil { + return nil + } + return o.TrackingToken +} + func (o *Announcement) GetID() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/answer.go b/tests/mockserver/internal/sdk/models/components/answer.go index c64abe5c..69609f52 100644 --- a/tests/mockserver/internal/sdk/models/components/answer.go +++ b/tests/mockserver/internal/sdk/models/components/answer.go @@ -47,7 +47,7 @@ type Answer struct { BodyText *string `json:"bodyText,omitempty"` // The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. // - // 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: Answer Boards no longer supported. BoardID *int64 `json:"boardId,omitempty"` // Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. AudienceFilters []FacetFilter `json:"audienceFilters,omitempty"` @@ -60,16 +60,17 @@ type Answer struct { SourceDocumentSpec *DocumentSpecUnion `json:"sourceDocumentSpec,omitempty"` SourceType *AnswerSourceType `json:"sourceType,omitempty"` Permissions *ObjectPermissions `json:"permissions,omitempty"` - CombinedAnswerText *StructuredText `json:"combinedAnswerText,omitempty"` - Likes *AnswerLikes `json:"likes,omitempty"` - Author *Person `json:"author,omitempty"` + // An opaque token that represents this particular UGC. To be used for `/feedback` reporting. + TrackingToken *string `json:"trackingToken,omitempty"` + CombinedAnswerText *StructuredText `json:"combinedAnswerText,omitempty"` + Likes *AnswerLikes `json:"likes,omitempty"` + Author *Person `json:"author,omitempty"` // The time the answer was created in ISO format (ISO 8601). CreateTime *time.Time `json:"createTime,omitempty"` // The time the answer was last updated in ISO format (ISO 8601). UpdateTime *time.Time `json:"updateTime,omitempty"` UpdatedBy *Person `json:"updatedBy,omitempty"` Verification *Verification `json:"verification,omitempty"` - Board *AnswerBoard `json:"board,omitempty"` // The collections to which the answer belongs. Collections []Collection `json:"collections,omitempty"` // The document's document_category(.proto). @@ -179,6 +180,13 @@ func (o *Answer) GetPermissions() *ObjectPermissions { return o.Permissions } +func (o *Answer) GetTrackingToken() *string { + if o == nil { + return nil + } + return o.TrackingToken +} + func (o *Answer) GetCombinedAnswerText() *StructuredText { if o == nil { return nil @@ -228,13 +236,6 @@ func (o *Answer) GetVerification() *Verification { return o.Verification } -func (o *Answer) GetBoard() *AnswerBoard { - if o == nil { - return nil - } - return o.Board -} - func (o *Answer) GetCollections() []Collection { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/answerboard.go b/tests/mockserver/internal/sdk/models/components/answerboard.go deleted file mode 100644 index 8dfd2c5a..00000000 --- a/tests/mockserver/internal/sdk/models/components/answerboard.go +++ /dev/null @@ -1,134 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -import ( - "mockserver/internal/sdk/utils" - "time" -) - -type AnswerBoard struct { - // The unique name of the Collection. - Name string `json:"name"` - // A brief summary of the Collection's contents. - Description string `json:"description"` - // A list of added user roles for the Collection. - AddedRoles []UserRoleSpecification `json:"addedRoles,omitempty"` - // A list of removed user roles for the Collection. - RemovedRoles []UserRoleSpecification `json:"removedRoles,omitempty"` - // Filters which restrict who should see this Collection. Values are taken from the corresponding filters in people search. - AudienceFilters []FacetFilter `json:"audienceFilters,omitempty"` - Permissions *ObjectPermissions `json:"permissions,omitempty"` - // The unique ID of the Answer Board. - ID int64 `json:"id"` - CreateTime *time.Time `json:"createTime,omitempty"` - UpdateTime *time.Time `json:"updateTime,omitempty"` - Creator *Person `json:"creator,omitempty"` - UpdatedBy *Person `json:"updatedBy,omitempty"` - // The number of items currently in the Answer Board. Separated from the actual items so we can grab the count without items. - ItemCount *int64 `json:"itemCount,omitempty"` - // A list of user roles for the Answer Board. - Roles []UserRoleSpecification `json:"roles,omitempty"` -} - -func (a AnswerBoard) MarshalJSON() ([]byte, error) { - return utils.MarshalJSON(a, "", false) -} - -func (a *AnswerBoard) UnmarshalJSON(data []byte) error { - if err := utils.UnmarshalJSON(data, &a, "", false, []string{"name", "description", "id"}); err != nil { - return err - } - return nil -} - -func (o *AnswerBoard) GetName() string { - if o == nil { - return "" - } - return o.Name -} - -func (o *AnswerBoard) GetDescription() string { - if o == nil { - return "" - } - return o.Description -} - -func (o *AnswerBoard) GetAddedRoles() []UserRoleSpecification { - if o == nil { - return nil - } - return o.AddedRoles -} - -func (o *AnswerBoard) GetRemovedRoles() []UserRoleSpecification { - if o == nil { - return nil - } - return o.RemovedRoles -} - -func (o *AnswerBoard) GetAudienceFilters() []FacetFilter { - if o == nil { - return nil - } - return o.AudienceFilters -} - -func (o *AnswerBoard) GetPermissions() *ObjectPermissions { - if o == nil { - return nil - } - return o.Permissions -} - -func (o *AnswerBoard) GetID() int64 { - if o == nil { - return 0 - } - return o.ID -} - -func (o *AnswerBoard) GetCreateTime() *time.Time { - if o == nil { - return nil - } - return o.CreateTime -} - -func (o *AnswerBoard) GetUpdateTime() *time.Time { - if o == nil { - return nil - } - return o.UpdateTime -} - -func (o *AnswerBoard) GetCreator() *Person { - if o == nil { - return nil - } - return o.Creator -} - -func (o *AnswerBoard) GetUpdatedBy() *Person { - if o == nil { - return nil - } - return o.UpdatedBy -} - -func (o *AnswerBoard) GetItemCount() *int64 { - if o == nil { - return nil - } - return o.ItemCount -} - -func (o *AnswerBoard) GetRoles() []UserRoleSpecification { - if o == nil { - return nil - } - return o.Roles -} diff --git a/tests/mockserver/internal/sdk/models/components/answercreationdata.go b/tests/mockserver/internal/sdk/models/components/answercreationdata.go index 4050d341..529ec612 100644 --- a/tests/mockserver/internal/sdk/models/components/answercreationdata.go +++ b/tests/mockserver/internal/sdk/models/components/answercreationdata.go @@ -41,7 +41,7 @@ type AnswerCreationData struct { BodyText *string `json:"bodyText,omitempty"` // The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. // - // 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: Answer Boards no longer supported. BoardID *int64 `json:"boardId,omitempty"` // Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. AudienceFilters []FacetFilter `json:"audienceFilters,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/answerresult.go b/tests/mockserver/internal/sdk/models/components/answerresult.go index f5687a60..ffd9c3fc 100644 --- a/tests/mockserver/internal/sdk/models/components/answerresult.go +++ b/tests/mockserver/internal/sdk/models/components/answerresult.go @@ -4,7 +4,9 @@ package components type AnswerResult struct { Answer Answer `json:"answer"` - // An opaque token that represents this particular Answer. To be used for `/feedback` reporting. + // Use `answer.trackingToken` instead. + // + // Deprecated: Deprecated on 2026-05-07, removal scheduled for 2027-01-15: Use `answer.trackingToken` instead.. TrackingToken *string `json:"trackingToken,omitempty"` } diff --git a/tests/mockserver/internal/sdk/models/components/assistantinsightsresponse.go b/tests/mockserver/internal/sdk/models/components/assistantinsightsresponse.go index a997b8f6..34f0d2d2 100644 --- a/tests/mockserver/internal/sdk/models/components/assistantinsightsresponse.go +++ b/tests/mockserver/internal/sdk/models/components/assistantinsightsresponse.go @@ -3,9 +3,9 @@ package components type AssistantInsightsResponse struct { - // Number of current Monthly Active Users, in the specified departments. + // Number of current Monthly Active Users. MonthlyActiveUsers *int64 `json:"monthlyActiveUsers,omitempty"` - // Number of current Weekly Active Users, in the specified departments. + // Number of current Weekly Active Users. WeeklyActiveUsers *int64 `json:"weeklyActiveUsers,omitempty"` // Unix timestamp of the last update for the insights data in the response. LastUpdatedTs *int64 `json:"lastUpdatedTs,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/authconfig.go b/tests/mockserver/internal/sdk/models/components/authconfig.go index b1fc3f6b..483958ea 100644 --- a/tests/mockserver/internal/sdk/models/components/authconfig.go +++ b/tests/mockserver/internal/sdk/models/components/authconfig.go @@ -109,6 +109,36 @@ func (e *AuthConfigStatus) UnmarshalJSON(data []byte) error { } } +// TokenEndpointAuthMethod - The OAuth 2.0 token endpoint authentication method (RFC 7591). Determines how the client authenticates when exchanging an authorization code for a token. client_secret_post sends credentials as form fields, client_secret_basic sends them via Authorization header, none omits client secret and relies on PKCE only. Values use lowercase to match the OAuth 2.0 wire format (RFC 7591 Section 2). +type TokenEndpointAuthMethod string + +const ( + TokenEndpointAuthMethodClientSecretPost TokenEndpointAuthMethod = "client_secret_post" + TokenEndpointAuthMethodClientSecretBasic TokenEndpointAuthMethod = "client_secret_basic" + TokenEndpointAuthMethodNone TokenEndpointAuthMethod = "none" +) + +func (e TokenEndpointAuthMethod) ToPointer() *TokenEndpointAuthMethod { + return &e +} +func (e *TokenEndpointAuthMethod) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "client_secret_post": + fallthrough + case "client_secret_basic": + fallthrough + case "none": + *e = TokenEndpointAuthMethod(v) + return nil + default: + return fmt.Errorf("invalid value for TokenEndpointAuthMethod: %v", v) + } +} + // AuthConfig - Config for tool's authentication method. type AuthConfig struct { // Whether or not this tool is hosted on-premise. @@ -134,6 +164,10 @@ 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 OAuth 2.0 token endpoint authentication method (RFC 7591). Determines how the client authenticates when exchanging an authorization code for a token. client_secret_post sends credentials as form fields, client_secret_basic sends them via Authorization header, none omits client secret and relies on PKCE only. Values use lowercase to match the OAuth 2.0 wire format (RFC 7591 Section 2). + TokenEndpointAuthMethod *TokenEndpointAuthMethod `json:"token_endpoint_auth_method,omitempty"` // The time the tool was last authorized in ISO format (ISO 8601). LastAuthorizedAt *time.Time `json:"lastAuthorizedAt,omitempty"` } @@ -212,6 +246,20 @@ func (o *AuthConfig) GetAuthorizationURL() *string { return o.AuthorizationURL } +func (o *AuthConfig) GetResource() *string { + if o == nil { + return nil + } + return o.Resource +} + +func (o *AuthConfig) GetTokenEndpointAuthMethod() *TokenEndpointAuthMethod { + if o == nil { + return nil + } + return o.TokenEndpointAuthMethod +} + func (o *AuthConfig) GetLastAuthorizedAt() *time.Time { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/authorizeactionpackrequest.go b/tests/mockserver/internal/sdk/models/components/authorizeactionpackrequest.go new file mode 100644 index 00000000..dc682969 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/authorizeactionpackrequest.go @@ -0,0 +1,17 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type AuthorizeActionPackRequest struct { + // URL on the customer's domain to redirect the end user's browser back to after the third-party OAuth + // callback completes. Must be present in the tenant's return URL allowlist. + // + ReturnURL string `json:"returnUrl"` +} + +func (o *AuthorizeActionPackRequest) GetReturnURL() string { + if o == nil { + return "" + } + return o.ReturnURL +} diff --git a/tests/mockserver/internal/sdk/models/components/authorizeactionpackresponse.go b/tests/mockserver/internal/sdk/models/components/authorizeactionpackresponse.go new file mode 100644 index 00000000..de205e6f --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/authorizeactionpackresponse.go @@ -0,0 +1,17 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type AuthorizeActionPackResponse struct { + // URL that the customer UI should navigate the end user to in order to begin the third-party OAuth flow. + // After the user consents, control returns to `returnUrl` from the request. + // + RedirectURL string `json:"redirectUrl"` +} + +func (o *AuthorizeActionPackResponse) GetRedirectURL() string { + if o == nil { + return "" + } + return o.RedirectURL +} diff --git a/tests/mockserver/internal/sdk/models/components/authstatus.go b/tests/mockserver/internal/sdk/models/components/authstatus.go new file mode 100644 index 00000000..ea2c6627 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/authstatus.go @@ -0,0 +1,44 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// AuthStatus - The per-user authorization status for a datasource. +type AuthStatus string + +const ( + AuthStatusDisabled AuthStatus = "DISABLED" + AuthStatusAwaitingAuth AuthStatus = "AWAITING_AUTH" + AuthStatusAuthorized AuthStatus = "AUTHORIZED" + AuthStatusStaleOauth AuthStatus = "STALE_OAUTH" + AuthStatusSegMigration AuthStatus = "SEG_MIGRATION" +) + +func (e AuthStatus) ToPointer() *AuthStatus { + return &e +} +func (e *AuthStatus) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "DISABLED": + fallthrough + case "AWAITING_AUTH": + fallthrough + case "AUTHORIZED": + fallthrough + case "STALE_OAUTH": + fallthrough + case "SEG_MIGRATION": + *e = AuthStatus(v) + return nil + default: + return fmt.Errorf("invalid value for AuthStatus: %v", v) + } +} 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/chatfilefailurereason.go b/tests/mockserver/internal/sdk/models/components/chatfilefailurereason.go index a5a23627..b77365d9 100644 --- a/tests/mockserver/internal/sdk/models/components/chatfilefailurereason.go +++ b/tests/mockserver/internal/sdk/models/components/chatfilefailurereason.go @@ -18,6 +18,10 @@ const ( ChatFileFailureReasonFileExtensionUnsupported ChatFileFailureReason = "FILE_EXTENSION_UNSUPPORTED" ChatFileFailureReasonFileMetadataValidationFail ChatFileFailureReason = "FILE_METADATA_VALIDATION_FAIL" ChatFileFailureReasonFileProcessingTimedOut ChatFileFailureReason = "FILE_PROCESSING_TIMED_OUT" + ChatFileFailureReasonOauthNeeded ChatFileFailureReason = "OAUTH_NEEDED" + ChatFileFailureReasonURLFetchFailed ChatFileFailureReason = "URL_FETCH_FAILED" + ChatFileFailureReasonEmptyContent ChatFileFailureReason = "EMPTY_CONTENT" + ChatFileFailureReasonAuthRequired ChatFileFailureReason = "AUTH_REQUIRED" ) func (e ChatFileFailureReason) ToPointer() *ChatFileFailureReason { @@ -42,6 +46,14 @@ func (e *ChatFileFailureReason) UnmarshalJSON(data []byte) error { case "FILE_METADATA_VALIDATION_FAIL": fallthrough case "FILE_PROCESSING_TIMED_OUT": + fallthrough + case "OAUTH_NEEDED": + fallthrough + case "URL_FETCH_FAILED": + fallthrough + case "EMPTY_CONTENT": + fallthrough + case "AUTH_REQUIRED": *e = ChatFileFailureReason(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/chatfilestatus.go b/tests/mockserver/internal/sdk/models/components/chatfilestatus.go index 7f192a89..95c73786 100644 --- a/tests/mockserver/internal/sdk/models/components/chatfilestatus.go +++ b/tests/mockserver/internal/sdk/models/components/chatfilestatus.go @@ -11,10 +11,11 @@ import ( type ChatFileStatus string const ( - ChatFileStatusProcessing ChatFileStatus = "PROCESSING" - ChatFileStatusProcessed ChatFileStatus = "PROCESSED" - ChatFileStatusFailed ChatFileStatus = "FAILED" - ChatFileStatusDeleted ChatFileStatus = "DELETED" + ChatFileStatusProcessing ChatFileStatus = "PROCESSING" + ChatFileStatusProcessed ChatFileStatus = "PROCESSED" + ChatFileStatusPartiallyProcessed ChatFileStatus = "PARTIALLY_PROCESSED" + ChatFileStatusFailed ChatFileStatus = "FAILED" + ChatFileStatusDeleted ChatFileStatus = "DELETED" ) func (e ChatFileStatus) ToPointer() *ChatFileStatus { @@ -30,6 +31,8 @@ func (e *ChatFileStatus) UnmarshalJSON(data []byte) error { fallthrough case "PROCESSED": fallthrough + case "PARTIALLY_PROCESSED": + fallthrough case "FAILED": fallthrough case "DELETED": diff --git a/tests/mockserver/internal/sdk/models/components/chatmessage.go b/tests/mockserver/internal/sdk/models/components/chatmessage.go index 3e9895b5..3ab0cd39 100644 --- a/tests/mockserver/internal/sdk/models/components/chatmessage.go +++ b/tests/mockserver/internal/sdk/models/components/chatmessage.go @@ -38,15 +38,21 @@ func (e *Author) UnmarshalJSON(data []byte) error { type MessageType string const ( - MessageTypeUpdate MessageType = "UPDATE" - MessageTypeContent MessageType = "CONTENT" - MessageTypeContext MessageType = "CONTEXT" - MessageTypeDebug MessageType = "DEBUG" - MessageTypeDebugExternal MessageType = "DEBUG_EXTERNAL" - MessageTypeError MessageType = "ERROR" - MessageTypeHeading MessageType = "HEADING" - MessageTypeWarning MessageType = "WARNING" - MessageTypeServerTool MessageType = "SERVER_TOOL" + MessageTypeUpdate MessageType = "UPDATE" + MessageTypeContent MessageType = "CONTENT" + MessageTypeContext MessageType = "CONTEXT" + MessageTypeControl MessageType = "CONTROL" + MessageTypeControlStart MessageType = "CONTROL_START" + MessageTypeControlFinish MessageType = "CONTROL_FINISH" + MessageTypeControlCancel MessageType = "CONTROL_CANCEL" + MessageTypeControlRetry MessageType = "CONTROL_RETRY" + MessageTypeControlUnknown MessageType = "CONTROL_UNKNOWN" + MessageTypeDebug MessageType = "DEBUG" + MessageTypeDebugExternal MessageType = "DEBUG_EXTERNAL" + MessageTypeError MessageType = "ERROR" + MessageTypeHeading MessageType = "HEADING" + MessageTypeWarning MessageType = "WARNING" + MessageTypeServerTool MessageType = "SERVER_TOOL" ) func (e MessageType) ToPointer() *MessageType { @@ -64,6 +70,18 @@ func (e *MessageType) UnmarshalJSON(data []byte) error { fallthrough case "CONTEXT": fallthrough + case "CONTROL": + fallthrough + case "CONTROL_START": + fallthrough + case "CONTROL_FINISH": + fallthrough + case "CONTROL_CANCEL": + fallthrough + case "CONTROL_RETRY": + fallthrough + case "CONTROL_UNKNOWN": + fallthrough case "DEBUG": fallthrough case "DEBUG_EXTERNAL": @@ -87,7 +105,9 @@ type ChatMessage struct { // Describes the agent that executes the request. AgentConfig *AgentConfig `json:"agentConfig,omitempty"` Author *Author `default:"USER" json:"author"` - // A list of Citations that were used to generate the response. + // Deprecated: Use inline citations via ChatMessageFragment.citation instead. For detailed reference information, use ChatMessageCitation.referenceRanges. This field is still populated for backward compatibility. + // + // Deprecated: Deprecated on 2026-02-06, removal scheduled for 2026-10-15: Use inline citations via ChatMessageFragment.citation and ChatMessageCitation.referenceRanges instead. This field is still populated for backward compatibility.. Citations []ChatMessageCitation `json:"citations,omitempty"` // IDs of files uploaded in the message that are referenced to generate the answer. UploadedFileIds []string `json:"uploadedFileIds,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/chatmessagecitation.go b/tests/mockserver/internal/sdk/models/components/chatmessagecitation.go index fd3e6a32..ba07ad7a 100644 --- a/tests/mockserver/internal/sdk/models/components/chatmessagecitation.go +++ b/tests/mockserver/internal/sdk/models/components/chatmessagecitation.go @@ -8,8 +8,9 @@ type ChatMessageCitation struct { TrackingToken *string `json:"trackingToken,omitempty"` SourceDocument *Document `json:"sourceDocument,omitempty"` // Structure for file uploaded by a user for Chat. - SourceFile *ChatFile `json:"sourceFile,omitempty"` - SourcePerson *Person `json:"sourcePerson,omitempty"` + SourceFile *ChatFile `json:"sourceFile,omitempty"` + SourcePerson *Person `json:"sourcePerson,omitempty"` + SourceCustomEntity *CustomEntity `json:"sourceCustomEntity,omitempty"` // Each reference range and its corresponding snippets ReferenceRanges []ReferenceRange `json:"referenceRanges,omitempty"` } @@ -42,6 +43,13 @@ func (o *ChatMessageCitation) GetSourcePerson() *Person { return o.SourcePerson } +func (o *ChatMessageCitation) GetSourceCustomEntity() *CustomEntity { + if o == nil { + return nil + } + return o.SourceCustomEntity +} + func (o *ChatMessageCitation) GetReferenceRanges() []ReferenceRange { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/chatresponse.go b/tests/mockserver/internal/sdk/models/components/chatresponse.go index a6f51d28..2638334d 100644 --- a/tests/mockserver/internal/sdk/models/components/chatresponse.go +++ b/tests/mockserver/internal/sdk/models/components/chatresponse.go @@ -7,6 +7,8 @@ type ChatResponse struct { Messages []ChatMessage `json:"messages,omitempty"` // The id of the associated Chat the messages belong to, if one exists. ChatID *string `json:"chatId,omitempty"` + // Metadata of a Chat a user had with Glean Assistant. This contains no actual conversational content. + Chat *ChatMetadata `json:"chat,omitempty"` // Follow-up prompts for the user to potentially use FollowUpPrompts []string `json:"followUpPrompts,omitempty"` // Time in milliseconds the backend took to respond to the request. @@ -29,6 +31,13 @@ func (o *ChatResponse) GetChatID() *string { return o.ChatID } +func (o *ChatResponse) GetChat() *ChatMetadata { + if o == nil { + return nil + } + return o.Chat +} + func (o *ChatResponse) GetFollowUpPrompts() []string { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/chatsuggestion.go b/tests/mockserver/internal/sdk/models/components/chatsuggestion.go index d6c0bfb0..b8269ceb 100644 --- a/tests/mockserver/internal/sdk/models/components/chatsuggestion.go +++ b/tests/mockserver/internal/sdk/models/components/chatsuggestion.go @@ -5,8 +5,12 @@ package components type ChatSuggestion struct { // The actionable chat query to run when the user selects this suggestion. Query *string `json:"query,omitempty"` + // Button text to show for the suggestion action. + Cta *string `json:"cta,omitempty"` // Targeted Glean Chat feature for the suggestion. Feature *string `json:"feature,omitempty"` + // Document IDs that grounded the suggestion. + SourceDocumentIds []string `json:"sourceDocumentIds,omitempty"` } func (o *ChatSuggestion) GetQuery() *string { @@ -16,9 +20,23 @@ func (o *ChatSuggestion) GetQuery() *string { return o.Query } +func (o *ChatSuggestion) GetCta() *string { + if o == nil { + return nil + } + return o.Cta +} + func (o *ChatSuggestion) GetFeature() *string { if o == nil { return nil } return o.Feature } + +func (o *ChatSuggestion) GetSourceDocumentIds() []string { + if o == nil { + return nil + } + return o.SourceDocumentIds +} diff --git a/tests/mockserver/internal/sdk/models/components/checkdatasourceauthresponse.go b/tests/mockserver/internal/sdk/models/components/checkdatasourceauthresponse.go new file mode 100644 index 00000000..978854e6 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/checkdatasourceauthresponse.go @@ -0,0 +1,16 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type CheckDatasourceAuthResponse struct { + // Datasource instances that require per-user OAuth authorization. Empty when all datasources are authorized. + // + UnauthorizedDatasourceInstances []UnauthorizedDatasourceInstance `json:"unauthorizedDatasourceInstances"` +} + +func (o *CheckDatasourceAuthResponse) GetUnauthorizedDatasourceInstances() []UnauthorizedDatasourceInstance { + if o == nil { + return []UnauthorizedDatasourceInstance{} + } + return o.UnauthorizedDatasourceInstances +} diff --git a/tests/mockserver/internal/sdk/models/components/collection.go b/tests/mockserver/internal/sdk/models/components/collection.go index 29d98fc1..7455407b 100644 --- a/tests/mockserver/internal/sdk/models/components/collection.go +++ b/tests/mockserver/internal/sdk/models/components/collection.go @@ -28,6 +28,8 @@ type Collection struct { // The datasource type this Collection can hold. AllowedDatasource *string `json:"allowedDatasource,omitempty"` Permissions *ObjectPermissions `json:"permissions,omitempty"` + // An opaque token that represents this particular UGC. To be used for `/feedback` reporting. + TrackingToken *string `json:"trackingToken,omitempty"` // The unique ID of the Collection. ID int64 `json:"id"` CreateTime *time.Time `json:"createTime,omitempty"` @@ -137,6 +139,13 @@ func (o *Collection) GetPermissions() *ObjectPermissions { return o.Permissions } +func (o *Collection) GetTrackingToken() *string { + if o == nil { + return nil + } + return o.TrackingToken +} + func (o *Collection) GetID() int64 { if o == nil { return 0 diff --git a/tests/mockserver/internal/sdk/models/components/collectionerror.go b/tests/mockserver/internal/sdk/models/components/collectionerror.go index 1cf4a37d..2524a204 100644 --- a/tests/mockserver/internal/sdk/models/components/collectionerror.go +++ b/tests/mockserver/internal/sdk/models/components/collectionerror.go @@ -18,6 +18,7 @@ const ( CollectionErrorErrorCodeHeightViolation CollectionErrorErrorCode = "HEIGHT_VIOLATION" CollectionErrorErrorCodeWidthViolation CollectionErrorErrorCode = "WIDTH_VIOLATION" CollectionErrorErrorCodeNoPermissions CollectionErrorErrorCode = "NO_PERMISSIONS" + CollectionErrorErrorCodeCorruptItem CollectionErrorErrorCode = "CORRUPT_ITEM" ) func (e CollectionErrorErrorCode) ToPointer() *CollectionErrorErrorCode { @@ -42,6 +43,8 @@ func (e *CollectionErrorErrorCode) UnmarshalJSON(data []byte) error { case "WIDTH_VIOLATION": fallthrough case "NO_PERMISSIONS": + fallthrough + case "CORRUPT_ITEM": *e = CollectionErrorErrorCode(v) return nil default: 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/contentinsightsresponse.go b/tests/mockserver/internal/sdk/models/components/contentinsightsresponse.go deleted file mode 100644 index e417efa7..00000000 --- a/tests/mockserver/internal/sdk/models/components/contentinsightsresponse.go +++ /dev/null @@ -1,51 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type ContentInsightsResponse struct { - // Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - LastLogTimestamp *int64 `json:"lastLogTimestamp,omitempty"` - // Insights for documents. - DocumentInsights []DocumentInsight `json:"documentInsights,omitempty"` - // list of departments applicable for contents tab. - Departments []string `json:"departments,omitempty"` - // Min threshold in size of departments while populating results, otherwise 0. - MinDepartmentSizeThreshold *int64 `json:"minDepartmentSizeThreshold,omitempty"` - // Minimum number of visitors to a document required to be included in insights. - MinVisitorThreshold *int64 `json:"minVisitorThreshold,omitempty"` -} - -func (o *ContentInsightsResponse) GetLastLogTimestamp() *int64 { - if o == nil { - return nil - } - return o.LastLogTimestamp -} - -func (o *ContentInsightsResponse) GetDocumentInsights() []DocumentInsight { - if o == nil { - return nil - } - return o.DocumentInsights -} - -func (o *ContentInsightsResponse) GetDepartments() []string { - if o == nil { - return nil - } - return o.Departments -} - -func (o *ContentInsightsResponse) GetMinDepartmentSizeThreshold() *int64 { - if o == nil { - return nil - } - return o.MinDepartmentSizeThreshold -} - -func (o *ContentInsightsResponse) GetMinVisitorThreshold() *int64 { - if o == nil { - return nil - } - return o.MinVisitorThreshold -} diff --git a/tests/mockserver/internal/sdk/models/components/currentactiveusers.go b/tests/mockserver/internal/sdk/models/components/currentactiveusers.go index f4a046ec..c1398b96 100644 --- a/tests/mockserver/internal/sdk/models/components/currentactiveusers.go +++ b/tests/mockserver/internal/sdk/models/components/currentactiveusers.go @@ -3,9 +3,9 @@ package components type CurrentActiveUsers struct { - // Number of current Monthly Active Users, in the specified departments. + // Number of current Monthly Active Users. MonthlyActiveUsers *int64 `json:"monthlyActiveUsers,omitempty"` - // Number of current Weekly Active Users, in the specified departments. + // Number of current Weekly Active Users. WeeklyActiveUsers *int64 `json:"weeklyActiveUsers,omitempty"` } diff --git a/tests/mockserver/internal/sdk/models/components/custommetadatapropertydefinition.go b/tests/mockserver/internal/sdk/models/components/custommetadatapropertydefinition.go new file mode 100644 index 00000000..e3351e45 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/custommetadatapropertydefinition.go @@ -0,0 +1,72 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// CustomMetadataPropertyDefinitionPropertyType - The type of metadata key. This governs the search and faceting behavior. +type CustomMetadataPropertyDefinitionPropertyType string + +const ( + CustomMetadataPropertyDefinitionPropertyTypeText CustomMetadataPropertyDefinitionPropertyType = "TEXT" + CustomMetadataPropertyDefinitionPropertyTypePicklist CustomMetadataPropertyDefinitionPropertyType = "PICKLIST" + CustomMetadataPropertyDefinitionPropertyTypeTextlist CustomMetadataPropertyDefinitionPropertyType = "TEXTLIST" + CustomMetadataPropertyDefinitionPropertyTypeMultipicklist CustomMetadataPropertyDefinitionPropertyType = "MULTIPICKLIST" +) + +func (e CustomMetadataPropertyDefinitionPropertyType) ToPointer() *CustomMetadataPropertyDefinitionPropertyType { + return &e +} +func (e *CustomMetadataPropertyDefinitionPropertyType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "TEXT": + fallthrough + case "PICKLIST": + fallthrough + case "TEXTLIST": + fallthrough + case "MULTIPICKLIST": + *e = CustomMetadataPropertyDefinitionPropertyType(v) + return nil + default: + return fmt.Errorf("invalid value for CustomMetadataPropertyDefinitionPropertyType: %v", v) + } +} + +// CustomMetadataPropertyDefinition - The definition for a key within a Custom Metadata schema. Only the fields applicable to Custom Metadata are exposed. +type CustomMetadataPropertyDefinition struct { + // The name of the metadata key. + Name string `json:"name"` + // The type of metadata key. This governs the search and faceting behavior. + PropertyType CustomMetadataPropertyDefinitionPropertyType `json:"propertyType"` + // If true then the property will not be indexed for retrieval and ranking. + SkipIndexing *bool `json:"skipIndexing,omitempty"` +} + +func (o *CustomMetadataPropertyDefinition) GetName() string { + if o == nil { + return "" + } + return o.Name +} + +func (o *CustomMetadataPropertyDefinition) GetPropertyType() CustomMetadataPropertyDefinitionPropertyType { + if o == nil { + return CustomMetadataPropertyDefinitionPropertyType("") + } + return o.PropertyType +} + +func (o *CustomMetadataPropertyDefinition) GetSkipIndexing() *bool { + if o == nil { + return nil + } + return o.SkipIndexing +} diff --git a/tests/mockserver/internal/sdk/models/components/custommetadataputrequest.go b/tests/mockserver/internal/sdk/models/components/custommetadataputrequest.go new file mode 100644 index 00000000..fe2262c3 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/custommetadataputrequest.go @@ -0,0 +1,16 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// CustomMetadataPutRequest - Request body for adding or updating custom metadata on a document +type CustomMetadataPutRequest struct { + // Array of custom metadata key-value pairs + CustomMetadata []CustomProperty `json:"customMetadata"` +} + +func (o *CustomMetadataPutRequest) GetCustomMetadata() []CustomProperty { + if o == nil { + return []CustomProperty{} + } + return o.CustomMetadata +} diff --git a/tests/mockserver/internal/sdk/models/components/custommetadataschema.go b/tests/mockserver/internal/sdk/models/components/custommetadataschema.go new file mode 100644 index 00000000..8f4e09bf --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/custommetadataschema.go @@ -0,0 +1,16 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// CustomMetadataSchema - Schema for custom metadata containing metadata key definitions +type CustomMetadataSchema struct { + // Array of metadata key definitions + MetadataKeys []CustomMetadataPropertyDefinition `json:"metadataKeys"` +} + +func (o *CustomMetadataSchema) GetMetadataKeys() []CustomMetadataPropertyDefinition { + if o == nil { + return []CustomMetadataPropertyDefinition{} + } + return o.MetadataKeys +} diff --git a/tests/mockserver/internal/sdk/models/components/customproperty.go b/tests/mockserver/internal/sdk/models/components/customproperty.go index 8b4884e4..8dc67a97 100644 --- a/tests/mockserver/internal/sdk/models/components/customproperty.go +++ b/tests/mockserver/internal/sdk/models/components/customproperty.go @@ -5,7 +5,7 @@ package components // CustomProperty - Describes the custom properties of the object. type CustomProperty struct { Name *string `json:"name,omitempty"` - // Must either be a string or an array of strings. An integer, boolean, etc. is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this. + // Must be a string, a number (for INT properties), or an array of strings. A boolean is not valid. When OpenAPI Generator supports `oneOf`, we can semantically enforce this. Value any `json:"value,omitempty"` } diff --git a/tests/mockserver/internal/sdk/models/components/customsensitiveexpression.go b/tests/mockserver/internal/sdk/models/components/customsensitiveexpression.go new file mode 100644 index 00000000..4dd1f11e --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/customsensitiveexpression.go @@ -0,0 +1,32 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type CustomSensitiveExpression struct { + // Identifier for the custom sensitive expression. + ID *string `json:"id,omitempty"` + Keyword *CustomSensitiveRule `json:"keyword,omitempty"` + // The expression to evaluate the keyword match. + EvaluationExpression *string `json:"evaluationExpression,omitempty"` +} + +func (o *CustomSensitiveExpression) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +func (o *CustomSensitiveExpression) GetKeyword() *CustomSensitiveRule { + if o == nil { + return nil + } + return o.Keyword +} + +func (o *CustomSensitiveExpression) GetEvaluationExpression() *string { + if o == nil { + return nil + } + return o.EvaluationExpression +} diff --git a/tests/mockserver/internal/sdk/models/components/customsensitiverule.go b/tests/mockserver/internal/sdk/models/components/customsensitiverule.go new file mode 100644 index 00000000..56e26f15 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/customsensitiverule.go @@ -0,0 +1,83 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// CustomSensitiveRuleLikelihoodThreshold - Likelihood threshold for BUILT_IN infotypes (e.g., LIKELY, VERY_LIKELY). Only applicable for BUILT_IN type. +type CustomSensitiveRuleLikelihoodThreshold string + +const ( + CustomSensitiveRuleLikelihoodThresholdLikely CustomSensitiveRuleLikelihoodThreshold = "LIKELY" + CustomSensitiveRuleLikelihoodThresholdVeryLikely CustomSensitiveRuleLikelihoodThreshold = "VERY_LIKELY" + CustomSensitiveRuleLikelihoodThresholdPossible CustomSensitiveRuleLikelihoodThreshold = "POSSIBLE" + CustomSensitiveRuleLikelihoodThresholdUnlikely CustomSensitiveRuleLikelihoodThreshold = "UNLIKELY" + CustomSensitiveRuleLikelihoodThresholdVeryUnlikely CustomSensitiveRuleLikelihoodThreshold = "VERY_UNLIKELY" +) + +func (e CustomSensitiveRuleLikelihoodThreshold) ToPointer() *CustomSensitiveRuleLikelihoodThreshold { + return &e +} +func (e *CustomSensitiveRuleLikelihoodThreshold) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "LIKELY": + fallthrough + case "VERY_LIKELY": + fallthrough + case "POSSIBLE": + fallthrough + case "UNLIKELY": + fallthrough + case "VERY_UNLIKELY": + *e = CustomSensitiveRuleLikelihoodThreshold(v) + return nil + default: + return fmt.Errorf("invalid value for CustomSensitiveRuleLikelihoodThreshold: %v", v) + } +} + +type CustomSensitiveRule struct { + // Identifier for the custom sensitive expression. + ID *string `json:"id,omitempty"` + // The value of the custom sensitive rule. For REGEX type, this is the regex pattern; for TERM type, it is the term to match; and for INFO_TYPE type, it refers to predefined categories of sensitive content. See https://cloud.google.com/dlp/docs/infotypes-reference for available options. + Value *string `json:"value,omitempty"` + // Type of the custom sensitive rule. + Type *CustomSensitiveRuleType `json:"type,omitempty"` + // Likelihood threshold for BUILT_IN infotypes (e.g., LIKELY, VERY_LIKELY). Only applicable for BUILT_IN type. + LikelihoodThreshold *CustomSensitiveRuleLikelihoodThreshold `json:"likelihoodThreshold,omitempty"` +} + +func (o *CustomSensitiveRule) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +func (o *CustomSensitiveRule) GetValue() *string { + if o == nil { + return nil + } + return o.Value +} + +func (o *CustomSensitiveRule) GetType() *CustomSensitiveRuleType { + if o == nil { + return nil + } + return o.Type +} + +func (o *CustomSensitiveRule) GetLikelihoodThreshold() *CustomSensitiveRuleLikelihoodThreshold { + if o == nil { + return nil + } + return o.LikelihoodThreshold +} diff --git a/tests/mockserver/internal/sdk/models/components/customsensitiveruletype.go b/tests/mockserver/internal/sdk/models/components/customsensitiveruletype.go new file mode 100644 index 00000000..12b37ae0 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/customsensitiveruletype.go @@ -0,0 +1,38 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// CustomSensitiveRuleType - Type of the custom sensitive rule. +type CustomSensitiveRuleType string + +const ( + CustomSensitiveRuleTypeRegex CustomSensitiveRuleType = "REGEX" + CustomSensitiveRuleTypeTerm CustomSensitiveRuleType = "TERM" + CustomSensitiveRuleTypeInfoType CustomSensitiveRuleType = "INFO_TYPE" +) + +func (e CustomSensitiveRuleType) ToPointer() *CustomSensitiveRuleType { + return &e +} +func (e *CustomSensitiveRuleType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "REGEX": + fallthrough + case "TERM": + fallthrough + case "INFO_TYPE": + *e = CustomSensitiveRuleType(v) + return nil + default: + return fmt.Errorf("invalid value for CustomSensitiveRuleType: %v", v) + } +} 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/datasourcecredentialstatus.go b/tests/mockserver/internal/sdk/models/components/datasourcecredentialstatus.go new file mode 100644 index 00000000..1a8b125a --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/datasourcecredentialstatus.go @@ -0,0 +1,44 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// DatasourceCredentialStatus - Lifecycle state of the credentials installed for a datasource instance. Mirrors the internal admin Status enum so the handler can surface the same health signals already tracked today. EXPIRING_SOON is represented as VALID_WITH_WARNINGS (with detail in `message`); EXPIRED is surfaced as INVALID plus a non-null `expiresAt` in the past. +type DatasourceCredentialStatus string + +const ( + DatasourceCredentialStatusValid DatasourceCredentialStatus = "VALID" + DatasourceCredentialStatusValidWithWarnings DatasourceCredentialStatus = "VALID_WITH_WARNINGS" + DatasourceCredentialStatusValidating DatasourceCredentialStatus = "VALIDATING" + DatasourceCredentialStatusInvalid DatasourceCredentialStatus = "INVALID" + DatasourceCredentialStatusMissing DatasourceCredentialStatus = "MISSING" +) + +func (e DatasourceCredentialStatus) ToPointer() *DatasourceCredentialStatus { + return &e +} +func (e *DatasourceCredentialStatus) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "VALID": + fallthrough + case "VALID_WITH_WARNINGS": + fallthrough + case "VALIDATING": + fallthrough + case "INVALID": + fallthrough + case "MISSING": + *e = DatasourceCredentialStatus(v) + return nil + default: + return fmt.Errorf("invalid value for DatasourceCredentialStatus: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/datasourcecredentialstatusresponse.go b/tests/mockserver/internal/sdk/models/components/datasourcecredentialstatusresponse.go new file mode 100644 index 00000000..3195e113 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/datasourcecredentialstatusresponse.go @@ -0,0 +1,61 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" + "time" +) + +// DatasourceCredentialStatusResponse - Status of the credentials currently installed for a datasource instance. +type DatasourceCredentialStatusResponse struct { + // Lifecycle state of the credentials installed for a datasource instance. Mirrors the internal admin Status enum so the handler can surface the same health signals already tracked today. EXPIRING_SOON is represented as VALID_WITH_WARNINGS (with detail in `message`); EXPIRED is surfaced as INVALID plus a non-null `expiresAt` in the past. + // + Status DatasourceCredentialStatus `json:"status"` + // When the credentials were last rotated. Omitted when not known. + LastRotatedAt *time.Time `json:"lastRotatedAt,omitempty"` + // When the active credentials expire. Omitted when not known or not applicable to this credential type. + // + ExpiresAt *time.Time `json:"expiresAt,omitempty"` + // Optional human-readable detail about the current credential status. + Message *string `json:"message,omitempty"` +} + +func (d DatasourceCredentialStatusResponse) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(d, "", false) +} + +func (d *DatasourceCredentialStatusResponse) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &d, "", false, []string{"status"}); err != nil { + return err + } + return nil +} + +func (o *DatasourceCredentialStatusResponse) GetStatus() DatasourceCredentialStatus { + if o == nil { + return DatasourceCredentialStatus("") + } + return o.Status +} + +func (o *DatasourceCredentialStatusResponse) GetLastRotatedAt() *time.Time { + if o == nil { + return nil + } + return o.LastRotatedAt +} + +func (o *DatasourceCredentialStatusResponse) GetExpiresAt() *time.Time { + if o == nil { + return nil + } + return o.ExpiresAt +} + +func (o *DatasourceCredentialStatusResponse) GetMessage() *string { + if o == nil { + return nil + } + return o.Message +} 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/debugdocumentlifecyclerequest.go b/tests/mockserver/internal/sdk/models/components/debugdocumentlifecyclerequest.go new file mode 100644 index 00000000..93255bb0 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/debugdocumentlifecyclerequest.go @@ -0,0 +1,43 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// DebugDocumentLifecycleRequest - Describes the request body of the /debug/{datasource}/document/events API call. +type DebugDocumentLifecycleRequest struct { + // Object type of the document to get lifecycle events for. + ObjectType string `json:"objectType"` + // Glean Document ID within the datasource to get lifecycle events for. + DocID string `json:"docId"` + // The start date for events to be fetched. Cannot be more than 30 days (default 7 days) in the past. + StartDate *string `json:"startDate,omitempty"` + // Max number of events to be fetched. Cannot be more than 100 (default 20). + MaxEvents *int64 `json:"maxEvents,omitempty"` +} + +func (o *DebugDocumentLifecycleRequest) GetObjectType() string { + if o == nil { + return "" + } + return o.ObjectType +} + +func (o *DebugDocumentLifecycleRequest) GetDocID() string { + if o == nil { + return "" + } + return o.DocID +} + +func (o *DebugDocumentLifecycleRequest) GetStartDate() *string { + if o == nil { + return nil + } + return o.StartDate +} + +func (o *DebugDocumentLifecycleRequest) GetMaxEvents() *int64 { + if o == nil { + return nil + } + return o.MaxEvents +} diff --git a/tests/mockserver/internal/sdk/models/components/debugdocumentlifecycleresponse.go b/tests/mockserver/internal/sdk/models/components/debugdocumentlifecycleresponse.go new file mode 100644 index 00000000..343802ed --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/debugdocumentlifecycleresponse.go @@ -0,0 +1,16 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// DebugDocumentLifecycleResponse - Describes the response body of the /debug/{datasource}/document/events API call +type DebugDocumentLifecycleResponse struct { + // List of lifecycle events corresponding to the document + LifeCycleEvents []LifeCycleEvent `json:"lifeCycleEvents,omitempty"` +} + +func (o *DebugDocumentLifecycleResponse) GetLifeCycleEvents() []LifeCycleEvent { + if o == nil { + return nil + } + return o.LifeCycleEvents +} diff --git a/tests/mockserver/internal/sdk/models/components/dlpconfig.go b/tests/mockserver/internal/sdk/models/components/dlpconfig.go index 3502af7b..04c23aeb 100644 --- a/tests/mockserver/internal/sdk/models/components/dlpconfig.go +++ b/tests/mockserver/internal/sdk/models/components/dlpconfig.go @@ -8,11 +8,11 @@ type DlpConfig struct { Version *int64 `json:"version,omitempty"` // DEPRECATED - use `sensitiveContentOptions` instead. // - // 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 sensitiveContentOptions instead. SensitiveInfoTypes []SensitiveInfoType `json:"sensitiveInfoTypes,omitempty"` // Controls which data-sources and what time-range to include in scans. InputOptions *InputOptions `json:"inputOptions,omitempty"` - // 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 broadSharingOptions instead. ExternalSharingOptions *ExternalSharingOptions `json:"externalSharingOptions,omitempty"` // Controls how "shared" a document must be to get picked for scans. BroadSharingOptions *SharingOptions `json:"broadSharingOptions,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/dlpexportfindingsrequest.go b/tests/mockserver/internal/sdk/models/components/dlpexportfindingsrequest.go new file mode 100644 index 00000000..77fdbe96 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/dlpexportfindingsrequest.go @@ -0,0 +1,124 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// DlpExportFindingsRequestExportType - The type of export to perform +type DlpExportFindingsRequestExportType string + +const ( + DlpExportFindingsRequestExportTypeFindings DlpExportFindingsRequestExportType = "FINDINGS" + DlpExportFindingsRequestExportTypeDocuments DlpExportFindingsRequestExportType = "DOCUMENTS" + DlpExportFindingsRequestExportTypeIssues DlpExportFindingsRequestExportType = "ISSUES" +) + +func (e DlpExportFindingsRequestExportType) ToPointer() *DlpExportFindingsRequestExportType { + return &e +} +func (e *DlpExportFindingsRequestExportType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "FINDINGS": + fallthrough + case "DOCUMENTS": + fallthrough + case "ISSUES": + *e = DlpExportFindingsRequestExportType(v) + return nil + default: + return fmt.Errorf("invalid value for DlpExportFindingsRequestExportType: %v", v) + } +} + +// FieldScope - Controls which fields to include in the export +type FieldScope string + +const ( + FieldScopeAll FieldScope = "ALL" + FieldScopeExcludeSensitive FieldScope = "EXCLUDE_SENSITIVE" + FieldScopeCustom FieldScope = "CUSTOM" +) + +func (e FieldScope) ToPointer() *FieldScope { + return &e +} +func (e *FieldScope) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "ALL": + fallthrough + case "EXCLUDE_SENSITIVE": + fallthrough + case "CUSTOM": + *e = FieldScope(v) + return nil + default: + return fmt.Errorf("invalid value for FieldScope: %v", v) + } +} + +type DlpExportFindingsRequest struct { + // The type of export to perform + ExportType *DlpExportFindingsRequestExportType `json:"exportType,omitempty"` + Filter *DlpFindingFilter `json:"filter,omitempty"` + // Filter for DLP issues. Includes document-level filters and issue-specific filters. + IssueFilter *DlpIssueFilter `json:"issueFilter,omitempty"` + // The name of the file to export the findings to + FileName *string `json:"fileName,omitempty"` + // Controls which fields to include in the export + FieldScope *FieldScope `json:"fieldScope,omitempty"` + // List of field names to exclude from the export + FieldsToExclude []string `json:"fieldsToExclude,omitempty"` +} + +func (o *DlpExportFindingsRequest) GetExportType() *DlpExportFindingsRequestExportType { + if o == nil { + return nil + } + return o.ExportType +} + +func (o *DlpExportFindingsRequest) GetFilter() *DlpFindingFilter { + if o == nil { + return nil + } + return o.Filter +} + +func (o *DlpExportFindingsRequest) GetIssueFilter() *DlpIssueFilter { + if o == nil { + return nil + } + return o.IssueFilter +} + +func (o *DlpExportFindingsRequest) GetFileName() *string { + if o == nil { + return nil + } + return o.FileName +} + +func (o *DlpExportFindingsRequest) GetFieldScope() *FieldScope { + if o == nil { + return nil + } + return o.FieldScope +} + +func (o *DlpExportFindingsRequest) GetFieldsToExclude() []string { + if o == nil { + return nil + } + return o.FieldsToExclude +} diff --git a/tests/mockserver/internal/sdk/models/components/dlpfindingfilter.go b/tests/mockserver/internal/sdk/models/components/dlpfindingfilter.go new file mode 100644 index 00000000..f0498927 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/dlpfindingfilter.go @@ -0,0 +1,95 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type DlpFindingFilter struct { + InfoType *string `json:"infoType,omitempty"` + RegexID *string `json:"regexId,omitempty"` + ReportID *string `json:"reportId,omitempty"` + Datasource *string `json:"datasource,omitempty"` + Visibility *string `json:"visibility,omitempty"` + DocumentIds []string `json:"documentIds,omitempty"` + // Severity levels for DLP findings and analyses. + Severity *DlpSeverity `json:"severity,omitempty"` + DocumentSeverity []DlpSeverity `json:"documentSeverity,omitempty"` + Statuses []DlpIssueStatus `json:"statuses,omitempty"` + TimeRange *TimeRangeFilter `json:"timeRange,omitempty"` + Archived *bool `json:"archived,omitempty"` +} + +func (o *DlpFindingFilter) GetInfoType() *string { + if o == nil { + return nil + } + return o.InfoType +} + +func (o *DlpFindingFilter) GetRegexID() *string { + if o == nil { + return nil + } + return o.RegexID +} + +func (o *DlpFindingFilter) GetReportID() *string { + if o == nil { + return nil + } + return o.ReportID +} + +func (o *DlpFindingFilter) GetDatasource() *string { + if o == nil { + return nil + } + return o.Datasource +} + +func (o *DlpFindingFilter) GetVisibility() *string { + if o == nil { + return nil + } + return o.Visibility +} + +func (o *DlpFindingFilter) GetDocumentIds() []string { + if o == nil { + return nil + } + return o.DocumentIds +} + +func (o *DlpFindingFilter) GetSeverity() *DlpSeverity { + if o == nil { + return nil + } + return o.Severity +} + +func (o *DlpFindingFilter) GetDocumentSeverity() []DlpSeverity { + if o == nil { + return nil + } + return o.DocumentSeverity +} + +func (o *DlpFindingFilter) GetStatuses() []DlpIssueStatus { + if o == nil { + return nil + } + return o.Statuses +} + +func (o *DlpFindingFilter) GetTimeRange() *TimeRangeFilter { + if o == nil { + return nil + } + return o.TimeRange +} + +func (o *DlpFindingFilter) GetArchived() *bool { + if o == nil { + return nil + } + return o.Archived +} diff --git a/tests/mockserver/internal/sdk/models/components/dlpissuefilter.go b/tests/mockserver/internal/sdk/models/components/dlpissuefilter.go new file mode 100644 index 00000000..484c2a99 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/dlpissuefilter.go @@ -0,0 +1,100 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// DlpIssueFilter - Filter for DLP issues. Includes document-level filters and issue-specific filters. +type DlpIssueFilter struct { + // Text to search for in issue fields. + SearchText *string `json:"searchText,omitempty"` + // Filter by one or more issue statuses. + Statuses []DlpIssueStatus `json:"statuses,omitempty"` + // Filter by assignee user ID. + AssigneeID *string `json:"assigneeId,omitempty"` + InfoType *string `json:"infoType,omitempty"` + RegexID *string `json:"regexId,omitempty"` + // Filter by one or more report/policy IDs. + ReportIds []string `json:"reportIds,omitempty"` + DocID *string `json:"docId,omitempty"` + Datasource *string `json:"datasource,omitempty"` + Visibility *string `json:"visibility,omitempty"` + // Filter by one or more severity levels. + Severities []DlpSeverity `json:"severities,omitempty"` + TimeRange *TimeRangeFilter `json:"timeRange,omitempty"` +} + +func (o *DlpIssueFilter) GetSearchText() *string { + if o == nil { + return nil + } + return o.SearchText +} + +func (o *DlpIssueFilter) GetStatuses() []DlpIssueStatus { + if o == nil { + return nil + } + return o.Statuses +} + +func (o *DlpIssueFilter) GetAssigneeID() *string { + if o == nil { + return nil + } + return o.AssigneeID +} + +func (o *DlpIssueFilter) GetInfoType() *string { + if o == nil { + return nil + } + return o.InfoType +} + +func (o *DlpIssueFilter) GetRegexID() *string { + if o == nil { + return nil + } + return o.RegexID +} + +func (o *DlpIssueFilter) GetReportIds() []string { + if o == nil { + return nil + } + return o.ReportIds +} + +func (o *DlpIssueFilter) GetDocID() *string { + if o == nil { + return nil + } + return o.DocID +} + +func (o *DlpIssueFilter) GetDatasource() *string { + if o == nil { + return nil + } + return o.Datasource +} + +func (o *DlpIssueFilter) GetVisibility() *string { + if o == nil { + return nil + } + return o.Visibility +} + +func (o *DlpIssueFilter) GetSeverities() []DlpSeverity { + if o == nil { + return nil + } + return o.Severities +} + +func (o *DlpIssueFilter) GetTimeRange() *TimeRangeFilter { + if o == nil { + return nil + } + return o.TimeRange +} diff --git a/tests/mockserver/internal/sdk/models/components/dlpissuestatus.go b/tests/mockserver/internal/sdk/models/components/dlpissuestatus.go new file mode 100644 index 00000000..24c291ec --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/dlpissuestatus.go @@ -0,0 +1,41 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// DlpIssueStatus - Status of a DLP issue. +type DlpIssueStatus string + +const ( + DlpIssueStatusOpen DlpIssueStatus = "OPEN" + DlpIssueStatusClosed DlpIssueStatus = "CLOSED" + DlpIssueStatusInProgress DlpIssueStatus = "IN_PROGRESS" + DlpIssueStatusResolved DlpIssueStatus = "RESOLVED" +) + +func (e DlpIssueStatus) ToPointer() *DlpIssueStatus { + return &e +} +func (e *DlpIssueStatus) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "OPEN": + fallthrough + case "CLOSED": + fallthrough + case "IN_PROGRESS": + fallthrough + case "RESOLVED": + *e = DlpIssueStatus(v) + return nil + default: + return fmt.Errorf("invalid value for DlpIssueStatus: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/dlpseverity.go b/tests/mockserver/internal/sdk/models/components/dlpseverity.go new file mode 100644 index 00000000..a0c02199 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/dlpseverity.go @@ -0,0 +1,41 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// DlpSeverity - Severity levels for DLP findings and analyses. +type DlpSeverity string + +const ( + DlpSeverityUnspecified DlpSeverity = "UNSPECIFIED" + DlpSeverityLow DlpSeverity = "LOW" + DlpSeverityMedium DlpSeverity = "MEDIUM" + DlpSeverityHigh DlpSeverity = "HIGH" +) + +func (e DlpSeverity) ToPointer() *DlpSeverity { + return &e +} +func (e *DlpSeverity) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "UNSPECIFIED": + fallthrough + case "LOW": + fallthrough + case "MEDIUM": + fallthrough + case "HIGH": + *e = DlpSeverity(v) + return nil + default: + return fmt.Errorf("invalid value for DlpSeverity: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/documentdefinition.go b/tests/mockserver/internal/sdk/models/components/documentdefinition.go index beac1f1c..41db731f 100644 --- a/tests/mockserver/internal/sdk/models/components/documentdefinition.go +++ b/tests/mockserver/internal/sdk/models/components/documentdefinition.go @@ -46,6 +46,8 @@ type DocumentDefinition struct { Status *string `json:"status,omitempty"` // Additional variations of the URL that this document points to. AdditionalUrls []string `json:"additionalUrls,omitempty"` + // A deep link, if available, into the datasource's native application for the user's platform (e.g. slack://channel/message). + NativeAppURL *string `json:"nativeAppUrl,omitempty"` // Comments associated with the document. Comments []CommentDefinition `json:"comments,omitempty"` // Additional metadata properties of the document. These can surface as [facets and operators](https://developers.glean.com/indexing/datasource/custom-properties/operators_and_facets). @@ -199,6 +201,13 @@ func (o *DocumentDefinition) GetAdditionalUrls() []string { return o.AdditionalUrls } +func (o *DocumentDefinition) GetNativeAppURL() *string { + if o == nil { + return nil + } + return o.NativeAppURL +} + func (o *DocumentDefinition) GetComments() []CommentDefinition { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/documentinsight.go b/tests/mockserver/internal/sdk/models/components/documentinsight.go deleted file mode 100644 index 3b304aee..00000000 --- a/tests/mockserver/internal/sdk/models/components/documentinsight.go +++ /dev/null @@ -1,30 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type DocumentInsight struct { - Document Document `json:"document"` - ViewCount *CountInfo `json:"viewCount,omitempty"` - VisitorCount *CountInfo `json:"visitorCount,omitempty"` -} - -func (o *DocumentInsight) GetDocument() Document { - if o == nil { - return Document{} - } - return o.Document -} - -func (o *DocumentInsight) GetViewCount() *CountInfo { - if o == nil { - return nil - } - return o.ViewCount -} - -func (o *DocumentInsight) GetVisitorCount() *CountInfo { - if o == nil { - return nil - } - return o.VisitorCount -} diff --git a/tests/mockserver/internal/sdk/models/components/documentinteractions.go b/tests/mockserver/internal/sdk/models/components/documentinteractions.go index 28bb3af0..5b5e215d 100644 --- a/tests/mockserver/internal/sdk/models/components/documentinteractions.go +++ b/tests/mockserver/internal/sdk/models/components/documentinteractions.go @@ -13,7 +13,7 @@ type DocumentInteractions struct { NumReactions *int64 `json:"numReactions,omitempty"` // To be deprecated in favor of reacts. A (potentially non-exhaustive) list of reactions for the document. // - // 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 reacts instead. Reactions []string `json:"reactions,omitempty"` Reacts []Reaction `json:"reacts,omitempty"` // Describes instances of someone posting a link to this document in one of our indexed datasources. diff --git a/tests/mockserver/internal/sdk/models/components/documentspecunion.go b/tests/mockserver/internal/sdk/models/components/documentspecunion.go index e6206deb..87e6ac59 100644 --- a/tests/mockserver/internal/sdk/models/components/documentspecunion.go +++ b/tests/mockserver/internal/sdk/models/components/documentspecunion.go @@ -15,6 +15,7 @@ type DocumentSpecUgcType2 string const ( DocumentSpecUgcType2Announcements DocumentSpecUgcType2 = "ANNOUNCEMENTS" DocumentSpecUgcType2Answers DocumentSpecUgcType2 = "ANSWERS" + DocumentSpecUgcType2Artifacts DocumentSpecUgcType2 = "ARTIFACTS" DocumentSpecUgcType2Collections DocumentSpecUgcType2 = "COLLECTIONS" DocumentSpecUgcType2Shortcuts DocumentSpecUgcType2 = "SHORTCUTS" DocumentSpecUgcType2Chats DocumentSpecUgcType2 = "CHATS" @@ -33,6 +34,8 @@ func (e *DocumentSpecUgcType2) UnmarshalJSON(data []byte) error { fallthrough case "ANSWERS": fallthrough + case "ARTIFACTS": + fallthrough case "COLLECTIONS": fallthrough case "SHORTCUTS": diff --git a/tests/mockserver/internal/sdk/models/components/editanswerrequest.go b/tests/mockserver/internal/sdk/models/components/editanswerrequest.go index cf5732f1..c11ee203 100644 --- a/tests/mockserver/internal/sdk/models/components/editanswerrequest.go +++ b/tests/mockserver/internal/sdk/models/components/editanswerrequest.go @@ -45,7 +45,7 @@ type EditAnswerRequest struct { BodyText *string `json:"bodyText,omitempty"` // The parent board ID of this Answer, or 0 if it's a floating Answer. Adding Answers to Answer Boards is no longer permitted. // - // 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: Answer Boards no longer supported. BoardID *int64 `json:"boardId,omitempty"` // Filters which restrict who should see the answer. Values are taken from the corresponding filters in people search. AudienceFilters []FacetFilter `json:"audienceFilters,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/editcollectionresponse.go b/tests/mockserver/internal/sdk/models/components/editcollectionresponse.go index ba96dfa1..63c1ab5a 100644 --- a/tests/mockserver/internal/sdk/models/components/editcollectionresponse.go +++ b/tests/mockserver/internal/sdk/models/components/editcollectionresponse.go @@ -19,6 +19,7 @@ const ( EditCollectionResponseErrorCodeHeightViolation EditCollectionResponseErrorCode = "HEIGHT_VIOLATION" EditCollectionResponseErrorCodeWidthViolation EditCollectionResponseErrorCode = "WIDTH_VIOLATION" EditCollectionResponseErrorCodeNoPermissions EditCollectionResponseErrorCode = "NO_PERMISSIONS" + EditCollectionResponseErrorCodeCorruptItem EditCollectionResponseErrorCode = "CORRUPT_ITEM" ) func (e EditCollectionResponseErrorCode) ToPointer() *EditCollectionResponseErrorCode { @@ -43,6 +44,8 @@ func (e *EditCollectionResponseErrorCode) UnmarshalJSON(data []byte) error { case "WIDTH_VIOLATION": fallthrough case "NO_PERMISSIONS": + fallthrough + case "CORRUPT_ITEM": *e = EditCollectionResponseErrorCode(v) return nil default: @@ -71,6 +74,8 @@ type EditCollectionResponse struct { // The datasource type this Collection can hold. AllowedDatasource *string `json:"allowedDatasource,omitempty"` Permissions *ObjectPermissions `json:"permissions,omitempty"` + // An opaque token that represents this particular UGC. To be used for `/feedback` reporting. + TrackingToken *string `json:"trackingToken,omitempty"` // The unique ID of the Collection. ID int64 `json:"id"` CreateTime *time.Time `json:"createTime,omitempty"` @@ -183,6 +188,13 @@ func (o *EditCollectionResponse) GetPermissions() *ObjectPermissions { return o.Permissions } +func (o *EditCollectionResponse) GetTrackingToken() *string { + if o == nil { + return nil + } + return o.TrackingToken +} + func (o *EditCollectionResponse) GetID() int64 { if o == nil { return 0 diff --git a/tests/mockserver/internal/sdk/models/components/editworkflowrequest.go b/tests/mockserver/internal/sdk/models/components/editworkflowrequest.go new file mode 100644 index 00000000..4c803a25 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/editworkflowrequest.go @@ -0,0 +1,24 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type EditWorkflowRequest struct { + // The name of the workflow. + Name *string `json:"name,omitempty"` + // The workflow ID we want to update. + ID *string `json:"id,omitempty"` +} + +func (o *EditWorkflowRequest) GetName() *string { + if o == nil { + return nil + } + return o.Name +} + +func (o *EditWorkflowRequest) GetID() *string { + if o == nil { + return nil + } + return o.ID +} diff --git a/tests/mockserver/internal/sdk/models/components/employeeinfodefinition.go b/tests/mockserver/internal/sdk/models/components/employeeinfodefinition.go index d74dd36f..7af253a7 100644 --- a/tests/mockserver/internal/sdk/models/components/employeeinfodefinition.go +++ b/tests/mockserver/internal/sdk/models/components/employeeinfodefinition.go @@ -26,7 +26,7 @@ type EmployeeInfoDefinition struct { PhoneNumber *string `json:"phoneNumber,omitempty"` // The employee's location (city/office name etc). // - // 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: Field is deprecated. Location *string `json:"location,omitempty"` // Detailed location with information about country, state, city etc. StructuredLocation *StructuredLocation `json:"structuredLocation,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/exportinfo.go b/tests/mockserver/internal/sdk/models/components/exportinfo.go new file mode 100644 index 00000000..74fb0752 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/exportinfo.go @@ -0,0 +1,160 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// ExportInfoExportType - The type of export to perform +type ExportInfoExportType string + +const ( + ExportInfoExportTypeFindings ExportInfoExportType = "FINDINGS" + ExportInfoExportTypeDocuments ExportInfoExportType = "DOCUMENTS" + ExportInfoExportTypeIssues ExportInfoExportType = "ISSUES" +) + +func (e ExportInfoExportType) ToPointer() *ExportInfoExportType { + return &e +} +func (e *ExportInfoExportType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "FINDINGS": + fallthrough + case "DOCUMENTS": + fallthrough + case "ISSUES": + *e = ExportInfoExportType(v) + return nil + default: + return fmt.Errorf("invalid value for ExportInfoExportType: %v", v) + } +} + +// ExportInfoStatus - The status of the export +type ExportInfoStatus string + +const ( + ExportInfoStatusPending ExportInfoStatus = "PENDING" + ExportInfoStatusCompleted ExportInfoStatus = "COMPLETED" + ExportInfoStatusFailed ExportInfoStatus = "FAILED" +) + +func (e ExportInfoStatus) ToPointer() *ExportInfoStatus { + return &e +} +func (e *ExportInfoStatus) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "PENDING": + fallthrough + case "COMPLETED": + fallthrough + case "FAILED": + *e = ExportInfoStatus(v) + return nil + default: + return fmt.Errorf("invalid value for ExportInfoStatus: %v", v) + } +} + +type ExportInfo struct { + // Details about the person who created this report/policy. + CreatedBy *DlpPerson `json:"createdBy,omitempty"` + // Timestamp at which this export started. + StartTime *string `json:"startTime,omitempty"` + // Timestamp at which this export completed. + EndTime *string `json:"endTime,omitempty"` + // The ID of the export + ExportID *string `json:"exportId,omitempty"` + // The name of the file to export the findings to + FileName *string `json:"fileName,omitempty"` + // The type of export to perform + ExportType *ExportInfoExportType `json:"exportType,omitempty"` + Filter *DlpFindingFilter `json:"filter,omitempty"` + // Filter for DLP issues. Includes document-level filters and issue-specific filters. + IssueFilter *DlpIssueFilter `json:"issueFilter,omitempty"` + // The status of the export + Status *ExportInfoStatus `json:"status,omitempty"` + // The size of the exported file in bytes + ExportSize *int64 `json:"exportSize,omitempty"` +} + +func (o *ExportInfo) GetCreatedBy() *DlpPerson { + if o == nil { + return nil + } + return o.CreatedBy +} + +func (o *ExportInfo) GetStartTime() *string { + if o == nil { + return nil + } + return o.StartTime +} + +func (o *ExportInfo) GetEndTime() *string { + if o == nil { + return nil + } + return o.EndTime +} + +func (o *ExportInfo) GetExportID() *string { + if o == nil { + return nil + } + return o.ExportID +} + +func (o *ExportInfo) GetFileName() *string { + if o == nil { + return nil + } + return o.FileName +} + +func (o *ExportInfo) GetExportType() *ExportInfoExportType { + if o == nil { + return nil + } + return o.ExportType +} + +func (o *ExportInfo) GetFilter() *DlpFindingFilter { + if o == nil { + return nil + } + return o.Filter +} + +func (o *ExportInfo) GetIssueFilter() *DlpIssueFilter { + if o == nil { + return nil + } + return o.IssueFilter +} + +func (o *ExportInfo) GetStatus() *ExportInfoStatus { + if o == nil { + return nil + } + return o.Status +} + +func (o *ExportInfo) GetExportSize() *int64 { + if o == nil { + return nil + } + return o.ExportSize +} diff --git a/tests/mockserver/internal/sdk/models/components/externalsharingoptions.go b/tests/mockserver/internal/sdk/models/components/externalsharingoptions.go index 0d0a7b9c..ef958664 100644 --- a/tests/mockserver/internal/sdk/models/components/externalsharingoptions.go +++ b/tests/mockserver/internal/sdk/models/components/externalsharingoptions.go @@ -4,15 +4,15 @@ package components // ExternalSharingOptions - Controls how "shared" a document must be to get picked for scans. // -// 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 broadSharingOptions instead. type ExternalSharingOptions struct { - // 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: Field is deprecated. Enabled *bool `json:"enabled,omitempty"` // The minimum number of users the document is shared with. Threshold *int64 `json:"threshold,omitempty"` // Documents will be filtered based on how many people have access to it. ThresholdEnabled *bool `json:"thresholdEnabled,omitempty"` - // 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: Field is deprecated. AnyoneWithLinkEnabled *bool `json:"anyoneWithLinkEnabled,omitempty"` // Only users within the organization can access the document. AnyoneInternalEnabled *bool `json:"anyoneInternalEnabled,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/facetfiltervalue.go b/tests/mockserver/internal/sdk/models/components/facetfiltervalue.go index 68ba77de..6fa0e3a3 100644 --- a/tests/mockserver/internal/sdk/models/components/facetfiltervalue.go +++ b/tests/mockserver/internal/sdk/models/components/facetfiltervalue.go @@ -48,7 +48,7 @@ type FacetFilterValue struct { RelationType *RelationType `json:"relationType,omitempty"` // DEPRECATED - please use relationType instead // - // 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 relationType instead. IsNegated *bool `json:"isNegated,omitempty"` } diff --git a/tests/mockserver/internal/sdk/models/components/feedback.go b/tests/mockserver/internal/sdk/models/components/feedback.go index c7e66678..c89a1ce6 100644 --- a/tests/mockserver/internal/sdk/models/components/feedback.go +++ b/tests/mockserver/internal/sdk/models/components/feedback.go @@ -14,6 +14,8 @@ type FeedbackCategory string const ( FeedbackCategoryAnnouncement FeedbackCategory = "ANNOUNCEMENT" + FeedbackCategoryAnswers FeedbackCategory = "ANSWERS" + FeedbackCategoryArtifacts FeedbackCategory = "ARTIFACTS" FeedbackCategoryAutocomplete FeedbackCategory = "AUTOCOMPLETE" FeedbackCategoryCollections FeedbackCategory = "COLLECTIONS" FeedbackCategoryFeed FeedbackCategory = "FEED" @@ -38,6 +40,10 @@ func (e *FeedbackCategory) UnmarshalJSON(data []byte) error { switch v { case "ANNOUNCEMENT": fallthrough + case "ANSWERS": + fallthrough + case "ARTIFACTS": + fallthrough case "AUTOCOMPLETE": fallthrough case "COLLECTIONS": @@ -66,47 +72,48 @@ func (e *FeedbackCategory) UnmarshalJSON(data []byte) error { } } -// Event - The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`. -type Event string +// FeedbackEvent - The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`. +type FeedbackEvent string const ( - EventClick Event = "CLICK" - EventContainerClick Event = "CONTAINER_CLICK" - EventCopyLink Event = "COPY_LINK" - EventCreate Event = "CREATE" - EventDismiss Event = "DISMISS" - EventDownvote Event = "DOWNVOTE" - EventEmail Event = "EMAIL" - EventExecute Event = "EXECUTE" - EventFilter Event = "FILTER" - EventFirstToken Event = "FIRST_TOKEN" - EventFocusIn Event = "FOCUS_IN" - EventLastToken Event = "LAST_TOKEN" - EventManualFeedback Event = "MANUAL_FEEDBACK" - EventManualFeedbackSideBySide Event = "MANUAL_FEEDBACK_SIDE_BY_SIDE" - EventMarkAsRead Event = "MARK_AS_READ" - EventMessage Event = "MESSAGE" - EventMiddleClick Event = "MIDDLE_CLICK" - EventPageBlur Event = "PAGE_BLUR" - EventPageFocus Event = "PAGE_FOCUS" - EventPageLeave Event = "PAGE_LEAVE" - EventPreview Event = "PREVIEW" - EventRelatedClick Event = "RELATED_CLICK" - EventRightClick Event = "RIGHT_CLICK" - EventSectionClick Event = "SECTION_CLICK" - EventSeen Event = "SEEN" - EventSelect Event = "SELECT" - EventShare Event = "SHARE" - EventShowMore Event = "SHOW_MORE" - EventUpvote Event = "UPVOTE" - EventView Event = "VIEW" - EventVisible Event = "VISIBLE" + FeedbackEventClick FeedbackEvent = "CLICK" + FeedbackEventContainerClick FeedbackEvent = "CONTAINER_CLICK" + FeedbackEventCopyLink FeedbackEvent = "COPY_LINK" + FeedbackEventCreate FeedbackEvent = "CREATE" + FeedbackEventDismiss FeedbackEvent = "DISMISS" + FeedbackEventDownvote FeedbackEvent = "DOWNVOTE" + FeedbackEventEmail FeedbackEvent = "EMAIL" + FeedbackEventExecute FeedbackEvent = "EXECUTE" + FeedbackEventFilter FeedbackEvent = "FILTER" + FeedbackEventFirstToken FeedbackEvent = "FIRST_TOKEN" + FeedbackEventFocusIn FeedbackEvent = "FOCUS_IN" + FeedbackEventLastToken FeedbackEvent = "LAST_TOKEN" + FeedbackEventManualFeedback FeedbackEvent = "MANUAL_FEEDBACK" + FeedbackEventManualFeedbackSideBySide FeedbackEvent = "MANUAL_FEEDBACK_SIDE_BY_SIDE" + FeedbackEventFeedbackTimeSaved FeedbackEvent = "FEEDBACK_TIME_SAVED" + FeedbackEventMarkAsRead FeedbackEvent = "MARK_AS_READ" + FeedbackEventMessage FeedbackEvent = "MESSAGE" + FeedbackEventMiddleClick FeedbackEvent = "MIDDLE_CLICK" + FeedbackEventPageBlur FeedbackEvent = "PAGE_BLUR" + FeedbackEventPageFocus FeedbackEvent = "PAGE_FOCUS" + FeedbackEventPageLeave FeedbackEvent = "PAGE_LEAVE" + FeedbackEventPreview FeedbackEvent = "PREVIEW" + FeedbackEventRelatedClick FeedbackEvent = "RELATED_CLICK" + FeedbackEventRightClick FeedbackEvent = "RIGHT_CLICK" + FeedbackEventSectionClick FeedbackEvent = "SECTION_CLICK" + FeedbackEventSeen FeedbackEvent = "SEEN" + FeedbackEventSelect FeedbackEvent = "SELECT" + FeedbackEventShare FeedbackEvent = "SHARE" + FeedbackEventShowMore FeedbackEvent = "SHOW_MORE" + FeedbackEventUpvote FeedbackEvent = "UPVOTE" + FeedbackEventView FeedbackEvent = "VIEW" + FeedbackEventVisible FeedbackEvent = "VISIBLE" ) -func (e Event) ToPointer() *Event { +func (e FeedbackEvent) ToPointer() *FeedbackEvent { return &e } -func (e *Event) UnmarshalJSON(data []byte) error { +func (e *FeedbackEvent) UnmarshalJSON(data []byte) error { var v string if err := json.Unmarshal(data, &v); err != nil { return err @@ -140,6 +147,8 @@ func (e *Event) UnmarshalJSON(data []byte) error { fallthrough case "MANUAL_FEEDBACK_SIDE_BY_SIDE": fallthrough + case "FEEDBACK_TIME_SAVED": + fallthrough case "MARK_AS_READ": fallthrough case "MESSAGE": @@ -173,10 +182,10 @@ func (e *Event) UnmarshalJSON(data []byte) error { case "VIEW": fallthrough case "VISIBLE": - *e = Event(v) + *e = FeedbackEvent(v) return nil default: - return fmt.Errorf("invalid value for Event: %v", v) + return fmt.Errorf("invalid value for FeedbackEvent: %v", v) } } @@ -214,7 +223,7 @@ type Feedback struct { // A list of server-generated trackingTokens to which this event applies. TrackingTokens []string `json:"trackingTokens"` // The action the user took within a Glean client with respect to the object referred to by the given `trackingToken`. - Event Event `json:"event"` + Event FeedbackEvent `json:"event"` // Position of the element in the case that the client controls order (such as feed and autocomplete). Position *int64 `json:"position,omitempty"` // For type MANUAL_FEEDBACK, contains string of user feedback. For autocomplete, partial query string. For feed, string of user feedback in addition to manual feedback signals extracted from all suggested content. @@ -276,9 +285,9 @@ func (o *Feedback) GetTrackingTokens() []string { return o.TrackingTokens } -func (o *Feedback) GetEvent() Event { +func (o *Feedback) GetEvent() FeedbackEvent { if o == nil { - return Event("") + return FeedbackEvent("") } return o.Event } diff --git a/tests/mockserver/internal/sdk/models/components/feedentry.go b/tests/mockserver/internal/sdk/models/components/feedentry.go index 930d5c91..1274083a 100644 --- a/tests/mockserver/internal/sdk/models/components/feedentry.go +++ b/tests/mockserver/internal/sdk/models/components/feedentry.go @@ -90,6 +90,26 @@ const ( JustificationTypeZeroStateAgentSuggestion JustificationType = "ZERO_STATE_AGENT_SUGGESTION" JustificationTypePersonalizedChatSuggestion JustificationType = "PERSONALIZED_CHAT_SUGGESTION" JustificationTypeDailyDigest JustificationType = "DAILY_DIGEST" + JustificationTypeTask JustificationType = "TASK" + JustificationTypePlanMyDay JustificationType = "PLAN_MY_DAY" + JustificationTypeEndMyDay JustificationType = "END_MY_DAY" + JustificationTypeStarterKitExtension JustificationType = "STARTER_KIT_EXTENSION" + JustificationTypeStarterKitOrgChart JustificationType = "STARTER_KIT_ORG_CHART" + JustificationTypeStarterKitAddDoc JustificationType = "STARTER_KIT_ADD_DOC" + JustificationTypeMeetingRecap JustificationType = "MEETING_RECAP" + JustificationTypeActiveDiscussion JustificationType = "ACTIVE_DISCUSSION" + JustificationTypeMidDayCatchUp JustificationType = "MID_DAY_CATCH_UP" + JustificationTypeQuerySuggestion JustificationType = "QUERY_SUGGESTION" + JustificationTypeCoworkCujPromo JustificationType = "COWORK_CUJ_PROMO" + JustificationTypeWeeklyMeetings JustificationType = "WEEKLY_MEETINGS" + JustificationTypeFollowUp JustificationType = "FOLLOW_UP" + JustificationTypeMilestoneTimelineCheck JustificationType = "MILESTONE_TIMELINE_CHECK" + JustificationTypeProjectDiscussionDigest JustificationType = "PROJECT_DISCUSSION_DIGEST" + JustificationTypeProjectFocusBlock JustificationType = "PROJECT_FOCUS_BLOCK" + JustificationTypeProjectNextStep JustificationType = "PROJECT_NEXT_STEP" + JustificationTypeDemoCard JustificationType = "DEMO_CARD" + JustificationTypeOooPlanner JustificationType = "OOO_PLANNER" + JustificationTypeOooCatchUp JustificationType = "OOO_CATCH_UP" ) func (e JustificationType) ToPointer() *JustificationType { @@ -168,6 +188,46 @@ func (e *JustificationType) UnmarshalJSON(data []byte) error { case "PERSONALIZED_CHAT_SUGGESTION": fallthrough case "DAILY_DIGEST": + fallthrough + case "TASK": + fallthrough + case "PLAN_MY_DAY": + fallthrough + case "END_MY_DAY": + fallthrough + case "STARTER_KIT_EXTENSION": + fallthrough + case "STARTER_KIT_ORG_CHART": + fallthrough + case "STARTER_KIT_ADD_DOC": + fallthrough + case "MEETING_RECAP": + fallthrough + case "ACTIVE_DISCUSSION": + fallthrough + case "MID_DAY_CATCH_UP": + fallthrough + case "QUERY_SUGGESTION": + fallthrough + case "COWORK_CUJ_PROMO": + fallthrough + case "WEEKLY_MEETINGS": + fallthrough + case "FOLLOW_UP": + fallthrough + case "MILESTONE_TIMELINE_CHECK": + fallthrough + case "PROJECT_DISCUSSION_DIGEST": + fallthrough + case "PROJECT_FOCUS_BLOCK": + fallthrough + case "PROJECT_NEXT_STEP": + fallthrough + case "DEMO_CARD": + fallthrough + case "OOO_PLANNER": + fallthrough + case "OOO_CATCH_UP": *e = JustificationType(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/feedrequest.go b/tests/mockserver/internal/sdk/models/components/feedrequest.go index bfc6576d..7c94e464 100644 --- a/tests/mockserver/internal/sdk/models/components/feedrequest.go +++ b/tests/mockserver/internal/sdk/models/components/feedrequest.go @@ -35,6 +35,22 @@ const ( FeedRequestCategoryZeroStateWorkflowSuggestion FeedRequestCategory = "ZERO_STATE_WORKFLOW_SUGGESTION" FeedRequestCategoryPersonalizedChatSuggestion FeedRequestCategory = "PERSONALIZED_CHAT_SUGGESTION" FeedRequestCategoryDailyDigest FeedRequestCategory = "DAILY_DIGEST" + FeedRequestCategoryTask FeedRequestCategory = "TASK" + FeedRequestCategoryPlanMyDay FeedRequestCategory = "PLAN_MY_DAY" + FeedRequestCategoryEndMyDay FeedRequestCategory = "END_MY_DAY" + FeedRequestCategoryStarterKit FeedRequestCategory = "STARTER_KIT" + FeedRequestCategoryMidDayCatchUp FeedRequestCategory = "MID_DAY_CATCH_UP" + FeedRequestCategoryQuerySuggestion FeedRequestCategory = "QUERY_SUGGESTION" + FeedRequestCategoryCoworkCujPromo FeedRequestCategory = "COWORK_CUJ_PROMO" + FeedRequestCategoryWeeklyMeetings FeedRequestCategory = "WEEKLY_MEETINGS" + FeedRequestCategoryFollowUp FeedRequestCategory = "FOLLOW_UP" + FeedRequestCategoryMilestoneTimelineCheck FeedRequestCategory = "MILESTONE_TIMELINE_CHECK" + FeedRequestCategoryProjectDiscussionDigest FeedRequestCategory = "PROJECT_DISCUSSION_DIGEST" + FeedRequestCategoryProjectFocusBlock FeedRequestCategory = "PROJECT_FOCUS_BLOCK" + FeedRequestCategoryProjectNextStep FeedRequestCategory = "PROJECT_NEXT_STEP" + FeedRequestCategoryDemoCard FeedRequestCategory = "DEMO_CARD" + FeedRequestCategoryOooPlanner FeedRequestCategory = "OOO_PLANNER" + FeedRequestCategoryOooCatchUp FeedRequestCategory = "OOO_CATCH_UP" ) func (e FeedRequestCategory) ToPointer() *FeedRequestCategory { @@ -95,6 +111,38 @@ func (e *FeedRequestCategory) UnmarshalJSON(data []byte) error { case "PERSONALIZED_CHAT_SUGGESTION": fallthrough case "DAILY_DIGEST": + fallthrough + case "TASK": + fallthrough + case "PLAN_MY_DAY": + fallthrough + case "END_MY_DAY": + fallthrough + case "STARTER_KIT": + fallthrough + case "MID_DAY_CATCH_UP": + fallthrough + case "QUERY_SUGGESTION": + fallthrough + case "COWORK_CUJ_PROMO": + fallthrough + case "WEEKLY_MEETINGS": + fallthrough + case "FOLLOW_UP": + fallthrough + case "MILESTONE_TIMELINE_CHECK": + fallthrough + case "PROJECT_DISCUSSION_DIGEST": + fallthrough + case "PROJECT_FOCUS_BLOCK": + fallthrough + case "PROJECT_NEXT_STEP": + fallthrough + case "DEMO_CARD": + fallthrough + case "OOO_PLANNER": + fallthrough + case "OOO_CATCH_UP": *e = FeedRequestCategory(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/feedresult.go b/tests/mockserver/internal/sdk/models/components/feedresult.go index d7955c06..ddd4f095 100644 --- a/tests/mockserver/internal/sdk/models/components/feedresult.go +++ b/tests/mockserver/internal/sdk/models/components/feedresult.go @@ -36,6 +36,22 @@ const ( FeedResultCategoryZeroStateWorkflowSuggestion FeedResultCategory = "ZERO_STATE_WORKFLOW_SUGGESTION" FeedResultCategoryPersonalizedChatSuggestion FeedResultCategory = "PERSONALIZED_CHAT_SUGGESTION" FeedResultCategoryDailyDigest FeedResultCategory = "DAILY_DIGEST" + FeedResultCategoryTask FeedResultCategory = "TASK" + FeedResultCategoryPlanMyDay FeedResultCategory = "PLAN_MY_DAY" + FeedResultCategoryEndMyDay FeedResultCategory = "END_MY_DAY" + FeedResultCategoryStarterKit FeedResultCategory = "STARTER_KIT" + FeedResultCategoryMidDayCatchUp FeedResultCategory = "MID_DAY_CATCH_UP" + FeedResultCategoryQuerySuggestion FeedResultCategory = "QUERY_SUGGESTION" + FeedResultCategoryCoworkCujPromo FeedResultCategory = "COWORK_CUJ_PROMO" + FeedResultCategoryWeeklyMeetings FeedResultCategory = "WEEKLY_MEETINGS" + FeedResultCategoryFollowUp FeedResultCategory = "FOLLOW_UP" + FeedResultCategoryMilestoneTimelineCheck FeedResultCategory = "MILESTONE_TIMELINE_CHECK" + FeedResultCategoryProjectDiscussionDigest FeedResultCategory = "PROJECT_DISCUSSION_DIGEST" + FeedResultCategoryProjectFocusBlock FeedResultCategory = "PROJECT_FOCUS_BLOCK" + FeedResultCategoryProjectNextStep FeedResultCategory = "PROJECT_NEXT_STEP" + FeedResultCategoryDemoCard FeedResultCategory = "DEMO_CARD" + FeedResultCategoryOooPlanner FeedResultCategory = "OOO_PLANNER" + FeedResultCategoryOooCatchUp FeedResultCategory = "OOO_CATCH_UP" ) func (e FeedResultCategory) ToPointer() *FeedResultCategory { @@ -96,6 +112,38 @@ func (e *FeedResultCategory) UnmarshalJSON(data []byte) error { case "PERSONALIZED_CHAT_SUGGESTION": fallthrough case "DAILY_DIGEST": + fallthrough + case "TASK": + fallthrough + case "PLAN_MY_DAY": + fallthrough + case "END_MY_DAY": + fallthrough + case "STARTER_KIT": + fallthrough + case "MID_DAY_CATCH_UP": + fallthrough + case "QUERY_SUGGESTION": + fallthrough + case "COWORK_CUJ_PROMO": + fallthrough + case "WEEKLY_MEETINGS": + fallthrough + case "FOLLOW_UP": + fallthrough + case "MILESTONE_TIMELINE_CHECK": + fallthrough + case "PROJECT_DISCUSSION_DIGEST": + fallthrough + case "PROJECT_FOCUS_BLOCK": + fallthrough + case "PROJECT_NEXT_STEP": + fallthrough + case "DEMO_CARD": + fallthrough + case "OOO_PLANNER": + fallthrough + case "OOO_CATCH_UP": *e = FeedResultCategory(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/getcollectionresponse.go b/tests/mockserver/internal/sdk/models/components/getcollectionresponse.go index e8446d27..e02580ca 100644 --- a/tests/mockserver/internal/sdk/models/components/getcollectionresponse.go +++ b/tests/mockserver/internal/sdk/models/components/getcollectionresponse.go @@ -3,11 +3,13 @@ package components type GetCollectionResponse struct { - Collection *Collection `json:"collection,omitempty"` - RootCollection *Collection `json:"rootCollection,omitempty"` - // An opaque token that represents this particular Collection. To be used for `/feedback` reporting. - TrackingToken *string `json:"trackingToken,omitempty"` - Error *CollectionError `json:"error,omitempty"` + Collection *Collection `json:"collection,omitempty"` + RootCollection *Collection `json:"rootCollection,omitempty"` + Error *CollectionError `json:"error,omitempty"` + // Use `collection.trackingToken` instead. + // + // Deprecated: Deprecated on 2026-05-07, removal scheduled for 2027-01-15: Use `collection.trackingToken` instead.. + TrackingToken *string `json:"trackingToken,omitempty"` } func (o *GetCollectionResponse) GetCollection() *Collection { @@ -24,16 +26,16 @@ func (o *GetCollectionResponse) GetRootCollection() *Collection { return o.RootCollection } -func (o *GetCollectionResponse) GetTrackingToken() *string { +func (o *GetCollectionResponse) GetError() *CollectionError { if o == nil { return nil } - return o.TrackingToken + return o.Error } -func (o *GetCollectionResponse) GetError() *CollectionError { +func (o *GetCollectionResponse) GetTrackingToken() *string { if o == nil { return nil } - return o.Error + return o.TrackingToken } diff --git a/tests/mockserver/internal/sdk/models/components/getdocumentsrequest.go b/tests/mockserver/internal/sdk/models/components/getdocumentsrequest.go index 48c69211..6a2ecf4f 100644 --- a/tests/mockserver/internal/sdk/models/components/getdocumentsrequest.go +++ b/tests/mockserver/internal/sdk/models/components/getdocumentsrequest.go @@ -14,6 +14,7 @@ const ( GetDocumentsRequestIncludeFieldVisitorsCount GetDocumentsRequestIncludeField = "VISITORS_COUNT" GetDocumentsRequestIncludeFieldRecentShares GetDocumentsRequestIncludeField = "RECENT_SHARES" GetDocumentsRequestIncludeFieldDocumentContent GetDocumentsRequestIncludeField = "DOCUMENT_CONTENT" + GetDocumentsRequestIncludeFieldCustomMetadata GetDocumentsRequestIncludeField = "CUSTOM_METADATA" ) func (e GetDocumentsRequestIncludeField) ToPointer() *GetDocumentsRequestIncludeField { @@ -32,6 +33,8 @@ func (e *GetDocumentsRequestIncludeField) UnmarshalJSON(data []byte) error { case "RECENT_SHARES": fallthrough case "DOCUMENT_CONTENT": + fallthrough + case "CUSTOM_METADATA": *e = GetDocumentsRequestIncludeField(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/gleandataerror.go b/tests/mockserver/internal/sdk/models/components/gleandataerror.go index 12eecd2e..d549ead5 100644 --- a/tests/mockserver/internal/sdk/models/components/gleandataerror.go +++ b/tests/mockserver/internal/sdk/models/components/gleandataerror.go @@ -10,6 +10,8 @@ type GleanDataError struct { // Indicates results could not be fetched due to invalid operators in the query. InvalidOperators []InvalidOperatorValueError `json:"invalidOperators,omitempty"` ErrorMessages []ErrorMessage `json:"errorMessages,omitempty"` + // Indicates the federated search results could not be fetched due to rate limiting. + FederatedSearchRateLimitError *bool `json:"federatedSearchRateLimitError,omitempty"` } func (o *GleanDataError) GetBadGmailToken() *bool { @@ -39,3 +41,10 @@ func (o *GleanDataError) GetErrorMessages() []ErrorMessage { } return o.ErrorMessages } + +func (o *GleanDataError) GetFederatedSearchRateLimitError() *bool { + if o == nil { + return nil + } + return o.FederatedSearchRateLimitError +} diff --git a/tests/mockserver/internal/sdk/models/components/inputoptions.go b/tests/mockserver/internal/sdk/models/components/inputoptions.go index 51e07919..9ab2cc24 100644 --- a/tests/mockserver/internal/sdk/models/components/inputoptions.go +++ b/tests/mockserver/internal/sdk/models/components/inputoptions.go @@ -34,21 +34,21 @@ func (e *DatasourcesType) UnmarshalJSON(data []byte) error { } } -// TimePeriodType - Type of time period for which to run the report/policy. PAST_DAY is deprecated. -type TimePeriodType string +// InputOptionsTimePeriodType - Type of time period for which to run the report/policy. PAST_DAY is deprecated. +type InputOptionsTimePeriodType string const ( - TimePeriodTypeAllTime TimePeriodType = "ALL_TIME" - TimePeriodTypePastYear TimePeriodType = "PAST_YEAR" - TimePeriodTypePastDay TimePeriodType = "PAST_DAY" - TimePeriodTypeCustom TimePeriodType = "CUSTOM" - TimePeriodTypeLastNDays TimePeriodType = "LAST_N_DAYS" + InputOptionsTimePeriodTypeAllTime InputOptionsTimePeriodType = "ALL_TIME" + InputOptionsTimePeriodTypePastYear InputOptionsTimePeriodType = "PAST_YEAR" + InputOptionsTimePeriodTypePastDay InputOptionsTimePeriodType = "PAST_DAY" + InputOptionsTimePeriodTypeCustom InputOptionsTimePeriodType = "CUSTOM" + InputOptionsTimePeriodTypeLastNDays InputOptionsTimePeriodType = "LAST_N_DAYS" ) -func (e TimePeriodType) ToPointer() *TimePeriodType { +func (e InputOptionsTimePeriodType) ToPointer() *InputOptionsTimePeriodType { return &e } -func (e *TimePeriodType) UnmarshalJSON(data []byte) error { +func (e *InputOptionsTimePeriodType) UnmarshalJSON(data []byte) error { var v string if err := json.Unmarshal(data, &v); err != nil { return err @@ -63,10 +63,10 @@ func (e *TimePeriodType) UnmarshalJSON(data []byte) error { case "CUSTOM": fallthrough case "LAST_N_DAYS": - *e = TimePeriodType(v) + *e = InputOptionsTimePeriodType(v) return nil default: - return fmt.Errorf("invalid value for TimePeriodType: %v", v) + return fmt.Errorf("invalid value for InputOptionsTimePeriodType: %v", v) } } @@ -74,19 +74,21 @@ func (e *TimePeriodType) UnmarshalJSON(data []byte) error { type InputOptions struct { // list of url regex matching documents excluded from report // - // 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: Field is deprecated. URLGreenlist []string `json:"urlGreenlist,omitempty"` // The types of datasource for which to run the report/policy. DatasourcesType *DatasourcesType `json:"datasourcesType,omitempty"` // List of datasources to consider for report. DEPRECATED - use datasourceInstances instead. // - // 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 datasourceInstances instead. Datasources []string `json:"datasources,omitempty"` // List of datasource instances to consider for report/policy. DatasourceInstances []string `json:"datasourceInstances,omitempty"` // Type of time period for which to run the report/policy. PAST_DAY is deprecated. - TimePeriodType *TimePeriodType `json:"timePeriodType,omitempty"` - CustomTimeRange *TimeRange `json:"customTimeRange,omitempty"` + TimePeriodType *InputOptionsTimePeriodType `json:"timePeriodType,omitempty"` + CustomTimeRange *TimeRange `json:"customTimeRange,omitempty"` + // Subset of document IDs to scan. If empty, all documents matching other scope criteria will be scanned. + SubsetDocIdsToScan []string `json:"subsetDocIdsToScan,omitempty"` } func (o *InputOptions) GetURLGreenlist() []string { @@ -117,7 +119,7 @@ func (o *InputOptions) GetDatasourceInstances() []string { return o.DatasourceInstances } -func (o *InputOptions) GetTimePeriodType() *TimePeriodType { +func (o *InputOptions) GetTimePeriodType() *InputOptionsTimePeriodType { if o == nil { return nil } @@ -130,3 +132,10 @@ func (o *InputOptions) GetCustomTimeRange() *TimeRange { } return o.CustomTimeRange } + +func (o *InputOptions) GetSubsetDocIdsToScan() []string { + if o == nil { + return nil + } + return o.SubsetDocIdsToScan +} diff --git a/tests/mockserver/internal/sdk/models/components/insightsagentsrequestoptions.go b/tests/mockserver/internal/sdk/models/components/insightsagentsrequestoptions.go deleted file mode 100644 index 6b825aec..00000000 --- a/tests/mockserver/internal/sdk/models/components/insightsagentsrequestoptions.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type InsightsAgentsRequestOptions struct { - // IDs of the Agents for which Insights should be returned. An empty array signifies all. - AgentIds []string `json:"agentIds,omitempty"` -} - -func (o *InsightsAgentsRequestOptions) GetAgentIds() []string { - if o == nil { - return nil - } - return o.AgentIds -} diff --git a/tests/mockserver/internal/sdk/models/components/insightsaiapprequestoptions.go b/tests/mockserver/internal/sdk/models/components/insightsaiapprequestoptions.go deleted file mode 100644 index 7275316c..00000000 --- a/tests/mockserver/internal/sdk/models/components/insightsaiapprequestoptions.go +++ /dev/null @@ -1,15 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type InsightsAiAppRequestOptions struct { - // IDs of the AI Apps for which Insights should be returned. An empty array signifies all. - AiAppIds []string `json:"aiAppIds,omitempty"` -} - -func (o *InsightsAiAppRequestOptions) GetAiAppIds() []string { - if o == nil { - return nil - } - return o.AiAppIds -} diff --git a/tests/mockserver/internal/sdk/models/components/insightsassistantrequest.go b/tests/mockserver/internal/sdk/models/components/insightsassistantrequest.go index 6d54c660..29a882de 100644 --- a/tests/mockserver/internal/sdk/models/components/insightsassistantrequest.go +++ b/tests/mockserver/internal/sdk/models/components/insightsassistantrequest.go @@ -5,7 +5,9 @@ package components type InsightsAssistantRequest struct { // Departments for which Insights are requested. Departments []string `json:"departments,omitempty"` - DayRange *Period `json:"dayRange,omitempty"` + // Manager emails whose teams should be filtered for. Empty array means no filtering. + ManagerEmails []string `json:"managerEmails,omitempty"` + DayRange *Period `json:"dayRange,omitempty"` } func (o *InsightsAssistantRequest) GetDepartments() []string { @@ -15,6 +17,13 @@ func (o *InsightsAssistantRequest) GetDepartments() []string { return o.Departments } +func (o *InsightsAssistantRequest) GetManagerEmails() []string { + if o == nil { + return nil + } + return o.ManagerEmails +} + func (o *InsightsAssistantRequest) GetDayRange() *Period { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/insightschatsummary.go b/tests/mockserver/internal/sdk/models/components/insightschatsummary.go index d60b2e3e..d5fe3dfc 100644 --- a/tests/mockserver/internal/sdk/models/components/insightschatsummary.go +++ b/tests/mockserver/internal/sdk/models/components/insightschatsummary.go @@ -3,9 +3,9 @@ package components type InsightsChatSummary struct { - // Number of current Monthly Active Users, in the specified departments. + // Number of current Monthly Active Users. MonthlyActiveUsers *int64 `json:"monthlyActiveUsers,omitempty"` - // Number of current Weekly Active Users, in the specified departments. + // Number of current Weekly Active Users. WeeklyActiveUsers *int64 `json:"weeklyActiveUsers,omitempty"` // Total number of chats by users over the specified time period. NumChats *int64 `json:"numChats,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/insightsoverviewrequest.go b/tests/mockserver/internal/sdk/models/components/insightsoverviewrequest.go index 79e6d2e9..5e903919 100644 --- a/tests/mockserver/internal/sdk/models/components/insightsoverviewrequest.go +++ b/tests/mockserver/internal/sdk/models/components/insightsoverviewrequest.go @@ -5,7 +5,9 @@ package components type InsightsOverviewRequest struct { // Departments for which Insights are requested. Departments []string `json:"departments,omitempty"` - DayRange *Period `json:"dayRange,omitempty"` + // Manager emails whose teams should be filtered for. Empty array means no filtering. + ManagerEmails []string `json:"managerEmails,omitempty"` + DayRange *Period `json:"dayRange,omitempty"` } func (o *InsightsOverviewRequest) GetDepartments() []string { @@ -15,6 +17,13 @@ func (o *InsightsOverviewRequest) GetDepartments() []string { return o.Departments } +func (o *InsightsOverviewRequest) GetManagerEmails() []string { + if o == nil { + return nil + } + return o.ManagerEmails +} + func (o *InsightsOverviewRequest) GetDayRange() *Period { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/insightsoverviewresponse.go b/tests/mockserver/internal/sdk/models/components/insightsoverviewresponse.go index 83ba55ca..2e8c2ec9 100644 --- a/tests/mockserver/internal/sdk/models/components/insightsoverviewresponse.go +++ b/tests/mockserver/internal/sdk/models/components/insightsoverviewresponse.go @@ -3,27 +3,49 @@ package components type InsightsOverviewResponse struct { - // Number of current Monthly Active Users, in the specified departments. + // Number of current Monthly Active Users. MonthlyActiveUsers *int64 `json:"monthlyActiveUsers,omitempty"` - // Number of current Weekly Active Users, in the specified departments. + // Number of current Weekly Active Users. WeeklyActiveUsers *int64 `json:"weeklyActiveUsers,omitempty"` // Department name(s). Departments []string `json:"departments,omitempty"` // Number of current employees in the specified departments, according to the Org Chart. EmployeeCount *int64 `json:"employeeCount,omitempty"` // Number of current signed up employees in the specified departments, according to the Org Chart. - TotalSignups *int64 `json:"totalSignups,omitempty"` - SearchSummary *InsightsSearchSummary `json:"searchSummary,omitempty"` - ChatSummary *InsightsChatSummary `json:"chatSummary,omitempty"` - ExtensionSummary *CurrentActiveUsers `json:"extensionSummary,omitempty"` - UgcSummary *CurrentActiveUsers `json:"ugcSummary,omitempty"` + TotalSignups *int64 `json:"totalSignups,omitempty"` + SearchSummary *InsightsSearchSummary `json:"searchSummary,omitempty"` + ChatSummary *InsightsChatSummary `json:"chatSummary,omitempty"` + SearchActiveUsers *CurrentActiveUsers `json:"searchActiveUsers,omitempty"` + AssistantActiveUsers *CurrentActiveUsers `json:"assistantActiveUsers,omitempty"` + AgentsActiveUsers *CurrentActiveUsers `json:"agentsActiveUsers,omitempty"` + McpActiveUsers *CurrentActiveUsers `json:"mcpActiveUsers,omitempty"` + ExtensionSummary *CurrentActiveUsers `json:"extensionSummary,omitempty"` + UgcSummary *CurrentActiveUsers `json:"ugcSummary,omitempty"` // Unix timestamp of the last update for the insights data in the response. LastUpdatedTs *int64 `json:"lastUpdatedTs,omitempty"` // Search session satisfaction rate, over the specified time period in the specified departments. - SearchSessionSatisfaction *float32 `json:"searchSessionSatisfaction,omitempty"` - MonthlyActiveUserTimeseries *LabeledCountInfo `json:"monthlyActiveUserTimeseries,omitempty"` - WeeklyActiveUserTimeseries *LabeledCountInfo `json:"weeklyActiveUserTimeseries,omitempty"` - DailyActiveUserTimeseries *LabeledCountInfo `json:"dailyActiveUserTimeseries,omitempty"` + // + // Deprecated: Deprecated on 2026-05-13, removal scheduled for 2027-01-15: This property is no longer supported. Please contact Support for alternatives.. + SearchSessionSatisfaction *float32 `json:"searchSessionSatisfaction,omitempty"` + MonthlyActiveUserTimeseries *LabeledCountInfo `json:"monthlyActiveUserTimeseries,omitempty"` + WeeklyActiveUserTimeseries *LabeledCountInfo `json:"weeklyActiveUserTimeseries,omitempty"` + DailyActiveUserTimeseries *LabeledCountInfo `json:"dailyActiveUserTimeseries,omitempty"` + SearchMonthlyActiveUserTimeseries *LabeledCountInfo `json:"searchMonthlyActiveUserTimeseries,omitempty"` + SearchWeeklyActiveUserTimeseries *LabeledCountInfo `json:"searchWeeklyActiveUserTimeseries,omitempty"` + SearchDailyActiveUserTimeseries *LabeledCountInfo `json:"searchDailyActiveUserTimeseries,omitempty"` + AssistantMonthlyActiveUserTimeseries *LabeledCountInfo `json:"assistantMonthlyActiveUserTimeseries,omitempty"` + AssistantWeeklyActiveUserTimeseries *LabeledCountInfo `json:"assistantWeeklyActiveUserTimeseries,omitempty"` + AssistantDailyActiveUserTimeseries *LabeledCountInfo `json:"assistantDailyActiveUserTimeseries,omitempty"` + AgentsMonthlyActiveUserTimeseries *LabeledCountInfo `json:"agentsMonthlyActiveUserTimeseries,omitempty"` + AgentsWeeklyActiveUserTimeseries *LabeledCountInfo `json:"agentsWeeklyActiveUserTimeseries,omitempty"` + AgentsDailyActiveUserTimeseries *LabeledCountInfo `json:"agentsDailyActiveUserTimeseries,omitempty"` + McpMonthlyActiveUserTimeseries *LabeledCountInfo `json:"mcpMonthlyActiveUserTimeseries,omitempty"` + McpWeeklyActiveUserTimeseries *LabeledCountInfo `json:"mcpWeeklyActiveUserTimeseries,omitempty"` + McpDailyActiveUserTimeseries *LabeledCountInfo `json:"mcpDailyActiveUserTimeseries,omitempty"` + SearchesTimeseries *LabeledCountInfo `json:"searchesTimeseries,omitempty"` + AssistantInteractionsTimeseries *LabeledCountInfo `json:"assistantInteractionsTimeseries,omitempty"` + AgentRunsTimeseries *LabeledCountInfo `json:"agentRunsTimeseries,omitempty"` + McpCallsTimeseries *LabeledCountInfo `json:"mcpCallsTimeseries,omitempty"` // Counts of search result clicks, by datasource, over the specified time period in the specified departments. SearchDatasourceCounts map[string]int64 `json:"searchDatasourceCounts,omitempty"` // Counts of cited documents in chat, by datasource, over the specified time period in the specified departments. @@ -81,6 +103,34 @@ func (o *InsightsOverviewResponse) GetChatSummary() *InsightsChatSummary { return o.ChatSummary } +func (o *InsightsOverviewResponse) GetSearchActiveUsers() *CurrentActiveUsers { + if o == nil { + return nil + } + return o.SearchActiveUsers +} + +func (o *InsightsOverviewResponse) GetAssistantActiveUsers() *CurrentActiveUsers { + if o == nil { + return nil + } + return o.AssistantActiveUsers +} + +func (o *InsightsOverviewResponse) GetAgentsActiveUsers() *CurrentActiveUsers { + if o == nil { + return nil + } + return o.AgentsActiveUsers +} + +func (o *InsightsOverviewResponse) GetMcpActiveUsers() *CurrentActiveUsers { + if o == nil { + return nil + } + return o.McpActiveUsers +} + func (o *InsightsOverviewResponse) GetExtensionSummary() *CurrentActiveUsers { if o == nil { return nil @@ -130,6 +180,118 @@ func (o *InsightsOverviewResponse) GetDailyActiveUserTimeseries() *LabeledCountI return o.DailyActiveUserTimeseries } +func (o *InsightsOverviewResponse) GetSearchMonthlyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.SearchMonthlyActiveUserTimeseries +} + +func (o *InsightsOverviewResponse) GetSearchWeeklyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.SearchWeeklyActiveUserTimeseries +} + +func (o *InsightsOverviewResponse) GetSearchDailyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.SearchDailyActiveUserTimeseries +} + +func (o *InsightsOverviewResponse) GetAssistantMonthlyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.AssistantMonthlyActiveUserTimeseries +} + +func (o *InsightsOverviewResponse) GetAssistantWeeklyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.AssistantWeeklyActiveUserTimeseries +} + +func (o *InsightsOverviewResponse) GetAssistantDailyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.AssistantDailyActiveUserTimeseries +} + +func (o *InsightsOverviewResponse) GetAgentsMonthlyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.AgentsMonthlyActiveUserTimeseries +} + +func (o *InsightsOverviewResponse) GetAgentsWeeklyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.AgentsWeeklyActiveUserTimeseries +} + +func (o *InsightsOverviewResponse) GetAgentsDailyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.AgentsDailyActiveUserTimeseries +} + +func (o *InsightsOverviewResponse) GetMcpMonthlyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.McpMonthlyActiveUserTimeseries +} + +func (o *InsightsOverviewResponse) GetMcpWeeklyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.McpWeeklyActiveUserTimeseries +} + +func (o *InsightsOverviewResponse) GetMcpDailyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.McpDailyActiveUserTimeseries +} + +func (o *InsightsOverviewResponse) GetSearchesTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.SearchesTimeseries +} + +func (o *InsightsOverviewResponse) GetAssistantInteractionsTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.AssistantInteractionsTimeseries +} + +func (o *InsightsOverviewResponse) GetAgentRunsTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.AgentRunsTimeseries +} + +func (o *InsightsOverviewResponse) GetMcpCallsTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.McpCallsTimeseries +} + func (o *InsightsOverviewResponse) GetSearchDatasourceCounts() map[string]int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/insightsrequest.go b/tests/mockserver/internal/sdk/models/components/insightsrequest.go index 4129c48e..5d275bd5 100644 --- a/tests/mockserver/internal/sdk/models/components/insightsrequest.go +++ b/tests/mockserver/internal/sdk/models/components/insightsrequest.go @@ -2,126 +2,14 @@ package components -import ( - "encoding/json" - "fmt" -) - -type InsightsRequestCategory string - -const ( - InsightsRequestCategoryAgents InsightsRequestCategory = "AGENTS" - InsightsRequestCategoryAgentUsers InsightsRequestCategory = "AGENT_USERS" - InsightsRequestCategoryTopAgents InsightsRequestCategory = "TOP_AGENTS" - InsightsRequestCategoryAgentsUsageByDepartment InsightsRequestCategory = "AGENTS_USAGE_BY_DEPARTMENT" - InsightsRequestCategoryAi InsightsRequestCategory = "AI" - InsightsRequestCategoryAiApps InsightsRequestCategory = "AI_APPS" - InsightsRequestCategoryAnnouncements InsightsRequestCategory = "ANNOUNCEMENTS" - InsightsRequestCategoryAnswers InsightsRequestCategory = "ANSWERS" - InsightsRequestCategoryCollections InsightsRequestCategory = "COLLECTIONS" - InsightsRequestCategoryContent InsightsRequestCategory = "CONTENT" - InsightsRequestCategoryGleanAssist InsightsRequestCategory = "GLEAN_ASSIST" - InsightsRequestCategoryQueries InsightsRequestCategory = "QUERIES" - InsightsRequestCategoryShortcuts InsightsRequestCategory = "SHORTCUTS" - InsightsRequestCategoryUsers InsightsRequestCategory = "USERS" -) - -func (e InsightsRequestCategory) ToPointer() *InsightsRequestCategory { - return &e -} -func (e *InsightsRequestCategory) UnmarshalJSON(data []byte) error { - var v string - if err := json.Unmarshal(data, &v); err != nil { - return err - } - switch v { - case "AGENTS": - fallthrough - case "AGENT_USERS": - fallthrough - case "TOP_AGENTS": - fallthrough - case "AGENTS_USAGE_BY_DEPARTMENT": - fallthrough - case "AI": - fallthrough - case "AI_APPS": - fallthrough - case "ANNOUNCEMENTS": - fallthrough - case "ANSWERS": - fallthrough - case "COLLECTIONS": - fallthrough - case "CONTENT": - fallthrough - case "GLEAN_ASSIST": - fallthrough - case "QUERIES": - fallthrough - case "SHORTCUTS": - fallthrough - case "USERS": - *e = InsightsRequestCategory(v) - return nil - default: - return fmt.Errorf("invalid value for InsightsRequestCategory: %v", v) - } -} - -type AssistantActivityType string - -const ( - AssistantActivityTypeGleanChat AssistantActivityType = "GLEAN_CHAT" - AssistantActivityTypeAiSummary AssistantActivityType = "AI_SUMMARY" - AssistantActivityTypeAiAnswer AssistantActivityType = "AI_ANSWER" - AssistantActivityTypeGleanbotResponse AssistantActivityType = "GLEANBOT_RESPONSE" -) - -func (e AssistantActivityType) ToPointer() *AssistantActivityType { - return &e -} -func (e *AssistantActivityType) UnmarshalJSON(data []byte) error { - var v string - if err := json.Unmarshal(data, &v); err != nil { - return err - } - switch v { - case "GLEAN_CHAT": - fallthrough - case "AI_SUMMARY": - fallthrough - case "AI_ANSWER": - fallthrough - case "GLEANBOT_RESPONSE": - *e = AssistantActivityType(v) - return nil - default: - return fmt.Errorf("invalid value for AssistantActivityType: %v", v) - } -} - type InsightsRequest struct { - OverviewRequest *InsightsOverviewRequest `json:"overviewRequest,omitempty"` - AssistantRequest *InsightsAssistantRequest `json:"assistantRequest,omitempty"` - AgentsRequest *AgentsInsightsV2Request `json:"agentsRequest,omitempty"` + OverviewRequest *InsightsOverviewRequest `json:"overviewRequest,omitempty"` + AssistantRequest *InsightsAssistantRequest `json:"assistantRequest,omitempty"` + AgentsRequest *AgentsInsightsV2Request `json:"agentsRequest,omitempty"` + McpRequest *McpInsightsRequest `json:"mcpRequest,omitempty"` + McpBreakdownRequest *McpBreakdownInsightsRequest `json:"mcpBreakdownRequest,omitempty"` // If true, suppresses the generation of per-user Insights in the response. Default is false. DisablePerUserInsights *bool `json:"disablePerUserInsights,omitempty"` - // Categories of data requested. Request can include single or multiple types. - // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. - Categories []InsightsRequestCategory `json:"categories,omitempty"` - // Departments that the data is requested for. If this is empty, corresponds to whole company. - // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. - Departments []string `json:"departments,omitempty"` - DayRange *Period `json:"dayRange,omitempty"` - AiAppRequestOptions *InsightsAiAppRequestOptions `json:"aiAppRequestOptions,omitempty"` - AgentsRequestOptions *InsightsAgentsRequestOptions `json:"agentsRequestOptions,omitempty"` - // Types of activity that should count in the definition of an Assistant Active User. Affects only insights for AI category. - // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. - AssistantActivityTypes []AssistantActivityType `json:"assistantActivityTypes,omitempty"` } func (o *InsightsRequest) GetOverviewRequest() *InsightsOverviewRequest { @@ -145,51 +33,23 @@ func (o *InsightsRequest) GetAgentsRequest() *AgentsInsightsV2Request { return o.AgentsRequest } -func (o *InsightsRequest) GetDisablePerUserInsights() *bool { +func (o *InsightsRequest) GetMcpRequest() *McpInsightsRequest { if o == nil { return nil } - return o.DisablePerUserInsights + return o.McpRequest } -func (o *InsightsRequest) GetCategories() []InsightsRequestCategory { +func (o *InsightsRequest) GetMcpBreakdownRequest() *McpBreakdownInsightsRequest { if o == nil { return nil } - return o.Categories + return o.McpBreakdownRequest } -func (o *InsightsRequest) GetDepartments() []string { - if o == nil { - return nil - } - return o.Departments -} - -func (o *InsightsRequest) GetDayRange() *Period { - if o == nil { - return nil - } - return o.DayRange -} - -func (o *InsightsRequest) GetAiAppRequestOptions() *InsightsAiAppRequestOptions { - if o == nil { - return nil - } - return o.AiAppRequestOptions -} - -func (o *InsightsRequest) GetAgentsRequestOptions() *InsightsAgentsRequestOptions { - if o == nil { - return nil - } - return o.AgentsRequestOptions -} - -func (o *InsightsRequest) GetAssistantActivityTypes() []AssistantActivityType { +func (o *InsightsRequest) GetDisablePerUserInsights() *bool { if o == nil { return nil } - return o.AssistantActivityTypes + return o.DisablePerUserInsights } diff --git a/tests/mockserver/internal/sdk/models/components/insightsresponse.go b/tests/mockserver/internal/sdk/models/components/insightsresponse.go index e526a92d..9914a52e 100644 --- a/tests/mockserver/internal/sdk/models/components/insightsresponse.go +++ b/tests/mockserver/internal/sdk/models/components/insightsresponse.go @@ -3,138 +3,52 @@ package components type InsightsResponse struct { - // List of timeseries to make charts (if applicable). - // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. - Timeseries []LabeledCountInfo `json:"timeseries,omitempty"` - Users *UserInsightsResponse `json:"users,omitempty"` - Content *ContentInsightsResponse `json:"content,omitempty"` - Queries *QueryInsightsResponse `json:"queries,omitempty"` - Collections *ContentInsightsResponse `json:"collections,omitempty"` - CollectionsV2 *ContentInsightsResponse `json:"collectionsV2,omitempty"` - Shortcuts *ShortcutInsightsResponse `json:"shortcuts,omitempty"` - Announcements *ContentInsightsResponse `json:"announcements,omitempty"` - Answers *ContentInsightsResponse `json:"answers,omitempty"` - Ai *AiInsightsResponse `json:"ai,omitempty"` - AiApps *AiAppsInsightsResponse `json:"aiApps,omitempty"` - GleanAssist *GleanAssistInsightsResponse `json:"gleanAssist,omitempty"` - // list of all departments. - // - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. - Departments []string `json:"departments,omitempty"` - OverviewResponse *InsightsOverviewResponse `json:"overviewResponse,omitempty"` - AssistantResponse *AssistantInsightsResponse `json:"assistantResponse,omitempty"` - AgentsResponse *AgentsInsightsV2Response `json:"agentsResponse,omitempty"` + GleanAssist *GleanAssistInsightsResponse `json:"gleanAssist,omitempty"` + OverviewResponse *InsightsOverviewResponse `json:"overviewResponse,omitempty"` + AssistantResponse *AssistantInsightsResponse `json:"assistantResponse,omitempty"` + AgentsResponse *AgentsInsightsV2Response `json:"agentsResponse,omitempty"` + McpResponse *McpInsightsResponse `json:"mcpResponse,omitempty"` + McpBreakdownResponse *McpBreakdownInsightsResponse `json:"mcpBreakdownResponse,omitempty"` } -func (o *InsightsResponse) GetTimeseries() []LabeledCountInfo { - if o == nil { - return nil - } - return o.Timeseries -} - -func (o *InsightsResponse) GetUsers() *UserInsightsResponse { - if o == nil { - return nil - } - return o.Users -} - -func (o *InsightsResponse) GetContent() *ContentInsightsResponse { - if o == nil { - return nil - } - return o.Content -} - -func (o *InsightsResponse) GetQueries() *QueryInsightsResponse { - if o == nil { - return nil - } - return o.Queries -} - -func (o *InsightsResponse) GetCollections() *ContentInsightsResponse { - if o == nil { - return nil - } - return o.Collections -} - -func (o *InsightsResponse) GetCollectionsV2() *ContentInsightsResponse { - if o == nil { - return nil - } - return o.CollectionsV2 -} - -func (o *InsightsResponse) GetShortcuts() *ShortcutInsightsResponse { - if o == nil { - return nil - } - return o.Shortcuts -} - -func (o *InsightsResponse) GetAnnouncements() *ContentInsightsResponse { - if o == nil { - return nil - } - return o.Announcements -} - -func (o *InsightsResponse) GetAnswers() *ContentInsightsResponse { - if o == nil { - return nil - } - return o.Answers -} - -func (o *InsightsResponse) GetAi() *AiInsightsResponse { - if o == nil { - return nil - } - return o.Ai -} - -func (o *InsightsResponse) GetAiApps() *AiAppsInsightsResponse { +func (o *InsightsResponse) GetGleanAssist() *GleanAssistInsightsResponse { if o == nil { return nil } - return o.AiApps + return o.GleanAssist } -func (o *InsightsResponse) GetGleanAssist() *GleanAssistInsightsResponse { +func (o *InsightsResponse) GetOverviewResponse() *InsightsOverviewResponse { if o == nil { return nil } - return o.GleanAssist + return o.OverviewResponse } -func (o *InsightsResponse) GetDepartments() []string { +func (o *InsightsResponse) GetAssistantResponse() *AssistantInsightsResponse { if o == nil { return nil } - return o.Departments + return o.AssistantResponse } -func (o *InsightsResponse) GetOverviewResponse() *InsightsOverviewResponse { +func (o *InsightsResponse) GetAgentsResponse() *AgentsInsightsV2Response { if o == nil { return nil } - return o.OverviewResponse + return o.AgentsResponse } -func (o *InsightsResponse) GetAssistantResponse() *AssistantInsightsResponse { +func (o *InsightsResponse) GetMcpResponse() *McpInsightsResponse { if o == nil { return nil } - return o.AssistantResponse + return o.McpResponse } -func (o *InsightsResponse) GetAgentsResponse() *AgentsInsightsV2Response { +func (o *InsightsResponse) GetMcpBreakdownResponse() *McpBreakdownInsightsResponse { if o == nil { return nil } - return o.AgentsResponse + return o.McpBreakdownResponse } diff --git a/tests/mockserver/internal/sdk/models/components/insightssearchsummary.go b/tests/mockserver/internal/sdk/models/components/insightssearchsummary.go index 23269c55..408d84ba 100644 --- a/tests/mockserver/internal/sdk/models/components/insightssearchsummary.go +++ b/tests/mockserver/internal/sdk/models/components/insightssearchsummary.go @@ -3,9 +3,9 @@ package components type InsightsSearchSummary struct { - // Number of current Monthly Active Users, in the specified departments. + // Number of current Monthly Active Users. MonthlyActiveUsers *int64 `json:"monthlyActiveUsers,omitempty"` - // Number of current Weekly Active Users, in the specified departments. + // Number of current Weekly Active Users. WeeklyActiveUsers *int64 `json:"weeklyActiveUsers,omitempty"` // Total number of searches by users over the specified time period. NumSearches *int64 `json:"numSearches,omitempty"` 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/lifecycleevent.go b/tests/mockserver/internal/sdk/models/components/lifecycleevent.go new file mode 100644 index 00000000..0e3627a7 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/lifecycleevent.go @@ -0,0 +1,62 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// LifeCycleEventEvent - Type of event +type LifeCycleEventEvent string + +const ( + LifeCycleEventEventUploaded LifeCycleEventEvent = "UPLOADED" + LifeCycleEventEventIndexed LifeCycleEventEvent = "INDEXED" + LifeCycleEventEventDeletionRequested LifeCycleEventEvent = "DELETION_REQUESTED" + LifeCycleEventEventDeleted LifeCycleEventEvent = "DELETED" +) + +func (e LifeCycleEventEvent) ToPointer() *LifeCycleEventEvent { + return &e +} +func (e *LifeCycleEventEvent) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "UPLOADED": + fallthrough + case "INDEXED": + fallthrough + case "DELETION_REQUESTED": + fallthrough + case "DELETED": + *e = LifeCycleEventEvent(v) + return nil + default: + return fmt.Errorf("invalid value for LifeCycleEventEvent: %v", v) + } +} + +type LifeCycleEvent struct { + // Type of event + Event *LifeCycleEventEvent `json:"event,omitempty"` + // Timestamp of the event + Timestamp *string `json:"timestamp,omitempty"` +} + +func (o *LifeCycleEvent) GetEvent() *LifeCycleEventEvent { + if o == nil { + return nil + } + return o.Event +} + +func (o *LifeCycleEvent) GetTimestamp() *string { + if o == nil { + return nil + } + return o.Timestamp +} 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/listdlpfindingsexportsresponse.go b/tests/mockserver/internal/sdk/models/components/listdlpfindingsexportsresponse.go new file mode 100644 index 00000000..9e84daba --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/listdlpfindingsexportsresponse.go @@ -0,0 +1,14 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type ListDlpFindingsExportsResponse struct { + Exports []ExportInfo `json:"exports,omitempty"` +} + +func (o *ListDlpFindingsExportsResponse) GetExports() []ExportInfo { + if o == nil { + return nil + } + return o.Exports +} diff --git a/tests/mockserver/internal/sdk/models/components/manualfeedbackinfo.go b/tests/mockserver/internal/sdk/models/components/manualfeedbackinfo.go index a5e80652..ae25ff90 100644 --- a/tests/mockserver/internal/sdk/models/components/manualfeedbackinfo.go +++ b/tests/mockserver/internal/sdk/models/components/manualfeedbackinfo.go @@ -32,6 +32,7 @@ const ( ManualFeedbackInfoSourceSidebar ManualFeedbackInfoSource = "SIDEBAR" ManualFeedbackInfoSourceSummary ManualFeedbackInfoSource = "SUMMARY" ManualFeedbackInfoSourceTasks ManualFeedbackInfoSource = "TASKS" + ManualFeedbackInfoSourceTaskExecution ManualFeedbackInfoSource = "TASK_EXECUTION" ) func (e ManualFeedbackInfoSource) ToPointer() *ManualFeedbackInfoSource { @@ -84,6 +85,8 @@ func (e *ManualFeedbackInfoSource) UnmarshalJSON(data []byte) error { case "SUMMARY": fallthrough case "TASKS": + fallthrough + case "TASK_EXECUTION": *e = ManualFeedbackInfoSource(v) return nil default: @@ -94,17 +97,21 @@ func (e *ManualFeedbackInfoSource) UnmarshalJSON(data []byte) error { type Issue string const ( - IssueInaccurateResponse Issue = "INACCURATE_RESPONSE" - IssueIncompleteOrNoAnswer Issue = "INCOMPLETE_OR_NO_ANSWER" - IssueIncorrectCitation Issue = "INCORRECT_CITATION" - IssueMissingCitation Issue = "MISSING_CITATION" - IssueOther Issue = "OTHER" - IssueOutdatedResponse Issue = "OUTDATED_RESPONSE" - IssueResultMissing Issue = "RESULT_MISSING" - IssueResultShouldNotAppear Issue = "RESULT_SHOULD_NOT_APPEAR" - IssueResultsHelpful Issue = "RESULTS_HELPFUL" - IssueResultsPoorOrder Issue = "RESULTS_POOR_ORDER" - IssueTooMuchOneKind Issue = "TOO_MUCH_ONE_KIND" + IssueAgentCanvasFailed Issue = "AGENT_CANVAS_FAILED" + IssueAgentClarifyingQuestions Issue = "AGENT_CLARIFYING_QUESTIONS" + IssueAgentIntermediateStepsFailed Issue = "AGENT_INTERMEDIATE_STEPS_FAILED" + IssueAgentToolCallFailed Issue = "AGENT_TOOL_CALL_FAILED" + IssueInaccurateResponse Issue = "INACCURATE_RESPONSE" + IssueIncompleteOrNoAnswer Issue = "INCOMPLETE_OR_NO_ANSWER" + IssueIncorrectCitation Issue = "INCORRECT_CITATION" + IssueMissingCitation Issue = "MISSING_CITATION" + IssueOther Issue = "OTHER" + IssueOutdatedResponse Issue = "OUTDATED_RESPONSE" + IssueResultMissing Issue = "RESULT_MISSING" + IssueResultShouldNotAppear Issue = "RESULT_SHOULD_NOT_APPEAR" + IssueResultsHelpful Issue = "RESULTS_HELPFUL" + IssueResultsPoorOrder Issue = "RESULTS_POOR_ORDER" + IssueTooMuchOneKind Issue = "TOO_MUCH_ONE_KIND" ) func (e Issue) ToPointer() *Issue { @@ -116,6 +123,14 @@ func (e *Issue) UnmarshalJSON(data []byte) error { return err } switch v { + case "AGENT_CANVAS_FAILED": + fallthrough + case "AGENT_CLARIFYING_QUESTIONS": + fallthrough + case "AGENT_INTERMEDIATE_STEPS_FAILED": + fallthrough + case "AGENT_TOOL_CALL_FAILED": + fallthrough case "INACCURATE_RESPONSE": fallthrough case "INCOMPLETE_OR_NO_ANSWER": diff --git a/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsrequest.go b/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsrequest.go new file mode 100644 index 00000000..ef9a081c --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsrequest.go @@ -0,0 +1,115 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// BreakdownType - Type of breakdown to return. +type BreakdownType string + +const ( + BreakdownTypeUsers BreakdownType = "USERS" + BreakdownTypeHostApplications BreakdownType = "HOST_APPLICATIONS" + BreakdownTypeTools BreakdownType = "TOOLS" + BreakdownTypeServers BreakdownType = "SERVERS" +) + +func (e BreakdownType) ToPointer() *BreakdownType { + return &e +} +func (e *BreakdownType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "USERS": + fallthrough + case "HOST_APPLICATIONS": + fallthrough + case "TOOLS": + fallthrough + case "SERVERS": + *e = BreakdownType(v) + return nil + default: + return fmt.Errorf("invalid value for BreakdownType: %v", v) + } +} + +type McpBreakdownInsightsRequest struct { + // Departments for which Insights are requested. + Departments []string `json:"departments,omitempty"` + // Manager user IDs whose teams should be filtered for. Empty array means no filtering. + ManagerIds []string `json:"managerIds,omitempty"` + // Manager emails whose teams should be filtered for. Empty array means no filtering. + ManagerEmails []string `json:"managerEmails,omitempty"` + DayRange *Period `json:"dayRange,omitempty"` + // Type of breakdown to return. + BreakdownType *BreakdownType `json:"breakdownType,omitempty"` + // Host applications to filter by. Empty array means all host applications. + HostApplications []string `json:"hostApplications,omitempty"` + // MCP tools to filter by. Empty array means all tools. + Tools []string `json:"tools,omitempty"` + // MCP servers to filter by. Empty array means all servers. + Servers []string `json:"servers,omitempty"` +} + +func (o *McpBreakdownInsightsRequest) GetDepartments() []string { + if o == nil { + return nil + } + return o.Departments +} + +func (o *McpBreakdownInsightsRequest) GetManagerIds() []string { + if o == nil { + return nil + } + return o.ManagerIds +} + +func (o *McpBreakdownInsightsRequest) GetManagerEmails() []string { + if o == nil { + return nil + } + return o.ManagerEmails +} + +func (o *McpBreakdownInsightsRequest) GetDayRange() *Period { + if o == nil { + return nil + } + return o.DayRange +} + +func (o *McpBreakdownInsightsRequest) GetBreakdownType() *BreakdownType { + if o == nil { + return nil + } + return o.BreakdownType +} + +func (o *McpBreakdownInsightsRequest) GetHostApplications() []string { + if o == nil { + return nil + } + return o.HostApplications +} + +func (o *McpBreakdownInsightsRequest) GetTools() []string { + if o == nil { + return nil + } + return o.Tools +} + +func (o *McpBreakdownInsightsRequest) GetServers() []string { + if o == nil { + return nil + } + return o.Servers +} diff --git a/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsresponse.go b/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsresponse.go new file mode 100644 index 00000000..8ae55f17 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsresponse.go @@ -0,0 +1,38 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type McpBreakdownInsightsResponse struct { + UsersBreakdown []McpUserBreakdown `json:"usersBreakdown,omitempty"` + HostApplicationsBreakdown []McpHostApplicationBreakdown `json:"hostApplicationsBreakdown,omitempty"` + ToolsBreakdown []McpToolBreakdown `json:"toolsBreakdown,omitempty"` + ServersBreakdown []McpServerBreakdown `json:"serversBreakdown,omitempty"` +} + +func (o *McpBreakdownInsightsResponse) GetUsersBreakdown() []McpUserBreakdown { + if o == nil { + return nil + } + return o.UsersBreakdown +} + +func (o *McpBreakdownInsightsResponse) GetHostApplicationsBreakdown() []McpHostApplicationBreakdown { + if o == nil { + return nil + } + return o.HostApplicationsBreakdown +} + +func (o *McpBreakdownInsightsResponse) GetToolsBreakdown() []McpToolBreakdown { + if o == nil { + return nil + } + return o.ToolsBreakdown +} + +func (o *McpBreakdownInsightsResponse) GetServersBreakdown() []McpServerBreakdown { + if o == nil { + return nil + } + return o.ServersBreakdown +} diff --git a/tests/mockserver/internal/sdk/models/components/mcphostapplicationbreakdown.go b/tests/mockserver/internal/sdk/models/components/mcphostapplicationbreakdown.go new file mode 100644 index 00000000..5b57f57b --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/mcphostapplicationbreakdown.go @@ -0,0 +1,33 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type McpHostApplicationBreakdown struct { + // Host application name. + HostApplication *string `json:"hostApplication,omitempty"` + // Total number of MCP calls made from this host application in the specified time period. + TotalCalls *int64 `json:"totalCalls,omitempty"` + // Total number of active users from this host application in the specified time period. + ActiveUsers *int64 `json:"activeUsers,omitempty"` +} + +func (o *McpHostApplicationBreakdown) GetHostApplication() *string { + if o == nil { + return nil + } + return o.HostApplication +} + +func (o *McpHostApplicationBreakdown) GetTotalCalls() *int64 { + if o == nil { + return nil + } + return o.TotalCalls +} + +func (o *McpHostApplicationBreakdown) GetActiveUsers() *int64 { + if o == nil { + return nil + } + return o.ActiveUsers +} diff --git a/tests/mockserver/internal/sdk/models/components/mcpinsightsrequest.go b/tests/mockserver/internal/sdk/models/components/mcpinsightsrequest.go new file mode 100644 index 00000000..930b2a4e --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/mcpinsightsrequest.go @@ -0,0 +1,41 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type McpInsightsRequest struct { + // Departments for which Insights are requested. + Departments []string `json:"departments,omitempty"` + // Manager user IDs whose teams should be filtered for. Empty array means no filtering. + ManagerIds []string `json:"managerIds,omitempty"` + // Manager emails whose teams should be filtered for. Empty array means no filtering. + ManagerEmails []string `json:"managerEmails,omitempty"` + DayRange *Period `json:"dayRange,omitempty"` +} + +func (o *McpInsightsRequest) GetDepartments() []string { + if o == nil { + return nil + } + return o.Departments +} + +func (o *McpInsightsRequest) GetManagerIds() []string { + if o == nil { + return nil + } + return o.ManagerIds +} + +func (o *McpInsightsRequest) GetManagerEmails() []string { + if o == nil { + return nil + } + return o.ManagerEmails +} + +func (o *McpInsightsRequest) GetDayRange() *Period { + if o == nil { + return nil + } + return o.DayRange +} diff --git a/tests/mockserver/internal/sdk/models/components/mcpinsightsresponse.go b/tests/mockserver/internal/sdk/models/components/mcpinsightsresponse.go new file mode 100644 index 00000000..2d1a08e0 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/mcpinsightsresponse.go @@ -0,0 +1,73 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type McpInsightsResponse struct { + // Number of current Monthly Active Users. + MonthlyActiveUsers *int64 `json:"monthlyActiveUsers,omitempty"` + // Number of current Weekly Active Users. + WeeklyActiveUsers *int64 `json:"weeklyActiveUsers,omitempty"` + // Number of current Daily Active Users. + DailyActiveUsers *int64 `json:"dailyActiveUsers,omitempty"` + MonthlyActiveUserTimeseries *LabeledCountInfo `json:"monthlyActiveUserTimeseries,omitempty"` + WeeklyActiveUserTimeseries *LabeledCountInfo `json:"weeklyActiveUserTimeseries,omitempty"` + DailyActiveUserTimeseries *LabeledCountInfo `json:"dailyActiveUserTimeseries,omitempty"` + OverallDailyActiveUserTimeseries *LabeledCountInfo `json:"overallDailyActiveUserTimeseries,omitempty"` + TopHostApplicationsActiveUserTimeseries []LabeledCountInfo `json:"topHostApplicationsActiveUserTimeseries,omitempty"` +} + +func (o *McpInsightsResponse) GetMonthlyActiveUsers() *int64 { + if o == nil { + return nil + } + return o.MonthlyActiveUsers +} + +func (o *McpInsightsResponse) GetWeeklyActiveUsers() *int64 { + if o == nil { + return nil + } + return o.WeeklyActiveUsers +} + +func (o *McpInsightsResponse) GetDailyActiveUsers() *int64 { + if o == nil { + return nil + } + return o.DailyActiveUsers +} + +func (o *McpInsightsResponse) GetMonthlyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.MonthlyActiveUserTimeseries +} + +func (o *McpInsightsResponse) GetWeeklyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.WeeklyActiveUserTimeseries +} + +func (o *McpInsightsResponse) GetDailyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.DailyActiveUserTimeseries +} + +func (o *McpInsightsResponse) GetOverallDailyActiveUserTimeseries() *LabeledCountInfo { + if o == nil { + return nil + } + return o.OverallDailyActiveUserTimeseries +} + +func (o *McpInsightsResponse) GetTopHostApplicationsActiveUserTimeseries() []LabeledCountInfo { + if o == nil { + return nil + } + return o.TopHostApplicationsActiveUserTimeseries +} diff --git a/tests/mockserver/internal/sdk/models/components/mcpserverbreakdown.go b/tests/mockserver/internal/sdk/models/components/mcpserverbreakdown.go new file mode 100644 index 00000000..6559a26d --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/mcpserverbreakdown.go @@ -0,0 +1,42 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type McpServerBreakdown struct { + // MCP server name. + Server *string `json:"server,omitempty"` + // Total number of MCP calls for this server in the specified time period. + TotalCalls *int64 `json:"totalCalls,omitempty"` + // Total number of active users for this server in the specified time period. + ActiveUsers *int64 `json:"activeUsers,omitempty"` + // Host applications using this server in the specified time period. + HostApplications []string `json:"hostApplications,omitempty"` +} + +func (o *McpServerBreakdown) GetServer() *string { + if o == nil { + return nil + } + return o.Server +} + +func (o *McpServerBreakdown) GetTotalCalls() *int64 { + if o == nil { + return nil + } + return o.TotalCalls +} + +func (o *McpServerBreakdown) GetActiveUsers() *int64 { + if o == nil { + return nil + } + return o.ActiveUsers +} + +func (o *McpServerBreakdown) GetHostApplications() []string { + if o == nil { + return nil + } + return o.HostApplications +} diff --git a/tests/mockserver/internal/sdk/models/components/mcptoolbreakdown.go b/tests/mockserver/internal/sdk/models/components/mcptoolbreakdown.go new file mode 100644 index 00000000..be104ab7 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/mcptoolbreakdown.go @@ -0,0 +1,42 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type McpToolBreakdown struct { + // MCP tool name. + Tool *string `json:"tool,omitempty"` + // Total number of MCP calls for this tool in the specified time period. + TotalCalls *int64 `json:"totalCalls,omitempty"` + // Total number of active users for this tool in the specified time period. + ActiveUsers *int64 `json:"activeUsers,omitempty"` + // Host applications using this tool in the specified time period. + HostApplications []string `json:"hostApplications,omitempty"` +} + +func (o *McpToolBreakdown) GetTool() *string { + if o == nil { + return nil + } + return o.Tool +} + +func (o *McpToolBreakdown) GetTotalCalls() *int64 { + if o == nil { + return nil + } + return o.TotalCalls +} + +func (o *McpToolBreakdown) GetActiveUsers() *int64 { + if o == nil { + return nil + } + return o.ActiveUsers +} + +func (o *McpToolBreakdown) GetHostApplications() []string { + if o == nil { + return nil + } + return o.HostApplications +} diff --git a/tests/mockserver/internal/sdk/models/components/mcpuserbreakdown.go b/tests/mockserver/internal/sdk/models/components/mcpuserbreakdown.go new file mode 100644 index 00000000..73014b6f --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/mcpuserbreakdown.go @@ -0,0 +1,50 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type McpUserBreakdown struct { + Person *Person `json:"person,omitempty"` + // Total number of MCP calls made by this user in the specified time period. + TotalCalls *int64 `json:"totalCalls,omitempty"` + // Host applications used by this user in the specified time period. + HostApplications []string `json:"hostApplications,omitempty"` + // MCP tools used by this user in the specified time period. + Tools []string `json:"tools,omitempty"` + // MCP servers used by this user in the specified time period. + Servers []string `json:"servers,omitempty"` +} + +func (o *McpUserBreakdown) GetPerson() *Person { + if o == nil { + return nil + } + return o.Person +} + +func (o *McpUserBreakdown) GetTotalCalls() *int64 { + if o == nil { + return nil + } + return o.TotalCalls +} + +func (o *McpUserBreakdown) GetHostApplications() []string { + if o == nil { + return nil + } + return o.HostApplications +} + +func (o *McpUserBreakdown) GetTools() []string { + if o == nil { + return nil + } + return o.Tools +} + +func (o *McpUserBreakdown) GetServers() []string { + if o == nil { + return nil + } + return o.Servers +} diff --git a/tests/mockserver/internal/sdk/models/components/meeting.go b/tests/mockserver/internal/sdk/models/components/meeting.go index b34e924e..0c852dd3 100644 --- a/tests/mockserver/internal/sdk/models/components/meeting.go +++ b/tests/mockserver/internal/sdk/models/components/meeting.go @@ -15,6 +15,16 @@ type Meeting struct { StartTime *time.Time `json:"startTime,omitempty"` EndTime *time.Time `json:"endTime,omitempty"` Attendees *CalendarAttendees `json:"attendees,omitempty"` + // Whether the meeting has been cancelled + IsCancelled *bool `json:"isCancelled,omitempty"` + // The location/venue of the meeting + Location *string `json:"location,omitempty"` + // The current user's response status (accepted, declined, tentativelyAccepted, none) + ResponseStatus *string `json:"responseStatus,omitempty"` + // The meeting join link (Teams, Zoom, etc.) + ConferenceURI *string `json:"conferenceUri,omitempty"` + // The conference provider (e.g., "Microsoft Teams", "Zoom") + ConferenceProvider *string `json:"conferenceProvider,omitempty"` } func (m Meeting) MarshalJSON() ([]byte, error) { @@ -76,3 +86,38 @@ func (o *Meeting) GetAttendees() *CalendarAttendees { } return o.Attendees } + +func (o *Meeting) GetIsCancelled() *bool { + if o == nil { + return nil + } + return o.IsCancelled +} + +func (o *Meeting) GetLocation() *string { + if o == nil { + return nil + } + return o.Location +} + +func (o *Meeting) GetResponseStatus() *string { + if o == nil { + return nil + } + return o.ResponseStatus +} + +func (o *Meeting) GetConferenceURI() *string { + if o == nil { + return nil + } + return o.ConferenceURI +} + +func (o *Meeting) GetConferenceProvider() *string { + if o == nil { + return nil + } + return o.ConferenceProvider +} diff --git a/tests/mockserver/internal/sdk/models/components/peragentinsight.go b/tests/mockserver/internal/sdk/models/components/peragentinsight.go index 127d21db..8530b14c 100644 --- a/tests/mockserver/internal/sdk/models/components/peragentinsight.go +++ b/tests/mockserver/internal/sdk/models/components/peragentinsight.go @@ -18,7 +18,8 @@ type PerAgentInsight struct { // Total number of upvotes for this agent over the specified time period. UpvoteCount *int64 `json:"upvoteCount,omitempty"` // Total number of downvotes for this agent over the specified time period. - DownvoteCount *int64 `json:"downvoteCount,omitempty"` + DownvoteCount *int64 `json:"downvoteCount,omitempty"` + Owner *Person `json:"owner,omitempty"` } func (o *PerAgentInsight) GetAgentID() *string { @@ -76,3 +77,10 @@ func (o *PerAgentInsight) GetDownvoteCount() *int64 { } return o.DownvoteCount } + +func (o *PerAgentInsight) GetOwner() *Person { + if o == nil { + return nil + } + return o.Owner +} diff --git a/tests/mockserver/internal/sdk/models/components/personmetadata.go b/tests/mockserver/internal/sdk/models/components/personmetadata.go index eabd1c7a..da09ade4 100644 --- a/tests/mockserver/internal/sdk/models/components/personmetadata.go +++ b/tests/mockserver/internal/sdk/models/components/personmetadata.go @@ -77,6 +77,8 @@ type PersonMetadata struct { Timezone *string `json:"timezone,omitempty"` // The offset of the person's timezone in seconds from UTC. TimezoneOffset *int64 `json:"timezoneOffset,omitempty"` + // The IANA timezone identifier, e.g. "America/Los_Angeles". + TimezoneIANA *string `json:"timezoneIANA,omitempty"` // The URL of the person's avatar. Public, glean-authenticated and Base64 encoded data URLs are all valid (but not third-party-authenticated URLs). PhotoURL *string `json:"photoUrl,omitempty"` // The original photo URL of the person's avatar before any edits they made are applied @@ -267,6 +269,13 @@ func (o *PersonMetadata) GetTimezoneOffset() *int64 { return o.TimezoneOffset } +func (o *PersonMetadata) GetTimezoneIANA() *string { + if o == nil { + return nil + } + return o.TimezoneIANA +} + func (o *PersonMetadata) GetPhotoURL() *string { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/peruserinsight.go b/tests/mockserver/internal/sdk/models/components/peruserinsight.go index 18202808..0cda09fd 100644 --- a/tests/mockserver/internal/sdk/models/components/peruserinsight.go +++ b/tests/mockserver/internal/sdk/models/components/peruserinsight.go @@ -14,6 +14,14 @@ type PerUserInsight struct { NumGleanbotUsefulResponses *int64 `json:"numGleanbotUsefulResponses,omitempty"` // Total number of days this user was an Active User over the specified time period. NumDaysActive *int64 `json:"numDaysActive,omitempty"` + // Total number of summarized items by this user over the specified time period. + NumSummarizations *int64 `json:"numSummarizations,omitempty"` + // Total number of AI Answers interacted with by this user over the specified time period. + NumAiAnswers *int64 `json:"numAiAnswers,omitempty"` + // Total number of agent runs for this user over the specified time period. + NumAgentRuns *int64 `json:"numAgentRuns,omitempty"` + // Total number of MCP calls for this user over the specified time period. + NumMcpCalls *int64 `json:"numMcpCalls,omitempty"` } func (o *PerUserInsight) GetPerson() *Person { @@ -57,3 +65,31 @@ func (o *PerUserInsight) GetNumDaysActive() *int64 { } return o.NumDaysActive } + +func (o *PerUserInsight) GetNumSummarizations() *int64 { + if o == nil { + return nil + } + return o.NumSummarizations +} + +func (o *PerUserInsight) GetNumAiAnswers() *int64 { + if o == nil { + return nil + } + return o.NumAiAnswers +} + +func (o *PerUserInsight) GetNumAgentRuns() *int64 { + if o == nil { + return nil + } + return o.NumAgentRuns +} + +func (o *PerUserInsight) GetNumMcpCalls() *int64 { + if o == nil { + return nil + } + return o.NumMcpCalls +} diff --git a/tests/mockserver/internal/sdk/models/components/propertydefinition.go b/tests/mockserver/internal/sdk/models/components/propertydefinition.go index d1631c91..e17d0096 100644 --- a/tests/mockserver/internal/sdk/models/components/propertydefinition.go +++ b/tests/mockserver/internal/sdk/models/components/propertydefinition.go @@ -7,23 +7,23 @@ import ( "fmt" ) -// PropertyType - The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported. -type PropertyType string +// PropertyDefinitionPropertyType - The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported. +type PropertyDefinitionPropertyType string const ( - PropertyTypeText PropertyType = "TEXT" - PropertyTypeDate PropertyType = "DATE" - PropertyTypeInt PropertyType = "INT" - PropertyTypeUserid PropertyType = "USERID" - PropertyTypePicklist PropertyType = "PICKLIST" - PropertyTypeTextlist PropertyType = "TEXTLIST" - PropertyTypeMultipicklist PropertyType = "MULTIPICKLIST" + PropertyDefinitionPropertyTypeText PropertyDefinitionPropertyType = "TEXT" + PropertyDefinitionPropertyTypeDate PropertyDefinitionPropertyType = "DATE" + PropertyDefinitionPropertyTypeInt PropertyDefinitionPropertyType = "INT" + PropertyDefinitionPropertyTypeUserid PropertyDefinitionPropertyType = "USERID" + PropertyDefinitionPropertyTypePicklist PropertyDefinitionPropertyType = "PICKLIST" + PropertyDefinitionPropertyTypeTextlist PropertyDefinitionPropertyType = "TEXTLIST" + PropertyDefinitionPropertyTypeMultipicklist PropertyDefinitionPropertyType = "MULTIPICKLIST" ) -func (e PropertyType) ToPointer() *PropertyType { +func (e PropertyDefinitionPropertyType) ToPointer() *PropertyDefinitionPropertyType { return &e } -func (e *PropertyType) UnmarshalJSON(data []byte) error { +func (e *PropertyDefinitionPropertyType) UnmarshalJSON(data []byte) error { var v string if err := json.Unmarshal(data, &v); err != nil { return err @@ -42,10 +42,10 @@ func (e *PropertyType) UnmarshalJSON(data []byte) error { case "TEXTLIST": fallthrough case "MULTIPICKLIST": - *e = PropertyType(v) + *e = PropertyDefinitionPropertyType(v) return nil default: - return fmt.Errorf("invalid value for PropertyType: %v", v) + return fmt.Errorf("invalid value for PropertyDefinitionPropertyType: %v", v) } } @@ -86,8 +86,8 @@ type PropertyDefinition struct { // The user friendly label for the property that will be used if a plural context. DisplayLabelPlural *string `json:"displayLabelPlural,omitempty"` // The type of custom property - this governs the search and faceting behavior. Note that MULTIPICKLIST is not yet supported. - PropertyType *PropertyType `json:"propertyType,omitempty"` - UIOptions *UIOptions `json:"uiOptions,omitempty"` + PropertyType *PropertyDefinitionPropertyType `json:"propertyType,omitempty"` + UIOptions *UIOptions `json:"uiOptions,omitempty"` // If true then the property will not show up as a facet in the UI. HideUIFacet *bool `json:"hideUiFacet,omitempty"` // Will be used to set the order of facets in the UI, if present. If set for one facet, must be set for all non-hidden UI facets. Must take on an integer value from 1 (shown at the top) to N (shown last), where N is the number of non-hidden UI facets. These facets will be ordered below the built-in "Type" and "Tag" operators. @@ -119,7 +119,7 @@ func (o *PropertyDefinition) GetDisplayLabelPlural() *string { return o.DisplayLabelPlural } -func (o *PropertyDefinition) GetPropertyType() *PropertyType { +func (o *PropertyDefinition) GetPropertyType() *PropertyDefinitionPropertyType { if o == nil { return nil } diff --git a/tests/mockserver/internal/sdk/models/components/queryinsight.go b/tests/mockserver/internal/sdk/models/components/queryinsight.go deleted file mode 100644 index faaa01fb..00000000 --- a/tests/mockserver/internal/sdk/models/components/queryinsight.go +++ /dev/null @@ -1,56 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type QueryInsight struct { - // The query string the information is about. - Query string `json:"query"` - SearchCount *CountInfo `json:"searchCount,omitempty"` - SearchorCount *CountInfo `json:"searchorCount,omitempty"` - SearchWithClickCount *CountInfo `json:"searchWithClickCount,omitempty"` - ClickCount *CountInfo `json:"clickCount,omitempty"` - // list of similar queries to current one. - SimilarQueries []QueryInsight `json:"similarQueries,omitempty"` -} - -func (o *QueryInsight) GetQuery() string { - if o == nil { - return "" - } - return o.Query -} - -func (o *QueryInsight) GetSearchCount() *CountInfo { - if o == nil { - return nil - } - return o.SearchCount -} - -func (o *QueryInsight) GetSearchorCount() *CountInfo { - if o == nil { - return nil - } - return o.SearchorCount -} - -func (o *QueryInsight) GetSearchWithClickCount() *CountInfo { - if o == nil { - return nil - } - return o.SearchWithClickCount -} - -func (o *QueryInsight) GetClickCount() *CountInfo { - if o == nil { - return nil - } - return o.ClickCount -} - -func (o *QueryInsight) GetSimilarQueries() []QueryInsight { - if o == nil { - return nil - } - return o.SimilarQueries -} diff --git a/tests/mockserver/internal/sdk/models/components/queryinsightsresponse.go b/tests/mockserver/internal/sdk/models/components/queryinsightsresponse.go deleted file mode 100644 index 6f6c8ef2..00000000 --- a/tests/mockserver/internal/sdk/models/components/queryinsightsresponse.go +++ /dev/null @@ -1,51 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type QueryInsightsResponse struct { - // Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - LastLogTimestamp *int64 `json:"lastLogTimestamp,omitempty"` - // Insights for queries. - QueryInsights []QueryInsight `json:"queryInsights,omitempty"` - // Insights for low performing queries without good results. - LowPerformingQueryInsights []QueryInsight `json:"lowPerformingQueryInsights,omitempty"` - // list of departments applicable for queries tab. - Departments []string `json:"departments,omitempty"` - // Min threshold in number of visitors while populating results, otherwise 0. - MinVisitorThreshold *int64 `json:"minVisitorThreshold,omitempty"` -} - -func (o *QueryInsightsResponse) GetLastLogTimestamp() *int64 { - if o == nil { - return nil - } - return o.LastLogTimestamp -} - -func (o *QueryInsightsResponse) GetQueryInsights() []QueryInsight { - if o == nil { - return nil - } - return o.QueryInsights -} - -func (o *QueryInsightsResponse) GetLowPerformingQueryInsights() []QueryInsight { - if o == nil { - return nil - } - return o.LowPerformingQueryInsights -} - -func (o *QueryInsightsResponse) GetDepartments() []string { - if o == nil { - return nil - } - return o.Departments -} - -func (o *QueryInsightsResponse) GetMinVisitorThreshold() *int64 { - if o == nil { - return nil - } - return o.MinVisitorThreshold -} diff --git a/tests/mockserver/internal/sdk/models/components/querysuggestion.go b/tests/mockserver/internal/sdk/models/components/querysuggestion.go index b6c573d7..c9318394 100644 --- a/tests/mockserver/internal/sdk/models/components/querysuggestion.go +++ b/tests/mockserver/internal/sdk/models/components/querysuggestion.go @@ -16,6 +16,7 @@ type QuerySuggestion struct { Label *string `json:"label,omitempty"` // The datasource associated with the suggestion. Datasource *string `json:"datasource,omitempty"` + ResultTab *ResultTab `json:"resultTab,omitempty"` RequestOptions *SearchRequestOptions `json:"requestOptions,omitempty"` // The bolded ranges within the query of the QuerySuggestion. Ranges []TextRange `json:"ranges,omitempty"` @@ -68,6 +69,13 @@ func (o *QuerySuggestion) GetDatasource() *string { return o.Datasource } +func (o *QuerySuggestion) GetResultTab() *ResultTab { + if o == nil { + return nil + } + return o.ResultTab +} + func (o *QuerySuggestion) GetRequestOptions() *SearchRequestOptions { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/relateddocuments.go b/tests/mockserver/internal/sdk/models/components/relateddocuments.go index b31d3fba..b7981fb2 100644 --- a/tests/mockserver/internal/sdk/models/components/relateddocuments.go +++ b/tests/mockserver/internal/sdk/models/components/relateddocuments.go @@ -85,7 +85,7 @@ type RelatedDocuments struct { QuerySuggestion *QuerySuggestion `json:"querySuggestion,omitempty"` // A truncated list of documents with this relation. TO BE DEPRECATED. // - // 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: Field is deprecated. Documents []Document `json:"documents,omitempty"` // A truncated list of documents associated with this relation. To be used in favor of `documents` because it contains a trackingToken. Results []SearchResult `json:"results,omitempty"` 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/resulttab.go b/tests/mockserver/internal/sdk/models/components/resulttab.go index 4f2d94ff..a8ccfb2e 100644 --- a/tests/mockserver/internal/sdk/models/components/resulttab.go +++ b/tests/mockserver/internal/sdk/models/components/resulttab.go @@ -2,6 +2,10 @@ package components +import ( + "mockserver/internal/sdk/utils" +) + type ResultTab struct { // The unique ID of the tab. Can be passed in a search request to get results for that tab. ID *string `json:"id,omitempty"` @@ -13,6 +17,17 @@ type ResultTab struct { DatasourceInstance *string `json:"datasourceInstance,omitempty"` } +func (r ResultTab) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(r, "", false) +} + +func (r *ResultTab) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &r, "", false, nil); err != nil { + return err + } + return nil +} + func (o *ResultTab) GetID() *string { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/rotatedatasourcecredentialsrequest.go b/tests/mockserver/internal/sdk/models/components/rotatedatasourcecredentialsrequest.go new file mode 100644 index 00000000..3733a707 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/rotatedatasourcecredentialsrequest.go @@ -0,0 +1,17 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// RotateDatasourceCredentialsRequest - Request to rotate the credentials used by a datasource instance. Replaces the active credential material with the supplied values. +// `credentials.values` must contain only keys recognized as credential material for the datasource type (for example `clientSecret` for OAuth, `apiToken` for API-token auth, `privateKey` for certificate auth). Unrecognized keys, or keys that correspond to non-credential configuration, cause a 400; use the configure endpoint to change non-credential config. +type RotateDatasourceCredentialsRequest struct { + // Configuration for a datasource instance + Credentials DatasourceInstanceConfiguration `json:"credentials"` +} + +func (o *RotateDatasourceCredentialsRequest) GetCredentials() DatasourceInstanceConfiguration { + if o == nil { + return DatasourceInstanceConfiguration{} + } + return o.Credentials +} 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/sensitivecontentoptions.go b/tests/mockserver/internal/sdk/models/components/sensitivecontentoptions.go index d08baa0c..dc7c424e 100644 --- a/tests/mockserver/internal/sdk/models/components/sensitivecontentoptions.go +++ b/tests/mockserver/internal/sdk/models/components/sensitivecontentoptions.go @@ -4,12 +4,20 @@ package components // SensitiveContentOptions - Options for defining sensitive content within scanned documents. type SensitiveContentOptions struct { - // Predefined categories of terms to consider as sensitive content. See https://cloud.google.com/dlp/docs/infotypes-reference for available types. + // DEPRECATED - use 'customSensitiveExpressions' instead. + // + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead. SensitiveInfoTypes []SensitiveInfoType `json:"sensitiveInfoTypes,omitempty"` - // list of words and phrases to consider as sensitive content + // DEPRECATED - use 'customSensitiveExpressions' instead. + // + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead. SensitiveTerms []SensitiveExpression `json:"sensitiveTerms,omitempty"` - // list of regular expressions to consider as sensitive content + // DEPRECATED - use 'customSensitiveExpressions' instead. + // + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Use customSensitiveExpressions instead. SensitiveRegexes []SensitiveExpression `json:"sensitiveRegexes,omitempty"` + // list of custom sensitive expressions to consider as sensitive content + CustomSensitiveExpressions []CustomSensitiveExpression `json:"customSensitiveExpressions,omitempty"` } func (o *SensitiveContentOptions) GetSensitiveInfoTypes() []SensitiveInfoType { @@ -32,3 +40,10 @@ func (o *SensitiveContentOptions) GetSensitiveRegexes() []SensitiveExpression { } return o.SensitiveRegexes } + +func (o *SensitiveContentOptions) GetCustomSensitiveExpressions() []CustomSensitiveExpression { + if o == nil { + return nil + } + return o.CustomSensitiveExpressions +} diff --git a/tests/mockserver/internal/sdk/models/components/sensitiveinfotype.go b/tests/mockserver/internal/sdk/models/components/sensitiveinfotype.go index b9b34b49..20765377 100644 --- a/tests/mockserver/internal/sdk/models/components/sensitiveinfotype.go +++ b/tests/mockserver/internal/sdk/models/components/sensitiveinfotype.go @@ -7,23 +7,23 @@ import ( "fmt" ) -// LikelihoodThreshold +// SensitiveInfoTypeLikelihoodThreshold // -// Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. -type LikelihoodThreshold string +// Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. +type SensitiveInfoTypeLikelihoodThreshold string const ( - LikelihoodThresholdLikely LikelihoodThreshold = "LIKELY" - LikelihoodThresholdVeryLikely LikelihoodThreshold = "VERY_LIKELY" - LikelihoodThresholdPossible LikelihoodThreshold = "POSSIBLE" - LikelihoodThresholdUnlikely LikelihoodThreshold = "UNLIKELY" - LikelihoodThresholdVeryUnlikely LikelihoodThreshold = "VERY_UNLIKELY" + SensitiveInfoTypeLikelihoodThresholdLikely SensitiveInfoTypeLikelihoodThreshold = "LIKELY" + SensitiveInfoTypeLikelihoodThresholdVeryLikely SensitiveInfoTypeLikelihoodThreshold = "VERY_LIKELY" + SensitiveInfoTypeLikelihoodThresholdPossible SensitiveInfoTypeLikelihoodThreshold = "POSSIBLE" + SensitiveInfoTypeLikelihoodThresholdUnlikely SensitiveInfoTypeLikelihoodThreshold = "UNLIKELY" + SensitiveInfoTypeLikelihoodThresholdVeryUnlikely SensitiveInfoTypeLikelihoodThreshold = "VERY_UNLIKELY" ) -func (e LikelihoodThreshold) ToPointer() *LikelihoodThreshold { +func (e SensitiveInfoTypeLikelihoodThreshold) ToPointer() *SensitiveInfoTypeLikelihoodThreshold { return &e } -func (e *LikelihoodThreshold) UnmarshalJSON(data []byte) error { +func (e *SensitiveInfoTypeLikelihoodThreshold) UnmarshalJSON(data []byte) error { var v string if err := json.Unmarshal(data, &v); err != nil { return err @@ -38,21 +38,21 @@ func (e *LikelihoodThreshold) UnmarshalJSON(data []byte) error { case "UNLIKELY": fallthrough case "VERY_UNLIKELY": - *e = LikelihoodThreshold(v) + *e = SensitiveInfoTypeLikelihoodThreshold(v) return nil default: - return fmt.Errorf("invalid value for LikelihoodThreshold: %v", v) + return fmt.Errorf("invalid value for SensitiveInfoTypeLikelihoodThreshold: %v", v) } } type SensitiveInfoType struct { - // Deprecated: This will be removed in a future release, please migrate away from it as soon as possible. - LikelihoodThreshold *LikelihoodThreshold `json:"likelihoodThreshold,omitempty"` + // Deprecated: Deprecated on 2026-02-05, removal scheduled for 2026-10-15: Field is deprecated. + LikelihoodThreshold *SensitiveInfoTypeLikelihoodThreshold `json:"likelihoodThreshold,omitempty"` // Text representation of an info-type to scan for. InfoType *string `json:"infoType,omitempty"` } -func (o *SensitiveInfoType) GetLikelihoodThreshold() *LikelihoodThreshold { +func (o *SensitiveInfoType) GetLikelihoodThreshold() *SensitiveInfoTypeLikelihoodThreshold { if o == nil { return nil } diff --git a/tests/mockserver/internal/sdk/models/components/sharingoptions.go b/tests/mockserver/internal/sdk/models/components/sharingoptions.go index a290b453..3b36812b 100644 --- a/tests/mockserver/internal/sdk/models/components/sharingoptions.go +++ b/tests/mockserver/internal/sdk/models/components/sharingoptions.go @@ -4,13 +4,13 @@ package components // SharingOptions - Controls how "shared" a document must be to get picked for scans. type SharingOptions struct { - // 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: Field is deprecated. Enabled *bool `json:"enabled,omitempty"` // The minimum number of users the document is shared with. Threshold *int64 `json:"threshold,omitempty"` // Documents will be filtered based on how many people have access to it. ThresholdEnabled *bool `json:"thresholdEnabled,omitempty"` - // 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: Field is deprecated. AnyoneWithLinkEnabled *bool `json:"anyoneWithLinkEnabled,omitempty"` // Only users within the organization can access the document. AnyoneInternalEnabled *bool `json:"anyoneInternalEnabled,omitempty"` diff --git a/tests/mockserver/internal/sdk/models/components/shortcutinsight.go b/tests/mockserver/internal/sdk/models/components/shortcutinsight.go deleted file mode 100644 index e4a60038..00000000 --- a/tests/mockserver/internal/sdk/models/components/shortcutinsight.go +++ /dev/null @@ -1,30 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type ShortcutInsight struct { - Shortcut Shortcut `json:"shortcut"` - VisitCount *CountInfo `json:"visitCount,omitempty"` - VisitorCount *CountInfo `json:"visitorCount,omitempty"` -} - -func (o *ShortcutInsight) GetShortcut() Shortcut { - if o == nil { - return Shortcut{} - } - return o.Shortcut -} - -func (o *ShortcutInsight) GetVisitCount() *CountInfo { - if o == nil { - return nil - } - return o.VisitCount -} - -func (o *ShortcutInsight) GetVisitorCount() *CountInfo { - if o == nil { - return nil - } - return o.VisitorCount -} diff --git a/tests/mockserver/internal/sdk/models/components/shortcutinsightsresponse.go b/tests/mockserver/internal/sdk/models/components/shortcutinsightsresponse.go deleted file mode 100644 index b2edf8e3..00000000 --- a/tests/mockserver/internal/sdk/models/components/shortcutinsightsresponse.go +++ /dev/null @@ -1,42 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type ShortcutInsightsResponse struct { - // Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - LastLogTimestamp *int64 `json:"lastLogTimestamp,omitempty"` - // Insights for shortcuts. - ShortcutInsights []ShortcutInsight `json:"shortcutInsights,omitempty"` - // list of departments applicable for shortcuts tab. - Departments []string `json:"departments,omitempty"` - // Min threshold in number of visitors while populating results, otherwise 0. - MinVisitorThreshold *int64 `json:"minVisitorThreshold,omitempty"` -} - -func (o *ShortcutInsightsResponse) GetLastLogTimestamp() *int64 { - if o == nil { - return nil - } - return o.LastLogTimestamp -} - -func (o *ShortcutInsightsResponse) GetShortcutInsights() []ShortcutInsight { - if o == nil { - return nil - } - return o.ShortcutInsights -} - -func (o *ShortcutInsightsResponse) GetDepartments() []string { - if o == nil { - return nil - } - return o.Departments -} - -func (o *ShortcutInsightsResponse) GetMinVisitorThreshold() *int64 { - if o == nil { - return nil - } - return o.MinVisitorThreshold -} diff --git a/tests/mockserver/internal/sdk/models/components/structuredresult.go b/tests/mockserver/internal/sdk/models/components/structuredresult.go index 601481ab..99a8991a 100644 --- a/tests/mockserver/internal/sdk/models/components/structuredresult.go +++ b/tests/mockserver/internal/sdk/models/components/structuredresult.go @@ -44,6 +44,8 @@ type StructuredResultSource string const ( StructuredResultSourceExpertDetection StructuredResultSource = "EXPERT_DETECTION" StructuredResultSourceEntityNlq StructuredResultSource = "ENTITY_NLQ" + StructuredResultSourceCalendarEvent StructuredResultSource = "CALENDAR_EVENT" + StructuredResultSourceAgent StructuredResultSource = "AGENT" ) func (e StructuredResultSource) ToPointer() *StructuredResultSource { @@ -58,6 +60,10 @@ func (e *StructuredResultSource) UnmarshalJSON(data []byte) error { case "EXPERT_DETECTION": fallthrough case "ENTITY_NLQ": + fallthrough + case "CALENDAR_EVENT": + fallthrough + case "AGENT": *e = StructuredResultSource(v) return nil default: @@ -78,7 +84,6 @@ type StructuredResult struct { Meeting *Meeting `json:"meeting,omitempty"` App *AppResult `json:"app,omitempty"` Collection *Collection `json:"collection,omitempty"` - AnswerBoard *AnswerBoard `json:"answerBoard,omitempty"` Code *Code `json:"code,omitempty"` Shortcut *Shortcut `json:"shortcut,omitempty"` QuerySuggestions *QuerySuggestionList `json:"querySuggestions,omitempty"` @@ -187,13 +192,6 @@ func (o *StructuredResult) GetCollection() *Collection { return o.Collection } -func (o *StructuredResult) GetAnswerBoard() *AnswerBoard { - if o == nil { - return nil - } - return o.AnswerBoard -} - func (o *StructuredResult) GetCode() *Code { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/successresponse.go b/tests/mockserver/internal/sdk/models/components/successresponse.go new file mode 100644 index 00000000..f1aba12e --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/successresponse.go @@ -0,0 +1,31 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +// SuccessResponse - Success response for custom metadata operations +type SuccessResponse struct { + // Indicates if the operation was successful + Success *bool `default:"true" json:"success"` +} + +func (s SuccessResponse) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(s, "", false) +} + +func (s *SuccessResponse) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &s, "", false, nil); err != nil { + return err + } + return nil +} + +func (o *SuccessResponse) GetSuccess() *bool { + if o == nil { + return nil + } + return o.Success +} diff --git a/tests/mockserver/internal/sdk/models/components/timepoint.go b/tests/mockserver/internal/sdk/models/components/timepoint.go index 1879f106..3fc0938d 100644 --- a/tests/mockserver/internal/sdk/models/components/timepoint.go +++ b/tests/mockserver/internal/sdk/models/components/timepoint.go @@ -9,7 +9,7 @@ import ( type TimePoint struct { // Epoch seconds. Has precedence over daysFromNow. EpochSeconds *int64 `json:"epochSeconds,omitempty"` - // The number of days from now. Specification relative to current time. Can be negative. + // Number of days in the past, relative to the current date. DaysFromNow *int64 `json:"daysFromNow,omitempty"` } diff --git a/tests/mockserver/internal/sdk/models/components/timerangefilter.go b/tests/mockserver/internal/sdk/models/components/timerangefilter.go new file mode 100644 index 00000000..df3ce29a --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/timerangefilter.go @@ -0,0 +1,64 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// TimeRangeFilterTimePeriodType - The type of time period for which to filter findings. +type TimeRangeFilterTimePeriodType string + +const ( + TimeRangeFilterTimePeriodTypePastDay TimeRangeFilterTimePeriodType = "PAST_DAY" + TimeRangeFilterTimePeriodTypePastWeek TimeRangeFilterTimePeriodType = "PAST_WEEK" + TimeRangeFilterTimePeriodTypePastMonth TimeRangeFilterTimePeriodType = "PAST_MONTH" + TimeRangeFilterTimePeriodTypePastYear TimeRangeFilterTimePeriodType = "PAST_YEAR" + TimeRangeFilterTimePeriodTypeCustom TimeRangeFilterTimePeriodType = "CUSTOM" +) + +func (e TimeRangeFilterTimePeriodType) ToPointer() *TimeRangeFilterTimePeriodType { + return &e +} +func (e *TimeRangeFilterTimePeriodType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "PAST_DAY": + fallthrough + case "PAST_WEEK": + fallthrough + case "PAST_MONTH": + fallthrough + case "PAST_YEAR": + fallthrough + case "CUSTOM": + *e = TimeRangeFilterTimePeriodType(v) + return nil + default: + return fmt.Errorf("invalid value for TimeRangeFilterTimePeriodType: %v", v) + } +} + +type TimeRangeFilter struct { + // The type of time period for which to filter findings. + TimePeriodType *TimeRangeFilterTimePeriodType `json:"timePeriodType,omitempty"` + CustomTimeRange *TimeRange `json:"customTimeRange,omitempty"` +} + +func (o *TimeRangeFilter) GetTimePeriodType() *TimeRangeFilterTimePeriodType { + if o == nil { + return nil + } + return o.TimePeriodType +} + +func (o *TimeRangeFilter) GetCustomTimeRange() *TimeRange { + if o == nil { + return nil + } + return o.CustomTimeRange +} diff --git a/tests/mockserver/internal/sdk/models/components/ugctype.go b/tests/mockserver/internal/sdk/models/components/ugctype.go index e1cdc164..bc085b15 100644 --- a/tests/mockserver/internal/sdk/models/components/ugctype.go +++ b/tests/mockserver/internal/sdk/models/components/ugctype.go @@ -10,12 +10,26 @@ import ( type UgcType string const ( + UgcTypeAgentType UgcType = "AGENT_TYPE" UgcTypeAnnouncementsType UgcType = "ANNOUNCEMENTS_TYPE" UgcTypeAnswersType UgcType = "ANSWERS_TYPE" + UgcTypeChatsType UgcType = "CHATS_TYPE" UgcTypeCollectionsType UgcType = "COLLECTIONS_TYPE" + UgcTypeEmailType UgcType = "EMAIL_TYPE" + UgcTypeHTMLCodeType UgcType = "HTML_CODE_TYPE" + UgcTypeImageType UgcType = "IMAGE_TYPE" + UgcTypeMessageType UgcType = "MESSAGE_TYPE" + UgcTypePaperType UgcType = "PAPER_TYPE" + UgcTypePrismViewsType UgcType = "PRISM_VIEWS_TYPE" + UgcTypePromptTemplatesType UgcType = "PROMPT_TEMPLATES_TYPE" + UgcTypePinsType UgcType = "PINS_TYPE" + UgcTypeScribesType UgcType = "SCRIBES_TYPE" UgcTypeShortcutsType UgcType = "SHORTCUTS_TYPE" + UgcTypeSlideType UgcType = "SLIDE_TYPE" + UgcTypeSpreadsheetType UgcType = "SPREADSHEET_TYPE" + UgcTypeInlineHTMLType UgcType = "INLINE_HTML_TYPE" + UgcTypePodcastType UgcType = "PODCAST_TYPE" UgcTypeWorkflowsType UgcType = "WORKFLOWS_TYPE" - UgcTypePromptTemplatesType UgcType = "PROMPT_TEMPLATES_TYPE" ) func (e UgcType) ToPointer() *UgcType { @@ -27,17 +41,45 @@ func (e *UgcType) UnmarshalJSON(data []byte) error { return err } switch v { + case "AGENT_TYPE": + fallthrough case "ANNOUNCEMENTS_TYPE": fallthrough case "ANSWERS_TYPE": fallthrough + case "CHATS_TYPE": + fallthrough case "COLLECTIONS_TYPE": fallthrough - case "SHORTCUTS_TYPE": + case "EMAIL_TYPE": fallthrough - case "WORKFLOWS_TYPE": + case "HTML_CODE_TYPE": + fallthrough + case "IMAGE_TYPE": + fallthrough + case "MESSAGE_TYPE": + fallthrough + case "PAPER_TYPE": + fallthrough + case "PRISM_VIEWS_TYPE": fallthrough case "PROMPT_TEMPLATES_TYPE": + fallthrough + case "PINS_TYPE": + fallthrough + case "SCRIBES_TYPE": + fallthrough + case "SHORTCUTS_TYPE": + fallthrough + case "SLIDE_TYPE": + fallthrough + case "SPREADSHEET_TYPE": + fallthrough + case "INLINE_HTML_TYPE": + fallthrough + case "PODCAST_TYPE": + fallthrough + case "WORKFLOWS_TYPE": *e = UgcType(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/unauthorizeddatasourceinstance.go b/tests/mockserver/internal/sdk/models/components/unauthorizeddatasourceinstance.go new file mode 100644 index 00000000..78d5650a --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/unauthorizeddatasourceinstance.go @@ -0,0 +1,45 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// UnauthorizedDatasourceInstance - A datasource instance that could not return results for this request because the user has not completed or has expired per-user OAuth. +type UnauthorizedDatasourceInstance struct { + // The instance identifier (e.g. "github", "github_enterprise_0", "slack_0"). Matches the instance names used in datasource configuration. + // + DatasourceInstance *string `json:"datasourceInstance,omitempty"` + // Human-readable name of the datasource instance for display. + DisplayName *string `json:"displayName,omitempty"` + // The per-user authorization status for a datasource. + AuthStatus *AuthStatus `json:"authStatus,omitempty"` + // Relative path to initiate or resume OAuth for the current user and instance, including a one-time authentication token as a query parameter. Clients should prepend their configured Glean backend base URL. + // + AuthURLRelativePath *string `json:"authUrlRelativePath,omitempty"` +} + +func (o *UnauthorizedDatasourceInstance) GetDatasourceInstance() *string { + if o == nil { + return nil + } + return o.DatasourceInstance +} + +func (o *UnauthorizedDatasourceInstance) GetDisplayName() *string { + if o == nil { + return nil + } + return o.DisplayName +} + +func (o *UnauthorizedDatasourceInstance) GetAuthStatus() *AuthStatus { + if o == nil { + return nil + } + return o.AuthStatus +} + +func (o *UnauthorizedDatasourceInstance) GetAuthURLRelativePath() *string { + if o == nil { + return nil + } + return o.AuthURLRelativePath +} 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/components/uploadchatfilesrequest.go b/tests/mockserver/internal/sdk/models/components/uploadchatfilesrequest.go index 7c324627..0a5cc028 100644 --- a/tests/mockserver/internal/sdk/models/components/uploadchatfilesrequest.go +++ b/tests/mockserver/internal/sdk/models/components/uploadchatfilesrequest.go @@ -27,7 +27,7 @@ func (o *File) GetContent() io.Reader { type UploadChatFilesRequest struct { // Raw files to be uploaded for chat in binary format. - Files []File `multipartForm:"file"` + Files []File `multipartForm:"file,name=files"` } func (o *UploadChatFilesRequest) GetFiles() []File { diff --git a/tests/mockserver/internal/sdk/models/components/userinsightsresponse.go b/tests/mockserver/internal/sdk/models/components/userinsightsresponse.go deleted file mode 100644 index 2fb26d2f..00000000 --- a/tests/mockserver/internal/sdk/models/components/userinsightsresponse.go +++ /dev/null @@ -1,60 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -type UserInsightsResponse struct { - // Unix timestamp of the last activity processed to make the response (in seconds since epoch UTC). - LastLogTimestamp *int64 `json:"lastLogTimestamp,omitempty"` - // Insights for all active users with respect to set of actions. - ActivityInsights []UserActivityInsight `json:"activityInsights,omitempty"` - // Insights for all in inactive users with respect to set of actions and time period. Activity count will be set to 0. - InactiveInsights []UserActivityInsight `json:"inactiveInsights,omitempty"` - // Total number of teammates that have logged in to the product, that are still valid teammates. - TotalTeammates *int64 `json:"totalTeammates,omitempty"` - // Total number of active users in the requested period. - TotalActiveUsers *int64 `json:"totalActiveUsers,omitempty"` - // list of departments applicable for users tab. - Departments []string `json:"departments,omitempty"` -} - -func (o *UserInsightsResponse) GetLastLogTimestamp() *int64 { - if o == nil { - return nil - } - return o.LastLogTimestamp -} - -func (o *UserInsightsResponse) GetActivityInsights() []UserActivityInsight { - if o == nil { - return nil - } - return o.ActivityInsights -} - -func (o *UserInsightsResponse) GetInactiveInsights() []UserActivityInsight { - if o == nil { - return nil - } - return o.InactiveInsights -} - -func (o *UserInsightsResponse) GetTotalTeammates() *int64 { - if o == nil { - return nil - } - return o.TotalTeammates -} - -func (o *UserInsightsResponse) GetTotalActiveUsers() *int64 { - if o == nil { - return nil - } - return o.TotalActiveUsers -} - -func (o *UserInsightsResponse) GetDepartments() []string { - if o == nil { - return nil - } - return o.Departments -} diff --git a/tests/mockserver/internal/sdk/models/components/viewerinfo.go b/tests/mockserver/internal/sdk/models/components/viewerinfo.go index 1f310364..5abdc47f 100644 --- a/tests/mockserver/internal/sdk/models/components/viewerinfo.go +++ b/tests/mockserver/internal/sdk/models/components/viewerinfo.go @@ -11,7 +11,7 @@ import ( // Role - DEPRECATED - use permissions instead. Viewer's role on the specific document. // -// 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 permissions instead. type Role string const ( @@ -44,7 +44,7 @@ func (e *Role) UnmarshalJSON(data []byte) error { type ViewerInfo struct { // DEPRECATED - use permissions instead. Viewer's role on the specific document. // - // 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 permissions instead. Role *Role `json:"role,omitempty"` LastViewedTime *time.Time `json:"lastViewedTime,omitempty"` } diff --git a/tests/mockserver/internal/sdk/models/components/workflow.go b/tests/mockserver/internal/sdk/models/components/workflow.go index 4d9b678b..dfe489b8 100644 --- a/tests/mockserver/internal/sdk/models/components/workflow.go +++ b/tests/mockserver/internal/sdk/models/components/workflow.go @@ -9,11 +9,20 @@ type Workflow struct { // Server Unix timestamp of the creation time. CreateTimestamp *int64 `json:"createTimestamp,omitempty"` // Server Unix timestamp of the last update time. - LastUpdateTimestamp *int64 `json:"lastUpdateTimestamp,omitempty"` - LastUpdatedBy *Person `json:"lastUpdatedBy,omitempty"` - Permissions *ObjectPermissions `json:"permissions,omitempty"` + LastUpdateTimestamp *int64 `json:"lastUpdateTimestamp,omitempty"` + // Server Unix timestamp of the last time the draft was saved. + LastDraftSavedAt *int64 `json:"lastDraftSavedAt,omitempty"` + LastDraftSavedBy *Person `json:"lastDraftSavedBy,omitempty"` + // ID of the VCS user (e.g. GitHub username) who last saved the draft. Set only by the draft save path via the external Git integration API. + LastDraftGitAuthorID *string `json:"lastDraftGitAuthorId,omitempty"` + LastUpdatedBy *Person `json:"lastUpdatedBy,omitempty"` + Permissions *ObjectPermissions `json:"permissions,omitempty"` // The ID of the workflow. ID *string `json:"id,omitempty"` + // When present, indicates this workflow is admin-verified. Set via the dedicated admin settings endpoint, not by regular edits. + Verified *bool `json:"verified,omitempty"` + // When true, displays organization name instead of author name in agent card. Set via the dedicated admin settings endpoint, not by regular edits. + ShowOrganizationAsAuthor *bool `json:"showOrganizationAsAuthor,omitempty"` } func (o *Workflow) GetName() *string { @@ -44,6 +53,27 @@ func (o *Workflow) GetLastUpdateTimestamp() *int64 { return o.LastUpdateTimestamp } +func (o *Workflow) GetLastDraftSavedAt() *int64 { + if o == nil { + return nil + } + return o.LastDraftSavedAt +} + +func (o *Workflow) GetLastDraftSavedBy() *Person { + if o == nil { + return nil + } + return o.LastDraftSavedBy +} + +func (o *Workflow) GetLastDraftGitAuthorID() *string { + if o == nil { + return nil + } + return o.LastDraftGitAuthorID +} + func (o *Workflow) GetLastUpdatedBy() *Person { if o == nil { return nil @@ -64,3 +94,17 @@ func (o *Workflow) GetID() *string { } return o.ID } + +func (o *Workflow) GetVerified() *bool { + if o == nil { + return nil + } + return o.Verified +} + +func (o *Workflow) GetShowOrganizationAsAuthor() *bool { + if o == nil { + return nil + } + return o.ShowOrganizationAsAuthor +} diff --git a/tests/mockserver/internal/sdk/models/operations/addcollectionitems.go b/tests/mockserver/internal/sdk/models/operations/addcollectionitems.go index fd74638a..5402c0c3 100644 --- a/tests/mockserver/internal/sdk/models/operations/addcollectionitems.go +++ b/tests/mockserver/internal/sdk/models/operations/addcollectionitems.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type AddcollectionitemsRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Data describing the add operation. + Body components.AddCollectionItemsRequest `request:"mediaType=application/json"` +} + +func (o *AddcollectionitemsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *AddcollectionitemsRequest) GetBody() components.AddCollectionItemsRequest { + if o == nil { + return components.AddCollectionItemsRequest{} + } + return o.Body +} + type AddcollectionitemsResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/addverificationreminder.go b/tests/mockserver/internal/sdk/models/operations/addverificationreminder.go index fb8ab5ad..5ac1bc76 100644 --- a/tests/mockserver/internal/sdk/models/operations/addverificationreminder.go +++ b/tests/mockserver/internal/sdk/models/operations/addverificationreminder.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type AddverificationreminderRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Details about the reminder. + Body components.ReminderRequest `request:"mediaType=application/json"` +} + +func (o *AddverificationreminderRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *AddverificationreminderRequest) GetBody() components.ReminderRequest { + if o == nil { + return components.ReminderRequest{} + } + return o.Body +} + type AddverificationreminderResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/adminsearch.go b/tests/mockserver/internal/sdk/models/operations/adminsearch.go index 3a9fc431..d3bcae61 100644 --- a/tests/mockserver/internal/sdk/models/operations/adminsearch.go +++ b/tests/mockserver/internal/sdk/models/operations/adminsearch.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type AdminsearchRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Admin search request + Body components.SearchRequest `request:"mediaType=application/json"` +} + +func (o *AdminsearchRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *AdminsearchRequest) GetBody() components.SearchRequest { + if o == nil { + return components.SearchRequest{} + } + return o.Body +} + type AdminsearchResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/authorizeactionpack.go b/tests/mockserver/internal/sdk/models/operations/authorizeactionpack.go new file mode 100644 index 00000000..9c7fd68f --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/authorizeactionpack.go @@ -0,0 +1,47 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type AuthorizeActionPackRequest struct { + // ID of the action pack to query or authorize. + ActionPackID string `pathParam:"style=simple,explode=false,name=actionPackId"` + Body components.AuthorizeActionPackRequest `request:"mediaType=application/json"` +} + +func (o *AuthorizeActionPackRequest) GetActionPackID() string { + if o == nil { + return "" + } + return o.ActionPackID +} + +func (o *AuthorizeActionPackRequest) GetBody() components.AuthorizeActionPackRequest { + if o == nil { + return components.AuthorizeActionPackRequest{} + } + return o.Body +} + +type AuthorizeActionPackResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful operation + AuthorizeActionPackResponse *components.AuthorizeActionPackResponse +} + +func (o *AuthorizeActionPackResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *AuthorizeActionPackResponse) GetAuthorizeActionPackResponse() *components.AuthorizeActionPackResponse { + if o == nil { + return nil + } + return o.AuthorizeActionPackResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/autocomplete.go b/tests/mockserver/internal/sdk/models/operations/autocomplete.go index 106f5474..e056f244 100644 --- a/tests/mockserver/internal/sdk/models/operations/autocomplete.go +++ b/tests/mockserver/internal/sdk/models/operations/autocomplete.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type AutocompleteRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Autocomplete request + Body components.AutocompleteRequest `request:"mediaType=application/json"` +} + +func (o *AutocompleteRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *AutocompleteRequest) GetBody() components.AutocompleteRequest { + if o == nil { + return components.AutocompleteRequest{} + } + return o.Body +} + type AutocompleteResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/chat.go b/tests/mockserver/internal/sdk/models/operations/chat.go index e8c31b57..571a9b9d 100644 --- a/tests/mockserver/internal/sdk/models/operations/chat.go +++ b/tests/mockserver/internal/sdk/models/operations/chat.go @@ -7,12 +7,21 @@ import ( ) type ChatRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. TimezoneOffset *int64 `queryParam:"style=form,explode=true,name=timezoneOffset"` // Includes chat history for Glean AI to respond to. Body components.ChatRequest `request:"mediaType=application/json"` } +func (o *ChatRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *ChatRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/checkdatasourceauth.go b/tests/mockserver/internal/sdk/models/operations/checkdatasourceauth.go new file mode 100644 index 00000000..55046755 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/checkdatasourceauth.go @@ -0,0 +1,27 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type CheckdatasourceauthResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + CheckDatasourceAuthResponse *components.CheckDatasourceAuthResponse +} + +func (o *CheckdatasourceauthResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *CheckdatasourceauthResponse) GetCheckDatasourceAuthResponse() *components.CheckDatasourceAuthResponse { + if o == nil { + return nil + } + return o.CheckDatasourceAuthResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/createannouncement.go b/tests/mockserver/internal/sdk/models/operations/createannouncement.go index 86d9ba17..420e51a0 100644 --- a/tests/mockserver/internal/sdk/models/operations/createannouncement.go +++ b/tests/mockserver/internal/sdk/models/operations/createannouncement.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type CreateannouncementRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Announcement content + Body components.CreateAnnouncementRequest `request:"mediaType=application/json"` +} + +func (o *CreateannouncementRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *CreateannouncementRequest) GetBody() components.CreateAnnouncementRequest { + if o == nil { + return components.CreateAnnouncementRequest{} + } + return o.Body +} + type CreateannouncementResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/createanswer.go b/tests/mockserver/internal/sdk/models/operations/createanswer.go index 8abc5c94..6ae4843d 100644 --- a/tests/mockserver/internal/sdk/models/operations/createanswer.go +++ b/tests/mockserver/internal/sdk/models/operations/createanswer.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type CreateanswerRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // CreateAnswer request + Body components.CreateAnswerRequest `request:"mediaType=application/json"` +} + +func (o *CreateanswerRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *CreateanswerRequest) GetBody() components.CreateAnswerRequest { + if o == nil { + return components.CreateAnswerRequest{} + } + return o.Body +} + type CreateanswerResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/createcollection.go b/tests/mockserver/internal/sdk/models/operations/createcollection.go index 04eaedbc..3b62bee2 100644 --- a/tests/mockserver/internal/sdk/models/operations/createcollection.go +++ b/tests/mockserver/internal/sdk/models/operations/createcollection.go @@ -9,6 +9,27 @@ import ( "mockserver/internal/sdk/utils" ) +type CreatecollectionRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Collection content plus any additional metadata for the request. + Body components.CreateCollectionRequest `request:"mediaType=application/json"` +} + +func (o *CreatecollectionRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *CreatecollectionRequest) GetBody() components.CreateCollectionRequest { + if o == nil { + return components.CreateCollectionRequest{} + } + return o.Body +} + type ResponseBody2 struct { Collection *components.Collection `json:"collection,omitempty"` Error components.CollectionError `json:"error"` diff --git a/tests/mockserver/internal/sdk/models/operations/createfindingsexport.go b/tests/mockserver/internal/sdk/models/operations/createfindingsexport.go new file mode 100644 index 00000000..cffb09fc --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/createfindingsexport.go @@ -0,0 +1,27 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type CreatefindingsexportResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + ExportInfo *components.ExportInfo +} + +func (o *CreatefindingsexportResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *CreatefindingsexportResponse) GetExportInfo() *components.ExportInfo { + if o == nil { + return nil + } + return o.ExportInfo +} diff --git a/tests/mockserver/internal/sdk/models/operations/createshortcut.go b/tests/mockserver/internal/sdk/models/operations/createshortcut.go index b17cc638..4dead6af 100644 --- a/tests/mockserver/internal/sdk/models/operations/createshortcut.go +++ b/tests/mockserver/internal/sdk/models/operations/createshortcut.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type CreateshortcutRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // CreateShortcut request + Body components.CreateShortcutRequest `request:"mediaType=application/json"` +} + +func (o *CreateshortcutRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *CreateshortcutRequest) GetBody() components.CreateShortcutRequest { + if o == nil { + return components.CreateShortcutRequest{} + } + return o.Body +} + type CreateshortcutResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/deleteallchats.go b/tests/mockserver/internal/sdk/models/operations/deleteallchats.go index d28cebb1..9a61eac0 100644 --- a/tests/mockserver/internal/sdk/models/operations/deleteallchats.go +++ b/tests/mockserver/internal/sdk/models/operations/deleteallchats.go @@ -7,10 +7,19 @@ import ( ) type DeleteallchatsRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. TimezoneOffset *int64 `queryParam:"style=form,explode=true,name=timezoneOffset"` } +func (o *DeleteallchatsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *DeleteallchatsRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/deleteannouncement.go b/tests/mockserver/internal/sdk/models/operations/deleteannouncement.go index 774b4d1f..6df70f30 100644 --- a/tests/mockserver/internal/sdk/models/operations/deleteannouncement.go +++ b/tests/mockserver/internal/sdk/models/operations/deleteannouncement.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type DeleteannouncementRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Delete announcement request + Body components.DeleteAnnouncementRequest `request:"mediaType=application/json"` +} + +func (o *DeleteannouncementRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *DeleteannouncementRequest) GetBody() components.DeleteAnnouncementRequest { + if o == nil { + return components.DeleteAnnouncementRequest{} + } + return o.Body +} + type DeleteannouncementResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` } diff --git a/tests/mockserver/internal/sdk/models/operations/deleteanswer.go b/tests/mockserver/internal/sdk/models/operations/deleteanswer.go index 46b181b2..c30ae2bb 100644 --- a/tests/mockserver/internal/sdk/models/operations/deleteanswer.go +++ b/tests/mockserver/internal/sdk/models/operations/deleteanswer.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type DeleteanswerRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // DeleteAnswer request + Body components.DeleteAnswerRequest `request:"mediaType=application/json"` +} + +func (o *DeleteanswerRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *DeleteanswerRequest) GetBody() components.DeleteAnswerRequest { + if o == nil { + return components.DeleteAnswerRequest{} + } + return o.Body +} + type DeleteanswerResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` } diff --git a/tests/mockserver/internal/sdk/models/operations/deletechatfiles.go b/tests/mockserver/internal/sdk/models/operations/deletechatfiles.go index 8d41828e..132474f4 100644 --- a/tests/mockserver/internal/sdk/models/operations/deletechatfiles.go +++ b/tests/mockserver/internal/sdk/models/operations/deletechatfiles.go @@ -7,11 +7,20 @@ import ( ) type DeletechatfilesRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. TimezoneOffset *int64 `queryParam:"style=form,explode=true,name=timezoneOffset"` Body components.DeleteChatFilesRequest `request:"mediaType=application/json"` } +func (o *DeletechatfilesRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *DeletechatfilesRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/deletechats.go b/tests/mockserver/internal/sdk/models/operations/deletechats.go index 14372eaa..558b4262 100644 --- a/tests/mockserver/internal/sdk/models/operations/deletechats.go +++ b/tests/mockserver/internal/sdk/models/operations/deletechats.go @@ -7,11 +7,20 @@ import ( ) type DeletechatsRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. TimezoneOffset *int64 `queryParam:"style=form,explode=true,name=timezoneOffset"` Body components.DeleteChatsRequest `request:"mediaType=application/json"` } +func (o *DeletechatsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *DeletechatsRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/deletecollection.go b/tests/mockserver/internal/sdk/models/operations/deletecollection.go index b21f01fa..29f0e83d 100644 --- a/tests/mockserver/internal/sdk/models/operations/deletecollection.go +++ b/tests/mockserver/internal/sdk/models/operations/deletecollection.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type DeletecollectionRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // DeleteCollection request + Body components.DeleteCollectionRequest `request:"mediaType=application/json"` +} + +func (o *DeletecollectionRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *DeletecollectionRequest) GetBody() components.DeleteCollectionRequest { + if o == nil { + return components.DeleteCollectionRequest{} + } + return o.Body +} + type DeletecollectionResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` } diff --git a/tests/mockserver/internal/sdk/models/operations/deletecollectionitem.go b/tests/mockserver/internal/sdk/models/operations/deletecollectionitem.go index f9b6a404..ebc25f93 100644 --- a/tests/mockserver/internal/sdk/models/operations/deletecollectionitem.go +++ b/tests/mockserver/internal/sdk/models/operations/deletecollectionitem.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type DeletecollectionitemRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Data describing the delete operation. + Body components.DeleteCollectionItemRequest `request:"mediaType=application/json"` +} + +func (o *DeletecollectionitemRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *DeletecollectionitemRequest) GetBody() components.DeleteCollectionItemRequest { + if o == nil { + return components.DeleteCollectionItemRequest{} + } + return o.Body +} + type DeletecollectionitemResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/deletefindingsexport.go b/tests/mockserver/internal/sdk/models/operations/deletefindingsexport.go new file mode 100644 index 00000000..c7c8a18c --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/deletefindingsexport.go @@ -0,0 +1,30 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type DeletefindingsexportRequest struct { + // The ID of the export to delete. + ID int64 `pathParam:"style=simple,explode=false,name=id"` +} + +func (o *DeletefindingsexportRequest) GetID() int64 { + if o == nil { + return 0 + } + return o.ID +} + +type DeletefindingsexportResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` +} + +func (o *DeletefindingsexportResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} diff --git a/tests/mockserver/internal/sdk/models/operations/deleterestapiindexcustommetadataschemagroupname.go b/tests/mockserver/internal/sdk/models/operations/deleterestapiindexcustommetadataschemagroupname.go new file mode 100644 index 00000000..0d1f7202 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/deleterestapiindexcustommetadataschemagroupname.go @@ -0,0 +1,39 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequest struct { + // Name of the metadata group schema + GroupName string `pathParam:"style=simple,explode=false,name=groupName"` +} + +func (o *DeleteRestAPIIndexCustomMetadataSchemaGroupNameRequest) GetGroupName() string { + if o == nil { + return "" + } + return o.GroupName +} + +type DeleteRestAPIIndexCustomMetadataSchemaGroupNameResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + SuccessResponse *components.SuccessResponse +} + +func (o *DeleteRestAPIIndexCustomMetadataSchemaGroupNameResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *DeleteRestAPIIndexCustomMetadataSchemaGroupNameResponse) GetSuccessResponse() *components.SuccessResponse { + if o == nil { + return nil + } + return o.SuccessResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/deleterestapiindexdocumentdocidcustommetadatagroupname.go b/tests/mockserver/internal/sdk/models/operations/deleterestapiindexdocumentdocidcustommetadatagroupname.go new file mode 100644 index 00000000..beb27fc3 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/deleterestapiindexdocumentdocidcustommetadatagroupname.go @@ -0,0 +1,48 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest struct { + // Unique Glean identifier of the document + DocID string `pathParam:"style=simple,explode=false,name=docId"` + // Name of the metadata group as specified while adding schema + GroupName string `pathParam:"style=simple,explode=false,name=groupName"` +} + +func (o *DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest) GetDocID() string { + if o == nil { + return "" + } + return o.DocID +} + +func (o *DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest) GetGroupName() string { + if o == nil { + return "" + } + return o.GroupName +} + +type DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + SuccessResponse *components.SuccessResponse +} + +func (o *DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *DeleteRestAPIIndexDocumentDocIDCustomMetadataGroupNameResponse) GetSuccessResponse() *components.SuccessResponse { + if o == nil { + return nil + } + return o.SuccessResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/deleteshortcut.go b/tests/mockserver/internal/sdk/models/operations/deleteshortcut.go index 03a740b6..887e2faf 100644 --- a/tests/mockserver/internal/sdk/models/operations/deleteshortcut.go +++ b/tests/mockserver/internal/sdk/models/operations/deleteshortcut.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type DeleteshortcutRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // DeleteShortcut request + Body components.DeleteShortcutRequest `request:"mediaType=application/json"` +} + +func (o *DeleteshortcutRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *DeleteshortcutRequest) GetBody() components.DeleteShortcutRequest { + if o == nil { + return components.DeleteShortcutRequest{} + } + return o.Body +} + type DeleteshortcutResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` } diff --git a/tests/mockserver/internal/sdk/models/operations/downloadfindingsexport.go b/tests/mockserver/internal/sdk/models/operations/downloadfindingsexport.go new file mode 100644 index 00000000..2bfabd23 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/downloadfindingsexport.go @@ -0,0 +1,39 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type DownloadfindingsexportRequest struct { + // The ID of the export to download. + ID string `pathParam:"style=simple,explode=false,name=id"` +} + +func (o *DownloadfindingsexportRequest) GetID() string { + if o == nil { + return "" + } + return o.ID +} + +type DownloadfindingsexportResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Downloads CSV of exported findings. + Res *string +} + +func (o *DownloadfindingsexportResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *DownloadfindingsexportResponse) GetRes() *string { + if o == nil { + return nil + } + return o.Res +} diff --git a/tests/mockserver/internal/sdk/models/operations/editagent.go b/tests/mockserver/internal/sdk/models/operations/editagent.go new file mode 100644 index 00000000..e65fa406 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/editagent.go @@ -0,0 +1,56 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type EditAgentRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. + TimezoneOffset *int64 `queryParam:"style=form,explode=true,name=timezoneOffset"` + // The ID of the agent. + AgentID string `pathParam:"style=simple,explode=false,name=agent_id"` + Body components.EditWorkflowRequest `request:"mediaType=application/json"` +} + +func (o *EditAgentRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *EditAgentRequest) GetTimezoneOffset() *int64 { + if o == nil { + return nil + } + return o.TimezoneOffset +} + +func (o *EditAgentRequest) GetAgentID() string { + if o == nil { + return "" + } + return o.AgentID +} + +func (o *EditAgentRequest) GetBody() components.EditWorkflowRequest { + if o == nil { + return components.EditWorkflowRequest{} + } + return o.Body +} + +type EditAgentResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` +} + +func (o *EditAgentResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} diff --git a/tests/mockserver/internal/sdk/models/operations/editanswer.go b/tests/mockserver/internal/sdk/models/operations/editanswer.go index 92a67c43..a012cd57 100644 --- a/tests/mockserver/internal/sdk/models/operations/editanswer.go +++ b/tests/mockserver/internal/sdk/models/operations/editanswer.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type EditanswerRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // EditAnswer request + Body components.EditAnswerRequest `request:"mediaType=application/json"` +} + +func (o *EditanswerRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *EditanswerRequest) GetBody() components.EditAnswerRequest { + if o == nil { + return components.EditAnswerRequest{} + } + return o.Body +} + type EditanswerResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/editcollection.go b/tests/mockserver/internal/sdk/models/operations/editcollection.go index 6b17b377..1009daa1 100644 --- a/tests/mockserver/internal/sdk/models/operations/editcollection.go +++ b/tests/mockserver/internal/sdk/models/operations/editcollection.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type EditcollectionRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Collection content plus any additional metadata for the request. + Body components.EditCollectionRequest `request:"mediaType=application/json"` +} + +func (o *EditcollectionRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *EditcollectionRequest) GetBody() components.EditCollectionRequest { + if o == nil { + return components.EditCollectionRequest{} + } + return o.Body +} + type EditcollectionResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/editcollectionitem.go b/tests/mockserver/internal/sdk/models/operations/editcollectionitem.go index 8ac9f5a9..520900db 100644 --- a/tests/mockserver/internal/sdk/models/operations/editcollectionitem.go +++ b/tests/mockserver/internal/sdk/models/operations/editcollectionitem.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type EditcollectionitemRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Edit Collection Items request + Body components.EditCollectionItemRequest `request:"mediaType=application/json"` +} + +func (o *EditcollectionitemRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *EditcollectionitemRequest) GetBody() components.EditCollectionItemRequest { + if o == nil { + return components.EditCollectionItemRequest{} + } + return o.Body +} + type EditcollectionitemResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/editpin.go b/tests/mockserver/internal/sdk/models/operations/editpin.go index 921ea93c..9105b336 100644 --- a/tests/mockserver/internal/sdk/models/operations/editpin.go +++ b/tests/mockserver/internal/sdk/models/operations/editpin.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type EditpinRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Edit pins request + Body components.EditPinRequest `request:"mediaType=application/json"` +} + +func (o *EditpinRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *EditpinRequest) GetBody() components.EditPinRequest { + if o == nil { + return components.EditPinRequest{} + } + return o.Body +} + type EditpinResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/feed.go b/tests/mockserver/internal/sdk/models/operations/feed.go index 1d0cbfbf..8f7a3aa0 100644 --- a/tests/mockserver/internal/sdk/models/operations/feed.go +++ b/tests/mockserver/internal/sdk/models/operations/feed.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type FeedRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Includes request params, client data and more for making user's feed. + Body components.FeedRequest `request:"mediaType=application/json"` +} + +func (o *FeedRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *FeedRequest) GetBody() components.FeedRequest { + if o == nil { + return components.FeedRequest{} + } + return o.Body +} + type FeedResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/getactionpackauthstatus.go b/tests/mockserver/internal/sdk/models/operations/getactionpackauthstatus.go new file mode 100644 index 00000000..9b7a1160 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/getactionpackauthstatus.go @@ -0,0 +1,39 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type GetActionPackAuthStatusRequest struct { + // ID of the action pack to query or authorize. + ActionPackID string `pathParam:"style=simple,explode=false,name=actionPackId"` +} + +func (o *GetActionPackAuthStatusRequest) GetActionPackID() string { + if o == nil { + return "" + } + return o.ActionPackID +} + +type GetActionPackAuthStatusResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful operation + ActionPackAuthStatusResponse *components.ActionPackAuthStatusResponse +} + +func (o *GetActionPackAuthStatusResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *GetActionPackAuthStatusResponse) GetActionPackAuthStatusResponse() *components.ActionPackAuthStatusResponse { + if o == nil { + return nil + } + return o.ActionPackAuthStatusResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/getagent.go b/tests/mockserver/internal/sdk/models/operations/getagent.go index 471bb945..6e79ed8b 100644 --- a/tests/mockserver/internal/sdk/models/operations/getagent.go +++ b/tests/mockserver/internal/sdk/models/operations/getagent.go @@ -7,12 +7,21 @@ import ( ) type GetAgentRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. TimezoneOffset *int64 `queryParam:"style=form,explode=true,name=timezoneOffset"` // The ID of the agent. AgentID string `pathParam:"style=simple,explode=false,name=agent_id"` } +func (o *GetAgentRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *GetAgentRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/getagentschemas.go b/tests/mockserver/internal/sdk/models/operations/getagentschemas.go index b4aa8ea6..8b4bb0ad 100644 --- a/tests/mockserver/internal/sdk/models/operations/getagentschemas.go +++ b/tests/mockserver/internal/sdk/models/operations/getagentschemas.go @@ -7,12 +7,21 @@ import ( ) type GetAgentSchemasRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. TimezoneOffset *int64 `queryParam:"style=form,explode=true,name=timezoneOffset"` // The ID of the agent. AgentID string `pathParam:"style=simple,explode=false,name=agent_id"` } +func (o *GetAgentSchemasRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *GetAgentSchemasRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/getanswer.go b/tests/mockserver/internal/sdk/models/operations/getanswer.go index ce29ef9f..2f3d1ba5 100644 --- a/tests/mockserver/internal/sdk/models/operations/getanswer.go +++ b/tests/mockserver/internal/sdk/models/operations/getanswer.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type GetanswerRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // GetAnswer request + Body components.GetAnswerRequest `request:"mediaType=application/json"` +} + +func (o *GetanswerRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *GetanswerRequest) GetBody() components.GetAnswerRequest { + if o == nil { + return components.GetAnswerRequest{} + } + return o.Body +} + type GetanswerResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/getchat.go b/tests/mockserver/internal/sdk/models/operations/getchat.go index 0c696703..50686f34 100644 --- a/tests/mockserver/internal/sdk/models/operations/getchat.go +++ b/tests/mockserver/internal/sdk/models/operations/getchat.go @@ -7,11 +7,20 @@ import ( ) type GetchatRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. TimezoneOffset *int64 `queryParam:"style=form,explode=true,name=timezoneOffset"` Body components.GetChatRequest `request:"mediaType=application/json"` } +func (o *GetchatRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *GetchatRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/getchatapplication.go b/tests/mockserver/internal/sdk/models/operations/getchatapplication.go index 4d4ddb97..43b8a32f 100644 --- a/tests/mockserver/internal/sdk/models/operations/getchatapplication.go +++ b/tests/mockserver/internal/sdk/models/operations/getchatapplication.go @@ -7,11 +7,20 @@ import ( ) type GetchatapplicationRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. TimezoneOffset *int64 `queryParam:"style=form,explode=true,name=timezoneOffset"` Body components.GetChatApplicationRequest `request:"mediaType=application/json"` } +func (o *GetchatapplicationRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *GetchatapplicationRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/getchatfile.go b/tests/mockserver/internal/sdk/models/operations/getchatfile.go new file mode 100644 index 00000000..b2bd8aac --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/getchatfile.go @@ -0,0 +1,51 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "io" + "mockserver/internal/sdk/models/components" +) + +type GetChatFileRequest struct { + // Identifier of the chat file to download. + FileID string `pathParam:"style=simple,explode=false,name=fileId"` + // When true and the file is a PDF, the response is served inline (Content-Disposition: inline) instead of as an attachment. + // + Preview *bool `queryParam:"style=form,explode=true,name=preview"` +} + +func (o *GetChatFileRequest) GetFileID() string { + if o == nil { + return "" + } + return o.FileID +} + +func (o *GetChatFileRequest) GetPreview() *bool { + if o == nil { + return nil + } + return o.Preview +} + +type GetChatFileResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // File content. + // The Close method must be called on this field, even if it is not used, to prevent resource leaks. + ResponseStream io.ReadCloser +} + +func (o *GetChatFileResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *GetChatFileResponse) GetResponseStream() io.ReadCloser { + if o == nil { + return nil + } + return o.ResponseStream +} diff --git a/tests/mockserver/internal/sdk/models/operations/getchatfiles.go b/tests/mockserver/internal/sdk/models/operations/getchatfiles.go index 7ad91227..5ecbbe8d 100644 --- a/tests/mockserver/internal/sdk/models/operations/getchatfiles.go +++ b/tests/mockserver/internal/sdk/models/operations/getchatfiles.go @@ -7,11 +7,20 @@ import ( ) type GetchatfilesRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. TimezoneOffset *int64 `queryParam:"style=form,explode=true,name=timezoneOffset"` Body components.GetChatFilesRequest `request:"mediaType=application/json"` } +func (o *GetchatfilesRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *GetchatfilesRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/getcollection.go b/tests/mockserver/internal/sdk/models/operations/getcollection.go index 38e38763..6b70b3c9 100644 --- a/tests/mockserver/internal/sdk/models/operations/getcollection.go +++ b/tests/mockserver/internal/sdk/models/operations/getcollection.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type GetcollectionRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // GetCollection request + Body components.GetCollectionRequest `request:"mediaType=application/json"` +} + +func (o *GetcollectionRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *GetcollectionRequest) GetBody() components.GetCollectionRequest { + if o == nil { + return components.GetCollectionRequest{} + } + return o.Body +} + type GetcollectionResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/getdatasourcecredentialstatus.go b/tests/mockserver/internal/sdk/models/operations/getdatasourcecredentialstatus.go new file mode 100644 index 00000000..bc0d1e27 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/getdatasourcecredentialstatus.go @@ -0,0 +1,39 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type GetDatasourceCredentialStatusRequest struct { + // The full datasource instance identifier (e.g. o365sharepoint_abc123) + DatasourceInstanceID string `pathParam:"style=simple,explode=false,name=datasourceInstanceId"` +} + +func (o *GetDatasourceCredentialStatusRequest) GetDatasourceInstanceID() string { + if o == nil { + return "" + } + return o.DatasourceInstanceID +} + +type GetDatasourceCredentialStatusResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + DatasourceCredentialStatusResponse *components.DatasourceCredentialStatusResponse +} + +func (o *GetDatasourceCredentialStatusResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *GetDatasourceCredentialStatusResponse) GetDatasourceCredentialStatusResponse() *components.DatasourceCredentialStatusResponse { + if o == nil { + return nil + } + return o.DatasourceCredentialStatusResponse +} 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/getdocpermissions.go b/tests/mockserver/internal/sdk/models/operations/getdocpermissions.go index a509a3a7..e615fcc1 100644 --- a/tests/mockserver/internal/sdk/models/operations/getdocpermissions.go +++ b/tests/mockserver/internal/sdk/models/operations/getdocpermissions.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type GetdocpermissionsRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Document permissions request + Body components.GetDocPermissionsRequest `request:"mediaType=application/json"` +} + +func (o *GetdocpermissionsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *GetdocpermissionsRequest) GetBody() components.GetDocPermissionsRequest { + if o == nil { + return components.GetDocPermissionsRequest{} + } + return o.Body +} + type GetdocpermissionsResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/getdocuments.go b/tests/mockserver/internal/sdk/models/operations/getdocuments.go index a2ef5c08..87367f5e 100644 --- a/tests/mockserver/internal/sdk/models/operations/getdocuments.go +++ b/tests/mockserver/internal/sdk/models/operations/getdocuments.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type GetdocumentsRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Information about documents requested. + Body *components.GetDocumentsRequest `request:"mediaType=application/json"` +} + +func (o *GetdocumentsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *GetdocumentsRequest) GetBody() *components.GetDocumentsRequest { + if o == nil { + return nil + } + return o.Body +} + type GetdocumentsResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/getdocumentsbyfacets.go b/tests/mockserver/internal/sdk/models/operations/getdocumentsbyfacets.go index 12629e29..4c3deeb2 100644 --- a/tests/mockserver/internal/sdk/models/operations/getdocumentsbyfacets.go +++ b/tests/mockserver/internal/sdk/models/operations/getdocumentsbyfacets.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type GetdocumentsbyfacetsRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Information about facet conditions for documents to be retrieved. + Body *components.GetDocumentsByFacetsRequest `request:"mediaType=application/json"` +} + +func (o *GetdocumentsbyfacetsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *GetdocumentsbyfacetsRequest) GetBody() *components.GetDocumentsByFacetsRequest { + if o == nil { + return nil + } + return o.Body +} + type GetdocumentsbyfacetsResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/getpersonphoto.go b/tests/mockserver/internal/sdk/models/operations/getpersonphoto.go new file mode 100644 index 00000000..4d865674 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/getpersonphoto.go @@ -0,0 +1,69 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "io" + "mockserver/internal/sdk/models/components" +) + +type GetPersonPhotoRequest struct { + // The obfuscated ID of the person whose photo to retrieve. + PersonID string `pathParam:"style=simple,explode=false,name=person_id"` + // Optional datasource override for crawled photos (e.g. AZURE, GDRIVE, OKTA). When omitted, the datasource is derived from the person's stored photo URL or the deployment's primary person datasource. + // + Ds *string `queryParam:"style=form,explode=true,name=ds"` +} + +func (o *GetPersonPhotoRequest) GetPersonID() string { + if o == nil { + return "" + } + return o.PersonID +} + +func (o *GetPersonPhotoRequest) GetDs() *string { + if o == nil { + return nil + } + return o.Ds +} + +type GetPersonPhotoResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Photo bytes returned successfully. + // The Close method must be called on this field, even if it is not used, to prevent resource leaks. + TwoHundredImagePngResponseStream io.ReadCloser + // Photo bytes returned successfully. + // The Close method must be called on this field, even if it is not used, to prevent resource leaks. + TwoHundredImageJpegResponseStream io.ReadCloser + Headers map[string][]string +} + +func (o *GetPersonPhotoResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *GetPersonPhotoResponse) GetTwoHundredImagePngResponseStream() io.ReadCloser { + if o == nil { + return nil + } + return o.TwoHundredImagePngResponseStream +} + +func (o *GetPersonPhotoResponse) GetTwoHundredImageJpegResponseStream() io.ReadCloser { + if o == nil { + return nil + } + return o.TwoHundredImageJpegResponseStream +} + +func (o *GetPersonPhotoResponse) GetHeaders() map[string][]string { + if o == nil { + return map[string][]string{} + } + return o.Headers +} diff --git a/tests/mockserver/internal/sdk/models/operations/getpin.go b/tests/mockserver/internal/sdk/models/operations/getpin.go index 9ccb680e..0292ece8 100644 --- a/tests/mockserver/internal/sdk/models/operations/getpin.go +++ b/tests/mockserver/internal/sdk/models/operations/getpin.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type GetpinRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Get pin request + Body components.GetPinRequest `request:"mediaType=application/json"` +} + +func (o *GetpinRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *GetpinRequest) GetBody() components.GetPinRequest { + if o == nil { + return components.GetPinRequest{} + } + return o.Body +} + type GetpinResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/getrestapiindexcustommetadataschemagroupname.go b/tests/mockserver/internal/sdk/models/operations/getrestapiindexcustommetadataschemagroupname.go new file mode 100644 index 00000000..e38d331a --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/getrestapiindexcustommetadataschemagroupname.go @@ -0,0 +1,39 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type GetRestAPIIndexCustomMetadataSchemaGroupNameRequest struct { + // Name of the metadata group schema + GroupName string `pathParam:"style=simple,explode=false,name=groupName"` +} + +func (o *GetRestAPIIndexCustomMetadataSchemaGroupNameRequest) GetGroupName() string { + if o == nil { + return "" + } + return o.GroupName +} + +type GetRestAPIIndexCustomMetadataSchemaGroupNameResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + CustomMetadataSchema *components.CustomMetadataSchema +} + +func (o *GetRestAPIIndexCustomMetadataSchemaGroupNameResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *GetRestAPIIndexCustomMetadataSchemaGroupNameResponse) GetCustomMetadataSchema() *components.CustomMetadataSchema { + if o == nil { + return nil + } + return o.CustomMetadataSchema +} diff --git a/tests/mockserver/internal/sdk/models/operations/getshortcut.go b/tests/mockserver/internal/sdk/models/operations/getshortcut.go index 032c32c5..feebc437 100644 --- a/tests/mockserver/internal/sdk/models/operations/getshortcut.go +++ b/tests/mockserver/internal/sdk/models/operations/getshortcut.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type GetshortcutRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // GetShortcut request + Body components.GetShortcutRequestUnion `request:"mediaType=application/json"` +} + +func (o *GetshortcutRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *GetshortcutRequest) GetBody() components.GetShortcutRequestUnion { + if o == nil { + return components.GetShortcutRequestUnion{} + } + return o.Body +} + type GetshortcutResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/insights.go b/tests/mockserver/internal/sdk/models/operations/insights.go index 0f883502..e644932e 100644 --- a/tests/mockserver/internal/sdk/models/operations/insights.go +++ b/tests/mockserver/internal/sdk/models/operations/insights.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type InsightsRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Includes request parameters for insights requests. + Body components.InsightsRequest `request:"mediaType=application/json"` +} + +func (o *InsightsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *InsightsRequest) GetBody() components.InsightsRequest { + if o == nil { + return components.InsightsRequest{} + } + return o.Body +} + type InsightsResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/listanswers.go b/tests/mockserver/internal/sdk/models/operations/listanswers.go index 2229cf7f..f001b009 100644 --- a/tests/mockserver/internal/sdk/models/operations/listanswers.go +++ b/tests/mockserver/internal/sdk/models/operations/listanswers.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type ListanswersRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // ListAnswers request + Body components.ListAnswersRequest `request:"mediaType=application/json"` +} + +func (o *ListanswersRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *ListanswersRequest) GetBody() components.ListAnswersRequest { + if o == nil { + return components.ListAnswersRequest{} + } + return o.Body +} + type ListanswersResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/listchats.go b/tests/mockserver/internal/sdk/models/operations/listchats.go index 36a64f6c..404637d2 100644 --- a/tests/mockserver/internal/sdk/models/operations/listchats.go +++ b/tests/mockserver/internal/sdk/models/operations/listchats.go @@ -7,10 +7,19 @@ import ( ) type ListchatsRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. TimezoneOffset *int64 `queryParam:"style=form,explode=true,name=timezoneOffset"` } +func (o *ListchatsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *ListchatsRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/listcollections.go b/tests/mockserver/internal/sdk/models/operations/listcollections.go index 9efddbd6..423a2c49 100644 --- a/tests/mockserver/internal/sdk/models/operations/listcollections.go +++ b/tests/mockserver/internal/sdk/models/operations/listcollections.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type ListcollectionsRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // ListCollections request + Body components.ListCollectionsRequest `request:"mediaType=application/json"` +} + +func (o *ListcollectionsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *ListcollectionsRequest) GetBody() components.ListCollectionsRequest { + if o == nil { + return components.ListCollectionsRequest{} + } + return o.Body +} + type ListcollectionsResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/listentities.go b/tests/mockserver/internal/sdk/models/operations/listentities.go index d05441f9..ee93a302 100644 --- a/tests/mockserver/internal/sdk/models/operations/listentities.go +++ b/tests/mockserver/internal/sdk/models/operations/listentities.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type ListentitiesRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // List people request + Body components.ListEntitiesRequest `request:"mediaType=application/json"` +} + +func (o *ListentitiesRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *ListentitiesRequest) GetBody() components.ListEntitiesRequest { + if o == nil { + return components.ListEntitiesRequest{} + } + return o.Body +} + type ListentitiesResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/listfindingsexports.go b/tests/mockserver/internal/sdk/models/operations/listfindingsexports.go new file mode 100644 index 00000000..3ac36527 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/listfindingsexports.go @@ -0,0 +1,27 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type ListfindingsexportsResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + ListDlpFindingsExportsResponse *components.ListDlpFindingsExportsResponse +} + +func (o *ListfindingsexportsResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *ListfindingsexportsResponse) GetListDlpFindingsExportsResponse() *components.ListDlpFindingsExportsResponse { + if o == nil { + return nil + } + return o.ListDlpFindingsExportsResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/listpins.go b/tests/mockserver/internal/sdk/models/operations/listpins.go index 45c93a45..ea87433e 100644 --- a/tests/mockserver/internal/sdk/models/operations/listpins.go +++ b/tests/mockserver/internal/sdk/models/operations/listpins.go @@ -6,8 +6,29 @@ import ( "mockserver/internal/sdk/models/components" ) -// ListpinsRequest - List pins request +// ListpinsRequestBody - List pins request +type ListpinsRequestBody struct { +} + type ListpinsRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // List pins request + Body ListpinsRequestBody `request:"mediaType=application/json"` +} + +func (o *ListpinsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *ListpinsRequest) GetBody() ListpinsRequestBody { + if o == nil { + return ListpinsRequestBody{} + } + return o.Body } type ListpinsResponse struct { diff --git a/tests/mockserver/internal/sdk/models/operations/listshortcuts.go b/tests/mockserver/internal/sdk/models/operations/listshortcuts.go index a5b0962f..216616d5 100644 --- a/tests/mockserver/internal/sdk/models/operations/listshortcuts.go +++ b/tests/mockserver/internal/sdk/models/operations/listshortcuts.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type ListshortcutsRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Filters, sorters, paging params required for pagination + Body components.ListShortcutsPaginatedRequest `request:"mediaType=application/json"` +} + +func (o *ListshortcutsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *ListshortcutsRequest) GetBody() components.ListShortcutsPaginatedRequest { + if o == nil { + return components.ListShortcutsPaginatedRequest{} + } + return o.Body +} + type ListshortcutsResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/listverifications.go b/tests/mockserver/internal/sdk/models/operations/listverifications.go index 13015ee5..9ca1324d 100644 --- a/tests/mockserver/internal/sdk/models/operations/listverifications.go +++ b/tests/mockserver/internal/sdk/models/operations/listverifications.go @@ -9,6 +9,8 @@ import ( type ListverificationsRequest struct { // Maximum number of documents to return Count *int64 `queryParam:"style=form,explode=true,name=count"` + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` } func (o *ListverificationsRequest) GetCount() *int64 { @@ -18,6 +20,13 @@ func (o *ListverificationsRequest) GetCount() *int64 { return o.Count } +func (o *ListverificationsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + type ListverificationsResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/messages.go b/tests/mockserver/internal/sdk/models/operations/messages.go index c33c0888..f978753b 100644 --- a/tests/mockserver/internal/sdk/models/operations/messages.go +++ b/tests/mockserver/internal/sdk/models/operations/messages.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type MessagesRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Includes request params such as the id for channel/message and direction. + Body components.MessagesRequest `request:"mediaType=application/json"` +} + +func (o *MessagesRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *MessagesRequest) GetBody() components.MessagesRequest { + if o == nil { + return components.MessagesRequest{} + } + return o.Body +} + type MessagesResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/people.go b/tests/mockserver/internal/sdk/models/operations/people.go index fe1bf61d..bfd1b518 100644 --- a/tests/mockserver/internal/sdk/models/operations/people.go +++ b/tests/mockserver/internal/sdk/models/operations/people.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type PeopleRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // People request + Body components.PeopleRequest `request:"mediaType=application/json"` +} + +func (o *PeopleRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *PeopleRequest) GetBody() components.PeopleRequest { + if o == nil { + return components.PeopleRequest{} + } + return o.Body +} + type PeopleResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/pin.go b/tests/mockserver/internal/sdk/models/operations/pin.go index ba2d47e1..d6f74b3f 100644 --- a/tests/mockserver/internal/sdk/models/operations/pin.go +++ b/tests/mockserver/internal/sdk/models/operations/pin.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type PinRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Details about the document and query for the pin. + Body components.PinRequest `request:"mediaType=application/json"` +} + +func (o *PinRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *PinRequest) GetBody() components.PinRequest { + if o == nil { + return components.PinRequest{} + } + return o.Body +} + type PinResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcedocumentevents.go b/tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcedocumentevents.go new file mode 100644 index 00000000..33447581 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/postapiindexv1debugdatasourcedocumentevents.go @@ -0,0 +1,47 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PostAPIIndexV1DebugDatasourceDocumentEventsRequest struct { + // The datasource to which the document belongs + Datasource string `pathParam:"style=simple,explode=false,name=datasource"` + Body components.DebugDocumentLifecycleRequest `request:"mediaType=application/json"` +} + +func (o *PostAPIIndexV1DebugDatasourceDocumentEventsRequest) GetDatasource() string { + if o == nil { + return "" + } + return o.Datasource +} + +func (o *PostAPIIndexV1DebugDatasourceDocumentEventsRequest) GetBody() components.DebugDocumentLifecycleRequest { + if o == nil { + return components.DebugDocumentLifecycleRequest{} + } + return o.Body +} + +type PostAPIIndexV1DebugDatasourceDocumentEventsResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + DebugDocumentLifecycleResponse *components.DebugDocumentLifecycleResponse +} + +func (o *PostAPIIndexV1DebugDatasourceDocumentEventsResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PostAPIIndexV1DebugDatasourceDocumentEventsResponse) GetDebugDocumentLifecycleResponse() *components.DebugDocumentLifecycleResponse { + if o == nil { + return nil + } + return o.DebugDocumentLifecycleResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/putrestapiindexcustommetadataschemagroupname.go b/tests/mockserver/internal/sdk/models/operations/putrestapiindexcustommetadataschemagroupname.go new file mode 100644 index 00000000..8aabd064 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/putrestapiindexcustommetadataschemagroupname.go @@ -0,0 +1,47 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PutRestAPIIndexCustomMetadataSchemaGroupNameRequest struct { + // Name of the metadata group schema + GroupName string `pathParam:"style=simple,explode=false,name=groupName"` + Body components.CustomMetadataSchema `request:"mediaType=application/json"` +} + +func (o *PutRestAPIIndexCustomMetadataSchemaGroupNameRequest) GetGroupName() string { + if o == nil { + return "" + } + return o.GroupName +} + +func (o *PutRestAPIIndexCustomMetadataSchemaGroupNameRequest) GetBody() components.CustomMetadataSchema { + if o == nil { + return components.CustomMetadataSchema{} + } + return o.Body +} + +type PutRestAPIIndexCustomMetadataSchemaGroupNameResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + SuccessResponse *components.SuccessResponse +} + +func (o *PutRestAPIIndexCustomMetadataSchemaGroupNameResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PutRestAPIIndexCustomMetadataSchemaGroupNameResponse) GetSuccessResponse() *components.SuccessResponse { + if o == nil { + return nil + } + return o.SuccessResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/putrestapiindexdocumentdocidcustommetadatagroupname.go b/tests/mockserver/internal/sdk/models/operations/putrestapiindexdocumentdocidcustommetadatagroupname.go new file mode 100644 index 00000000..2722a184 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/putrestapiindexdocumentdocidcustommetadatagroupname.go @@ -0,0 +1,56 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest struct { + // Unique Glean identifier of the document + DocID string `pathParam:"style=simple,explode=false,name=docId"` + // Name of the metadata group as specified while adding schema + GroupName string `pathParam:"style=simple,explode=false,name=groupName"` + Body components.CustomMetadataPutRequest `request:"mediaType=application/json"` +} + +func (o *PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest) GetDocID() string { + if o == nil { + return "" + } + return o.DocID +} + +func (o *PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest) GetGroupName() string { + if o == nil { + return "" + } + return o.GroupName +} + +func (o *PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameRequest) GetBody() components.CustomMetadataPutRequest { + if o == nil { + return components.CustomMetadataPutRequest{} + } + return o.Body +} + +type PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + SuccessResponse *components.SuccessResponse +} + +func (o *PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PutRestAPIIndexDocumentDocIDCustomMetadataGroupNameResponse) GetSuccessResponse() *components.SuccessResponse { + if o == nil { + return nil + } + return o.SuccessResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/recommendations.go b/tests/mockserver/internal/sdk/models/operations/recommendations.go index 9c74d480..1a7d11cd 100644 --- a/tests/mockserver/internal/sdk/models/operations/recommendations.go +++ b/tests/mockserver/internal/sdk/models/operations/recommendations.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type RecommendationsRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Recommendations request + Body components.RecommendationsRequest `request:"mediaType=application/json"` +} + +func (o *RecommendationsRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *RecommendationsRequest) GetBody() components.RecommendationsRequest { + if o == nil { + return components.RecommendationsRequest{} + } + return o.Body +} + type RecommendationsResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/rotatedatasourcecredentials.go b/tests/mockserver/internal/sdk/models/operations/rotatedatasourcecredentials.go new file mode 100644 index 00000000..f5ac0b26 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/rotatedatasourcecredentials.go @@ -0,0 +1,47 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" +) + +type RotateDatasourceCredentialsRequest struct { + // The full datasource instance identifier (e.g. o365sharepoint_abc123) + DatasourceInstanceID string `pathParam:"style=simple,explode=false,name=datasourceInstanceId"` + Body components.RotateDatasourceCredentialsRequest `request:"mediaType=application/json"` +} + +func (o *RotateDatasourceCredentialsRequest) GetDatasourceInstanceID() string { + if o == nil { + return "" + } + return o.DatasourceInstanceID +} + +func (o *RotateDatasourceCredentialsRequest) GetBody() components.RotateDatasourceCredentialsRequest { + if o == nil { + return components.RotateDatasourceCredentialsRequest{} + } + return o.Body +} + +type RotateDatasourceCredentialsResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // OK + DatasourceCredentialStatusResponse *components.DatasourceCredentialStatusResponse +} + +func (o *RotateDatasourceCredentialsResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *RotateDatasourceCredentialsResponse) GetDatasourceCredentialStatusResponse() *components.DatasourceCredentialStatusResponse { + if o == nil { + return nil + } + return o.DatasourceCredentialStatusResponse +} diff --git a/tests/mockserver/internal/sdk/models/operations/search.go b/tests/mockserver/internal/sdk/models/operations/search.go index 6b1d9873..7467c541 100644 --- a/tests/mockserver/internal/sdk/models/operations/search.go +++ b/tests/mockserver/internal/sdk/models/operations/search.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type SearchRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Search request + Body components.SearchRequest `request:"mediaType=application/json"` +} + +func (o *SearchRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *SearchRequest) GetBody() components.SearchRequest { + if o == nil { + return components.SearchRequest{} + } + return o.Body +} + type SearchResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/summarize.go b/tests/mockserver/internal/sdk/models/operations/summarize.go index 90cc598d..9bd6a38a 100644 --- a/tests/mockserver/internal/sdk/models/operations/summarize.go +++ b/tests/mockserver/internal/sdk/models/operations/summarize.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type SummarizeRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Includes request params such as the query and specs of the documents to summarize. + Body components.SummarizeRequest `request:"mediaType=application/json"` +} + +func (o *SummarizeRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *SummarizeRequest) GetBody() components.SummarizeRequest { + if o == nil { + return components.SummarizeRequest{} + } + return o.Body +} + type SummarizeResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/unpin.go b/tests/mockserver/internal/sdk/models/operations/unpin.go index 4bff2a3c..f6aeca75 100644 --- a/tests/mockserver/internal/sdk/models/operations/unpin.go +++ b/tests/mockserver/internal/sdk/models/operations/unpin.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type UnpinRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Details about the pin being unpinned. + Body components.Unpin `request:"mediaType=application/json"` +} + +func (o *UnpinRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *UnpinRequest) GetBody() components.Unpin { + if o == nil { + return components.Unpin{} + } + return o.Body +} + type UnpinResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` } diff --git a/tests/mockserver/internal/sdk/models/operations/updateannouncement.go b/tests/mockserver/internal/sdk/models/operations/updateannouncement.go index 927436ef..4cc872ff 100644 --- a/tests/mockserver/internal/sdk/models/operations/updateannouncement.go +++ b/tests/mockserver/internal/sdk/models/operations/updateannouncement.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type UpdateannouncementRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Announcement content. Id need to be specified for the announcement. + Body components.UpdateAnnouncementRequest `request:"mediaType=application/json"` +} + +func (o *UpdateannouncementRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *UpdateannouncementRequest) GetBody() components.UpdateAnnouncementRequest { + if o == nil { + return components.UpdateAnnouncementRequest{} + } + return o.Body +} + type UpdateannouncementResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK 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/operations/updateshortcut.go b/tests/mockserver/internal/sdk/models/operations/updateshortcut.go index ebfd6f72..f16ddd5e 100644 --- a/tests/mockserver/internal/sdk/models/operations/updateshortcut.go +++ b/tests/mockserver/internal/sdk/models/operations/updateshortcut.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type UpdateshortcutRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Shortcut content. Id need to be specified for the shortcut. + Body components.UpdateShortcutRequest `request:"mediaType=application/json"` +} + +func (o *UpdateshortcutRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *UpdateshortcutRequest) GetBody() components.UpdateShortcutRequest { + if o == nil { + return components.UpdateShortcutRequest{} + } + return o.Body +} + type UpdateshortcutResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/operations/uploadchatfiles.go b/tests/mockserver/internal/sdk/models/operations/uploadchatfiles.go index ec14b549..24142696 100644 --- a/tests/mockserver/internal/sdk/models/operations/uploadchatfiles.go +++ b/tests/mockserver/internal/sdk/models/operations/uploadchatfiles.go @@ -7,11 +7,20 @@ import ( ) type UploadchatfilesRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` // The offset of the client's timezone in minutes from UTC. e.g. PDT is -420 because it's 7 hours behind UTC. TimezoneOffset *int64 `queryParam:"style=form,explode=true,name=timezoneOffset"` Body components.UploadChatFilesRequest `request:"mediaType=multipart/form-data"` } +func (o *UploadchatfilesRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + func (o *UploadchatfilesRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/verify.go b/tests/mockserver/internal/sdk/models/operations/verify.go index 1f2fc93e..502b190f 100644 --- a/tests/mockserver/internal/sdk/models/operations/verify.go +++ b/tests/mockserver/internal/sdk/models/operations/verify.go @@ -6,6 +6,27 @@ import ( "mockserver/internal/sdk/models/components" ) +type VerifyRequest struct { + // The client's preferred locale in rfc5646 format (e.g. `en`, `ja`, `pt-BR`). If omitted, the `Accept-Language` will be used. If not present or not supported, defaults to the closest match or `en`. + Locale *string `queryParam:"style=form,explode=true,name=locale"` + // Details about the verification request. + Body components.VerifyRequest `request:"mediaType=application/json"` +} + +func (o *VerifyRequest) GetLocale() *string { + if o == nil { + return nil + } + return o.Locale +} + +func (o *VerifyRequest) GetBody() components.VerifyRequest { + if o == nil { + return components.VerifyRequest{} + } + return o.Body +} + type VerifyResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // OK diff --git a/tests/mockserver/internal/sdk/models/sdkerrors/errorinforesponse.go b/tests/mockserver/internal/sdk/models/sdkerrors/errorinforesponse.go new file mode 100644 index 00000000..75ecfbc9 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/sdkerrors/errorinforesponse.go @@ -0,0 +1,24 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package sdkerrors + +import ( + "encoding/json" + "mockserver/internal/sdk/models/components" +) + +// ErrorInfoResponse - Error response for custom metadata operations +type ErrorInfoResponse struct { + // Error message describing what went wrong + Error_ string `json:"error"` + // Additional details about the error + Message *string `json:"message,omitempty"` + HTTPMeta components.HTTPMetadata `json:"-"` +} + +var _ error = &ErrorInfoResponse{} + +func (e *ErrorInfoResponse) Error() string { + data, _ := json.Marshal(e) + return string(data) +} 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 5870c8ac..05af2574 100644 --- a/tests/mockserver/internal/sdk/models/sdkerrors/gleandataerror.go +++ b/tests/mockserver/internal/sdk/models/sdkerrors/gleandataerror.go @@ -15,7 +15,9 @@ type GleanDataError struct { // Indicates results could not be fetched due to invalid operators in the query. InvalidOperators []components.InvalidOperatorValueError `json:"invalidOperators,omitempty"` ErrorMessages []components.ErrorMessage `json:"errorMessages,omitempty"` - HTTPMeta components.HTTPMetadata `json:"-"` + // Indicates the federated search results could not be fetched due to rate limiting. + 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 764f6454..e5aafa7b 100644 --- a/tests/mockserver/internal/sdk/utils/json.go +++ b/tests/mockserver/internal/sdk/utils/json.go @@ -19,15 +19,28 @@ import ( ) func MarshalJSON(v interface{}, tag reflect.StructTag, topLevel bool) ([]byte, error) { - typ, val := dereferencePointers(reflect.TypeOf(v), reflect.ValueOf(v)) + // Handle nil interface early + if v == nil { + return []byte("null"), nil + } + + // Check for nil pointer before dereferencing to avoid creating invalid reflect.Value + origVal := reflect.ValueOf(v) + if origVal.Kind() == reflect.Ptr && origVal.IsNil() { + return []byte("null"), nil + } + + typ, val := dereferencePointers(reflect.TypeOf(v), origVal) switch { case isModelType(typ): - if topLevel { + // When topLevel=true, only use json.Marshal if the type has a custom MarshalJSON + // to ensure nested structs with custom tags (like integer:"string") are handled correctly + if topLevel && implementsJSONMarshaler(v) { return json.Marshal(v) } - if isNil(typ, val) { + if isNil(typ, val) || !val.IsValid() { return []byte("null"), nil } @@ -40,19 +53,26 @@ func MarshalJSON(v interface{}, tag reflect.StructTag, topLevel bool) ([]byte, e fieldName := field.Name omitEmpty := false + omitZero := false jsonTag := field.Tag.Get("json") if jsonTag != "" { for _, tag := range strings.Split(jsonTag, ",") { if tag == "omitempty" { omitEmpty = true + } else if tag == "omitzero" { + omitZero = true } else { fieldName = tag } } } - if (isNil(field.Type, fieldVal) || isEmpty(field.Type, fieldVal)) && field.Tag.Get("const") == "" { - if omitEmpty { + if (omitEmpty || omitZero) && field.Tag.Get("const") == "" { + if isNil(field.Type, fieldVal) || isEmpty(field.Type, fieldVal) { + continue + } + + if omitZero && fieldVal.IsZero() { continue } } @@ -155,7 +175,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 } } @@ -286,6 +306,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() { @@ -350,12 +374,36 @@ func marshalValue(v interface{}, tag reflect.StructTag) (json.RawMessage, error) return []byte(fmt.Sprintf(`%f`, f)), nil } + default: + // For model types without custom MarshalJSON, use field processing + // to handle custom tags like integer:"string" + if isModelType(typ) && !implementsJSONMarshaler(v) { + return MarshalJSON(v, "", false) + } } } return json.Marshal(v) } +func implementsJSONMarshaler(v interface{}) bool { + marshalerType := reflect.TypeOf((*json.Marshaler)(nil)).Elem() + vType := reflect.TypeOf(v) + if vType.Implements(marshalerType) { + return true + } + if vType.Kind() == reflect.Ptr { + // For double pointers (e.g., **TypeA), check if the inner pointer type + // implements the interface (e.g., *TypeA) + if vType.Elem().Implements(marshalerType) { + return true + } + // Also check if pointer to element implements it + return reflect.PtrTo(vType.Elem()).Implements(marshalerType) + } + return reflect.PtrTo(vType).Implements(marshalerType) +} + func handleDefaultConstValue(tagValue string, val interface{}, tag reflect.StructTag) json.RawMessage { if tagValue == "null" { return []byte("null") @@ -389,6 +437,9 @@ func handleDefaultConstValue(tagValue string, val interface{}, tag reflect.Struc return []byte(fmt.Sprintf(`"%s"`, tagValue)) default: if typ.Kind() == reflect.String { + if strings.HasPrefix(tagValue, "\"") && strings.HasSuffix(tagValue, "\"") { + return []byte(tagValue) + } return []byte(fmt.Sprintf("%q", tagValue)) } } 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_activities.py b/tests/test_activities.py index dc6994d4..db4221c9 100644 --- a/tests/test_activities.py +++ b/tests/test_activities.py @@ -20,6 +20,6 @@ def test_activities_feedback(): "tracking_tokens": [ "trackingTokens", ], - "event": models.Event.VIEW, + "event": models.FeedbackEvent.VIEW, } ) diff --git a/tests/test_authentication.py b/tests/test_authentication.py new file mode 100644 index 00000000..438848aa --- /dev/null +++ b/tests/test_authentication.py @@ -0,0 +1,19 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from glean.api_client import Glean +import os +from tests.test_client import create_test_http_client + + +def test_authentication_checkdatasourceauth(): + test_http_client = create_test_http_client("checkdatasourceauth") + + 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.authentication.checkdatasourceauth() + assert res is not None diff --git a/tests/test_chat_sdk.py b/tests/test_chat_sdk.py new file mode 100644 index 00000000..f82975aa --- /dev/null +++ b/tests/test_chat_sdk.py @@ -0,0 +1,19 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from glean.api_client import Glean +import os +from tests.test_client import create_test_http_client + + +def test_chat_sdk_get_chat_file(): + test_http_client = create_test_http_client("getChatFile") + + 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.chat.get_chat_file(file_id="") + assert res is not None diff --git a/tests/test_client_chat.py b/tests/test_client_chat.py index 33bab29a..6be5e6a7 100644 --- a/tests/test_client_chat.py +++ b/tests/test_client_chat.py @@ -715,34 +715,6 @@ def test_client_chat_chat_stream_update_response(): ], ), ), - board=models.AnswerBoard( - name="", - description="stage atop minion which best sturdy enormously afore circumference duh", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=647529, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), collections=[ models.Collection( name="", @@ -1035,34 +1007,6 @@ def test_client_chat_chat_stream_update_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="after er grouchy stained plus buck", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=668238, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -1350,34 +1294,6 @@ def test_client_chat_chat_stream_update_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="finally waist inasmuch woot ignorance", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=291881, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -1445,34 +1361,6 @@ def test_client_chat_chat_stream_update_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="geez huzzah oof webbed certainly degenerate along inure cow zowie", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=656491, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -1693,34 +1581,6 @@ def test_client_chat_chat_stream_update_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="the across instead into aching where descent shark lest times", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=760885, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -1788,34 +1648,6 @@ def test_client_chat_chat_stream_update_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="impanel hydrant spectacles justly hence absolve after sleet drat", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=603732, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -2009,34 +1841,6 @@ def test_client_chat_chat_stream_update_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="amongst uh-huh reassemble upset concrete", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=911324, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -2104,34 +1908,6 @@ def test_client_chat_chat_stream_update_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="psst um devil gazebo save", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=45693, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -2321,34 +2097,6 @@ def test_client_chat_chat_stream_update_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="except gadzooks geez", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=567840, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -2416,34 +2164,6 @@ def test_client_chat_chat_stream_update_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="surprise outside whether ack", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=621220, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -3023,34 +2743,6 @@ def test_client_chat_chat_stream_update_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="short-term suffice why rightfully", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=974132, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -3118,34 +2810,6 @@ def test_client_chat_chat_stream_update_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="er reconsideration triumphantly meaty yearly fragrant delightfully though painfully robust", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=804940, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -3339,34 +3003,6 @@ def test_client_chat_chat_stream_update_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="planula presume mismatch of commandeer ready mortally although", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=711093, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -3434,34 +3070,6 @@ def test_client_chat_chat_stream_update_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="rundown recklessly favorite supposing dull politely soon ignorant", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=171217, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -3655,34 +3263,6 @@ def test_client_chat_chat_stream_update_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="striking confound wilderness but rapid an convection scoop litter than", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=569913, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -3750,34 +3330,6 @@ def test_client_chat_chat_stream_update_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="meaty impure round", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=31007, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -3994,34 +3546,6 @@ def test_client_chat_chat_stream_update_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="intrigue psst furthermore personalise actually showboat eek punctuation ownership ah", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=785749, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -4089,34 +3613,6 @@ def test_client_chat_chat_stream_update_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="colorfully aha where", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=673010, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -4314,34 +3810,6 @@ def test_client_chat_chat_stream_update_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="hence inquisitively proud meh yahoo", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=165945, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -4409,34 +3877,6 @@ def test_client_chat_chat_stream_update_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="excluding severe amongst bump farm zowie prickly why", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=617911, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -4634,34 +4074,6 @@ def test_client_chat_chat_stream_update_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="approach hm gadzooks yahoo shameless underneath negative", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=111255, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -4729,34 +4141,6 @@ def test_client_chat_chat_stream_update_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="guidance zen cross-contamination ick pry mundane thoroughly oof ha", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=474526, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -5451,34 +4835,6 @@ def test_client_chat_chat_stream_citation_response(): ], ), ), - board=models.AnswerBoard( - name="", - description="extent emotional white oil buck", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=392138, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), collections=[ models.Collection( name="", @@ -5824,34 +5180,6 @@ def test_client_chat_chat_stream_citation_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="communicate prudent powerful considering quietly with tromp spring brr", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=595008, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -6152,34 +5480,6 @@ def test_client_chat_chat_stream_citation_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="materialise likewise ew bah scarper instead", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=291792, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -6247,34 +5547,6 @@ def test_client_chat_chat_stream_citation_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="heavenly status yippee whose blushing", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=983667, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -6464,34 +5736,6 @@ def test_client_chat_chat_stream_citation_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="manipulate explode out", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=605176, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -6559,34 +5803,6 @@ def test_client_chat_chat_stream_citation_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="complete help um live beyond for huzzah rowdy foot cross", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=402862, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -6776,34 +5992,6 @@ def test_client_chat_chat_stream_citation_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="lobotomise below psst duh interchange poetry", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=521402, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -6871,34 +6059,6 @@ def test_client_chat_chat_stream_citation_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="fashion bleakly thankfully indeed fully", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=723852, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -7283,34 +6443,6 @@ def test_client_chat_chat_stream_citation_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="minus oof dazzling ew for forearm utterly hm onto unexpectedly", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=808814, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -7378,34 +6510,6 @@ def test_client_chat_chat_stream_citation_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="elderly since boohoo appropriate righteously vice following complete impartial sans", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=315292, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -7603,34 +6707,6 @@ def test_client_chat_chat_stream_citation_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="netsuke stump terrorise ugh zowie", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=942095, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -7698,34 +6774,6 @@ def test_client_chat_chat_stream_citation_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="abaft tightly blah redound qua", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=843154, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -7915,34 +6963,6 @@ def test_client_chat_chat_stream_citation_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="gratefully failing square consequently discourse since", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=139991, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -8010,34 +7030,6 @@ def test_client_chat_chat_stream_citation_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="able mockingly boo entice softly furthermore woeful", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=33669, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -8660,34 +7652,6 @@ def test_client_chat_chat_stream_citation_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="affiliate who lamp blushing plait after violent", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=55380, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -8755,34 +7719,6 @@ def test_client_chat_chat_stream_citation_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="gee edge scholarship", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=632878, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -8976,34 +7912,6 @@ def test_client_chat_chat_stream_citation_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="rust forenenst phew immediately", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=277574, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -9071,34 +7979,6 @@ def test_client_chat_chat_stream_citation_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="blah lowball who moor following folklore as or", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=115719, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -9296,34 +8176,6 @@ def test_client_chat_chat_stream_citation_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="among under although ack gee atop horn", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=170010, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -9391,34 +8243,6 @@ def test_client_chat_chat_stream_citation_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="finally jaggedly nightlife surface", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=435267, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -9635,34 +8459,6 @@ def test_client_chat_chat_stream_citation_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="ah once gee", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=785222, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -9730,34 +8526,6 @@ def test_client_chat_chat_stream_citation_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="godparent before colorize", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=624868, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -9951,34 +8719,6 @@ def test_client_chat_chat_stream_citation_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="uh-huh ha notwithstanding so near troubled onto volunteer hm", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=38370, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -10046,34 +8786,6 @@ def test_client_chat_chat_stream_citation_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="meanwhile instead colorfully overheard", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=209097, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", @@ -10271,34 +8983,6 @@ def test_client_chat_chat_stream_citation_response(): ), ), ), - board=models.AnswerBoard( - name="", - description="indelible aha yuck loyally", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=278807, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), source_document=models.Document( metadata=models.DocumentMetadata( datasource="datasource", @@ -10366,34 +9050,6 @@ def test_client_chat_chat_stream_citation_response(): obfuscated_id="abc123", ), ), - answer_board=models.AnswerBoard( - name="", - description="frequent aw above ultimate into till pish husky wetly agitated", - audience_filters=[ - models.FacetFilter( - field_name="type", - values=[ - models.FacetFilterValue( - value="Spreadsheet", - relation_type=models.RelationType.EQUALS, - ), - models.FacetFilterValue( - value="Presentation", - relation_type=models.RelationType.EQUALS, - ), - ], - ), - ], - id=744434, - creator=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - updated_by=models.Person( - name="George Clooney", - obfuscated_id="abc123", - ), - ), code=models.Code( repo_name="scio", file_name="README.md", diff --git a/tests/test_client_documents.py b/tests/test_client_documents.py index da0882b2..96ebd8a4 100644 --- a/tests/test_client_documents.py +++ b/tests/test_client_documents.py @@ -45,7 +45,7 @@ def test_client_documents_getdocumentsbyfacets(): assert glean is not None res = glean.client.documents.retrieve_by_facets( - request={ + get_documents_by_facets_request={ "filter_sets": [ { "filters": [ diff --git a/tests/test_client_shortcuts.py b/tests/test_client_shortcuts.py index 6530e65f..1b3a5a00 100644 --- a/tests/test_client_shortcuts.py +++ b/tests/test_client_shortcuts.py @@ -30,7 +30,7 @@ def test_client_shortcuts_getshortcut(): assert glean is not None res = glean.client.shortcuts.retrieve( - request={ + get_shortcut_request={ "alias": "", } ) diff --git a/tests/test_custommetadata.py b/tests/test_custommetadata.py new file mode 100644 index 00000000..bf132667 --- /dev/null +++ b/tests/test_custommetadata.py @@ -0,0 +1,99 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from glean.api_client import Glean +import os +from tests.test_client import create_test_http_client + + +def test_custommetadata_put_rest_api_index_document_doc_id_custom_metadata_group_name_(): + test_http_client = create_test_http_client( + "put_/rest/api/index/document/{docId}/custom-metadata/{groupName}" + ) + + with Glean( + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.indexing.custom_metadata.upsert( + doc_id="", + group_name="", + custom_metadata=[], + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + ) + assert res is not None + + +def test_custommetadata_delete_rest_api_index_document_doc_id_custom_metadata_group_name_(): + test_http_client = create_test_http_client( + "delete_/rest/api/index/document/{docId}/custom-metadata/{groupName}" + ) + + with Glean( + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.indexing.custom_metadata.delete( + doc_id="", + group_name="", + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + ) + assert res is not None + + +def test_custommetadata_get_rest_api_index_custom_metadata_schema_group_name_(): + test_http_client = create_test_http_client( + "get_/rest/api/index/custom-metadata/schema/{groupName}" + ) + + with Glean( + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.indexing.custom_metadata.get_schema( + group_name="", + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + ) + assert res is not None + + +def test_custommetadata_put_rest_api_index_custom_metadata_schema_group_name_(): + test_http_client = create_test_http_client( + "put_/rest/api/index/custom-metadata/schema/{groupName}" + ) + + with Glean( + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.indexing.custom_metadata.upsert_schema( + group_name="", + metadata_keys=[], + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + ) + assert res is not None + + +def test_custommetadata_delete_rest_api_index_custom_metadata_schema_group_name_(): + test_http_client = create_test_http_client( + "delete_/rest/api/index/custom-metadata/schema/{groupName}" + ) + + with Glean( + client=test_http_client, + api_token=os.getenv("GLEAN_API_TOKEN", "value"), + ) as glean: + assert glean is not None + + res = glean.indexing.custom_metadata.delete_schema( + group_name="", + server_url=os.getenv("TEST_SERVER_URL", "http://localhost:18080"), + ) + assert res is not None diff --git a/tests/test_datasources.py b/tests/test_datasources.py index 8aaeb530..b36dd408 100644 --- a/tests/test_datasources.py +++ b/tests/test_datasources.py @@ -56,3 +56,76 @@ 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 + + +def test_datasources_get_datasource_credential_status(): + test_http_client = create_test_http_client("getDatasourceCredentialStatus") + + 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_credential_status( + datasource_instance_id="o365sharepoint_abc123" + ) + assert res is not None + + +def test_datasources_rotate_datasource_credentials(): + test_http_client = create_test_http_client("rotateDatasourceCredentials") + + 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.rotate_datasource_credentials( + datasource_instance_id="o365sharepoint_abc123", + credentials={ + "values": { + "key": {}, + }, + }, + ) + assert res is not None diff --git a/tests/test_entities.py b/tests/test_entities.py index 04ba72dd..c6b986f4 100644 --- a/tests/test_entities.py +++ b/tests/test_entities.py @@ -1,6 +1,7 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from glean.api_client import Glean, models +from glean.api_client.entities import GetPersonPhotoAcceptEnum import os import pytest from tests.test_client import create_test_http_client @@ -63,3 +64,19 @@ def test_entities_people(): ) def test_entities_teams(): pass + + +def test_entities_get_person_photo(): + test_http_client = create_test_http_client("getPersonPhoto") + + 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.entities.get_person_photo( + person_id="", accept_header_override=GetPersonPhotoAcceptEnum.IMAGE_PNG + ) + assert res is not None diff --git a/tests/test_governance.py b/tests/test_governance.py new file mode 100644 index 00000000..16b5840b --- /dev/null +++ b/tests/test_governance.py @@ -0,0 +1,27 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from glean.api_client import Glean +import os +import pytest +from tests.test_client import create_test_http_client + + +def test_governance_listfindingsexports(): + test_http_client = create_test_http_client("listfindingsexports") + + 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.governance.listfindingsexports() + assert res is not None + + +@pytest.mark.skip( + reason="incomplete test found please make sure to address the following errors: [`workflow step downloadfindingsexport.test contains criterion simple with invalid condition`, `workflow step downloadfindingsexport.test does not contain $contentType successCriteria and required for response body assertion`]" +) +def test_governance_downloadfindingsexport(): + pass diff --git a/tests/test_insights.py b/tests/test_insights.py index 301907d8..6cc8aeec 100644 --- a/tests/test_insights.py +++ b/tests/test_insights.py @@ -1,6 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" -from glean.api_client import Glean, models +from glean.api_client import Glean import os from tests.test_client import create_test_http_client @@ -15,10 +15,5 @@ def test_insights_insights(): ) as glean: assert glean is not None - res = glean.client.insights.retrieve( - categories=[ - models.InsightsRequestCategory.CONTENT, - models.InsightsRequestCategory.CONTENT, - ] - ) + res = glean.client.insights.retrieve() assert res is not None diff --git a/tests/test_messages.py b/tests/test_messages.py index 36643db3..132005ec 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.FACEBOOKWORKPLACE, timestamp_millis=558834, ) assert res is not None diff --git a/tests/test_pins.py b/tests/test_pins.py index 6f6cb1cf..fae672bb 100644 --- a/tests/test_pins.py +++ b/tests/test_pins.py @@ -59,7 +59,7 @@ def test_pins_listpins(): ) as glean: assert glean is not None - res = glean.client.pins.list(request={}) + res = glean.client.pins.list(request_body={}) assert res is not None diff --git a/tests/test_server_url_normalizer.py b/tests/test_server_url_normalizer.py new file mode 100644 index 00000000..ef9f8696 --- /dev/null +++ b/tests/test_server_url_normalizer.py @@ -0,0 +1,71 @@ +"""Tests for the server URL normalizer hook.""" + +from unittest.mock import Mock + +import pytest + +from src.glean.api_client._hooks.server_url_normalizer import ( + ServerURLNormalizerHook, + normalize_server_url, +) +from src.glean.api_client.httpclient import HttpClient + + +class TestNormalizeServerUrl: + """Test cases for the normalize_server_url function.""" + + def test_no_scheme_prepends_https(self): + assert normalize_server_url("example.glean.com") == "https://example.glean.com" + + def test_https_preserved(self): + assert normalize_server_url("https://example.glean.com") == "https://example.glean.com" + + def test_http_localhost_preserved(self): + assert normalize_server_url("http://localhost:8080") == "http://localhost:8080" + + def test_http_non_localhost_preserved(self): + assert normalize_server_url("http://example.glean.com") == "http://example.glean.com" + + def test_trailing_slash_stripped(self): + assert normalize_server_url("https://example.glean.com/") == "https://example.glean.com" + + def test_multiple_trailing_slashes_stripped(self): + assert normalize_server_url("https://example.glean.com///") == "https://example.glean.com" + + def test_no_scheme_with_trailing_slash(self): + assert normalize_server_url("example.glean.com/") == "https://example.glean.com" + + def test_url_with_path(self): + assert normalize_server_url("https://example.glean.com/api/v1") == "https://example.glean.com/api/v1" + + def test_url_with_path_and_trailing_slash(self): + assert normalize_server_url("https://example.glean.com/api/v1/") == "https://example.glean.com/api/v1" + + def test_no_scheme_with_path(self): + assert normalize_server_url("example.glean.com/api/v1") == "https://example.glean.com/api/v1" + + def test_case_insensitive_scheme(self): + assert normalize_server_url("HTTPS://example.glean.com") == "HTTPS://example.glean.com" + assert normalize_server_url("HTTP://localhost") == "HTTP://localhost" + + +class TestServerURLNormalizerHook: + """Test cases for the ServerURLNormalizerHook.""" + + def setup_method(self): + self.hook = ServerURLNormalizerHook() + self.mock_client = Mock(spec=HttpClient) + + def test_sdk_init_normalizes_url(self): + result_url, result_client = self.hook.sdk_init("example.glean.com", self.mock_client) + assert result_url == "https://example.glean.com" + assert result_client == self.mock_client + + def test_sdk_init_preserves_client(self): + result_url, result_client = self.hook.sdk_init("https://example.glean.com", self.mock_client) + assert result_url == "https://example.glean.com" + assert result_client is self.mock_client + + +if __name__ == "__main__": + pytest.main([__file__]) diff --git a/tests/test_summarize.py b/tests/test_summarize.py index cac8e978..df71d57d 100644 --- a/tests/test_summarize.py +++ b/tests/test_summarize.py @@ -18,12 +18,12 @@ def test_summarize_summarize(): res = glean.client.documents.summarize( document_specs=[ { - "ugc_type": models.DocumentSpecUgcType1.SHORTCUTS, - "content_id": 602763, + "ugc_type": models.DocumentSpecUgcType2.ANNOUNCEMENTS, + "ugc_id": "", }, { - "ugc_type": models.DocumentSpecUgcType1.SHORTCUTS, - "content_id": 602763, + "ugc_type": models.DocumentSpecUgcType1.COLLECTIONS, + "content_id": 885812, }, ] ) diff --git a/tests/test_tools.py b/tests/test_tools.py index 1d25eef8..e9c3dac5 100644 --- a/tests/test_tools.py +++ b/tests/test_tools.py @@ -39,3 +39,33 @@ def test_tools_post_rest_api_v1_tools_call(): }, ) assert res is not None + + +def test_tools_get_action_pack_auth_status(): + test_http_client = create_test_http_client("getActionPackAuthStatus") + + 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.tools.get_action_pack_auth_status(action_pack_id="") + assert res is not None + + +def test_tools_authorize_action_pack(): + test_http_client = create_test_http_client("authorizeActionPack") + + 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.tools.authorize_action_pack( + action_pack_id="", return_url="https://merry-allocation.org/" + ) + assert res is not None diff --git a/tests/test_x_glean_hook.py b/tests/test_x_glean_hook.py new file mode 100644 index 00000000..1c4dcdd5 --- /dev/null +++ b/tests/test_x_glean_hook.py @@ -0,0 +1,265 @@ +"""Tests for the XGlean hook that sets X-Glean headers.""" + +import os +from unittest.mock import Mock + +import httpx +import pytest + +from src.glean.api_client._hooks.x_glean import XGlean +from src.glean.api_client._hooks.types import BeforeRequestContext, HookContext +from src.glean.api_client.sdkconfiguration import SDKConfiguration + + +def create_mock_request() -> httpx.Request: + """Create a mock HTTP request for testing.""" + return httpx.Request("GET", "https://example.com/api/test") + + +def create_mock_context( + exclude_deprecated_after: str = None, + include_experimental: bool = None, +) -> BeforeRequestContext: + """Create a mock BeforeRequestContext with the given SDK configuration options.""" + config = Mock(spec=SDKConfiguration) + config.exclude_deprecated_after = exclude_deprecated_after + config.include_experimental = include_experimental + + hook_ctx = Mock(spec=HookContext) + hook_ctx.config = config + hook_ctx.base_url = "https://example.com" + hook_ctx.operation_id = "test-operation" + hook_ctx.oauth2_scopes = None + hook_ctx.security_source = None + + context = BeforeRequestContext(hook_ctx) + return context + + +class TestXGleanHook: + """Test cases for the XGlean hook.""" + + @pytest.fixture(autouse=True) + def clear_env_vars(self): + """Clear X-Glean environment variables before and after each test.""" + # Store original values + original_deprecated = os.environ.get("X_GLEAN_EXCLUDE_DEPRECATED_AFTER") + original_experimental = os.environ.get("X_GLEAN_INCLUDE_EXPERIMENTAL") + + # Clear for test + os.environ.pop("X_GLEAN_EXCLUDE_DEPRECATED_AFTER", None) + os.environ.pop("X_GLEAN_INCLUDE_EXPERIMENTAL", None) + + yield + + # Restore original values + if original_deprecated is not None: + os.environ["X_GLEAN_EXCLUDE_DEPRECATED_AFTER"] = original_deprecated + else: + os.environ.pop("X_GLEAN_EXCLUDE_DEPRECATED_AFTER", None) + + if original_experimental is not None: + os.environ["X_GLEAN_INCLUDE_EXPERIMENTAL"] = original_experimental + else: + os.environ.pop("X_GLEAN_INCLUDE_EXPERIMENTAL", None) + + def test_no_headers_when_neither_options_nor_env_vars_set(self): + """Should not set any X-Glean headers when nothing is configured.""" + hook = XGlean() + request = create_mock_request() + context = create_mock_context() + + result = hook.before_request(context, request) + + assert "X-Glean-Exclude-Deprecated-After" not in result.headers + assert "X-Glean-Experimental" not in result.headers + + def test_sets_deprecated_header_from_sdk_option(self): + """Should set X-Glean-Exclude-Deprecated-After header from SDK option.""" + hook = XGlean() + request = create_mock_request() + context = create_mock_context(exclude_deprecated_after="2026-10-15") + + result = hook.before_request(context, request) + + assert result.headers.get("X-Glean-Exclude-Deprecated-After") == "2026-10-15" + + def test_sets_experimental_header_when_include_experimental_is_true(self): + """Should set X-Glean-Experimental header when includeExperimental is True.""" + hook = XGlean() + request = create_mock_request() + context = create_mock_context(include_experimental=True) + + result = hook.before_request(context, request) + + assert result.headers.get("X-Glean-Experimental") == "true" + + def test_no_experimental_header_when_include_experimental_is_false(self): + """Should not set X-Glean-Experimental header when includeExperimental is False.""" + hook = XGlean() + request = create_mock_request() + context = create_mock_context(include_experimental=False) + + result = hook.before_request(context, request) + + assert "X-Glean-Experimental" not in result.headers + + def test_sets_both_headers_when_both_options_provided(self): + """Should set both headers when both options are provided.""" + hook = XGlean() + request = create_mock_request() + context = create_mock_context( + exclude_deprecated_after="2026-10-15", + include_experimental=True, + ) + + result = hook.before_request(context, request) + + assert result.headers.get("X-Glean-Exclude-Deprecated-After") == "2026-10-15" + assert result.headers.get("X-Glean-Experimental") == "true" + + def test_sets_deprecated_header_from_env_var(self): + """Should set X-Glean-Exclude-Deprecated-After header from environment variable.""" + os.environ["X_GLEAN_EXCLUDE_DEPRECATED_AFTER"] = "2027-01-01" + + hook = XGlean() + request = create_mock_request() + context = create_mock_context() + + result = hook.before_request(context, request) + + assert result.headers.get("X-Glean-Exclude-Deprecated-After") == "2027-01-01" + + def test_sets_experimental_header_from_env_var(self): + """Should set X-Glean-Experimental header from environment variable.""" + os.environ["X_GLEAN_INCLUDE_EXPERIMENTAL"] = "true" + + hook = XGlean() + request = create_mock_request() + context = create_mock_context() + + result = hook.before_request(context, request) + + assert result.headers.get("X-Glean-Experimental") == "true" + + def test_sets_both_headers_from_env_vars(self): + """Should set both headers from environment variables.""" + os.environ["X_GLEAN_EXCLUDE_DEPRECATED_AFTER"] = "2027-06-15" + os.environ["X_GLEAN_INCLUDE_EXPERIMENTAL"] = "true" + + hook = XGlean() + request = create_mock_request() + context = create_mock_context() + + result = hook.before_request(context, request) + + assert result.headers.get("X-Glean-Exclude-Deprecated-After") == "2027-06-15" + assert result.headers.get("X-Glean-Experimental") == "true" + + def test_env_var_takes_precedence_for_deprecated(self): + """Environment variable should take precedence over SDK option for deprecated.""" + os.environ["X_GLEAN_EXCLUDE_DEPRECATED_AFTER"] = "2027-12-31" + + hook = XGlean() + request = create_mock_request() + context = create_mock_context(exclude_deprecated_after="2026-01-01") + + result = hook.before_request(context, request) + + assert result.headers.get("X-Glean-Exclude-Deprecated-After") == "2027-12-31" + + def test_env_var_takes_precedence_for_experimental(self): + """Environment variable should take precedence over SDK option for experimental.""" + os.environ["X_GLEAN_INCLUDE_EXPERIMENTAL"] = "true" + + hook = XGlean() + request = create_mock_request() + context = create_mock_context(include_experimental=False) + + result = hook.before_request(context, request) + + assert result.headers.get("X-Glean-Experimental") == "true" + + def test_env_vars_take_precedence_for_both_headers(self): + """Environment variables should take precedence for both headers when all are set.""" + os.environ["X_GLEAN_EXCLUDE_DEPRECATED_AFTER"] = "2028-01-01" + os.environ["X_GLEAN_INCLUDE_EXPERIMENTAL"] = "true" + + hook = XGlean() + request = create_mock_request() + context = create_mock_context( + exclude_deprecated_after="2026-06-01", + include_experimental=False, + ) + + result = hook.before_request(context, request) + + assert result.headers.get("X-Glean-Exclude-Deprecated-After") == "2028-01-01" + assert result.headers.get("X-Glean-Experimental") == "true" + + def test_preserves_existing_headers(self): + """Should preserve existing headers when adding X-Glean headers.""" + hook = XGlean() + request = httpx.Request( + "GET", + "https://example.com/api/test", + headers={"Authorization": "Bearer token", "Content-Type": "application/json"}, + ) + context = create_mock_context( + exclude_deprecated_after="2026-10-15", + include_experimental=True, + ) + + result = hook.before_request(context, request) + + assert result.headers.get("Authorization") == "Bearer token" + assert result.headers.get("Content-Type") == "application/json" + assert result.headers.get("X-Glean-Exclude-Deprecated-After") == "2026-10-15" + assert result.headers.get("X-Glean-Experimental") == "true" + + def test_returns_httpx_request_instance(self): + """Should return an httpx.Request instance.""" + hook = XGlean() + request = create_mock_request() + context = create_mock_context(include_experimental=True) + + result = hook.before_request(context, request) + + assert isinstance(result, httpx.Request) + + def test_preserves_request_method_and_url(self): + """Should preserve the original request method and URL.""" + hook = XGlean() + request = httpx.Request("POST", "https://api.example.com/v1/search") + context = create_mock_context(include_experimental=True) + + result = hook.before_request(context, request) + + assert result.method == "POST" + assert str(result.url) == "https://api.example.com/v1/search" + + + def test_handles_multipart_streaming_request(self): + """Should handle multipart requests without raising RequestNotRead. + + Multipart file uploads use a streaming body. The previous implementation + reconstructed the request via httpx.Request(..., content=request.content), + which raised httpx.RequestNotRead on streaming bodies. + """ + hook = XGlean() + request = httpx.Request( + "POST", + "https://example.com/rest/api/v1/uploadchatfiles", + data={"field": "value"}, + files={"file": ("test.csv", b"a,b\n1,2", "text/csv")}, + ) + context = create_mock_context(include_experimental=True) + + result = hook.before_request(context, request) + + assert result.headers.get("X-Glean-Experimental") == "true" + assert result.method == "POST" + + +if __name__ == "__main__": + pytest.main([__file__])