From 1fff43b9c2eaf4fa0b7fc1ff96824683b47c79ff Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Sat, 3 Oct 2026 04:11:35 +0000 Subject: [PATCH 1/2] =?UTF-8?q?##=20Python=20SDK=20Changes:=20*=20`glean.s?= =?UTF-8?q?kills.create()`:=20=20=20*=20=20`response`=20**Changed**=20(Bre?= =?UTF-8?q?aking=20=E2=9A=A0=EF=B8=8F)=20=20=20*=20=20`error.status[409]`?= =?UTF-8?q?=20**Added**=20*=20`glean.skills.list()`:=20=20=20*=20=20`reque?= =?UTF-8?q?st.page=5Fsize`=20**Changed**=20=20=20*=20=20`response`=20**Cha?= =?UTF-8?q?nged**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*=20`glean.skills.im?= =?UTF-8?q?port()`:=20=20=20*=20=20`response`=20**Changed**=20(Breaking=20?= =?UTF-8?q?=E2=9A=A0=EF=B8=8F)=20=20=20*=20=20`error.status[422]`=20**Adde?= =?UTF-8?q?d**=20*=20`glean.skills.preview=5Fsource()`:=20=20=20*=20=20`re?= =?UTF-8?q?quest.stream`=20**Removed**=20(Breaking=20=E2=9A=A0=EF=B8=8F)?= =?UTF-8?q?=20=20=20*=20=20`response.status[200].content[text/event-stream?= =?UTF-8?q?`=20**Removed**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20=20=20*=20?= =?UTF-8?q?=20`error.status[422]`=20**Added**=20*=20`glean.skills.update()?= =?UTF-8?q?`:=20=20`response.skill`=20**Changed**=20(Breaking=20=E2=9A=A0?= =?UTF-8?q?=EF=B8=8F)=20*=20`glean.skills.retrieve()`:=20=20`response.skil?= =?UTF-8?q?l`=20**Changed**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*=20`glean?= =?UTF-8?q?.skills.sync()`:=20=20=20*=20=20`response`=20**Changed**=20(Bre?= =?UTF-8?q?aking=20=E2=9A=A0=EF=B8=8F)=20=20=20*=20=20`error`=20**Changed*?= =?UTF-8?q?*=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*=20`glean.skills.create?= =?UTF-8?q?=5Fversion()`:=20=20`response`=20**Changed**=20(Breaking=20?= =?UTF-8?q?=E2=9A=A0=EF=B8=8F)=20*=20`glean.skills.list=5Fversions()`:=20?= =?UTF-8?q?=20=20*=20=20`request.page=5Fsize`=20**Changed**=20=20=20*=20?= =?UTF-8?q?=20`response`=20**Changed**=20(Breaking=20=E2=9A=A0=EF=B8=8F)?= =?UTF-8?q?=20*=20`glean.client.announcements.create()`:=20=20=20*=20=20`r?= =?UTF-8?q?equest.body.structured=5Flist[].document.metadata.author`=20**C?= =?UTF-8?q?hanged**=20=20=20*=20=20`response.body.structured=5Flist[].docu?= =?UTF-8?q?ment.metadata.author`=20**Changed**=20*=20`glean.client.announc?= =?UTF-8?q?ements.update()`:=20=20=20*=20=20`request.body.structured=5Flis?= =?UTF-8?q?t[].document.metadata.author`=20**Changed**=20=20=20*=20=20`res?= =?UTF-8?q?ponse.body.structured=5Flist[].document.metadata.author`=20**Ch?= =?UTF-8?q?anged**=20*=20`glean.client.answers.create()`:=20=20=20*=20=20`?= =?UTF-8?q?request.data.added=5Froles[].person`=20**Changed**=20=20=20*=20?= =?UTF-8?q?=20`response.added=5Froles[].person`=20**Changed**=20*=20`glean?= =?UTF-8?q?.client.answers.update()`:=20=20=20*=20=20`request.added=5Frole?= =?UTF-8?q?s[].person`=20**Changed**=20=20=20*=20=20`response.added=5Frole?= =?UTF-8?q?s[].person`=20**Changed**=20*=20`glean.client.answers.retrieve(?= =?UTF-8?q?)`:=20=20`response.answer=5Fresult.answer.added=5Froles[].perso?= =?UTF-8?q?n`=20**Changed**=20*=20`glean.client.answers.list()`:=20=20`res?= =?UTF-8?q?ponse.answer=5Fresults[].answer.added=5Froles[].person`=20**Cha?= =?UTF-8?q?nged**=20*=20`glean.client.chat.create()`:=20=20=20*=20=20`requ?= =?UTF-8?q?est.messages[].citations[].source=5Fdocument.metadata.author`?= =?UTF-8?q?=20**Changed**=20=20=20*=20=20`response.messages[].citations[].?= =?UTF-8?q?source=5Fdocument.metadata.author`=20**Changed**=20*=20`glean.c?= =?UTF-8?q?lient.chat.retrieve()`:=20=20=20*=20=20`response.chat=5Fresult.?= =?UTF-8?q?chat.created=5Fby`=20**Changed**=20=20=20*=20=20`error.created?= =?UTF-8?q?=5Fby`=20**Changed**=20*=20`glean.client.chat.list()`:=20=20`re?= =?UTF-8?q?sponse.chat=5Fresults[].chat.created=5Fby`=20**Changed**=20*=20?= =?UTF-8?q?`glean.client.chat.create=5Fstream()`:=20=20=20*=20=20`request.?= =?UTF-8?q?messages[].citations[].source=5Fdocument.metadata.author`=20**C?= =?UTF-8?q?hanged**=20*=20`glean.client.agents.create()`:=20=20`response.w?= =?UTF-8?q?orkflow.author`=20**Changed**=20*=20`glean.client.agents.import?= =?UTF-8?q?()`:=20=20`response.workflow=5Fresult.workflow.author`=20**Chan?= =?UTF-8?q?ged**=20*=20`glean.client.collections.add=5Fitems()`:=20=20`res?= =?UTF-8?q?ponse.collection.added=5Froles[].person`=20**Changed**=20*=20`g?= =?UTF-8?q?lean.client.collections.create()`:=20=20=20*=20=20`request.adde?= =?UTF-8?q?d=5Froles[].person`=20**Changed**=20=20=20*=20=20`response.unio?= =?UTF-8?q?n(class=20(0)).collection.added=5Froles[].person`=20**Changed**?= =?UTF-8?q?=20*=20`glean.client.collections.delete=5Fitem()`:=20=20`respon?= =?UTF-8?q?se.collection.added=5Froles[].person`=20**Changed**=20*=20`glea?= =?UTF-8?q?n.client.collections.update()`:=20=20=20*=20=20`request.added?= =?UTF-8?q?=5Froles[].person`=20**Changed**=20=20=20*=20=20`response.added?= =?UTF-8?q?=5Froles[].person`=20**Changed**=20*=20`glean.client.collection?= =?UTF-8?q?s.update=5Fitem()`:=20=20`response.collection.added=5Froles[].p?= =?UTF-8?q?erson`=20**Changed**=20*=20`glean.client.collections.retrieve()?= =?UTF-8?q?`:=20=20`response.collection.added=5Froles[].person`=20**Change?= =?UTF-8?q?d**=20*=20`glean.client.collections.list()`:=20=20`response.col?= =?UTF-8?q?lections[].added=5Froles[].person`=20**Changed**=20*=20`glean.c?= =?UTF-8?q?lient.documents.retrieve()`:=20=20`response.documents.Map.union(Document).metadata.author`=20**Changed**=20*?= =?UTF-8?q?=20`glean.client.documents.retrieve=5Fby=5Ffacets()`:=20=20`res?= =?UTF-8?q?ponse.documents[].metadata.author`=20**Changed**=20*=20`glean.c?= =?UTF-8?q?lient.insights.retrieve()`:=20=20=20*=20=20`request.mcp=5Fbreak?= =?UTF-8?q?down=5Frequest`=20**Changed**=20=20=20*=20=20`response`=20**Cha?= =?UTF-8?q?nged**=20*=20`glean.client.messages.retrieve()`:=20=20`response?= =?UTF-8?q?.search=5Fresponse.results[].structured=5Fresults[].document.me?= =?UTF-8?q?tadata`=20**Changed**=20*=20`glean.client.pins.update()`:=20=20?= =?UTF-8?q?`response.attribution`=20**Changed**=20*=20`glean.client.pins.r?= =?UTF-8?q?etrieve()`:=20=20`response.pin.attribution`=20**Changed**=20*?= =?UTF-8?q?=20`glean.client.pins.list()`:=20=20`response.pins[].attributio?= =?UTF-8?q?n`=20**Changed**=20*=20`glean.client.pins.create()`:=20=20`resp?= =?UTF-8?q?onse.attribution`=20**Changed**=20*=20`glean.client.search.quer?= =?UTF-8?q?y=5Fas=5Fadmin()`:=20=20=20*=20=20`request.source=5Fdocument.me?= =?UTF-8?q?tadata.author`=20**Changed**=20=20=20*=20=20`response.results[]?= =?UTF-8?q?.structured=5Fresults[].document.metadata`=20**Changed**=20*=20?= =?UTF-8?q?`glean.client.search.autocomplete()`:=20=20`response.results[]`?= =?UTF-8?q?=20**Changed**=20*=20`glean.client.search.retrieve=5Ffeed()`:?= =?UTF-8?q?=20=20=20*=20=20`request.categories[]`=20**Changed**=20=20=20*?= =?UTF-8?q?=20=20`response.results[]`=20**Changed**=20*=20`glean.client.se?= =?UTF-8?q?arch.recommendations()`:=20=20=20*=20=20`request.source=5Fdocum?= =?UTF-8?q?ent.metadata.author`=20**Changed**=20=20=20*=20=20`response.res?= =?UTF-8?q?ults[].structured=5Fresults[].document.metadata`=20**Changed**?= =?UTF-8?q?=20*=20`glean.client.search.query()`:=20=20=20*=20=20`request.s?= =?UTF-8?q?ource=5Fdocument.metadata.author`=20**Changed**=20=20=20*=20=20?= =?UTF-8?q?`response.results[].structured=5Fresults[].document.metadata`?= =?UTF-8?q?=20**Changed**=20*=20`glean.client.entities.list()`:=20=20`resp?= =?UTF-8?q?onse.results[]`=20**Changed**=20*=20`glean.client.entities.read?= =?UTF-8?q?=5Fpeople()`:=20=20=20*=20=20`request.fallback=5Fto=5Fauthentic?= =?UTF-8?q?ated=5Fidentity`=20**Added**=20=20=20*=20=20`response.results[]?= =?UTF-8?q?`=20**Changed**=20*=20`glean.client.shortcuts.create()`:=20=20?= =?UTF-8?q?=20*=20=20`request.data.added=5Froles[].person`=20**Changed**?= =?UTF-8?q?=20=20=20*=20=20`response.shortcut.added=5Froles[].person`=20**?= =?UTF-8?q?Changed**=20*=20`glean.client.shortcuts.retrieve()`:=20=20`resp?= =?UTF-8?q?onse.shortcut.added=5Froles[].person`=20**Changed**=20*=20`glea?= =?UTF-8?q?n.client.shortcuts.list()`:=20=20`response.shortcuts[].added=5F?= =?UTF-8?q?roles[].person`=20**Changed**=20*=20`glean.client.shortcuts.upd?= =?UTF-8?q?ate()`:=20=20=20*=20=20`request.added=5Froles[].person`=20**Cha?= =?UTF-8?q?nged**=20=20=20*=20=20`response.shortcut.added=5Froles[].person?= =?UTF-8?q?`=20**Changed**=20*=20`glean.client.verification.add=5Freminder?= =?UTF-8?q?()`:=20=20`response.metadata.last=5Fverifier`=20**Changed**=20*?= =?UTF-8?q?=20`glean.client.verification.list()`:=20=20`response.documents?= =?UTF-8?q?[].metadata.last=5Fverifier`=20**Changed**=20*=20`glean.client.?= =?UTF-8?q?verification.verify()`:=20=20`response.metadata.last=5Fverifier?= =?UTF-8?q?`=20**Changed**?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .speakeasy/gen.lock | 754 +++++++++++------- .speakeasy/gen.yaml | 2 +- .speakeasy/glean-merged-spec.yaml | 693 +++++++++++++--- .speakeasy/tests.arazzo.yaml | 25 +- .speakeasy/workflow.lock | 12 +- README.md | 1 + RELEASES.md | 12 +- docs/models/artifacttype.md | 25 + docs/models/autocompleterequestresulttype.md | 2 +- docs/models/autocompleteresult.md | 27 +- docs/models/breakdowntype.md | 3 +- docs/models/chatsuggestion.md | 1 + docs/models/feedrequestcategory.md | 4 +- docs/models/feedresultcategory.md | 4 +- docs/models/justificationtype.md | 4 +- docs/models/mcpauthmethodbreakdown.md | 11 + docs/models/mcpbreakdowninsightsrequest.md | 21 +- docs/models/mcpbreakdowninsightsresponse.md | 3 +- docs/models/mcpuserbreakdown.md | 15 +- docs/models/peoplerequest.md | 17 +- docs/models/person.md | 1 + docs/models/platformproblemdetail.md | 18 + docs/models/platformskill.md | 26 +- docs/models/platformskillimportresponse.md | 8 +- docs/models/platformskillorigin.md | 5 +- docs/models/platformskillslistrequest.md | 8 +- docs/models/platformskillslistresponse.md | 2 +- .../platformskillslistversionsrequest.md | 10 +- .../platformskillsourcepreviewstreamerror.md | 12 + ...sourcepreviewstreamerrorserversentevent.md | 10 + ...atformskillsourcepreviewstreamerrortype.md | 18 + ...sourcepreviewstreameventserversentevent.md | 37 + ...latformskillsourcepreviewstreamprogress.md | 13 + ...rcepreviewstreamprogressserversentevent.md | 10 + ...ormskillsourcepreviewstreamprogresstype.md | 18 + .../platformskillsourcepreviewstreamresult.md | 11 + ...ourcepreviewstreamresultserversentevent.md | 10 + ...tformskillsourcepreviewstreamresulttype.md | 18 + .../platformskillsourcepreviewstreamscan.md | 12 + ...lsourcepreviewstreamscanserversentevent.md | 10 + ...latformskillsourcepreviewstreamscantype.md | 18 + .../platformskillsourcepreviewstreamskill.md | 11 + ...sourcepreviewstreamskillserversentevent.md | 10 + ...atformskillsourcepreviewstreamskilltype.md | 18 + ... => platformskillspreviewsourcerequest.md} | 4 +- .../platformskillspreviewsourceresponse.md | 17 - ...latformskillspreviewsourcestreamrequest.md | 9 + docs/models/platformskillstatus.md | 3 +- docs/models/platformskillsyncresponse.md | 11 +- docs/models/platformskillsyncresultstatus.md | 18 - docs/models/platformskillupdaterequest.md | 6 +- docs/models/platformskillupdatestatus.md | 3 +- .../platformskillversionslistresponse.md | 2 +- docs/models/ugcaction.md | 8 + docs/models/ugcactionunion.md | 13 + docs/models/ugctype.md | 1 + docs/sdks/entities/README.md | 23 +- docs/sdks/skills/README.md | 133 ++- pyproject.toml | 2 +- src/glean/api_client/_version.py | 6 +- src/glean/api_client/agents.py | 88 +- src/glean/api_client/chat_sdk.py | 4 + src/glean/api_client/entities.py | 6 + src/glean/api_client/models/__init__.py | 167 +++- src/glean/api_client/models/artifacttype.py | 16 + .../api_client/models/autocompleterequest.py | 2 +- .../api_client/models/autocompleteresult.py | 9 + src/glean/api_client/models/chatsuggestion.py | 24 +- src/glean/api_client/models/feedentry.py | 2 + src/glean/api_client/models/feedrequest.py | 2 + src/glean/api_client/models/feedresult.py | 2 + .../models/mcpauthmethodbreakdown.py | 59 ++ .../models/mcpbreakdowninsightsrequest.py | 9 + .../models/mcpbreakdowninsightsresponse.py | 11 + .../api_client/models/mcpuserbreakdown.py | 16 +- src/glean/api_client/models/peoplerequest.py | 8 + src/glean/api_client/models/person.py | 9 +- .../models/platform_skills_list_versionsop.py | 6 +- .../models/platform_skills_listop.py | 6 +- ...latform_skills_preview_source_streamop.py} | 26 +- .../platform_skills_preview_sourceop.py | 55 +- .../models/platformproblemdetail.py | 87 ++ src/glean/api_client/models/platformskill.py | 21 +- .../models/platformskillimportresponse.py | 8 +- .../api_client/models/platformskillorigin.py | 4 +- .../models/platformskillslistresponse.py | 4 +- .../platformskillsourcepreviewstreamerror.py | 65 ++ ...sourcepreviewstreamerrorserversentevent.py | 55 ++ ...sourcepreviewstreameventserversentevent.py | 52 ++ ...latformskillsourcepreviewstreamprogress.py | 41 + ...rcepreviewstreamprogressserversentevent.py | 55 ++ .../platformskillsourcepreviewstreamresult.py | 33 + ...ourcepreviewstreamresultserversentevent.py | 55 ++ .../platformskillsourcepreviewstreamscan.py | 37 + ...lsourcepreviewstreamscanserversentevent.py | 55 ++ .../platformskillsourcepreviewstreamskill.py | 33 + ...sourcepreviewstreamskillserversentevent.py | 55 ++ .../api_client/models/platformskillstatus.py | 2 +- .../models/platformskillsyncresponse.py | 10 +- .../models/platformskillsyncresultstatus.py | 10 - .../models/platformskillupdaterequest.py | 8 +- .../models/platformskillupdatestatus.py | 2 +- .../platformskillversionslistresponse.py | 4 +- .../api_client/models/ugcaction_union.py | 33 + src/glean/api_client/models/ugctype.py | 1 + src/glean/api_client/search.py | 24 +- src/glean/api_client/skills.py | 598 ++++++++++---- src/glean/api_client/triggers.py | 80 ++ src/glean/api_client/utils/datetimes.py | 4 + src/glean/api_client/utils/url.py | 5 +- src/glean/api_client/utils/values.py | 5 +- .../internal/handler/pathgetapiskills.go | 2 +- .../handler/pathgetapiskillsskillid.go | 2 +- .../pathgetapiskillsskillidversions.go | 2 +- .../handler/pathpatchapiskillsskillid.go | 2 +- .../internal/handler/pathpostapiskills.go | 8 +- .../handler/pathpostapiskillsimport.go | 2 +- .../handler/pathpostapiskillsskillidsync.go | 7 +- .../pathpostapiskillsskillidversions.go | 2 +- .../pathpostapiskillssourcespreview.go | 2 +- .../pathpostrestapiv1createcollection.go | 20 +- .../sdk/models/components/artifacttype.go | 47 ++ .../models/components/autocompleterequest.go | 6 +- .../models/components/autocompleteresult.go | 9 + .../sdk/models/components/chatsuggestion.go | 9 + .../sdk/models/components/feedentry.go | 6 + .../sdk/models/components/feedrequest.go | 6 + .../sdk/models/components/feedresult.go | 6 + .../components/mcpauthmethodbreakdown.go | 42 + .../components/mcpbreakdowninsightsrequest.go | 12 + .../mcpbreakdowninsightsresponse.go | 8 + .../sdk/models/components/mcpuserbreakdown.go | 9 + .../sdk/models/components/peoplerequest.go | 21 + .../internal/sdk/models/components/person.go | 9 + .../platformauthenticationsuggestion.go | 15 + .../components/platformproblemdetail.go | 94 +++ .../components/platformproblemdetailerror.go | 15 + .../sdk/models/components/platformskill.go | 11 +- .../components/platformskillimportresponse.go | 3 +- .../models/components/platformskillorigin.go | 3 + .../components/platformskillslistresponse.go | 6 +- .../components/platformskillsourcepreview.go | 15 + .../platformskillsourcepreviewfailure.go | 15 + .../platformskillsourcepreviewfile.go | 15 + .../platformskillsourcepreviewrequest.go | 39 - .../platformskillsourcepreviewresponse.go | 15 + .../platformskillsourcepreviewstreamerror.go | 76 ++ ...sourcepreviewstreamerrorserversentevent.go | 43 + ...sourcepreviewstreameventserversentevent.go | 178 +++++ ...latformskillsourcepreviewstreamprogress.go | 84 ++ ...rcepreviewstreamprogressserversentevent.go | 43 + .../platformskillsourcepreviewstreamresult.go | 65 ++ ...ourcepreviewstreamresultserversentevent.go | 43 + .../platformskillsourcepreviewstreamscan.go | 75 ++ ...lsourcepreviewstreamscanserversentevent.go | 43 + .../platformskillsourcepreviewstreamskill.go | 65 ++ ...sourcepreviewstreamskillserversentevent.go | 43 + .../models/components/platformskillstatus.go | 2 +- .../components/platformskillsyncresponse.go | 15 +- .../platformskillsyncresultstatus.go | 32 - .../components/platformskillupdaterequest.go | 3 +- .../components/platformskillupdatestatus.go | 2 +- .../platformskillversionslistresponse.go | 6 +- .../sdk/models/components/ugcactionunion.go | 73 ++ .../internal/sdk/models/components/ugctype.go | 3 + .../models/operations/platformskillscreate.go | 2 +- .../operations/platformskillscreateversion.go | 2 +- .../models/operations/platformskillslist.go | 16 +- .../operations/platformskillslistversions.go | 16 +- .../operations/platformskillspreviewsource.go | 39 +- .../platformskillspreviewsourcestream.go | 58 ++ .../sdk/optionalnullable/optionalnullable.go | 26 + .../optionalnullable/optionalnullable_test.go | 93 +++ tests/mockserver/internal/sdk/utils/json.go | 44 + tests/test_entities.py | 3 +- tests/test_messages.py | 2 +- tests/test_skills.py | 6 +- tests/test_summarize.py | 7 +- 178 files changed, 4914 insertions(+), 961 deletions(-) create mode 100644 docs/models/artifacttype.md create mode 100644 docs/models/mcpauthmethodbreakdown.md create mode 100644 docs/models/platformproblemdetail.md create mode 100644 docs/models/platformskillsourcepreviewstreamerror.md create mode 100644 docs/models/platformskillsourcepreviewstreamerrorserversentevent.md create mode 100644 docs/models/platformskillsourcepreviewstreamerrortype.md create mode 100644 docs/models/platformskillsourcepreviewstreameventserversentevent.md create mode 100644 docs/models/platformskillsourcepreviewstreamprogress.md create mode 100644 docs/models/platformskillsourcepreviewstreamprogressserversentevent.md create mode 100644 docs/models/platformskillsourcepreviewstreamprogresstype.md create mode 100644 docs/models/platformskillsourcepreviewstreamresult.md create mode 100644 docs/models/platformskillsourcepreviewstreamresultserversentevent.md create mode 100644 docs/models/platformskillsourcepreviewstreamresulttype.md create mode 100644 docs/models/platformskillsourcepreviewstreamscan.md create mode 100644 docs/models/platformskillsourcepreviewstreamscanserversentevent.md create mode 100644 docs/models/platformskillsourcepreviewstreamscantype.md create mode 100644 docs/models/platformskillsourcepreviewstreamskill.md create mode 100644 docs/models/platformskillsourcepreviewstreamskillserversentevent.md create mode 100644 docs/models/platformskillsourcepreviewstreamskilltype.md rename docs/models/{platformskillsourcepreviewrequest.md => platformskillspreviewsourcerequest.md} (83%) delete mode 100644 docs/models/platformskillspreviewsourceresponse.md create mode 100644 docs/models/platformskillspreviewsourcestreamrequest.md delete mode 100644 docs/models/platformskillsyncresultstatus.md create mode 100644 docs/models/ugcaction.md create mode 100644 docs/models/ugcactionunion.md create mode 100644 src/glean/api_client/models/artifacttype.py create mode 100644 src/glean/api_client/models/mcpauthmethodbreakdown.py rename src/glean/api_client/models/{platformskillsourcepreviewrequest.py => platform_skills_preview_source_streamop.py} (58%) create mode 100644 src/glean/api_client/models/platformproblemdetail.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamerror.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamerrorserversentevent.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreameventserversentevent.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamprogress.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamprogressserversentevent.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamresult.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamresultserversentevent.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamscan.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamscanserversentevent.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamskill.py create mode 100644 src/glean/api_client/models/platformskillsourcepreviewstreamskillserversentevent.py delete mode 100644 src/glean/api_client/models/platformskillsyncresultstatus.py create mode 100644 src/glean/api_client/models/ugcaction_union.py create mode 100644 tests/mockserver/internal/sdk/models/components/artifacttype.go create mode 100644 tests/mockserver/internal/sdk/models/components/mcpauthmethodbreakdown.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformproblemdetail.go delete mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewrequest.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerror.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerrorserversentevent.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreameventserversentevent.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogress.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogressserversentevent.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresult.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresultserversentevent.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscan.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscanserversentevent.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskill.go create mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskillserversentevent.go delete mode 100644 tests/mockserver/internal/sdk/models/components/platformskillsyncresultstatus.go create mode 100644 tests/mockserver/internal/sdk/models/components/ugcactionunion.go create mode 100644 tests/mockserver/internal/sdk/models/operations/platformskillspreviewsourcestream.go diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 34e6b42c..d1c2f387 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,19 +1,19 @@ lockVersion: 2.0.0 id: 3e3290ca-0ee8-4981-b1bc-14536048fa63 management: - docChecksum: 1974948f3cdb42c18f515f1fb0fea2dd + docChecksum: 0a2b978c36b8b3c4588afdb17899001f docVersion: 0.9.0 - speakeasyVersion: 1.798.0 - generationVersion: 2.938.0 - releaseVersion: 0.17.15 - configChecksum: 1eb09757dc51c042e574b3e04826405c + speakeasyVersion: 1.800.1 + generationVersion: 2.943.0 + releaseVersion: 0.17.16 + configChecksum: bb68bec00fef7c965d2f40018b352432 repoURL: https://github.com/gleanwork/api-client-python.git installationURL: https://github.com/gleanwork/api-client-python.git published: true persistentEdits: - generation_id: 0c37b6b6-f498-4b35-9e48-b8cd9f4e6e68 - pristine_commit_hash: 2d2188952a3c1654eddee8b4920d6bdfb1418125 - pristine_tree_hash: 13f0956d61751a52fa8e0a390b15b03ef90cc4c3 + generation_id: b5705b7f-9613-4e3f-b217-fcc37570d80b + pristine_commit_hash: 1fa7d5cbfceda3f0d4e50649f3e987df50d9d342 + pristine_tree_hash: 9b231b4556229703030b9f8e3434a933c4efb124 features: python: acceptHeaders: 3.0.0 @@ -22,7 +22,7 @@ features: callbacks: 2.0.0 configurableModuleName: 0.2.0 constsAndDefaults: 1.0.8 - core: 6.1.2 + core: 6.1.3 defaultEnabledRetries: 0.2.0 deprecations: 3.0.2 devContainers: 3.0.0 @@ -49,7 +49,7 @@ features: sdkHooks: 1.3.0 serverEvents: 1.1.1 tests: 1.19.10 - unions: 3.1.10 + unions: 3.1.12 uploadStreams: 1.0.3 trackedFiles: .devcontainer/README.md: @@ -312,6 +312,10 @@ trackedFiles: id: 333a2b7c460c last_write_checksum: sha1:f9779ac516afac0d0cab5f0a9e4993b5e305f413 pristine_git_object: b1d37dea76990544293f38221b2314739c22ffaa + docs/models/artifacttype.md: + id: 87a23e4dd4a6 + last_write_checksum: sha1:c8b0a1dda1ced0e79877c2da435092e96dc6eed0 + pristine_git_object: acd892d2857ac59d4a3b285aea1465b86b6290d5 docs/models/assistantinsightsresponse.md: id: 4da438a09c8e last_write_checksum: sha1:79953a586b4b90fa67d44c370271de068b3d49f3 @@ -386,16 +390,16 @@ trackedFiles: pristine_git_object: f52bd9ee886df0323f70d1416c7f567beee45fe9 docs/models/autocompleterequestresulttype.md: id: b8d90b50b8a1 - last_write_checksum: sha1:384db0e85ba2259d36c469bf18aad238ce221de9 - pristine_git_object: 1133a59c5d24f501ea467fb19e9a467682cd9d31 + last_write_checksum: sha1:6a466170ae65f1bb77a34ffa577050a3c677731f + pristine_git_object: d5efb95f03562827c2bfafe0984c098e2e3de5fb 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 + last_write_checksum: sha1:57932877f0c3a32c166bd55604d182b5a4e7634e + pristine_git_object: b974464a0abb3063ddc987397711b78efb5aa946 docs/models/autocompleteresultgroup.md: id: b468805c7407 last_write_checksum: sha1:62578711014ba4fe4bec11879e46aa39311a61d2 @@ -410,8 +414,8 @@ trackedFiles: pristine_git_object: 06cf46df1c5e8e897928c57585c307b386f4aefb docs/models/breakdowntype.md: id: 852d76343384 - last_write_checksum: sha1:fb3820973b2df634462475d5bed0b75cc09dfa09 - pristine_git_object: dbe3672757339f9ecbbb904f50a7ba5924ee4a43 + last_write_checksum: sha1:06b46b101ae37486143ca7695cbdf4cf58a4aac4 + pristine_git_object: 6e84b1a558f9dbe590947596b2e4c20e27b75ac0 docs/models/bulkindexdocumentsrequest.md: id: ea279e5855b8 last_write_checksum: sha1:4ae80ed6fa8146e90de4818a30d46af50e9affaa @@ -614,8 +618,8 @@ trackedFiles: pristine_git_object: f04f0b8f01b063f1b3cb838e55a093880cf94693 docs/models/chatsuggestion.md: id: ed9377964a1e - last_write_checksum: sha1:ec415c7f0e372089f398ba9425cd64cce9e2b527 - pristine_git_object: e18aae7ba79f1f9c0d9a9b302f15ce4b1b1a8aac + last_write_checksum: sha1:7ada8e17261e02ef1e1fe234dc2c36848e723fd9 + pristine_git_object: c84fee735607ca08e73e1ad74b970db8f26152e8 docs/models/chatzerostatesuggestionoptions.md: id: 93484e4440f7 last_write_checksum: sha1:70ab46266394ffd387991ec7036aa7e12346d278 @@ -1482,8 +1486,8 @@ trackedFiles: pristine_git_object: a851a7f13eb25d515fa9b9244c5dfdc98fa14e2c docs/models/feedrequestcategory.md: id: 31a02f3064c7 - last_write_checksum: sha1:6c058c44c4c9cc02dd16dbf222a4576348789c0f - pristine_git_object: 662a836bc9b99d7fe65d08ba4280adcacf0aa096 + last_write_checksum: sha1:b69724904c42305546a082816a92a697919c7d23 + pristine_git_object: 35f342f96b9b40c54e5ffc181c174a83a1eaba50 docs/models/feedrequestoptions.md: id: 58eb26b19e77 last_write_checksum: sha1:fd2ab08736cef8156169b0cfee8c52e7aed1accf @@ -1502,8 +1506,8 @@ trackedFiles: pristine_git_object: f6f92abf16b61f88b527e1c906f605e98306878e docs/models/feedresultcategory.md: id: a5f77f38d0a7 - last_write_checksum: sha1:3defded05526cfd53ff95f819046e9cebaddd2b0 - pristine_git_object: b1ed34c83753598c152bc76c41196860f036262e + last_write_checksum: sha1:c67cbd5acb09f0cf187e3afe4edeb70a71c1ab35 + pristine_git_object: 591586c677c644993a9435e7bdc7c2c2d8ddd2d7 docs/models/fieldscope.md: id: e6b52bcb22a6 last_write_checksum: sha1:13a1492ce39d2f89a01d626996a345a1339a1873 @@ -1946,8 +1950,8 @@ trackedFiles: pristine_git_object: 647f9bb67a6af30d7fd71c8ddb3c5e1bf40bb938 docs/models/justificationtype.md: id: 8286affacee4 - last_write_checksum: sha1:3cd9f468ee470bfe137224e72c46b03501e33905 - pristine_git_object: 7764769f62ea15ddd762c89e561431c2490b3edb + last_write_checksum: sha1:85183c4419216823357e0b29db3fe4e519e1e11f + pristine_git_object: 0017912af41f1eaa18634894e23d7e4014ef1078 docs/models/knowledgetype.md: id: 1e0c90679228 last_write_checksum: sha1:0030a7539b9362bbb59e0bbd36580676058b3540 @@ -2092,14 +2096,18 @@ trackedFiles: id: cf68b1f63cc7 last_write_checksum: sha1:6f62aad4e5e0583365e661548b8564d1b3c97e08 pristine_git_object: ba4cf618261dec6b6829099ec1760a6fd48bce10 + docs/models/mcpauthmethodbreakdown.md: + id: c7a9bf160968 + last_write_checksum: sha1:622f054e98722e645ba04b5d394480272fdcd5cd + pristine_git_object: bcdeb6cc5ac1e7aea7f46505ca15c6071888376d docs/models/mcpbreakdowninsightsrequest.md: id: 8c3c8a81e52f - last_write_checksum: sha1:1aa64aa623e6a963d57251261f28e38050922509 - pristine_git_object: dfc799474ee77c7a1086e51067bcf7a2b71c3fd2 + last_write_checksum: sha1:08fd1f9c6173c1b9f320a1f1c79a7db34aa77985 + pristine_git_object: 88e0fb3939cb2ab16bc8ab8b7a37deabde7f2fc1 docs/models/mcpbreakdowninsightsresponse.md: id: cdfee60eb6f4 - last_write_checksum: sha1:c1381c087e140760b2896d1ccc047cae26b596dc - pristine_git_object: 94328ff46f865baafc8a3470bbc03119d8b5b135 + last_write_checksum: sha1:624633c29fe6ebd03bfaa98053bc2b5fc811525b + pristine_git_object: 95f06445834cc6d632867b0e4aef21a0b10a7a3a docs/models/mcphostapplicationbreakdown.md: id: 7dbd2599b33b last_write_checksum: sha1:bbb736a2752cec78704d81935408318ee3381236 @@ -2122,8 +2130,8 @@ trackedFiles: pristine_git_object: 8eade3001193f86363e036f448148ca22d6e3758 docs/models/mcpuserbreakdown.md: id: 5a038100c9e2 - last_write_checksum: sha1:a642b877609d2765fe27b945fdaff8efc9853a8b - pristine_git_object: 1c4e22ef0d97f24e0b593d2080d123e7ce75b5d4 + last_write_checksum: sha1:4ac6db5b751febe217a71574ca0b44bf38170e95 + pristine_git_object: 09e90b950c22f758657c3d8dffd1b8155df88e44 docs/models/meeting.md: id: 823ab6288010 last_write_checksum: sha1:9efd1c28c84b767ea662cd26598364b032e35cf3 @@ -2194,8 +2202,8 @@ trackedFiles: pristine_git_object: 4555c0106ca95de3c4ff40e7d2ec703506c30450 docs/models/peoplerequest.md: id: a2efd0c61878 - last_write_checksum: sha1:6d1ac4de80b9014019ead9c45dc74d6635be315f - pristine_git_object: cabbe6e5060ca81606726370df1d3cfeffee879f + last_write_checksum: sha1:35157d922bf4a512faa9e98f15cd5c5a3302fbb7 + pristine_git_object: 66af83b5b38f3321aea1bf2b7f71e6110b5c7fd8 docs/models/peoplerequestincludefield.md: id: 1cc1f2177bbd last_write_checksum: sha1:a02e302ceae15bdcd65b89c04a3d67252d95653b @@ -2226,8 +2234,8 @@ trackedFiles: pristine_git_object: 5d2835e91400f8c721cd32ac9c4ad0c2d4dff668 docs/models/person.md: id: 3b0ea6e43010 - last_write_checksum: sha1:c41a10861d5f427cfbdd80b81afbf201a43b3d51 - pristine_git_object: 233784bcf7eca5260994f7a48190e2207a6d6742 + last_write_checksum: sha1:48e57bd344ebad9f78e85d32dc2108412275e845 + pristine_git_object: e9846658ab15d8de3629fb55d1266a96824c983a docs/models/persondistance.md: id: 26300c30163c last_write_checksum: sha1:37d6ba089ac53d0338b6e7f5e00d343adcc05317 @@ -2688,6 +2696,10 @@ trackedFiles: id: 8e0eb24c7ab0 last_write_checksum: sha1:b7e91a102caa171583e0033985345592eded3a47 pristine_git_object: 9602adac9af14a6a401eaf90a16cdc7e7a96c954 + docs/models/platformproblemdetail.md: + id: 3eb00158d145 + last_write_checksum: sha1:582bc89cfb2012c5fddeda164929ffe4151265c9 + pristine_git_object: 95a5121d13c926d7a7e17c39607778ec83bf0738 docs/models/platformproblemdetailcode.md: id: fd61a3fb0333 last_write_checksum: sha1:a1d01a7e9ba65fba741eb7ffc7c318ec2f00a28b @@ -2722,8 +2734,8 @@ trackedFiles: pristine_git_object: 74045b8a6ae5e046bacdfb861ababddb3d770f5c docs/models/platformskill.md: id: 83c575f92901 - last_write_checksum: sha1:6b749a33dc64251968dac815aec5189373449b3e - pristine_git_object: f803434a2bd716ccdd0731bfb29c6921ce8e1c88 + last_write_checksum: sha1:d7789e381069b23aa1e7236c140f5db05fc246e2 + pristine_git_object: 3a68c65b0b08b80e44e2b10687404bfe7179949c docs/models/platformskillcreaterequest.md: id: d5a84c9d1cf0 last_write_checksum: sha1:90db6d3c8fe55234b4dcf26c734c04fc641ac719 @@ -2746,12 +2758,12 @@ trackedFiles: pristine_git_object: e6c95bd604dd05e5d2adfa909f30c2bf9d198b56 docs/models/platformskillimportresponse.md: id: 9a66de8859b8 - last_write_checksum: sha1:1c24f744a99500576dee1e41d5dd83ee9c799b7b - pristine_git_object: 9a383f207c36e4ac9c50a84c4f704c86dfb2d82d + last_write_checksum: sha1:2bb7017a4ea27b318bc2463d2961c9d929dc2f2a + pristine_git_object: 079c091efa09a850e3e829204a3c32c3b9a1ec95 docs/models/platformskillorigin.md: id: 66c12ec2d017 - last_write_checksum: sha1:281337f3fefcac11e66e5d8429b3b601dc357a57 - pristine_git_object: ca7bf36f2c931c0dce0bb529f8c2d86f4a06c326 + last_write_checksum: sha1:7d7f7efb7e4e48058e778bdc2b99d58fdfe55a38 + pristine_git_object: c43dbe562cc13c11ff28494d097e46859801ea2c docs/models/platformskillscreateversionrequest.md: id: bfcd223dbc04 last_write_checksum: sha1:5296d14b096632ffb2425da1f0db1fd6de40d18e @@ -2786,16 +2798,16 @@ trackedFiles: pristine_git_object: f9a2d64ae818b2da0d46bbec7f78eaae964678f0 docs/models/platformskillslistrequest.md: id: 475ac6fb76a7 - last_write_checksum: sha1:4bac5ec35ddeb35d13d8494aebd5e8237a1d6239 - pristine_git_object: ebf0ada9b31b7f0788d46aa6aa866d91270c86e7 + last_write_checksum: sha1:b59ca09afc101cfe225b37b8c7872e81fd6b3d39 + pristine_git_object: 321617bd7094f98b25bc2ef27698d1b18fd8223c docs/models/platformskillslistresponse.md: id: 03920dfa6e9d - last_write_checksum: sha1:a01d7093df9c1723f0fc7e5e55c75c13d502e8fd - pristine_git_object: 1adcf3fef9224325ffd1a40f5a37e26aaddc3d7a + last_write_checksum: sha1:ed6ed24b10e84239736f93f350d1745812cf4941 + pristine_git_object: c880bd4676f837f07a327ec209b5ebdc5a6a978f docs/models/platformskillslistversionsrequest.md: id: 47bd785d0b34 - last_write_checksum: sha1:c632c4018fd96fbca40e07d7dc3bf318ff65726f - pristine_git_object: a3fa36c955ce74ae0fac7bc821fe969fc407a67c + last_write_checksum: sha1:ea08c60a99059692a7f4c34b19fadde75543b27f + pristine_git_object: 75cd11778c969e1eb9d1cedaf140f876ac68cb2d docs/models/platformskillsourcepreview.md: id: a20f898498fd last_write_checksum: sha1:989f9420ee121202fec25562c5fc30ccdf14d953 @@ -2812,58 +2824,118 @@ trackedFiles: id: 80920192692e last_write_checksum: sha1:ab96df0544d94fda5d111d61cc9b4579a3039df0 pristine_git_object: 6f4626cb6098e3e52101516801035c098c0cdbe5 - docs/models/platformskillsourcepreviewrequest.md: - id: d7467b60160c - last_write_checksum: sha1:7771e2da7324d59d224a9e561721c2ff40209164 - pristine_git_object: 8d0b03a4ac2bc72a3059f1410f7e8f6bbbf0a537 docs/models/platformskillsourcepreviewresponse.md: id: 9f9048fa09fe last_write_checksum: sha1:7b55521b8f0031aeacb1bce804bf0975ba7ae809 pristine_git_object: 0c2df151a3683fcc39d966ca90cabfb9525316c1 + docs/models/platformskillsourcepreviewstreamerror.md: + id: 84fa968012d7 + last_write_checksum: sha1:97f1e6ec20f74e3a964b4c30a416bb2bcb65be40 + pristine_git_object: 0de09b2670392f551db795c2071ad791a0c4c2ef + docs/models/platformskillsourcepreviewstreamerrorserversentevent.md: + id: 10918a76db8c + last_write_checksum: sha1:c2b9e6c793ac949e4bd170397f309f6a807742d7 + pristine_git_object: 0f2bab47602c81d6371c632b06a162234b79cb7c + docs/models/platformskillsourcepreviewstreamerrortype.md: + id: 60f92906cb43 + last_write_checksum: sha1:c73df8474bcfd3c45116d12dcf818e0cb8fc99ba + pristine_git_object: eaea8d89f417242d97fc1c8624f14be7805f211d + docs/models/platformskillsourcepreviewstreameventserversentevent.md: + id: 2b7068826461 + last_write_checksum: sha1:243d109a425d7b57efde6fb37f79a948b43c23ab + pristine_git_object: 1a3ff6a82843a30827c83b3e4ec779b731222025 + docs/models/platformskillsourcepreviewstreamprogress.md: + id: e4da4f206067 + last_write_checksum: sha1:101308495c0e319d9b2b322643be0c48bbddcaca + pristine_git_object: 320e3d52723f656b87ef56dcd38ac50cfbfff4d8 + docs/models/platformskillsourcepreviewstreamprogressserversentevent.md: + id: bbdbc9def3d0 + last_write_checksum: sha1:6c3b5d9682eb5016ecfc11a37651d0210bd9c94e + pristine_git_object: 7f6063119c2da3df8886177b57c6ee339c62f281 + docs/models/platformskillsourcepreviewstreamprogresstype.md: + id: 8aca3319aa3b + last_write_checksum: sha1:16b7cb86c52f089982049c92794793c6023c0dd5 + pristine_git_object: 7a25cd48465de12437e3d637ab9d09b7834528c9 + docs/models/platformskillsourcepreviewstreamresult.md: + id: 356c29ee4486 + last_write_checksum: sha1:549befab1998dde0a248f99971aa18100375369e + pristine_git_object: c778b25759c85313782a5f0ca458661b43d13683 + docs/models/platformskillsourcepreviewstreamresultserversentevent.md: + id: a1ee433e9512 + last_write_checksum: sha1:348b4e1672a02994f3f7893229652a4c4585972e + pristine_git_object: fae2c0e8df796ec87cdb00506c281b0401f3aad8 + docs/models/platformskillsourcepreviewstreamresulttype.md: + id: c65916cbed8f + last_write_checksum: sha1:20aba21b3d7f8a8dc23f8c811484d4eb702eff25 + pristine_git_object: aae68d66595905a1b4d63f18dcfab9e1b3e37f6f + docs/models/platformskillsourcepreviewstreamscan.md: + id: 682dd1c4ac94 + last_write_checksum: sha1:77bc3bf4050ced3f63a869a501be1d48a997766e + pristine_git_object: c9705a55de286bee828d21cf133d413106497f97 + docs/models/platformskillsourcepreviewstreamscanserversentevent.md: + id: 93a676767392 + last_write_checksum: sha1:6140561ddc2c9811e95b0d3e5a14284196417a90 + pristine_git_object: 6b69806dba3fff88363d7028ad084b1512de5416 + docs/models/platformskillsourcepreviewstreamscantype.md: + id: 204786be9534 + last_write_checksum: sha1:8e1393f55c730b391ee12454e0c30313f01fdf70 + pristine_git_object: ba71c62a1d868b4c5c8f1a521066508dd477adb2 + docs/models/platformskillsourcepreviewstreamskill.md: + id: 1022b279fd21 + last_write_checksum: sha1:4803b1c4450544121fd113733ecb9317ab1b3e0d + pristine_git_object: 30f6225d86c636cdd44bd72985e34aebe7af5236 + docs/models/platformskillsourcepreviewstreamskillserversentevent.md: + id: 8951af43b977 + last_write_checksum: sha1:e23975a87d6fb75c88dfc72627d110bc05b617b9 + pristine_git_object: 740b8380ce08e8911a8755a3da825fcad3b6e46a + docs/models/platformskillsourcepreviewstreamskilltype.md: + id: 3e8a3c520903 + last_write_checksum: sha1:ce60088a3d60da225764574db25f58458ed2ed7e + pristine_git_object: 512ad4ade81b7aec03979689d2e561ce83c06556 docs/models/platformskillsourceprovenance.md: id: 259c50c9c90f last_write_checksum: sha1:d59dbc5d8d6a5e0a6da71f5a1bb3be1e0b2c8274 pristine_git_object: e7728f1bfc51509dc05d0b9e293eb08ad68c445c - docs/models/platformskillspreviewsourceresponse.md: - id: be33b627842c - last_write_checksum: sha1:8d5442369d04fcd70f652a28c6258b06cd62b0da - pristine_git_object: 2eabd1c452141c977bdd9e331b859694a4fc2ee6 + docs/models/platformskillspreviewsourcerequest.md: + id: 017ec0950f44 + last_write_checksum: sha1:ba633b1c419b5486a331f6c125dafc3f8e761d61 + pristine_git_object: cabcbff80fb0de9536581d7cf469f96630559ffb + docs/models/platformskillspreviewsourcestreamrequest.md: + id: 8a6b578e83fc + last_write_checksum: sha1:fad6a52c69236fda99be3c361170ec95b0e845e3 + pristine_git_object: 6d30247d171b81ed97a1c1a30f1b790c6f80effb docs/models/platformskillssyncrequest.md: id: d3c24d4f20d7 last_write_checksum: sha1:16c8019fe366f4e5e91a17a18bcba02a937a608f pristine_git_object: 58111860295d2bcff39bf2efbe38d9e2780419d1 docs/models/platformskillstatus.md: id: 33c93e7414d6 - last_write_checksum: sha1:7012661e93710994b8dc2a827b82bdb7da8bbb5f - pristine_git_object: 566f1092589cad8787c57dd7042e2f2c71ea49b4 + last_write_checksum: sha1:6772ad6cc5d999998f407328a948f6da8e16d78d + pristine_git_object: b863a5ebbecc12c027fe079e7600071000326fcd docs/models/platformskillsupdaterequest.md: id: f8592c4371a6 last_write_checksum: sha1:b9e9e33e0c952581b1087225608c9902fc4219ea pristine_git_object: c26ebd332bc1edbbd349c0de8c2ee6217da11c0f docs/models/platformskillsyncresponse.md: id: b449d9f6b2c6 - last_write_checksum: sha1:f8f1d23d37aac8ede523cdb7fa744e9c9dc55cbc - pristine_git_object: 03dbf80751f2c02778e0cc7385705d3aa909d5b1 - docs/models/platformskillsyncresultstatus.md: - id: c9adf6fdba97 - last_write_checksum: sha1:cf5d419b18c912661597d3c70a8dceb632c02a64 - pristine_git_object: 764a5847d5ff5ebbd775bf661c03a756d8b39817 + last_write_checksum: sha1:915b185f95fbcc164290cf2da3094760c6568875 + pristine_git_object: a3e141159f903a7a0c482415c2a2d732f3537562 docs/models/platformskillsyncstatus.md: id: c12e6da882a8 last_write_checksum: sha1:ddca3bc0c472815cbf35240dc3ce2f17c6fc87e2 pristine_git_object: 36b3ddd907f7ed42f42bfb7983afdb9f4dfb2b42 docs/models/platformskillupdaterequest.md: id: 6203e2a98d33 - last_write_checksum: sha1:593dd3b031c30c8fae572763aae685c552f22f03 - pristine_git_object: 1d94bb0a434f77403b9f6c4109e6beb9c71fa6a4 + last_write_checksum: sha1:548e4ade9c41186b1754d8412dd398d765599e60 + pristine_git_object: 3f454aaa8f8a81c951c893c63954a4f9575a8f13 docs/models/platformskillupdateresponse.md: id: de4f570e9a3d last_write_checksum: sha1:da13ed5450b210d4064056c72a712b270e6fe718 pristine_git_object: ae42e1d6a8e34603f2e157126f6eb8e733f6c3ff docs/models/platformskillupdatestatus.md: id: bbf036925440 - last_write_checksum: sha1:21c6edca9d3ba5ae257ae975d4fe66dfd707f6f6 - pristine_git_object: 898c434f2864d96532b529d80076e2b5cb20d68a + last_write_checksum: sha1:27d3f67a9992947df8cfc8ad9fe8d31c24394ccf + pristine_git_object: 87187173601e02a3d9171a6f2b43ba12fa4def64 docs/models/platformskillvalidationfile.md: id: ec82528a1836 last_write_checksum: sha1:f4f4f45aeabf5eb63cf40ce57edc939fe13a8d17 @@ -2906,8 +2978,8 @@ trackedFiles: pristine_git_object: a89c7a90219eb99cf80714dd5307fbdafceccbd8 docs/models/platformskillversionslistresponse.md: id: 04f03f45e509 - last_write_checksum: sha1:3fd42ad6fe3a2cd0ec97e477a960f18e9584c883 - pristine_git_object: edd94537c72a222df7aab60ddd84a4419ff712d1 + last_write_checksum: sha1:666195fb5bd138dceed17accc7fc25c72e11f066 + pristine_git_object: 082388b1d3aa6d33d3413f71d92207e50b4307a7 docs/models/platformtimerange.md: id: c37b2e815a8d last_write_checksum: sha1:31db2f83dba4ccb6d0a5e7b80edbeff356529101 @@ -3616,10 +3688,18 @@ trackedFiles: id: 5e2ddf7b3863 last_write_checksum: sha1:af9eeb7a0cbd9ecd79a0f8fb1eda22009a23a114 pristine_git_object: c7f7adecc74cc4072799169c68332df2d8932c44 + docs/models/ugcaction.md: + id: 084e20e8ea0d + last_write_checksum: sha1:dfb7bbeed7d3e4652f4d61ccd3d2efa35046be13 + pristine_git_object: a8b3445c8f2dcc5ce2514ea7c560f3ae5a177d72 + docs/models/ugcactionunion.md: + id: 5803358c99e0 + last_write_checksum: sha1:d11b8cc7e9ed4196e23515f831769da2205d0e3a + pristine_git_object: 2642d3d9aebd951679111b3089f937ac0c45083f docs/models/ugctype.md: id: 675d62d57771 - last_write_checksum: sha1:bafed49f9b14d83c3286e0e679168973efa19be6 - pristine_git_object: edccbd16624b8810be3c92ee88cafe94e9f76739 + last_write_checksum: sha1:c3d0ea6cf9dd63f17a6011f8b31d57883e961e0f + pristine_git_object: eeb95b91191d22ea33d976fbe6c90fb730991677 docs/models/uiconfig.md: id: c4d3817a701c last_write_checksum: sha1:dd422e5a1bbf9af85722cd43c5437716b8bb3017 @@ -3918,8 +3998,8 @@ trackedFiles: pristine_git_object: adac51700d9683a41dffb2f5c20ee18008a9e135 docs/sdks/entities/README.md: id: a140ac5181b9 - last_write_checksum: sha1:8ed55d70b05f1eb5c6c9f5a660f7321491cf05e4 - pristine_git_object: 55516c7df24464202dc36f9c118c323d266539f3 + last_write_checksum: sha1:bc03774c1d8541c868fe35963f549a1151a4648f + pristine_git_object: a5c95e0ed9dc9054df9e3c28baf3ae23c8e1cde7 docs/sdks/findings/README.md: id: 7f7356eb9e9c last_write_checksum: sha1:31cec287b2a5668e3f3bcf54173669c8a15aa292 @@ -3978,8 +4058,8 @@ trackedFiles: pristine_git_object: 43e735ef788378a15ac4a6e52aa4843ea4c5d4c8 docs/sdks/skills/README.md: id: 3a14a5c90791 - last_write_checksum: sha1:7c5b6dde477b907a0accac6ca019eb5d84aa5d03 - pristine_git_object: 7a11b9bcd4372fcefc3e59e66dc179ee8727bcee + last_write_checksum: sha1:86d96a041a5ab57b6a81ff70301fe3d4f142b334 + pristine_git_object: 6c9d5b42da5a3cff3e329e3960215a0ec0c9cb3f docs/sdks/tools/README.md: id: 044286549bac last_write_checksum: sha1:9b9a8e80c1d16018bd66150ba482b83825d6cf67 @@ -4006,8 +4086,8 @@ trackedFiles: pristine_git_object: 79e388be87446ab6a4064b372bad0e8376d0cb5e pyproject.toml: id: 5d07e7d72637 - last_write_checksum: sha1:50549d323659a35ab0a59c8c19451dc2d0aeba56 - pristine_git_object: b7cb0276a9bf207ec590dcac01947fd965245496 + last_write_checksum: sha1:dbe486cbfd0b3bd898820391ea73c269d83da610 + pristine_git_object: c6ffa3b52149c85754a7d5c6596b00214529923b scripts/prepare_readme.py: id: e0c5957a6035 last_write_checksum: sha1:c2c83f71dea61eb50c9e05da83b16d18b4da8794 @@ -4034,12 +4114,12 @@ trackedFiles: pristine_git_object: 55f23c1feabfedeb7e8cd5bea8b910f0ae0b77d9 src/glean/api_client/_version.py: id: 0ce22b26136b - last_write_checksum: sha1:6c63f673880e68be2815c4272eb4f4360d15423c - pristine_git_object: 4af11e8ed077223e781737633b6fd821ee561c3d + last_write_checksum: sha1:4eee3f3fc38df16b37cc25cf2223e76acfaab824 + pristine_git_object: ce7e0a16939827fd7367c1e2c7385610ae526b3d src/glean/api_client/agents.py: id: b925701a9217 - last_write_checksum: sha1:b911520f8b3938733aa37d8a8a5fb0c0aeb63cee - pristine_git_object: 23c75362dd1bc4f7ff8571dfcba9f1a6e1d3e600 + last_write_checksum: sha1:0e3dd95c81e2d38e1a13c1a0821a37c991ebade9 + pristine_git_object: 67c2c86a4486b542315acf6ee36ce72f2490569b src/glean/api_client/announcements.py: id: 452f3d593912 last_write_checksum: sha1:4b9f4ff97fb9754b5da3a36c1cc8edb02318ed7a @@ -4054,8 +4134,8 @@ trackedFiles: pristine_git_object: bf7b1b3b25ce6530403b0dd9f60599d236c780ce src/glean/api_client/chat_sdk.py: id: f2f30e13ca42 - last_write_checksum: sha1:106d956665429a3966b36f0a7cf70c35a9b39356 - pristine_git_object: b37457a825c6f8f7dd5a1183acf376b0bb187718 + last_write_checksum: sha1:03337f8457e7865116a1e816158488f21e79e10f + pristine_git_object: 2b43c6070fbb74911b70da6478865d80703adfaf src/glean/api_client/client.py: id: c0c188098f10 last_write_checksum: sha1:bfadba5dfdc64280fd9c7bdbf96a0651e5db429f @@ -4110,8 +4190,8 @@ trackedFiles: pristine_git_object: 1187e013fddc68f46bf0601237a4d8d6ba878e41 src/glean/api_client/entities.py: id: 38ebbab2f8a0 - last_write_checksum: sha1:bd52afae4d0b4d60e85189a4f6b999c280128329 - pristine_git_object: adc08d2771a312d55750096248b0f1a82d0432d0 + last_write_checksum: sha1:206168b489dbcfccd78cfab6e655c1228af50b7f + pristine_git_object: 44a41c9875078eb45326a4c198a8726f348ab9ca src/glean/api_client/errors/__init__.py: id: 88bbd5450191 last_write_checksum: sha1:1efa888eacd97dfa261f42013ae3690ab348346d @@ -4218,8 +4298,8 @@ trackedFiles: pristine_git_object: b140b656b788bb0deb8a974420783b338f0521e2 src/glean/api_client/models/__init__.py: id: d5f6ea5efcbe - last_write_checksum: sha1:e8461ac57d0cb12b0d136b1eab7374503d248019 - pristine_git_object: 6eac20c2c6f5bdb7f619dcc74a5c907742b0a8d8 + last_write_checksum: sha1:50532427785ef3167c8e6552e5844a7f194cdf50 + pristine_git_object: d7a3e56e78a8a89ffa1b16aeef242e8b0b0bb318 src/glean/api_client/models/accessrequestpermissiondeniedresponse_error.py: id: 22a2fa0d5899 last_write_checksum: sha1:f7dd6f906a4dd7433992f77395f9fb491fa5ac5c @@ -4372,6 +4452,10 @@ trackedFiles: id: 90f48896fb46 last_write_checksum: sha1:3c4b307b7a965ff51f2f8b9c0d8d558563b397b7 pristine_git_object: 2105b7fe8cacbb74eab2c4d13bee7fe20af2c855 + src/glean/api_client/models/artifacttype.py: + id: 918d9cfbd123 + last_write_checksum: sha1:4d857fe3cbf08b4f921fd5af79f4550216beffc3 + pristine_git_object: 1d5c4d3d3662e6faad1f3ef36a1f93e8447525ed src/glean/api_client/models/assistantinsightsresponse.py: id: ce7387f28d84 last_write_checksum: sha1:9b1c7809e56d14ec0441969ed7a7f2d39aa8d1bb @@ -4422,16 +4506,16 @@ trackedFiles: pristine_git_object: 97d2bf4e337f24d11d53d15916bd5c59b9942b66 src/glean/api_client/models/autocompleterequest.py: id: 23b29c9e7dcf - last_write_checksum: sha1:f2f792c9d5539d92bb275385cae0a32667382c50 - pristine_git_object: 77f48a08f4bde254f8e201d5d03863cd15b9b150 + last_write_checksum: sha1:267be41c9d987da2f2dfc8a0d8ad3cb26e234566 + pristine_git_object: adfebaa0aa87fee2b86ff14fdae1fd527a7008bb 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 + last_write_checksum: sha1:cef2cec709b67247b97ec78441b8191f85867602 + pristine_git_object: 68854db61d5187722f201f2f9d3e5b4552ac6d7d src/glean/api_client/models/autocompleteresultgroup.py: id: 10a91a57b6a0 last_write_checksum: sha1:018ee99331256ffcb4b17c746bc880f0d289bdf5 @@ -4594,8 +4678,8 @@ trackedFiles: pristine_git_object: 6ce3ce9bca35b6fee469e40b1b99a1e8a54fa733 src/glean/api_client/models/chatsuggestion.py: id: d1672ba5a41f - last_write_checksum: sha1:86ffbd3413a5d8ed6b631d10d8f888f617b99ac9 - pristine_git_object: 8d24fdad03c32156f977ad28ba870e31ca40ef0b + last_write_checksum: sha1:25280fb880062a3038cfbae9d4f730bd301a5118 + pristine_git_object: 95b2928c2a520e742bce07896f7ab4aace936e4d src/glean/api_client/models/chatzerostatesuggestionoptions.py: id: c2b8ed9c9949 last_write_checksum: sha1:2d1b44dcd4d7b15343829548833a2e257b3106e2 @@ -5298,16 +5382,16 @@ trackedFiles: pristine_git_object: 44041cb376d89949c815ea1e7813505940605855 src/glean/api_client/models/feedentry.py: id: 023eb6c10ae1 - last_write_checksum: sha1:803bdce57dc5815add1ac47744ecfb35ec26b3b8 - pristine_git_object: 83e2c6f0abadf1a67f849ff34c9ec825be039bd4 + last_write_checksum: sha1:fb8bf6c223b3d9110a3e891998e57e6f919ec4fa + pristine_git_object: cee66e4fa0c720a70490a07c3f3bd004863d2075 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:5d2d1b1a5b9cca934cd4d1a91b24b1a78a5afe3a - pristine_git_object: 75cd4b1bd2b9eb2508887a6e83485136713adef4 + last_write_checksum: sha1:5f5022567797b05cab8899b5e8cf4a2eb74e355d + pristine_git_object: 90fefe1458da4b214c170bfaecfe75c174d39cfc src/glean/api_client/models/feedrequestoptions.py: id: b99003fbf522 last_write_checksum: sha1:d5ffee29242075cbe6d2dd5ec916b0c3d40acf54 @@ -5318,8 +5402,8 @@ trackedFiles: pristine_git_object: 683438c837601f483526ec18756fadc7222edb24 src/glean/api_client/models/feedresult.py: id: ae187332b37a - last_write_checksum: sha1:d0e0236236965e4d5f2b3dd8776849e5e0bc36fc - pristine_git_object: f450760d9e50554270028662971d013df801cbd6 + last_write_checksum: sha1:fab0dcd390434b5e54ba79e34ce2c232f7e68f5c + pristine_git_object: dccf45add539232ef985984b429e9b3cdfb2add2 src/glean/api_client/models/followupaction.py: id: e2de5c4c8524 last_write_checksum: sha1:49e1a826449081fecfcd828c940604db949a8533 @@ -5784,14 +5868,18 @@ trackedFiles: id: 5cd6cc3b46ca last_write_checksum: sha1:b2717bc4112725c29f9d41376e51fc1212ab844f pristine_git_object: f0f511048d7e6766eddca8222503bfa475ae120a + src/glean/api_client/models/mcpauthmethodbreakdown.py: + id: 4bf72b45633a + last_write_checksum: sha1:88cfbc1814bbbfdb52269472f0c42c6f2e064da8 + pristine_git_object: fb87c13ee59d6a349c0244bb4aa7a3490132c965 src/glean/api_client/models/mcpbreakdowninsightsrequest.py: id: 332e57fe91b4 - last_write_checksum: sha1:1b302a4ab4ac5f6c4d7f23aa00c213984b44e340 - pristine_git_object: 2893dadf9907c3784a93a86adbff8918aebf62e6 + last_write_checksum: sha1:b8a5b8ffbe594cfce61d0183bec0379441638511 + pristine_git_object: 4d3a744d015294bb021141563748b237fe19a669 src/glean/api_client/models/mcpbreakdowninsightsresponse.py: id: 8d4c4b79318f - last_write_checksum: sha1:4fecec20445ede1663c33a02bbbf199f8abb71f5 - pristine_git_object: 5afd6a5c6f4462d2e2dc8fdd3500253fb820c54a + last_write_checksum: sha1:327324327a51d768f191da5325d9c018d51bef43 + pristine_git_object: e3f49671ad14aa1528da0f08e6a7a54cbcb2d01d src/glean/api_client/models/mcphostapplicationbreakdown.py: id: 1781ca7f416c last_write_checksum: sha1:d745fe25cc993a40ccee8fad5b7f754c4f839ddc @@ -5814,8 +5902,8 @@ trackedFiles: pristine_git_object: 5fcb1924ca16d5dad4fe73daaf5465584387fd9b src/glean/api_client/models/mcpuserbreakdown.py: id: 1dab2bbf7d27 - last_write_checksum: sha1:d10980a038d4d7e3384c46d0ddbaf2b6b1a0e93c - pristine_git_object: ec4587ff6a16cb153f3de2a43edc1bf9ee7eec53 + last_write_checksum: sha1:1dfe73c56e8671378f42ae0a04c8eb9b8abbcf02 + pristine_git_object: 42a1ac29e3a9b8b16e5ccddcbef7b94139da8394 src/glean/api_client/models/meeting.py: id: 0b1f0fdee050 last_write_checksum: sha1:d727361f35d0138e09cfd1bc1e8480afd0996795 @@ -5862,8 +5950,8 @@ trackedFiles: pristine_git_object: ab286401ed0296450b2ba4751cdb51ccff6f5a5c src/glean/api_client/models/peoplerequest.py: id: a7dcc3001149 - last_write_checksum: sha1:3d45a0ac68de0c33d9e040aa3e263653808803bf - pristine_git_object: 520c04d8b03a50d6c062827eb9dde4f67057f46a + last_write_checksum: sha1:1860e6f7a24bdb3bfbc40847d525b1272d924dba + pristine_git_object: 1ecee9b17688fcee5d67e193b1ca08cd878f74a4 src/glean/api_client/models/peopleresponse.py: id: 85f4d95884f9 last_write_checksum: sha1:ed99cd7a6f88c2b90a020d44ca984544e9693cb6 @@ -5886,8 +5974,8 @@ trackedFiles: pristine_git_object: 52b20386d1215ca9d5ddf1510c569954ae510c38 src/glean/api_client/models/person.py: id: 486c8c3db123 - last_write_checksum: sha1:277538c34f3024a5aa55ea6476e84268555c3eb5 - pristine_git_object: 24355a993c1e2b4e370eac468508ccf90242ac1c + last_write_checksum: sha1:1a6ad2c2c4cbe493c84499fe442660ae8ba56005 + pristine_git_object: be88dd7ee62fed92315207cff2267fc5d437062a src/glean/api_client/models/persondistance.py: id: 307f87d6cd91 last_write_checksum: sha1:90c27054198a8779074839f5226724e81271b462 @@ -5990,16 +6078,20 @@ trackedFiles: pristine_git_object: fc64256bf43449e23e1e7d093a45ee3fdfc441e5 src/glean/api_client/models/platform_skills_list_versionsop.py: id: 4d91c282c246 - last_write_checksum: sha1:4d572ac46c4a7085442f8724e12fed67ee6256fb - pristine_git_object: 145d396dbaf75e185792e6b19a4f0d635beffd37 + last_write_checksum: sha1:6d512e70608e914407b2a51c96ddbe9e54815e21 + pristine_git_object: b34fd73fdde468889d03ff2534a9ff58a4fca25d src/glean/api_client/models/platform_skills_listop.py: id: 2172706b6858 - last_write_checksum: sha1:7e9d92bd23b8072d38fc787c08d2c1d11afee1dd - pristine_git_object: 3f77419309047da04a558921ae77b447bf465d40 + last_write_checksum: sha1:ec8e8ead0aba41dadf4c74c51c9544f3f121a191 + pristine_git_object: 5c21fa77645acbbeaed69a4e5ad7cb9844670e3b + src/glean/api_client/models/platform_skills_preview_source_streamop.py: + id: 18b6a2dae087 + last_write_checksum: sha1:ea54a718241b065e791ed9f8e967818908521288 + pristine_git_object: 2ce11df6c8c13e74a959efc0ebc1b10e1a37169d src/glean/api_client/models/platform_skills_preview_sourceop.py: id: b7afa7764cef - last_write_checksum: sha1:cc21b3ead6075cb3db6426c2329b070648cdf32b - pristine_git_object: 30dcdd72bccb0fbfafd8c74a556654fd98da0b04 + last_write_checksum: sha1:72d025c4863fddbcca0f2ffc40d0647b5379875b + pristine_git_object: f56672761b4b2dee0cbff34294868eb7448492a4 src/glean/api_client/models/platform_skills_syncop.py: id: c6a29bedca20 last_write_checksum: sha1:90811712776457d85a5abe880857d1aef55f0197 @@ -6292,6 +6384,10 @@ trackedFiles: id: 2ff9ab749423 last_write_checksum: sha1:a366e67090ccf5a9754576467db2043a33e8a8e2 pristine_git_object: 3f68797935412add6a9cbe28335641064352c8c5 + src/glean/api_client/models/platformproblemdetail.py: + id: 564643c3d847 + last_write_checksum: sha1:bc77e15836741f22cc5d2f67b8fe32d2e4668986 + pristine_git_object: 05d4d46e2111a803b4194f0d81d50b315a7efa15 src/glean/api_client/models/platformproblemdetailcode.py: id: 3aa0b8193255 last_write_checksum: sha1:7f0f9bc67cdaa742e4cf4494bf2a3c29f8b58a16 @@ -6318,8 +6414,8 @@ trackedFiles: pristine_git_object: ff13d204ece88b150c32fb69c65e266c7756b1af src/glean/api_client/models/platformskill.py: id: 10e1f311015c - last_write_checksum: sha1:c0225f37738625dbb6cab763be77cf5e40beafeb - pristine_git_object: 4b7e21a7eff4002f44ca69cc00ea080b152db720 + last_write_checksum: sha1:e1a70d0d4758869a8afc969c11b59f8426666c64 + pristine_git_object: d77b1fa2833bbe578a96a19f0402770e9aacf491 src/glean/api_client/models/platformskillcreaterequest.py: id: 9d75227d70d1 last_write_checksum: sha1:f6dadfcbab4b2800dd99abb6807b82b27c8c288e @@ -6338,16 +6434,16 @@ trackedFiles: pristine_git_object: 00ca6da543a5ad48d248e87c5199b36a415e8f2d src/glean/api_client/models/platformskillimportresponse.py: id: 5c641d8380aa - last_write_checksum: sha1:12aceeb94df10e62efcf8438f8db1b14cf92a5d2 - pristine_git_object: 4e8827e598b98f0f70a1a8fa6d132d56e421ed6c + last_write_checksum: sha1:f39609872801aec07d3ec7830aa5b4f8d21027eb + pristine_git_object: f07899250a6c4e5058cf71b41de0f25222b77699 src/glean/api_client/models/platformskillorigin.py: id: ac7dd2421a25 - last_write_checksum: sha1:d3373713ce852bfc79d180d5a9cb6d27d5bdd0e3 - pristine_git_object: 320c60ec3c2d46cef59742d40c6de29c43425776 + last_write_checksum: sha1:e75c12568b0a13107be45cc71c61343f91a4a5db + pristine_git_object: f05da6ac9653f6ba3b9fb1de2f1bd66730aa00ae src/glean/api_client/models/platformskillslistresponse.py: id: b031da1d2783 - last_write_checksum: sha1:45e8d141fb11032f3fd143d1818845a7eb750c3c - pristine_git_object: 7303b0519deea755bd54b5f5a42e5e0908c5c92f + last_write_checksum: sha1:771558db4f0e0d491b51cce54360fd084fe31051 + pristine_git_object: 8d37912ab9c1d7576088665dc12638d485bd510b src/glean/api_client/models/platformskillsourcepreview.py: id: aeb8f137962d last_write_checksum: sha1:2e2fd40151aff7cd3f0cb08997d66ffce8bfc314 @@ -6364,46 +6460,82 @@ trackedFiles: id: d7594e3706a8 last_write_checksum: sha1:8111240b45e77e5605be4d2993df8cbb0d1fe89b pristine_git_object: 71aee5339cc6d9c46394bd7c34b50cd51cde5a40 - src/glean/api_client/models/platformskillsourcepreviewrequest.py: - id: 521e672126c6 - last_write_checksum: sha1:987c57fe9b2db03d39cac8dc58750e7dfdacf7b3 - pristine_git_object: 92057490d80383015b2b175b7cd1b07845f46a24 src/glean/api_client/models/platformskillsourcepreviewresponse.py: id: 41861007f222 last_write_checksum: sha1:9eb2f08cf3b4ed7924286cc6c0233868ca1168c2 pristine_git_object: 37cf8bc1466c6482fd43c53d3ac2b54759d7d9b8 + src/glean/api_client/models/platformskillsourcepreviewstreamerror.py: + id: 5a87352ef914 + last_write_checksum: sha1:4334a44e1c7d20ca04ee3f9bacd4ee0af81d90a0 + pristine_git_object: 68f225d37986aa6aa2a122bdaf8c9d6650720eb3 + src/glean/api_client/models/platformskillsourcepreviewstreamerrorserversentevent.py: + id: 3d6a6f10c215 + last_write_checksum: sha1:7b4fc344bcf4b976f1ac30c635b33bb74c350ad0 + pristine_git_object: cd9a68bdfcea436b6dd29b7cf495f27cba535b0d + src/glean/api_client/models/platformskillsourcepreviewstreameventserversentevent.py: + id: 187d998b8358 + last_write_checksum: sha1:57c6e49c9c023f8feda24909b2e8a8b13a164e5d + pristine_git_object: a4974c16fb4e51fba062d1a25c6b1efad390610e + src/glean/api_client/models/platformskillsourcepreviewstreamprogress.py: + id: 4150674e4e9b + last_write_checksum: sha1:8d9f98350d600f09481f85d39d59e90cf60023c0 + pristine_git_object: ecca3b704cd9db73933238972abe905e8f3688b3 + src/glean/api_client/models/platformskillsourcepreviewstreamprogressserversentevent.py: + id: 08a0cd6abc04 + last_write_checksum: sha1:dcc1a85f50f73fd1ed260233241c4e80c08bcc70 + pristine_git_object: 60c2dbed5e9f4464fc77ff713d5eb2fe35b1a109 + src/glean/api_client/models/platformskillsourcepreviewstreamresult.py: + id: 36520c198eac + last_write_checksum: sha1:7c2f9f0100f9f84584e31863615d0e3c98a611c6 + pristine_git_object: df6d3b6ef858e6c4415579d09ea3b4da137cf569 + src/glean/api_client/models/platformskillsourcepreviewstreamresultserversentevent.py: + id: 4475a41fb7e4 + last_write_checksum: sha1:72ec21c35c356c749b601685f87f9eef59be019a + pristine_git_object: 0741143e4b96a4fb01f0f26116bd2be1c1b0fed7 + src/glean/api_client/models/platformskillsourcepreviewstreamscan.py: + id: 3361e8ce4f5a + last_write_checksum: sha1:acf9e15967f6864307c0c29b109a9c265d1f010f + pristine_git_object: a8fd422972c649a00c59dd85553ecba063c2d3d5 + src/glean/api_client/models/platformskillsourcepreviewstreamscanserversentevent.py: + id: 0a1e279e7ab2 + last_write_checksum: sha1:dc4e9d65b448d67b88c6c93fa76814f95ecce53b + pristine_git_object: aa588667793ad02acc2b771bb991e3f3a82eb75c + src/glean/api_client/models/platformskillsourcepreviewstreamskill.py: + id: 7a2284184193 + last_write_checksum: sha1:071f2b93c7f5671f8932b50c148545cc6a874516 + pristine_git_object: 937205e34b188f3f5112cd3e8feabe190a6972f4 + src/glean/api_client/models/platformskillsourcepreviewstreamskillserversentevent.py: + id: a7a0cb837838 + last_write_checksum: sha1:6259d650dadb7a3bedc7ec369f197e6fc3fd1e52 + pristine_git_object: 6197d06de7f450eca9fe73fbeb6b9cb6534f428b src/glean/api_client/models/platformskillsourceprovenance.py: id: 9d34177a5499 last_write_checksum: sha1:f1e2f0b74c65cd83e452b6e1cb0e33f0921c1085 pristine_git_object: d1352b1f9d6654cc43a2c81e33177d5c9a0e8528 src/glean/api_client/models/platformskillstatus.py: id: 4576e2918e48 - last_write_checksum: sha1:1590f56ac48366b921495bf292ee76b6e847d4e2 - pristine_git_object: d57185fb36c553090f5e797908e9f47447901c0c + last_write_checksum: sha1:f7a447d7333ae356690db028cc6d43c3f0bf8f7b + pristine_git_object: d705872350e43b38447834a1dd5b5574fe308612 src/glean/api_client/models/platformskillsyncresponse.py: id: 6de5744ff262 - last_write_checksum: sha1:945703bb35b623bd6b98200f00e17fe7c653f2ce - pristine_git_object: 731c531db42da5de432430aee73cf11706bb310c - src/glean/api_client/models/platformskillsyncresultstatus.py: - id: 453d374eb1cc - last_write_checksum: sha1:f8cac0172ec78194127e051d04f0af14e0012d2d - pristine_git_object: b85415a1e5bd2e1c3fb32ff934e89b60338d1c43 + last_write_checksum: sha1:7d2ec9da8ef2962769f964b56b47e1199055aecf + pristine_git_object: 8fe7526e9bed75768019ab8123f553b3abfae62a src/glean/api_client/models/platformskillsyncstatus.py: id: 4603ae41cbb9 last_write_checksum: sha1:911e9731ed66a257df85158125499d212a37f995 pristine_git_object: 13fb6bcf5a11934ae1c8e1cd100715fd8aaaedf6 src/glean/api_client/models/platformskillupdaterequest.py: id: 02dbc059a73d - last_write_checksum: sha1:84dd229a9a3f9cf61b6be86a544bece3187b5c22 - pristine_git_object: 0d87a591d2b5c92c347c166731dced9c89da0330 + last_write_checksum: sha1:93bece11a36bb7953324f8a6999f94c31c847a4b + pristine_git_object: 77732fcd46db281be7c884c4ca5a6426b3110750 src/glean/api_client/models/platformskillupdateresponse.py: id: 4a7d3fa0c78f last_write_checksum: sha1:ea15b9e50758327fe3bb81eeae59c81f226dcc6f pristine_git_object: b508a52fe52301ac4c371126c3ea8f09d411b6a8 src/glean/api_client/models/platformskillupdatestatus.py: id: a1d6763af4bf - last_write_checksum: sha1:3655d3529f2bad31a7424a908deaa69afc46782b - pristine_git_object: ede7b308d849e5253a989fd75bd3485b16bed70e + last_write_checksum: sha1:9d2335cb91a2e2c0ae3488a36dc8d8fc47214d12 + pristine_git_object: 50cf71de015a456447b8260ae703304c5470862d src/glean/api_client/models/platformskillvalidationfile.py: id: 840ce4c25e59 last_write_checksum: sha1:a179e1a787bba71733234145ad88e9dd3350cd5a @@ -6438,8 +6570,8 @@ trackedFiles: pristine_git_object: 828ce5457e0a36292852e503244f1af9a23429e7 src/glean/api_client/models/platformskillversionslistresponse.py: id: 6ffeabf770b5 - last_write_checksum: sha1:0a3bd8c4cccd599f3fea52d575eefd59d83c7e0f - pristine_git_object: 2ae04090bb81ff38aeed222fbb2330e20d169eff + last_write_checksum: sha1:5a7d3f257969977964f675198fc992d98a4a24ab + pristine_git_object: 37b4b1c81f298ffdc3060a16c62ce1db60834236 src/glean/api_client/models/platformtimerange.py: id: bf2b03e84949 last_write_checksum: sha1:645217a3827cd2a7455b88277f1ba2dcd4a5daf1 @@ -6980,10 +7112,14 @@ trackedFiles: id: 80ee602f49c0 last_write_checksum: sha1:fcb7dcb2d397e61affaee277952ad255b1f3a947 pristine_git_object: 8b5a32ccf25fcfb0fb904e8046bf1b36110a3880 + src/glean/api_client/models/ugcaction_union.py: + id: d9231b157fa4 + last_write_checksum: sha1:7bd0713052e74bc3e94a483d1c965514bd07a24e + pristine_git_object: 996aba534af9f341160fb24d69929485144ad377 src/glean/api_client/models/ugctype.py: id: 9afda9fb9dd7 - last_write_checksum: sha1:3464ec5db301fcfece53e316e4325f69ef3b4f9b - pristine_git_object: a628cc8f00ce32c24ed9b022d6ed64e4bf1db2dd + last_write_checksum: sha1:c4ba5152fbf0a17867802a623278a8e56064bc4f + pristine_git_object: 01c9179afe6b224cfd50edf19752e43e7d962979 src/glean/api_client/models/unauthorizeddatasourceinstance.py: id: d3507c78b8df last_write_checksum: sha1:e86e33256eecf3766c2cc9fedeab56e34e0f129c @@ -7190,20 +7326,20 @@ trackedFiles: pristine_git_object: 22e0a4eab0ef8e54dcfd986084d01c14a56f47a6 src/glean/api_client/search.py: id: a3b404a8b402 - last_write_checksum: sha1:4c0766eb4af35b2cabd60ee4b3d0d1d617ef11ca - pristine_git_object: 0c1935e06607a39d513f45b02bf52a155a8614cd + last_write_checksum: sha1:b2c68f6baaabeaf0e14fd6e77dbde9bb80802696 + pristine_git_object: 7150efbff6e08314d6f576f8c0c38235d0e41db5 src/glean/api_client/skills.py: id: 79f3c37e1b5a - last_write_checksum: sha1:aebe5c9b6e2b24a13332ca13160d3994e008e477 - pristine_git_object: 89e97e10c092905a2b012a8f05f8fc986d018c6e + last_write_checksum: sha1:a9f6ddb1d28b6428e95bbe4c842e30a75f2b197b + pristine_git_object: 4a80b99769c3996fe837b41a2a41ce2c2a24372a src/glean/api_client/tools.py: id: 3ea40147c1cc last_write_checksum: sha1:017a12cc5b3fdce612fdb317a468b370e5100cc3 pristine_git_object: 702acd70ae3e1296fbc0346dac0870d4e3d1b16f src/glean/api_client/triggers.py: id: 9fac703b5844 - last_write_checksum: sha1:d69e3d7a3d4cc92b7ee4a37e61c976bf6b36351b - pristine_git_object: d05463361ba35042adb30f476181c9eb36ad4d5c + last_write_checksum: sha1:289fb16e30d0b9e1523f278b4bfb0e95f10aff26 + pristine_git_object: 3bbd7579fe769c115a3563915231b013cd30b5ab src/glean/api_client/types/__init__.py: id: f63c790831ee last_write_checksum: sha1:f9ad14217f832e74f594285960125add50324be9 @@ -7226,8 +7362,8 @@ trackedFiles: pristine_git_object: 12e0aa4f1151bb52474cc02e88397329b90703f6 src/glean/api_client/utils/datetimes.py: id: cc5f732df6a7 - last_write_checksum: sha1:fa47d54c549ff9b95496ce91930fadfb04a36be9 - pristine_git_object: adad24762cf452d137abe94fda0fd26224cef593 + last_write_checksum: sha1:dcbdac8f63789f5d41b64d4d0515db77961e1d0c + pristine_git_object: 688c29a59b33a38c3b8bd3276f89c98483fcdb58 src/glean/api_client/utils/dynamic_imports.py: id: cc87d9ea2304 last_write_checksum: sha1:a1940c63feb8eddfd8026de53384baf5056d5dcc @@ -7282,12 +7418,12 @@ trackedFiles: pristine_git_object: d65a9662fbd980da32b4a2af7066036450a09c01 src/glean/api_client/utils/url.py: id: 1e37881af992 - last_write_checksum: sha1:6479961baa90432ca25626f8e40a7bbc32e73b41 - pristine_git_object: c78ccbae426ce6d385709d97ce0b1c2813ea2418 + last_write_checksum: sha1:0269c7e27f701e0c72d44bc2a36ac4d44ef2108c + pristine_git_object: 8eeaa7b0cc48e5e528afc0527da8b76ef46308d4 src/glean/api_client/utils/values.py: id: 3c2d5aa49b0e - last_write_checksum: sha1:65e1ee8607767a4fc1ae7a55c74d77a23ab3cef1 - pristine_git_object: ac217f473c5d52a454a2979b3eb35e66175d365c + last_write_checksum: sha1:c0eaaf8779a4ba3ae068579a57182667efef0cb7 + pristine_git_object: 094755b73f7f9382d8df997602080c82a55896fd src/glean/api_client/visibilityoverrides.py: id: 85e53a1c5de5 last_write_checksum: sha1:633cf3b5b0f1f2e4359d271a3a678a229e95f20a @@ -7382,20 +7518,20 @@ trackedFiles: pristine_git_object: 61dfb292ca694340fd9796a891113cfb07aa8a32 tests/mockserver/internal/handler/pathgetapiskills.go: id: a1697453079c - last_write_checksum: sha1:1608120c2f9ce748fdd2d373e576b6a0758092c1 - pristine_git_object: 7baa51e79fd4c8ed0f5c9ebadf5030c74e966973 + last_write_checksum: sha1:a55e5b037d9f0e456da29cb0a42a885f008d6b1e + pristine_git_object: 7eb2a3a1fc9f63f752f7890d231e2f2aab702211 tests/mockserver/internal/handler/pathgetapiskillsskillid.go: id: 97a0dcaf8ddf - last_write_checksum: sha1:d939db8a7f6d6e5b3e09402246efd0d1b53c44eb - pristine_git_object: 4f097d8448491dc032cba2fdbb1f9aae85f80600 + last_write_checksum: sha1:24aa74ef2592dcaaa912f1b9fea68c7662f39f76 + pristine_git_object: 7e0b98d73ed1b22de3957e3450a027046599a2dc tests/mockserver/internal/handler/pathgetapiskillsskillidcontent.go: id: 5a0bd6fb5b08 last_write_checksum: sha1:9765b1ebe84d20e2dd85613fc06fe22d1480315f pristine_git_object: 4a1564dde9fce01753cc7f40030578593bc5b2b5 tests/mockserver/internal/handler/pathgetapiskillsskillidversions.go: id: e8b9995766c3 - last_write_checksum: sha1:ceff593610562de91fd47b0694d8231834f8f8b2 - pristine_git_object: 878e7567ff9bba78baaa03b2a59c2b82f641d4a0 + last_write_checksum: sha1:44fbd551c419ec13c7ea3def121f8a5c3cf0ae72 + pristine_git_object: 41840fae0388e7a4ac5e650a546a1710952693c8 tests/mockserver/internal/handler/pathgetapiskillsskillidversionsversion.go: id: 6b886ba93965 last_write_checksum: sha1:66539864b0089984ac709c946711d854bc4a1930 @@ -7482,8 +7618,8 @@ trackedFiles: pristine_git_object: 163466cb44aa1a16439b3bd65ab52f00aeeff427 tests/mockserver/internal/handler/pathpatchapiskillsskillid.go: id: e09721a8879b - last_write_checksum: sha1:90c425f15814afd0ac42817b7ad6a056b6efc278 - pristine_git_object: 2b4d9db548fd58503a768732db17aca59d354d25 + last_write_checksum: sha1:f2d567eb1aa2e0b539119f09ce5a1d18326aba1c + pristine_git_object: abc15386116735f44ec67a9fa7801f55973961ac tests/mockserver/internal/handler/pathpatchapitriggerstriggerid.go: id: 76c9eb373567 last_write_checksum: sha1:e444fbfab92b77e23c98fd0e33531018450185ed @@ -7634,24 +7770,24 @@ trackedFiles: pristine_git_object: 1e3fe6a9bed655ba32d7c59fe577f41beac69da8 tests/mockserver/internal/handler/pathpostapiskills.go: id: 8ed490cc6d95 - last_write_checksum: sha1:5749c3cbb8d3cc90c75ead5cd6547775e97d1ef4 - pristine_git_object: dfe54aafb86188b641df7d3f4ab98fba364b68c7 + last_write_checksum: sha1:baf2227d6bd2c85e94842170a811ed97ec2e2b5c + pristine_git_object: d69982892fc128b84300a4507e9fe1d15ade935b tests/mockserver/internal/handler/pathpostapiskillsimport.go: id: 07a47818c029 - last_write_checksum: sha1:41bc34387c843be0cbccb2bae4af32a7112e76f7 - pristine_git_object: cdcc73daba6ec8b34a04797674ce757cfce51e6b + last_write_checksum: sha1:4410caa65fa50da5b941547b5dd17b1e2c68ffb9 + pristine_git_object: 6c82be5d55724173c78931456a028f514902d293 tests/mockserver/internal/handler/pathpostapiskillsskillidsync.go: id: efdd0a8f2a3d - last_write_checksum: sha1:39cdf62ad6655c214bb0e38092b0464862e0a039 - pristine_git_object: 0cab544fc9c247c4b5f8d19a1e83d47996c7501f + last_write_checksum: sha1:a2081eecf8bdf5a392d788a9b87182ec59450af8 + pristine_git_object: c54314faee70f92e1a882b7a12f3bfcfbbec8638 tests/mockserver/internal/handler/pathpostapiskillsskillidversions.go: id: f6e6dcee5ffa - last_write_checksum: sha1:5a244bc3c1b083e78d22e3358ac4691ece188428 - pristine_git_object: 1f3d1fde1c6e5db9a85a116b88255e61a451fab4 + last_write_checksum: sha1:44b93ca1008e2dfd4a3ab346fd3159690f2e7185 + pristine_git_object: 664245fc17546fda61773d1dabaa8aed1c55a59e tests/mockserver/internal/handler/pathpostapiskillssourcespreview.go: id: 58d10f72cfe6 - last_write_checksum: sha1:f648c8848f17daa6b1777d48cddfa881ff0a6d2f - pristine_git_object: 11e0efcabee999d01568917c5497ea70e3804e62 + last_write_checksum: sha1:e3f49b6ee23218bbcaadd4c2dc2a5345be4251a7 + pristine_git_object: f8a79c8f6f62b627e17d9493adf18d4bbcbfa5ba tests/mockserver/internal/handler/pathpostapiskillsvalidation.go: id: eaa6c1478b34 last_write_checksum: sha1:cc8f959924866fdf5febe729b5d5819ff7e53173 @@ -7726,8 +7862,8 @@ trackedFiles: pristine_git_object: ab9263d43404e8e6f07af222a3e785aca2fbf35f tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go: id: 3fb93a419933 - last_write_checksum: sha1:7b2ffc9e36bbfc20c3bc1894f3727f96aa94ac74 - pristine_git_object: 75fb8eb70f6913c8f83c2895f5542bee631ffdaf + last_write_checksum: sha1:09a57acc1d004a2fff76290b6c25e24471ad333e + pristine_git_object: 469bd6e6ee30bb11661f2a596a4504b75fa07da0 tests/mockserver/internal/handler/pathpostrestapiv1createshortcut.go: id: 8d9d3abb0c34 last_write_checksum: sha1:dcdf684a85e20db1aee571db9a54a3ee259d71d5 @@ -8100,6 +8236,10 @@ trackedFiles: id: f5c8280eeff5 last_write_checksum: sha1:5d7841e6270918e5e1b59873c394d8a0b2eb1bc9 pristine_git_object: 13c623198b89959d69b58e6ccc7c73a0a022d4d0 + tests/mockserver/internal/sdk/models/components/artifacttype.go: + id: 531dffc323b2 + last_write_checksum: sha1:e3bbbec36f39ab4e8a4954a397d6065d804e9e42 + pristine_git_object: c07eb6aab361c53cee6508dad5b3e4a8d657b961 tests/mockserver/internal/sdk/models/components/assistantinsightsresponse.go: id: 8ca7fffccbde last_write_checksum: sha1:cf4bf37d272fba27bfe92b0f3e39f073550a4fb0 @@ -8138,16 +8278,16 @@ trackedFiles: pristine_git_object: 774930f21f6761e703d10082d6fd42bd5d7c5c32 tests/mockserver/internal/sdk/models/components/autocompleterequest.go: id: 56aa024b9118 - last_write_checksum: sha1:86415b3329533a2415815b14551f11a9c3dc3c3e - pristine_git_object: 2b02c414795216c099acd4479055f09d9c3d5492 + last_write_checksum: sha1:63941c26209efd373583eab713bf1a7f7c15f836 + pristine_git_object: d3de9d57317f6d2a6bb29809b40dbb35d2a75138 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 + last_write_checksum: sha1:b92d9a256270afead636fb8deef48cab8aa9d865 + pristine_git_object: ea673e0f3f70bc872d438019452cf4a46ed56fb2 tests/mockserver/internal/sdk/models/components/autocompleteresultgroup.go: id: 37b04686e61d last_write_checksum: sha1:7ef163b02d59c2889529b21e4eaf2c8c03ae08c4 @@ -8302,8 +8442,8 @@ trackedFiles: pristine_git_object: 33e8680da35e1cedaaa8ca6a0d98c1a564f6b7a1 tests/mockserver/internal/sdk/models/components/chatsuggestion.go: id: 33e4338b5b24 - last_write_checksum: sha1:40e54396ba6c59a5a6e92c49fd2c1a62af9d0dab - pristine_git_object: b8269ceb3de0ce38bec7ff3626ae677546e8a646 + last_write_checksum: sha1:498d32b82301d6117a5f7cc13beb4c8fca6bca9f + pristine_git_object: 73c2c22242eacc81aa8fa758f5e9d9537284d981 tests/mockserver/internal/sdk/models/components/chatzerostatesuggestionoptions.go: id: a6d088eab1c2 last_write_checksum: sha1:da633547681ec1c8ef5df79cc1d2919fb3714d13 @@ -8906,12 +9046,12 @@ trackedFiles: pristine_git_object: 04cc3a93272ac70933b0485bee31b335e05ab623 tests/mockserver/internal/sdk/models/components/feedentry.go: id: d25fd66fcf7a - last_write_checksum: sha1:f0a0c2321e2aff01b51b21b61df68d95f5ba979f - pristine_git_object: 44f5dfe7632e9ca462176445542fe70166921464 + last_write_checksum: sha1:a5c453b80a8cd765da109f17e128bcc57c418669 + pristine_git_object: 44e6f90dd617a59fce764b859519dc4e3493269d tests/mockserver/internal/sdk/models/components/feedrequest.go: id: b06bc4cef0cf - last_write_checksum: sha1:dba9418e46ca3f7d4fddec08c66623f9771d590d - pristine_git_object: 9489bdd527389d50e3826ebbeedc8de805528e57 + last_write_checksum: sha1:f70dc70fb6a3a9bd40567c898babf2f960b5f342 + pristine_git_object: b89f4ded9d810d810ba2c40da5be15273df10e21 tests/mockserver/internal/sdk/models/components/feedrequestoptions.go: id: fd9245fe1bf2 last_write_checksum: sha1:fa30b7fd6ee3e45896d7bbe36e33e7c0cb9000ba @@ -8922,8 +9062,8 @@ trackedFiles: pristine_git_object: 54f9d1a8997983156c84e69f888c59a80d06c2b1 tests/mockserver/internal/sdk/models/components/feedresult.go: id: 47411573e67a - last_write_checksum: sha1:ecef21a7754d70942718bf1dc156a8222c8fa36d - pristine_git_object: 4d9a33d3f245e67bb3d7ace1b5396672c73e236d + last_write_checksum: sha1:26eed6dc44ec225ca2646173c7c3e9c89fe112c4 + pristine_git_object: e2417ff8956ef297c8cc96de44535c47977574cd tests/mockserver/internal/sdk/models/components/followupaction.go: id: 38179fec19b1 last_write_checksum: sha1:32a31f7af77a58ce6f3284e8550d01fcf0d3bddd @@ -9256,14 +9396,18 @@ trackedFiles: id: ca109f859575 last_write_checksum: sha1:9c066d47590c5ee9823f57a51466268e2893a13b pristine_git_object: 23fb1a7da94ab17bfa0b54a45e12eb0ec3f59562 + tests/mockserver/internal/sdk/models/components/mcpauthmethodbreakdown.go: + id: eb802c4e50f1 + last_write_checksum: sha1:75d07caabd32a8e2f1c5afbbb860a089c38e7aad + pristine_git_object: 31f4103f51a93dd9d1e9ca159af4bb3130b46e32 tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsrequest.go: id: 9ffe49fd371c - last_write_checksum: sha1:70341128cd46d9472de34bd3d58ac377f37d2580 - pristine_git_object: ef9a081c408459b7ef665bc6b1e89ea05b242fcd + last_write_checksum: sha1:858cf5856b7481e360f1efd293a4582492d7bb61 + pristine_git_object: 4c60272bbcba0911bc2684da073da9095c08dede tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsresponse.go: id: 1f8eda5070e3 - last_write_checksum: sha1:8ecbd57e51bbd9b0690f74d66880087074a626d5 - pristine_git_object: 8ae55f171cc531a1b7f9fea7670d103b08191d7c + last_write_checksum: sha1:14fa07488478c7de7b3372085d86f60678f1d738 + pristine_git_object: 2383c4eab02e6df47904eb07708bb85696cd638f tests/mockserver/internal/sdk/models/components/mcphostapplicationbreakdown.go: id: a9ba91d64581 last_write_checksum: sha1:ef6e565d96b5253d5970fd5dd608f87cbe2f1cbe @@ -9286,8 +9430,8 @@ trackedFiles: pristine_git_object: be104ab72b0dbd45c2b852529cbf96985258066a tests/mockserver/internal/sdk/models/components/mcpuserbreakdown.go: id: 3796e6d874c0 - last_write_checksum: sha1:115c39fb75461e557499b7aebaac070fcbcc5af4 - pristine_git_object: 73014b6f5dd71b9d05fe8935098102f1ca034101 + last_write_checksum: sha1:2bba6e439cec02602b0983fc459ea126462bbe05 + pristine_git_object: 045685a2258bedb00cfd45a99d7db15e44b47e7e tests/mockserver/internal/sdk/models/components/meeting.go: id: 104e13d174f0 last_write_checksum: sha1:3cf5bc5fd2b5a40c545bfe1d9f768a98c3360d11 @@ -9326,8 +9470,8 @@ trackedFiles: pristine_git_object: 1432e9ddd5212e0f1142ae4ceefbf7e75c7e5805 tests/mockserver/internal/sdk/models/components/peoplerequest.go: id: b9eb3293a335 - last_write_checksum: sha1:ed92d35b9ee73fab4f70e9aaab17f6ad7c9351cf - pristine_git_object: 1240c00e54f6f5c4493022e643470ffd9011b8ac + last_write_checksum: sha1:d1a5b495e37ee65c5b191bca851f439330f87cdc + pristine_git_object: 4d75414bba70fd50be626d32415fdb6c58245207 tests/mockserver/internal/sdk/models/components/peopleresponse.go: id: e570c57343b4 last_write_checksum: sha1:370070abc7236a46218b5d2eeb74f00a4a082aba @@ -9350,8 +9494,8 @@ trackedFiles: pristine_git_object: f9056e4fc9da37d708e834fc6731ba114ce05981 tests/mockserver/internal/sdk/models/components/person.go: id: 11bb88f6a505 - last_write_checksum: sha1:205cadebb2dd56343e3985b090b1532ace9838e0 - pristine_git_object: ab2c5f86c9d1327bfde1edcb7706392180b8b8fc + last_write_checksum: sha1:e14e9cc2a0e35848bb4635516af18cf3b50b8943 + pristine_git_object: e3bd94410f6abc514c06fe966587bba221702eaa tests/mockserver/internal/sdk/models/components/persondistance.go: id: 38ff917355bb last_write_checksum: sha1:b1c7f853fd358135eeeeeebe8911abcefb0f646a @@ -9462,8 +9606,8 @@ trackedFiles: pristine_git_object: ba08e943e4a74ac111304125d6085f642a522085 tests/mockserver/internal/sdk/models/components/platformauthenticationsuggestion.go: id: 48f115d1756f - last_write_checksum: sha1:1a05a8e9c2ce9f6db1c96831eb05f6dd2cc0abc8 - pristine_git_object: 58281ae6e982ccb6e585a3299a3893a5850cfb3d + last_write_checksum: sha1:6d1eae6baac1ea0a8d42a87a076548005e48e016 + pristine_git_object: 30dae6db4e416edd64d86dc6f4579b0f4bb388b4 tests/mockserver/internal/sdk/models/components/platformchatcitationannotation.go: id: f4acfb6b571a last_write_checksum: sha1:9c897630b1c2064f01239d038de95ad8131779fa @@ -9632,14 +9776,18 @@ trackedFiles: id: ebc5c183c98b last_write_checksum: sha1:91afcf6171cafdd18d638818711fe0f3a0ba1021 pristine_git_object: dca6a6f855816c3598a9a1fa69c72f131eefa1c6 + tests/mockserver/internal/sdk/models/components/platformproblemdetail.go: + id: adae7c75e138 + last_write_checksum: sha1:6f8702f1324b66ab2c612fe3dd02faafff2578d1 + pristine_git_object: f4cb5aa31bd82d3c0efbf7a32e98d757bfd4956c tests/mockserver/internal/sdk/models/components/platformproblemdetailcode.go: id: bc7ce56d1a6c last_write_checksum: sha1:3ddc9b692878c2d8af88aedbcf4c03174f91daad pristine_git_object: f7a60ae68c37856df51bb53227d89c870f9c9c27 tests/mockserver/internal/sdk/models/components/platformproblemdetailerror.go: id: 045ae4dc7a98 - last_write_checksum: sha1:4d135d9e4dc5967a64bab866df79f2fd689caae5 - pristine_git_object: 058f5e62bda5173fed3b24fff078d7540a1378f7 + last_write_checksum: sha1:f405e92536a5c01c0bb302e106a2a6001005cbf7 + pristine_git_object: e013d6443bb4ba66882b22a5d9086f7d698fbed2 tests/mockserver/internal/sdk/models/components/platformresult.go: id: dd777258615b last_write_checksum: sha1:4343640607d8d0421164c0dc16daf5718d65e848 @@ -9658,8 +9806,8 @@ trackedFiles: pristine_git_object: 3eed4668d26f9212f864b7e486d75dbbf920b68d tests/mockserver/internal/sdk/models/components/platformskill.go: id: a97a51039ff5 - last_write_checksum: sha1:8871b58924c180a5565b43c91b58ed79212739bb - pristine_git_object: 8397a89921fdbadf8ff5733049b9faabf554e21a + last_write_checksum: sha1:a28db79567d75b08a04c51f7110db7af1686aeb2 + pristine_git_object: a507f97f20bda5e95431dd0f0d7df2d004cc9102 tests/mockserver/internal/sdk/models/components/platformskillcreaterequest.go: id: 05411c97e4b1 last_write_checksum: sha1:8d732893340e35116cb9768a65fd07dd6e77c6c6 @@ -9678,72 +9826,108 @@ trackedFiles: pristine_git_object: f038a7deff637e79bde341c3b7b30da64979a8c3 tests/mockserver/internal/sdk/models/components/platformskillimportresponse.go: id: 440a9e446bd2 - last_write_checksum: sha1:450ab4711bb5995f21f486cc05fae94264ee840a - pristine_git_object: 262df2a7dfed6e67a02d34a227ba545cbc521e18 + last_write_checksum: sha1:1fc9aaacdbebc73d421d004bd209ce8816213bab + pristine_git_object: 796e0f2e0c70e0ea0b7316b81fb8bc8b9ffc97be tests/mockserver/internal/sdk/models/components/platformskillorigin.go: id: b3f692d12f20 - last_write_checksum: sha1:4bbd57b85b9318d5fa9ea3ca97e26cab34e689fd - pristine_git_object: e0a004498154f0b4285d2d29dde3d0e27b163bb6 + last_write_checksum: sha1:924c28e24a95d203cc3f1be9f067ca1b72ca5fc2 + pristine_git_object: 1afff27476707400c1697c3f22533d9d44e92e3b tests/mockserver/internal/sdk/models/components/platformskillslistresponse.go: id: 61695a856d41 - last_write_checksum: sha1:718c3f3013007de52b02444e4a12d43a10fce37d - pristine_git_object: 566d53518ac6a45dc5ae0ec8e5e55df0433f8ae1 + last_write_checksum: sha1:1727a6f00ad993550964a828e798c5c75a52de84 + pristine_git_object: 55a8d69a0bb440a43cbade924357f664462c137a tests/mockserver/internal/sdk/models/components/platformskillsourcepreview.go: id: "760613548093" - last_write_checksum: sha1:3deb2829d40e4656a75ad550dc52dd3a97a3d8e6 - pristine_git_object: f7a467f1f1802a1a56314879c7666620ca9d714e + last_write_checksum: sha1:04e3eb17f6942925a17829e77f26ab20dde2b4df + pristine_git_object: 85b419fd0742494c027fafacef2ea295bab8f437 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfailure.go: id: e2897ced2da1 - last_write_checksum: sha1:6255f8ffe6c9d895d71f4eac788dc31a131b6038 - pristine_git_object: 5a6c6fe802defd21d7d69908b67a24d9b75c50ce + last_write_checksum: sha1:316b2fbb6836b7d12d7deac8313b3aa8c7e273ab + pristine_git_object: 92ed2f8b31775e22c78cc691fe4a616ec69ed2e0 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfailurecode.go: id: c9d600e5e25f last_write_checksum: sha1:7cd531f5e341ae1078991bf91345f4a6e32f35c8 pristine_git_object: 0096a29687b3f1e393cb76f6a8f794a20e860eb2 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfile.go: id: 7b0601c7fda7 - last_write_checksum: sha1:290db2107fb5e9f550e18a4f13542f391ad04cbd - pristine_git_object: 43503cfb38dcef06b555785d2edce1fe6ec3357e - tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewrequest.go: - id: 292b42c0c32f - last_write_checksum: sha1:f03a4a7dcadb91d7b31ba3a1ddd24bc5b612a7a6 - pristine_git_object: 506e0c0928373629b10db3240532b678e8fe6c42 + last_write_checksum: sha1:9aa7df164105692a1c8c94c58bdc905b0292f2d2 + pristine_git_object: 7622555e6e310e61fe97c2018874a2617652b8e0 tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewresponse.go: id: d14b15a2dcc9 - last_write_checksum: sha1:3fb833b7b4a3bb0b15ca4bba00a74a2de33dcad3 - pristine_git_object: 0607598d7d2a3539a2b4ad5ca38b9baba4402f32 + last_write_checksum: sha1:d441199f3e22acac926b5a9efe954bc9a6ccaf59 + pristine_git_object: 597fec463e80e259d214bab9f9558d7753e9f85d + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerror.go: + id: 6c1052e60686 + last_write_checksum: sha1:987b6979fc2edc28720b16d0f3dc46c30aa01260 + pristine_git_object: e1b0e86ee20a08703457d28c27c777b4654e4f7d + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerrorserversentevent.go: + id: 2cd2ecb73df6 + last_write_checksum: sha1:e939df04fe9b21db43b972eea9e4317c8e23a8e3 + pristine_git_object: 548ebf7aac1f449aeded1a7c43082ef08666d270 + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreameventserversentevent.go: + id: 0be12109a543 + last_write_checksum: sha1:419185038a6d4a4e2d4b55e2ee34cb477877d7b4 + pristine_git_object: 3451e40995f399d256e6a2a2c377c53560e10044 + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogress.go: + id: 4d68a2c79d1c + last_write_checksum: sha1:06ce3265abfe814ed64a121287011ab7833cdcde + pristine_git_object: 20885b778b3863d930303a423a6588cdb484da6e + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogressserversentevent.go: + id: 08bebbbd3da8 + last_write_checksum: sha1:a02f1221cf4ed23cbaad7b2e92b6300cb5f370db + pristine_git_object: 76ee67dd91eca6dbe90fc58aaebd1f17470c138c + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresult.go: + id: caa717d6ce3b + last_write_checksum: sha1:358ccda38ea775047843b2f750fce1df522a9401 + pristine_git_object: b3070c6757f4e5566f37700dae82b4c73e545fd7 + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresultserversentevent.go: + id: adb39b845754 + last_write_checksum: sha1:ce3666888f02122539c2ce18e04c8f3904346432 + pristine_git_object: 9320bc5f1e3af5cb7b470c48afc672af6c74b89a + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscan.go: + id: c3b9aa22bb03 + last_write_checksum: sha1:d4e1ef41d9f8dab52da2f074249c72b459629bd1 + pristine_git_object: 118e12737ab1cce6c83e60a57b99e5f48e94fe0f + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscanserversentevent.go: + id: ce542da3ad10 + last_write_checksum: sha1:c978a4152705403426e4c70e421afc991715659e + pristine_git_object: f1b6205495b5d248c4a22df9277c9cc1a19e4d8f + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskill.go: + id: c94f07da7814 + last_write_checksum: sha1:cd297fc0aa70d3d22d31e2d13fab9f27b4ffb7a9 + pristine_git_object: 2be741fc4cf01ad11b6db6dabd51f2d37066b490 + tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskillserversentevent.go: + id: f9205770e640 + last_write_checksum: sha1:9478a51994487670379db2b1ac9310b3d542aa1a + pristine_git_object: 7b53e037415d941d93027a0ed2751c51a4768408 tests/mockserver/internal/sdk/models/components/platformskillsourceprovenance.go: id: 3a0b70781266 last_write_checksum: sha1:f64c669b34f9bc8e21d5620001620e8c8a66756f pristine_git_object: 65ed2aacddbc7cb4f5ac6084a8eb21e236b3b377 tests/mockserver/internal/sdk/models/components/platformskillstatus.go: id: d6163aa830e8 - last_write_checksum: sha1:641cb578909b86e1c1166a75e309e5bcf52ecf29 - pristine_git_object: a218b7608eead950ddb62301af0326adc4f091f5 + last_write_checksum: sha1:ef51c4f47afcb3b1776ac211dafb2ca2051a6c6d + pristine_git_object: d47da9c07bd620bc344c9e32a203ed3ecb57c120 tests/mockserver/internal/sdk/models/components/platformskillsyncresponse.go: id: 267c56967302 - last_write_checksum: sha1:b9faeea2e746ab841ea853e4dbdd790b3108117f - pristine_git_object: 773dec5b3554705b262899c6d3bc0c88b1a971c8 - tests/mockserver/internal/sdk/models/components/platformskillsyncresultstatus.go: - id: 3d2ff828aede - last_write_checksum: sha1:eacc4c992746eb655ba515541ad13e83fd6bfeb5 - pristine_git_object: 93f6e9eda63a8156c768b4f69c52638311bcb103 + last_write_checksum: sha1:4a018e2a251697e01ea7b3234a834b16bff8e98e + pristine_git_object: cd8c8278ff2e72e9a3901d4ffef77ec986fd946a tests/mockserver/internal/sdk/models/components/platformskillsyncstatus.go: id: a172da0d9d4d last_write_checksum: sha1:66e29681184c77fbbff593cc30e33023a3b39c81 pristine_git_object: 0582664c1c7451d505bc18ea138e299db160c5a6 tests/mockserver/internal/sdk/models/components/platformskillupdaterequest.go: id: 77853bf3d285 - last_write_checksum: sha1:b327107396570bb07844005756dcbcc502c99030 - pristine_git_object: 16b5b62569411c6e73675a6e4322a5ad993994d6 + last_write_checksum: sha1:f3f5733d0e4b4fe9bfe5e84fb0c2e8d74994c97d + pristine_git_object: 1b12048233685c4f71d09237a656b60c798537b8 tests/mockserver/internal/sdk/models/components/platformskillupdateresponse.go: id: 505fbacea4bd last_write_checksum: sha1:2ef06dfd496e4209ccbdcf6bf246a31b97c23e46 pristine_git_object: 99256154b7dc79f111888a4dff8e90127090bd1f tests/mockserver/internal/sdk/models/components/platformskillupdatestatus.go: id: "511258017192" - last_write_checksum: sha1:b430910b34dda5f1fa8b12d36ad9d40681664464 - pristine_git_object: d40a5b9ff289b22e47722564782e863c1ad983db + last_write_checksum: sha1:c2f69717c45cc61406a2fdf501b9d26319d0e9b7 + pristine_git_object: 46eaa67fe4be82e0ff7ea6b1cf67d3483ec5ec62 tests/mockserver/internal/sdk/models/components/platformskillvalidationfile.go: id: 4c3718b26406 last_write_checksum: sha1:fda63f0276f5a36dca1e5b81fdc3e7b1e7766034 @@ -9778,8 +9962,8 @@ trackedFiles: pristine_git_object: d86476b946a8dd85853c233b93a123eb81b0cfb7 tests/mockserver/internal/sdk/models/components/platformskillversionslistresponse.go: id: 35adfb5fbba2 - last_write_checksum: sha1:19ba3b0df3949f3771d8026290caeb44a9350e42 - pristine_git_object: e6eac47b00f8ce90e72c78ef293dea6e1f933782 + last_write_checksum: sha1:42f6693dcea22369b550da6b9c2a6fc9a950e389 + pristine_git_object: cc6af7a34c50da96df3629b65aa69dc50a8452de tests/mockserver/internal/sdk/models/components/platformtimerange.go: id: cf2540151ce1 last_write_checksum: sha1:3a0ec2ca473681b89ff97606f648fc15fcdae38e @@ -10272,10 +10456,14 @@ trackedFiles: id: a80dcec8c375 last_write_checksum: sha1:12c38931f0f2810e038e30a743845a97b876d03c pristine_git_object: 7a6a89805e8b840aa2fae616ef6e49dc3d0e0851 + tests/mockserver/internal/sdk/models/components/ugcactionunion.go: + id: 3e98367a2a91 + last_write_checksum: sha1:ff2794007193b315a39cea093980ab0cb15336e0 + pristine_git_object: 6b38790d2952bde40718f3a3fe948900e10f5c16 tests/mockserver/internal/sdk/models/components/ugctype.go: id: 7b77277c1355 - last_write_checksum: sha1:653a15069e2fc0cce67579c0871856d42a85f51f - pristine_git_object: 3d7ab4b482de383d8b46f9af9779e1051f9c68ff + last_write_checksum: sha1:2b6f5ff1f6721e2333d1b6e37cde04f7b2263b80 + pristine_git_object: 069786dbc298275bf7eb181639b13d41eab4a4f3 tests/mockserver/internal/sdk/models/components/unauthorizeddatasourceinstance.go: id: bc69d4c4bf6d last_write_checksum: sha1:39fb84396b33bc645fb5e6ebcea36ab88b5db179 @@ -10790,12 +10978,12 @@ trackedFiles: pristine_git_object: 8e578bcdd052389777bf51d0140176d523d4a976 tests/mockserver/internal/sdk/models/operations/platformskillscreate.go: id: cd743025fd37 - last_write_checksum: sha1:af1e6384914f9cd0cc653f0492e99ec648168391 - pristine_git_object: 7018793fb9ea00645c22183c434e464e8b1a9b15 + last_write_checksum: sha1:5b08770af61d546cfbeb95768a3f9a874fff1e15 + pristine_git_object: f5a358516f1061ddf869cf52c4f66c6e5381da38 tests/mockserver/internal/sdk/models/operations/platformskillscreateversion.go: id: e864f7a1e300 - last_write_checksum: sha1:71b26146e856969fad0ec9664b6ded57bcbf41cc - pristine_git_object: 554b04385e45319a18190bbce6e683be221cd3d2 + last_write_checksum: sha1:8a603a5c82d8531b6445a806c67dac05cca1ae47 + pristine_git_object: 6a55d73da4ad16aa98b7a027c5c4887d459b4a27 tests/mockserver/internal/sdk/models/operations/platformskillsdelete.go: id: b882924d7f05 last_write_checksum: sha1:e48b3d6e818895e65535b0d98bc69234920a8c8e @@ -10822,16 +11010,20 @@ trackedFiles: pristine_git_object: 05953c0918c11c9a3ee57114361e27026ee81e82 tests/mockserver/internal/sdk/models/operations/platformskillslist.go: id: daa657929c98 - last_write_checksum: sha1:fb44d154d8dcca86575b76dd6fdef213e2a568a5 - pristine_git_object: 40f74199560f03309466234c52f5d5dfaed2f563 + last_write_checksum: sha1:370b051d430a210d9d3a905fe325aae50a1a532a + pristine_git_object: 2286c481cbe0c103dc14c83580a86241be91d2e4 tests/mockserver/internal/sdk/models/operations/platformskillslistversions.go: id: ef57d1f31c39 - last_write_checksum: sha1:60e17abc357b220cb752d85a411402a118b6fde7 - pristine_git_object: 3853971fc3d394241809e862a204df0821c4e368 + last_write_checksum: sha1:2b2d45ef20b064c3904f9f5490c1cb585faf6001 + pristine_git_object: dcea3d13ed01063a2cd11bcefe52e4cd5393e2b9 tests/mockserver/internal/sdk/models/operations/platformskillspreviewsource.go: id: 9228f6ef6a79 - last_write_checksum: sha1:7f93cbe4b5fa4ddafbe7b3e5d7782d48c4290ce7 - pristine_git_object: a32c6102b4d886eb573006e516e5f1047cd5ac2c + last_write_checksum: sha1:57cc85028d47624c7697f5f3668f90b368152623 + pristine_git_object: a189b4a36f3e9b82467eee47d39965f5b51ce436 + tests/mockserver/internal/sdk/models/operations/platformskillspreviewsourcestream.go: + id: d16e8ef0b238 + last_write_checksum: sha1:01f9d7e96b48079c543d765273ef9954ff410c0f + pristine_git_object: f89eab8b3bee36773af12f03ba11a89de9b846e9 tests/mockserver/internal/sdk/models/operations/platformskillssync.go: id: 16804fdbcba4 last_write_checksum: sha1:7525ca186303c98bc1d8104c6aeb506dc64149ce @@ -11138,12 +11330,12 @@ trackedFiles: pristine_git_object: 0f579e13784795d08fe8f2562fc5007cd43babd6 tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go: id: 49a8c2638f49 - last_write_checksum: sha1:aa5ff815f31a3657487ad5e0c3f023f573b1fcab - pristine_git_object: bdf1155c8c11ce1a1266e0e2e0fe24a1cefff196 + last_write_checksum: sha1:58d775c91b1a5ef5149b625286e4f35b96bb6f7f + pristine_git_object: 6d3eff536c547737cc702e0d385dc38924e93b34 tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go: id: 67aafc07794f - last_write_checksum: sha1:c0ca755fb35acd8f838567e22c2b5722592fe1c3 - pristine_git_object: 52fb11f9ecfbf5e83c2a2d406d39e9a58923ef27 + last_write_checksum: sha1:bc65a2684a85ad0d79c7643836c17a222adf1082 + pristine_git_object: cfddc167f5105e174c6ad5917a6ae9a7defa8245 tests/mockserver/internal/sdk/types/bigint.go: id: 87f867cb8679 last_write_checksum: sha1:49b004005d0461fb04b846eca062b070b0360b31 @@ -11174,8 +11366,8 @@ trackedFiles: pristine_git_object: 365d8cff3c2d90c64859e66f9f0b788f0271b2d7 tests/mockserver/internal/sdk/utils/json.go: id: b1ed67b63d16 - last_write_checksum: sha1:2c860aa8b53b7d38c20290854c880368ce4fe0ec - pristine_git_object: e5aafa7be41a6c5a754c4c500c13a1aabcc654d4 + last_write_checksum: sha1:5e20daa1ddf6ebe49c4c0f34fd0051c43e6b7ff9 + pristine_git_object: 6ec0f8449efe84dafbc7b5cc438f9a54ebe1fc52 tests/mockserver/internal/sdk/utils/reflect.go: id: b024be29d61f last_write_checksum: sha1:1e3a0ca0387685b6b21c0a6a75650b8611c76ee3 @@ -11306,8 +11498,8 @@ trackedFiles: pristine_git_object: acec822d761f40906a287eee92200d1223caec4d tests/test_entities.py: id: 9bdc6c717c71 - last_write_checksum: sha1:883ddda9c056ac71fb37d07777e21e97b3d6a345 - pristine_git_object: b6c97f067a81983cd9055ea636273276c569d6dc + last_write_checksum: sha1:80ecdab911ec70bb80ecbf213772280444c8224d + pristine_git_object: 1dac6d8fd15046b62633704e46ef1637efef0687 tests/test_findings.py: id: f4c91dfb4975 last_write_checksum: sha1:8c377b73f379ee056474bdc6a19e3d7d5d323ef4 @@ -11334,8 +11526,8 @@ trackedFiles: pristine_git_object: 6cc8aeec3c52329d389081db0a27f10f53f214b9 tests/test_messages.py: id: be23089b1f8b - last_write_checksum: sha1:2404e23964ef6a1f5ddc900402b34e597d2d9617 - pristine_git_object: 132005ec7d1e35f805b6a8c28e07e043bce22f0a + last_write_checksum: sha1:a91c985cd1d11560059dc448b10e0c7b75ed60e5 + pristine_git_object: dfdc18641f0d6c38d84b4603ad2da71f75f2e13c tests/test_people.py: id: 37c243940039 last_write_checksum: sha1:2b78b1c5ea17f267895188b1b48ff9fe2bc19f17 @@ -11358,12 +11550,12 @@ trackedFiles: pristine_git_object: d0a8bd281e331739b23473d92b80408666d63066 tests/test_skills.py: id: ac5db26bd6b1 - last_write_checksum: sha1:51a01a7104693f6ddde3496296f520a0f1c6243d - pristine_git_object: 63587d5a9e7b7e506ce9daf00d51ce92afb56035 + last_write_checksum: sha1:c01d9e86a9686459777a922246762675ffd9a41a + pristine_git_object: 1c854370da050c261cb2cbcf9cc16829f5d8e78c tests/test_summarize.py: id: a255d8a6f627 - last_write_checksum: sha1:6383d6969c6f1bf1832e5ace511e5c2ffaa6d86f - pristine_git_object: cac8e9788f25fda1ff78bd2e3e36917319145e82 + last_write_checksum: sha1:8880f40a7c62cc87c1eed2b5180893c13ea021b3 + pristine_git_object: 8763da581da72f8aefe52080dd2fd95c5cbf3aa3 tests/test_tools.py: id: 70889bdf7321 last_write_checksum: sha1:e9e37efd6a65d805c02d70d548df9c87dd062b0e @@ -11780,7 +11972,7 @@ examples: people: speakeasy-default-people: requestBody: - application/json: {"obfuscatedIds": ["abc123", "abc456"]} + application/json: {"fallbackToAuthenticatedIdentity": false, "obfuscatedIds": ["abc123", "abc456"]} responses: "200": application/json: {"results": [{"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": {"suggestions": [{"query": "app:github type:pull author:mortimer", "label": "Mortimer's PRs", "datasource": "github"}], "person": {"name": "George Clooney", "obfuscatedId": "abc123"}}}]}]} @@ -12406,11 +12598,16 @@ examples: application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} + "201": + application/json: {"skill": {"skill_id": "", "display_name": "Merl18", "description": "rural ugh unexpectedly excepting livid", "latest_version": 504149, "latest_minor_version": 106110, "status": "DISABLED", "origin": "CUSTOM", "owner": {"name": ""}, "created_at": "2025-09-10T16:05:46.046Z", "updated_at": "2025-08-13T23:05:45.737Z"}, "request_id": ""} platform-skills-list: speakeasy-default-platform-skills-list: + parameters: + query: + page_size: 20 responses: "200": - application/json: {"skills": [], "has_more": true, "next_cursor": "", "request_id": ""} + application/json: {"results": [], "has_more": true, "next_cursor": "", "request_id": ""} "400": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": @@ -12433,7 +12630,7 @@ examples: skill_id: "" responses: "200": - application/json: {"skill": {"id": "", "display_name": "Chad_Herzog", "description": "whenever up aha controvert", "latest_version": 151495, "latest_minor_version": 170771, "status": "DISABLED", "origin": "CUSTOM", "owner": {"name": ""}, "created_at": "2024-12-25T16:41:00.099Z", "updated_at": "2026-12-07T21:59:59.375Z"}, "request_id": ""} + application/json: {"skill": {"skill_id": "", "display_name": "Chad_Herzog", "description": "whenever up aha controvert", "latest_version": 151495, "latest_minor_version": 170771, "status": "DISABLED", "origin": "CUSTOM", "owner": {"name": ""}, "created_at": "2024-12-25T16:41:00.099Z", "updated_at": "2026-12-07T21:59:59.375Z"}, "request_id": ""} "400": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": @@ -12464,14 +12661,18 @@ examples: application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} + "201": + application/json: {"version": {"skill_id": "", "version": 375506, "minor_version": 600322, "is_latest": false, "created_by": {"name": ""}, "created_at": "2026-09-27T14:37:09.109Z", "updated_at": "2024-05-30T08:59:58.715Z"}, "request_id": ""} platform-skills-list-versions: speakeasy-default-platform-skills-list-versions: parameters: path: skill_id: "" + query: + page_size: 20 responses: "200": - application/json: {"versions": [], "has_more": false, "next_cursor": "", "request_id": ""} + application/json: {"results": [], "has_more": false, "next_cursor": "", "request_id": ""} "400": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": @@ -12540,6 +12741,10 @@ examples: application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} + "201": + application/json: {"skills": [], "request_id": ""} + "422": + application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}], "authentication_suggestions": []} platform-skills-preview-source: speakeasy-default-platform-skills-preview-source: requestBody: @@ -12552,6 +12757,8 @@ examples: application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} + "422": + application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}], "authentication_suggestions": []} platform-skills-update: speakeasy-default-platform-skills-update: parameters: @@ -12561,7 +12768,7 @@ examples: application/json: {"status": "ENABLED"} responses: "200": - application/json: {"skill": {"id": "", "display_name": "Afton14", "description": "taut netsuke duh sonata boastfully elegantly management come", "latest_version": 425795, "latest_minor_version": 741364, "status": "DISABLED", "origin": "CUSTOM", "owner": {"name": ""}, "created_at": "2024-12-20T01:31:39.364Z", "updated_at": "2025-12-04T02:59:37.124Z"}, "request_id": ""} + application/json: {"skill": {"skill_id": "", "display_name": "Afton14", "description": "taut netsuke duh sonata boastfully elegantly management come", "latest_version": 425795, "latest_minor_version": 741364, "status": "DISABLED", "origin": "CUSTOM", "owner": {"name": ""}, "created_at": "2024-12-20T01:31:39.364Z", "updated_at": "2025-12-04T02:59:37.124Z"}, "request_id": ""} "400": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": @@ -12583,11 +12790,13 @@ examples: skill_id: "" responses: "200": - application/json: {"sync_status": "UP_TO_DATE", "commit_sha": "", "updated": false, "request_id": ""} + application/json: {"commit_sha": "", "is_updated": false, "request_id": ""} "400": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} + "422": + application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}], "authentication_suggestions": [{"server_id": ""}]} platform-search-filters: speakeasy-default-platform-search-filters: responses: @@ -12794,6 +13003,17 @@ examples: application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} "500": application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} + platform-skills-preview-source-stream: + speakeasy-default-platform-skills-preview-source-stream: + requestBody: + application/json: {"source_url": "https://github.com/anthropics/skills", "stream": true} + responses: + "422": + application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}], "authentication_suggestions": [{"server_id": ""}]} + "400": + application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} + "500": + application/problem+json: {"type": "https://developers.glean.com/errors/invalid-cursor", "title": "Invalid Pagination Cursor", "status": 400, "detail": "The provided cursor has expired. Start a new search to get a fresh cursor.\n", "code": "invalid_cursor", "documentation_url": "https://developers.glean.com/errors/invalid-cursor", "request_id": "req_7f8a9b0c1d2e", "errors": [{"pointer": "/messages/0/role", "detail": "Must be one of: USER, GLEAN_AI.", "code": "invalid_cursor"}]} examplesVersion: 1.0.2 generatedTests: activity: "2025-04-28T22:05:12+01:00" @@ -12997,7 +13217,7 @@ generatedTests: platform-agents-get-run: "2026-09-23T18:29:44Z" platform-agents-cancel-run: "2026-09-23T18:29:44Z" platform-agents-create-run-responses: "2026-09-23T18:29:44Z" -releaseNotes: "## Python SDK Changes:\n* `glean.agents.create_run()`: \n * `request.execution_mode` **Added**\n * `response.status[201]` **Added** (Breaking ⚠️)\n* `glean.agents.get_run()`: **Added**\n* `glean.agents.cancel_run()`: **Added**\n* `glean.agents.respond_to_run()`: **Added**\n* `glean.chat.create()`: \n * `request.text` **Added**\n * `response.output[].content[].structured_output` **Added**\n* `glean.client.search.retrieve_feed()`: \n * `request.categories[]` **Changed**\n * `response.results[]` **Changed**\n" +releaseNotes: "## Python SDK Changes:\n* `glean.skills.create()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error.status[409]` **Added**\n* `glean.skills.list()`: \n * `request.page_size` **Changed**\n * `response` **Changed** (Breaking ⚠️)\n* `glean.skills.import()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error.status[422]` **Added**\n* `glean.skills.preview_source()`: \n * `request.stream` **Removed** (Breaking ⚠️)\n * `response.status[200].content[text/event-stream` **Removed** (Breaking ⚠️)\n * `error.status[422]` **Added**\n* `glean.skills.update()`: `response.skill` **Changed** (Breaking ⚠️)\n* `glean.skills.retrieve()`: `response.skill` **Changed** (Breaking ⚠️)\n* `glean.skills.sync()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error` **Changed** (Breaking ⚠️)\n* `glean.skills.create_version()`: `response` **Changed** (Breaking ⚠️)\n* `glean.skills.list_versions()`: \n * `request.page_size` **Changed**\n * `response` **Changed** (Breaking ⚠️)\n* `glean.client.announcements.create()`: \n * `request.body.structured_list[].document.metadata.author` **Changed**\n * `response.body.structured_list[].document.metadata.author` **Changed**\n* `glean.client.announcements.update()`: \n * `request.body.structured_list[].document.metadata.author` **Changed**\n * `response.body.structured_list[].document.metadata.author` **Changed**\n* `glean.client.answers.create()`: \n * `request.data.added_roles[].person` **Changed**\n * `response.added_roles[].person` **Changed**\n* `glean.client.answers.update()`: \n * `request.added_roles[].person` **Changed**\n * `response.added_roles[].person` **Changed**\n* `glean.client.answers.retrieve()`: `response.answer_result.answer.added_roles[].person` **Changed**\n* `glean.client.answers.list()`: `response.answer_results[].answer.added_roles[].person` **Changed**\n* `glean.client.chat.create()`: \n * `request.messages[].citations[].source_document.metadata.author` **Changed**\n * `response.messages[].citations[].source_document.metadata.author` **Changed**\n* `glean.client.chat.retrieve()`: \n * `response.chat_result.chat.created_by` **Changed**\n * `error.created_by` **Changed**\n* `glean.client.chat.list()`: `response.chat_results[].chat.created_by` **Changed**\n* `glean.client.chat.create_stream()`: \n * `request.messages[].citations[].source_document.metadata.author` **Changed**\n* `glean.client.agents.create()`: `response.workflow.author` **Changed**\n* `glean.client.agents.import()`: `response.workflow_result.workflow.author` **Changed**\n* `glean.client.collections.add_items()`: `response.collection.added_roles[].person` **Changed**\n* `glean.client.collections.create()`: \n * `request.added_roles[].person` **Changed**\n * `response.union(class (0)).collection.added_roles[].person` **Changed**\n* `glean.client.collections.delete_item()`: `response.collection.added_roles[].person` **Changed**\n* `glean.client.collections.update()`: \n * `request.added_roles[].person` **Changed**\n * `response.added_roles[].person` **Changed**\n* `glean.client.collections.update_item()`: `response.collection.added_roles[].person` **Changed**\n* `glean.client.collections.retrieve()`: `response.collection.added_roles[].person` **Changed**\n* `glean.client.collections.list()`: `response.collections[].added_roles[].person` **Changed**\n* `glean.client.documents.retrieve()`: `response.documents.Map.union(Document).metadata.author` **Changed**\n* `glean.client.documents.retrieve_by_facets()`: `response.documents[].metadata.author` **Changed**\n* `glean.client.insights.retrieve()`: \n * `request.mcp_breakdown_request` **Changed**\n * `response` **Changed**\n* `glean.client.messages.retrieve()`: `response.search_response.results[].structured_results[].document.metadata` **Changed**\n* `glean.client.pins.update()`: `response.attribution` **Changed**\n* `glean.client.pins.retrieve()`: `response.pin.attribution` **Changed**\n* `glean.client.pins.list()`: `response.pins[].attribution` **Changed**\n* `glean.client.pins.create()`: `response.attribution` **Changed**\n* `glean.client.search.query_as_admin()`: \n * `request.source_document.metadata.author` **Changed**\n * `response.results[].structured_results[].document.metadata` **Changed**\n* `glean.client.search.autocomplete()`: `response.results[]` **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` **Changed**\n * `response.results[].structured_results[].document.metadata` **Changed**\n* `glean.client.search.query()`: \n * `request.source_document.metadata.author` **Changed**\n * `response.results[].structured_results[].document.metadata` **Changed**\n* `glean.client.entities.list()`: `response.results[]` **Changed**\n* `glean.client.entities.read_people()`: \n * `request.fallback_to_authenticated_identity` **Added**\n * `response.results[]` **Changed**\n* `glean.client.shortcuts.create()`: \n * `request.data.added_roles[].person` **Changed**\n * `response.shortcut.added_roles[].person` **Changed**\n* `glean.client.shortcuts.retrieve()`: `response.shortcut.added_roles[].person` **Changed**\n* `glean.client.shortcuts.list()`: `response.shortcuts[].added_roles[].person` **Changed**\n* `glean.client.shortcuts.update()`: \n * `request.added_roles[].person` **Changed**\n * `response.shortcut.added_roles[].person` **Changed**\n* `glean.client.verification.add_reminder()`: `response.metadata.last_verifier` **Changed**\n* `glean.client.verification.list()`: `response.documents[].metadata.last_verifier` **Changed**\n* `glean.client.verification.verify()`: `response.metadata.last_verifier` **Changed**\n" generatedFiles: - .devcontainer/README.md - .devcontainer/devcontainer.json diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 7b5f20a3..6b7d70e5 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -34,7 +34,7 @@ generation: generateNewTests: true skipResponseBodyAssertions: true python: - version: 0.17.15 + version: 0.17.16 additionalDependencies: dev: {} main: {} diff --git a/.speakeasy/glean-merged-spec.yaml b/.speakeasy/glean-merged-spec.yaml index 8ba3d65e..97ae4f53 100644 --- a/.speakeasy/glean-merged-spec.yaml +++ b/.speakeasy/glean-merged-spec.yaml @@ -2,8 +2,8 @@ openapi: 3.1.0 info: version: "0.9.0" title: Glean API - x-source-commit-sha: 600aa35531e44582cf056cb0531c04e7ec04d472 - x-open-api-commit-sha: c9917479fd934576f376c1f21d0bb426ee4fd46e + x-source-commit-sha: 4b199fd04d49e624f6d8ad288c8758f99c4d1f6d + x-open-api-commit-sha: 4406c02294b5d882d37de283a55aa9bd4b4a339b 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. @@ -39,6 +39,11 @@ paths: description: | Search agents available to the authenticated user by agent name. operationId: platform-agents-search + x-glean-scopes: + legacy: + - AGENTS + platform: + - agents:read x-visibility: Public x-codegen-request-body-name: payload requestBody: @@ -84,6 +89,11 @@ paths: description: | Retrieve details for an agent available to the authenticated user. operationId: platform-agents-get + x-glean-scopes: + legacy: + - AGENTS + platform: + - agents:read x-visibility: Public parameters: - in: path @@ -129,6 +139,11 @@ paths: description: | Retrieve an agent's input and output JSON schemas. operationId: platform-agents-get-schemas + x-glean-scopes: + legacy: + - AGENTS + platform: + - agents:read x-visibility: Public parameters: - in: path @@ -181,6 +196,11 @@ paths: description: | Execute an agent run. By default, set `stream` to true to receive server-sent events; otherwise the response contains the final agent messages. Set `execution_mode` to `DURABLE` to persist a new run and return its initial snapshot with HTTP 201 without waiting for execution. Poll the agent-scoped GET run endpoint for progress. Durable execution continues after an HTTP disconnect, but is not automatically resumed after a QE restart or crash. An active turn becomes overdue more than 40 minutes after acceptance (a 30-minute execution timeout plus 10 minutes of grace). The next GET of the run marks the overdue turn FAILED without replay; there is no periodic sweep. Without a GET, the stored run can remain RUNNING. Failure does not prove that external tool work has stopped. Paused runs are not expired; an accepted approval continuation starts a fresh deadline. Each POST creates a new run; retrying a POST can create another execution. Submit pending approval decisions through the run responses endpoint, and cancellation can be requested through the run cancellations endpoint. A run tracks one workflow execution; automatic background-subagent wake turns are separate executions, not continuations tracked by this run ID. operationId: platform-agents-create-run + x-glean-scopes: + legacy: + - AGENTS + platform: + - agents:run x-visibility: Public x-codegen-request-body-name: payload parameters: @@ -266,6 +286,11 @@ paths: description: | Retrieve a persisted workflow execution owned by the authenticated user. The run must belong to the specified agent, and the user must still have access to that agent. Unknown runs, runs owned by another user, and mismatched agent/run identifiers return 404. Requires the agents.run scope. Executions without a persisted workflow record are not available through this endpoint. operationId: platform-agents-get-run + x-glean-scopes: + legacy: + - AGENTS + platform: + - agents:run x-visibility: Public parameters: - in: path @@ -321,6 +346,11 @@ paths: description: | Request cooperative cancellation of the durable agent run identified by `run_id` in the JSON body. Requires ownership, current agent access, and the agents.run scope. Sending a cancellation signal does not itself change an active run from RUNNING; poll GET run for the final state. Paused runs become CANCELLED without resuming execution. Repeated requests and requests for terminal runs return the current snapshot. Completion may win a race with cancellation. Completed tool side effects cannot be undone, and external work may continue if a tool does not support cancellation. Cancellation targets this run, not separate background-subagent executions. An active run without a cancellation registration returns 409. Cancellation signaling requires Redis. An interrupted active run can instead become FAILED through deadline cleanup; this does not verify that external tool work has stopped. operationId: platform-agents-cancel-run + x-glean-scopes: + legacy: + - AGENTS + platform: + - agents:run x-visibility: Public x-codegen-request-body-name: payload parameters: @@ -378,6 +408,11 @@ paths: description: | Submit decisions for every pending tool approval in the paused run's current batch. The run is identified by `run_id` in the JSON body. Decisions apply only to the stored invocations and arguments; argument edits, authentication responses, and session-wide grants are not supported. The caller must own the run, still have agent access, and have the agents.run scope. Acceptance persists the decisions before resuming the same run and chat session. Identical accepted decisions return the current snapshot without another continuation. Conflicting, stale, incomplete, or non-pending decisions return 409. Cancellation registration failure returns 503 without accepting the decisions; retry the same approval batch. This retry guarantee does not cover an indeterminate database commit outcome. Go workflow approval resumes currently support one tool invocation and one approval response. Unsupported multi-tool or multi-decision Go resumes fail without executing tools. The resumed action must resolve to the tool identified by the stored approval request and paused checkpoint. Missing or inconsistent identity fails without executing tools. Execution continues after HTTP disconnects, but is not automatically resumed after a QE crash. Each accepted continuation starts a fresh 30-minute execution timeout and 40-minute cleanup deadline. Identical retries do not extend that deadline. Waiting for approval does not expire a run. The next GET marks an overdue active turn FAILED without replaying execution. operationId: platform-agents-create-run-responses + x-glean-scopes: + legacy: + - AGENTS + platform: + - agents:run x-visibility: Public parameters: - in: path @@ -434,6 +469,11 @@ paths: description: | Run an assistant turn. The default response is JSON. HTTP clients request server-sent events by setting `stream` to true in the JSON body. An `Accept: text/event-stream` header does not replace `stream`. operationId: platform-chat-create + x-glean-scopes: + legacy: + - CHAT + platform: + - chat:write x-visibility: Public x-codegen-request-body-name: payload requestBody: @@ -488,12 +528,14 @@ paths: - Skills summary: Create skill description: | - Create a skill from an uploaded SKILL.md, .zip, or .skill bundle. If the authenticated user already has a skill with the same name, the existing skill is superseded with a new version. + Create a skill from an uploaded SKILL.md, .zip, or .skill bundle. If the authenticated user already has a skill with the same name, the existing skill is superseded with a new version, unless it is source-managed: a same-name create over a GitHub-imported skill returns 409, and the caller syncs the existing skill instead. Two concurrent same-name creates can still produce two skills. operationId: platform-skills-create + x-glean-scopes: + legacy: + - SKILLS + platform: + - skills:write x-visibility: Public - x-glean-experimental: - id: 3cd55572-0d5c-4898-9ecf-1b86c520d1c7 - introduced: "2026-06-24" requestBody: required: true content: @@ -502,8 +544,8 @@ paths: $ref: "#/components/schemas/PlatformSkillCreateRequest" x-codegen-request-body-name: request responses: - "200": - description: Successful response. + "201": + description: Skill created. content: application/json: schema: @@ -518,6 +560,8 @@ paths: $ref: "#/components/responses/PlatformNotFound" "408": $ref: "#/components/responses/PlatformRequestTimeout" + "409": + $ref: "#/components/responses/PlatformConflict" "413": $ref: "#/components/responses/PlatformRequestTooLarge" "429": @@ -535,21 +579,24 @@ paths: - Skills summary: List skills description: | - List skills available to the authenticated user. + List every custom skill the authenticated caller can access. Built-in skills are excluded: they have no versions, content download, update, or delete, so their identifiers would fail most skill operations. Chat-authored skills shared with the caller without a listed grant are omitted: they stay retrievable by identifier when it is known, but this list does not discover them. operationId: platform-skills-list + x-glean-scopes: + legacy: + - SKILLS + platform: + - skills:read x-visibility: Public - x-glean-experimental: - id: 3eb65937-03a3-472b-9a00-be713f302b5f - introduced: "2026-06-23" parameters: - in: query name: page_size - description: Maximum number of skills to return. + description: Maximum number of skills to return. Defaults to 20. Maximum is 100. required: false schema: type: integer minimum: 1 maximum: 100 + default: 20 - in: query name: cursor description: Opaque pagination cursor from a previous response. @@ -592,10 +639,12 @@ paths: description: | Import one or more skills selected from a GitHub source preview. Each source URL is fetched and persisted as an independent skill with source provenance. This operation does not create a durable source resource. The import is atomic: if any source cannot be fetched, validated, or persisted, no skills are created. operationId: platform-skills-import + x-glean-scopes: + legacy: + - SKILLS + platform: + - skills:write x-visibility: Public - x-glean-experimental: - id: 9162d790-e101-437d-a9a0-25e4687d150b - introduced: "2026-07-28" x-codegen-request-body-name: request requestBody: required: true @@ -604,7 +653,7 @@ paths: schema: $ref: "#/components/schemas/PlatformSkillImportRequest" responses: - "200": + "201": description: Skills imported successfully. content: application/json: @@ -622,6 +671,12 @@ paths: $ref: "#/components/responses/PlatformConflict" "413": $ref: "#/components/responses/PlatformRequestTooLarge" + "422": + description: Returned when GitHub authorization is missing for a source URL. `authentication_suggestions` names the GitHub action pack to authorize; POST its `server_id` to the Client API's `/tool-servers/{serverId}/auth` with `returnUrl` in the request body to obtain an `authorizationUrl` to redirect the end user to, then retry the import once OAuth completes. + content: + application/problem+json: + schema: + $ref: "#/components/schemas/PlatformUnauthorizedAgentToolsProblem" "429": $ref: "#/components/responses/PlatformTooManyRequests" "500": @@ -640,10 +695,12 @@ paths: description: | Validate a skill bundle without persisting it. Accepts a SKILL.md, .zip, or .skill upload and returns parsed metadata plus the normalized file layout. operationId: platform-skills-validate + x-glean-scopes: + legacy: + - SKILLS + platform: + - skills:write x-visibility: Public - x-glean-experimental: - id: 0b086fa6-30f8-4279-8d11-10ab0059c14a - introduced: "2026-06-24" requestBody: required: true content: @@ -688,17 +745,28 @@ paths: description: | Inspect a GitHub URL without persisting a source or any discovered skills. Set stream to true to receive repository scan progress as server-sent events; otherwise the response contains the completed preview. operationId: platform-skills-preview-source + x-glean-scopes: + legacy: + - SKILLS + platform: + - skills:write x-visibility: Public - x-glean-experimental: - id: 1629009b-244a-400a-bf55-c441dfbc586c - introduced: "2026-07-23" x-codegen-request-body-name: request requestBody: required: true content: application/json: schema: - $ref: "#/components/schemas/PlatformSkillSourcePreviewRequest" + allOf: + - $ref: "#/components/schemas/PlatformSkillSourcePreviewRequest" + - type: object + required: + - stream + properties: + stream: + type: boolean + const: false + default: false responses: "200": description: Successful response. @@ -706,23 +774,6 @@ paths: application/json: schema: $ref: "#/components/schemas/PlatformSkillSourcePreviewResponse" - text/event-stream: - schema: - type: string - description: | - Server-sent scan, progress, skill, and result events. A failed stream - emits `data: {"type":"error","code":"service_unavailable","message":"GitHub is temporarily unavailable."}` - followed by `data: [DONE]` instead of a result event. - example: | - data: {"type":"scan","total":1,"skill_paths":["https://github.com/acme/skills/tree/main/skills/example"]} - - data: {"type":"progress","completed":1,"total":1,"current_skill":"skills/example/SKILL.md"} - - data: {"type":"skill","skill":{"display_name":"Example","description":"Example skill","source_url":"https://github.com/acme/skills/tree/main/skills/example","commit_sha":"abc123","main_content":"---\nname: Example\n---","files":[],"file_tree":["SKILL.md"]}} - - data: {"type":"result","response":{"skills":[{"display_name":"Example","description":"Example skill","source_url":"https://github.com/acme/skills/tree/main/skills/example","commit_sha":"abc123","main_content":"---\nname: Example\n---","files":[],"file_tree":["SKILL.md"]}],"failures":[],"request_id":"req-123"}} - - data: [DONE] "400": $ref: "#/components/responses/PlatformBadRequest" "401": @@ -733,6 +784,12 @@ paths: $ref: "#/components/responses/PlatformRequestTimeout" "413": $ref: "#/components/responses/PlatformRequestTooLarge" + "422": + description: Returned when GitHub authorization is missing for the source URL. `authentication_suggestions` names the GitHub action pack to authorize; POST its `server_id` to the Client API's `/tool-servers/{serverId}/auth` with `returnUrl` in the request body to obtain an `authorizationUrl` to redirect the end user to, then retry the preview once OAuth completes. + content: + application/problem+json: + schema: + $ref: "#/components/schemas/PlatformUnauthorizedAgentToolsProblem" "429": $ref: "#/components/responses/PlatformTooManyRequests" "500": @@ -749,12 +806,14 @@ paths: - Skills summary: Update skill description: | - Update mutable metadata for a skill. V1 supports enabling or disabling a skill without changing its content. + Enable or disable the skill for the authenticated caller without changing its content. The owner's update sets the skill's stored status. Any other caller's update applies only to that caller. operationId: platform-skills-update + x-glean-scopes: + legacy: + - SKILLS + platform: + - skills:write x-visibility: Public - x-glean-experimental: - id: 262e1f6b-6c2d-4d6d-943b-fc251d2fb38b - introduced: "2026-07-20" parameters: - name: skill_id in: path @@ -809,10 +868,12 @@ paths: description: | Delete a skill the authenticated caller is allowed to manage. This operation permanently removes all versions of the skill. operationId: platform-skills-delete + x-glean-scopes: + legacy: + - SKILLS + platform: + - skills:write x-visibility: Public - x-glean-experimental: - id: c4351fd0-4d28-4ad4-ab93-587ca4778173 - introduced: "2026-07-31" parameters: - name: skill_id in: path @@ -852,10 +913,12 @@ paths: description: | Retrieve metadata for a skill available to the authenticated user. operationId: platform-skills-get + x-glean-scopes: + legacy: + - SKILLS + platform: + - skills:read x-visibility: Public - x-glean-experimental: - id: 8f8d1c92-a484-4769-9903-200613dc8a72 - introduced: "2026-06-23" parameters: - name: skill_id in: path @@ -900,10 +963,12 @@ paths: description: | Download the latest installable bundle for a skill available to the authenticated user. operationId: platform-skills-get-content + x-glean-scopes: + legacy: + - SKILLS + platform: + - skills:read x-visibility: Public - x-glean-experimental: - id: fd6908d8-f230-4cd5-bf45-f71e69266b1d - introduced: "2026-06-24" parameters: - name: skill_id in: path @@ -954,10 +1019,12 @@ paths: description: | Refresh one GitHub-imported skill from its stored source URL. If the skill content has changed, this operation creates a new skill version. If the skill is no longer present upstream, the stored skill is left unchanged and must be deleted explicitly. operationId: platform-skills-sync + x-glean-scopes: + legacy: + - SKILLS + platform: + - skills:write x-visibility: Public - x-glean-experimental: - id: 568aa3f8-2af8-449c-9e4f-818ed4b877ef - introduced: "2026-08-03" parameters: - name: skill_id in: path @@ -986,8 +1053,12 @@ paths: $ref: "#/components/responses/PlatformRequestTimeout" "409": $ref: "#/components/responses/PlatformConflict" - "413": - $ref: "#/components/responses/PlatformRequestTooLarge" + "422": + description: Returned when GitHub authorization is missing for the stored source URL. `authentication_suggestions` names the GitHub action pack to authorize; POST its `server_id` to the Client API's `/tool-servers/{serverId}/auth` with `returnUrl` in the request body to obtain an `authorizationUrl` to redirect the end user to, then retry the sync once OAuth completes. + content: + application/problem+json: + schema: + $ref: "#/components/schemas/PlatformUnauthorizedAgentToolsProblem" "429": $ref: "#/components/responses/PlatformTooManyRequests" "500": @@ -1004,12 +1075,14 @@ paths: - Skills summary: Create skill version description: | - Create a new immutable version for an existing caller-managed skill from an uploaded SKILL.md, .zip, or .skill bundle. + Create a new immutable version for an existing caller-managed skill from an uploaded SKILL.md, .zip, or .skill bundle. A create-version over a GitHub-imported skill returns 409, and the caller syncs the existing skill instead. operationId: platform-skills-create-version + x-glean-scopes: + legacy: + - SKILLS + platform: + - skills:write x-visibility: Public - x-glean-experimental: - id: 0d5e48e2-7a41-4d54-b3aa-5026f0dd65df - introduced: "2026-06-24" parameters: - name: skill_id in: path @@ -1027,8 +1100,8 @@ paths: $ref: "#/components/schemas/PlatformSkillVersionCreateRequest" x-codegen-request-body-name: request responses: - "200": - description: Successful response. + "201": + description: Skill version created. content: application/json: schema: @@ -1064,10 +1137,12 @@ paths: description: | List versions for a skill available to the authenticated user. operationId: platform-skills-list-versions + x-glean-scopes: + legacy: + - SKILLS + platform: + - skills:read x-visibility: Public - x-glean-experimental: - id: 9efbb8a3-d546-4304-a653-09bb427e3681 - introduced: "2026-06-24" parameters: - name: skill_id in: path @@ -1079,12 +1154,13 @@ paths: minLength: 1 - in: query name: page_size - description: Maximum number of versions to return. + description: Maximum number of versions to return. Defaults to 20. Maximum is 100. required: false schema: type: integer minimum: 1 maximum: 100 + default: 20 - in: query name: cursor description: Opaque pagination cursor from a previous response. @@ -1127,10 +1203,12 @@ paths: description: | Retrieve metadata for a skill version available to the authenticated user. operationId: platform-skills-get-version + x-glean-scopes: + legacy: + - SKILLS + platform: + - skills:read x-visibility: Public - x-glean-experimental: - id: d70986b1-ad80-48dd-8e52-f294e7251dda - introduced: "2026-06-24" parameters: - name: skill_id in: path @@ -1183,10 +1261,12 @@ paths: description: | Download the installable bundle for a skill version available to the authenticated user. operationId: platform-skills-get-version-content + x-glean-scopes: + legacy: + - SKILLS + platform: + - skills:read x-visibility: Public - x-glean-experimental: - id: 70c85692-7042-403a-a3a5-5b315576432a - introduced: "2026-06-24" parameters: - name: skill_id in: path @@ -1246,6 +1326,11 @@ paths: Search your organization's connected content and return ranked document results with cursor pagination. Use `GET /api/search/filters` to discover datasource identifiers and common filter fields. Built-in filter names are validated; other field names are accepted as custom filters and behavior depends on your Glean configuration and connected sources. Errors: HTTP 422 `unprocessable_query` returns no `results` or `next_cursor`. See `warnings` on the response for non-blocking issues such as partially available results. Not every query issue produces a warning or error. operationId: platform-search + x-glean-scopes: + legacy: + - SEARCH + platform: + - search:query x-visibility: Public x-codegen-request-body-name: payload requestBody: @@ -1294,6 +1379,11 @@ paths: List datasources and common built-in filter fields visible to the authenticated user. This is a best-effort catalog, not an exhaustive list of every filter search accepts. Without `query`, returns field metadata only and does not run a search. With a nonblank `query`, provide exactly one `datasources` value to request suggested filter values for that query; no documents are returned and this endpoint does not include warning objects. See `FilterFieldInfo.values` for limitations on suggested values. Rate-limited requests return HTTP 429 with `Retry-After`; temporary backend unavailability returns HTTP 503. operationId: platform-search-filters + x-glean-scopes: + legacy: + - SEARCH + platform: + - search:query x-visibility: Public parameters: - in: query @@ -1357,6 +1447,11 @@ paths: description: | Create a trigger from a preset and return it with its signing secret. operationId: platform-triggers-create + x-glean-scopes: + legacy: + - TRIGGERS + platform: + - triggers:write x-visibility: Public x-glean-experimental: id: eb175f18-74e6-4c9c-ba02-23bcc9018fc9 @@ -1441,6 +1536,11 @@ paths: description: | List triggers owned by the authenticated caller. operationId: platform-triggers-list + x-glean-scopes: + legacy: + - TRIGGERS + platform: + - triggers:read x-visibility: Public x-glean-experimental: id: e3554987-e043-4561-889a-a1117b1bce06 @@ -1495,6 +1595,11 @@ paths: description: | Retrieve a trigger owned by the authenticated caller. operationId: platform-triggers-get + x-glean-scopes: + legacy: + - TRIGGERS + platform: + - triggers:read x-visibility: Public x-glean-experimental: id: 46de62cb-ba31-4f71-9646-649c1d604816 @@ -1542,6 +1647,11 @@ paths: description: | Update a trigger. operationId: platform-triggers-update + x-glean-scopes: + legacy: + - TRIGGERS + platform: + - triggers:write x-visibility: Public x-glean-experimental: id: 3eb4c709-bd5c-4019-b913-0db36c766350 @@ -1598,6 +1708,11 @@ paths: description: | Delete a trigger. operationId: platform-triggers-delete + x-glean-scopes: + legacy: + - TRIGGERS + platform: + - triggers:write x-visibility: Public x-glean-experimental: id: e6564ed7-8b4b-4708-918b-eed97110859f @@ -1642,6 +1757,11 @@ paths: description: | Search recent content events an existing trigger matches. Read-only — no webhook delivery is made. Covers the last seven days. operationId: platform-triggers-events-search + x-glean-scopes: + legacy: + - TRIGGERS + platform: + - triggers:read x-visibility: Public x-glean-experimental: id: c734a377-3dec-4ee2-9ec5-3848a8384f03 @@ -1698,6 +1818,11 @@ paths: description: | List the trigger presets available to the caller. A preset is a curated content-trigger template (e.g. a new Jira ticket) which is passed when creating a trigger. operationId: platform-trigger-presets-list + x-glean-scopes: + legacy: + - TRIGGERS + platform: + - triggers:read x-visibility: Public x-glean-experimental: id: f5b16196-0d4c-42f0-89bf-40313398728e @@ -1759,6 +1884,11 @@ paths: description: | Retrieve a single trigger preset by id. operationId: platform-trigger-presets-get + x-glean-scopes: + legacy: + - TRIGGERS + platform: + - triggers:read x-visibility: Public x-glean-experimental: id: 5277167d-909b-4eee-95d1-8958b07016bb @@ -1807,6 +1937,11 @@ paths: description: | Return up to 300 selectable values for a single picklist input on a preset. Results are intended for typeahead selection and are not cursor-paginated. When `is_truncated` is true, refine `query` to narrow the result set. operationId: platform-trigger-presets-input-values-list + x-glean-scopes: + legacy: + - TRIGGERS + platform: + - triggers:read x-visibility: Public x-glean-experimental: id: 24c5675d-a57a-48cb-9d71-3dece296f28c @@ -1870,6 +2005,11 @@ paths: description: | Search recent content events an unsaved trigger built from this preset would match, to preview it before creating the trigger. Read-only — no trigger is created and no webhook delivery is made. Covers the last seven days. operationId: platform-trigger-presets-events-search + x-glean-scopes: + legacy: + - TRIGGERS + platform: + - triggers:read x-visibility: Public x-glean-experimental: id: a48efd80-78d6-46de-9f23-5b8c63ecd157 @@ -1926,6 +2066,11 @@ paths: description: | SDK-only logical operation. HTTP clients must call the base path; the URL fragment is not sent. Run an assistant turn as server-sent events. HTTP clients request this mode by setting `stream` to true in the JSON body. operationId: platform-chat-create-stream + x-glean-scopes: + legacy: + - CHAT + platform: + - chat:write x-visibility: Public x-codegen-request-body-name: payload requestBody: @@ -1974,6 +2119,69 @@ paths: x-speakeasy-name-override: createStream security: - APIToken: [] + /api/skills/sources/preview#stream: + post: + tags: + - Skills + summary: Preview a GitHub skill source as events + description: | + SDK-only logical operation. HTTP clients must call the base path; the URL fragment is not sent. Inspect a GitHub URL as server-sent events. HTTP clients request this mode by setting `stream` to true in the JSON body. + operationId: platform-skills-preview-source-stream + x-glean-scopes: + legacy: + - SKILLS + platform: + - skills:write + x-visibility: Public + x-codegen-request-body-name: request + requestBody: + required: true + content: + application/json: + schema: + allOf: + - $ref: "#/components/schemas/PlatformSkillSourcePreviewRequest" + - type: object + required: + - stream + properties: + stream: + type: boolean + const: true + default: true + responses: + "200": + description: Successful response. + content: + text/event-stream: + schema: + $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamEventServerSentEvent" + "400": + $ref: "#/components/responses/PlatformBadRequest" + "401": + $ref: "#/components/responses/PlatformUnauthorized" + "403": + $ref: "#/components/responses/PlatformForbidden" + "408": + $ref: "#/components/responses/PlatformRequestTimeout" + "413": + $ref: "#/components/responses/PlatformRequestTooLarge" + "422": + description: Returned when GitHub authorization is missing for the source URL. `authentication_suggestions` names the GitHub action pack to authorize; POST its `server_id` to the Client API's `/tool-servers/{serverId}/auth` with `returnUrl` in the request body to obtain an `authorizationUrl` to redirect the end user to, then retry the preview once OAuth completes. + content: + application/problem+json: + schema: + $ref: "#/components/schemas/PlatformUnauthorizedAgentToolsProblem" + "429": + $ref: "#/components/responses/PlatformTooManyRequests" + "500": + $ref: "#/components/responses/PlatformInternalServerError" + "503": + $ref: "#/components/responses/PlatformServiceUnavailable" + x-speakeasy-group: skills + x-speakeasy-name-override: previewSourceStream + security: + - APIToken: [] /rest/api/v1/activity: post: operationId: activity @@ -8189,11 +8397,13 @@ components: - DRAFT - ENABLED - DISABLED - description: Current skill status. + description: | + The caller's effective activation. The owner sees the skill's stored status. Another caller sees their personal setting, or DISABLED when they have none. DRAFT is the stored draft state and is not set by update. Effective activation may also reflect workspace governance policy. PlatformSkillOrigin: type: string enum: - CUSTOM + - GITHUB description: Source category for the skill. PlatformSkillSyncStatus: type: string @@ -8239,7 +8449,7 @@ components: PlatformSkill: type: object required: - - id + - skill_id - display_name - description - latest_version @@ -8250,7 +8460,7 @@ components: - created_at - updated_at properties: - id: + skill_id: type: string description: Glean skill ID. display_name: @@ -8284,12 +8494,12 @@ components: PlatformSkillsListResponse: type: object required: - - skills + - results - has_more - next_cursor - request_id properties: - skills: + results: type: array description: Skills available to the user. items: @@ -8354,7 +8564,8 @@ components: skills: type: array minItems: 1 - description: Independently persisted skills in request order. + description: | + Imported skills in request order. The import is atomic: either every source persists or none does. items: $ref: "#/components/schemas/PlatformSkill" request_id: @@ -8528,6 +8739,134 @@ components: request_id: type: string description: Platform-generated request ID for support correlation. + PlatformSkillSourcePreviewStreamScan: + type: object + additionalProperties: false + description: Repository scan started; names every skill path found. + required: + - type + - total + - skill_paths + properties: + type: + type: string + enum: + - SCAN + description: Event type, also sent as the SSE `event` name. + total: + type: integer + minimum: 0 + description: Number of skill paths found in the scan. + skill_paths: + type: array + description: Skill paths found in the scan. + items: + type: string + description: One skill path found in the scan. + PlatformSkillSourcePreviewStreamProgress: + type: object + additionalProperties: false + description: One skill finished inspecting; names the skill in progress. + required: + - type + - completed + - total + - current_skill + properties: + type: + type: string + enum: + - PROGRESS + description: Event type, also sent as the SSE `event` name. + completed: + type: integer + minimum: 0 + description: Number of skills inspected so far. + total: + type: integer + minimum: 0 + description: Number of skills to inspect. + current_skill: + type: string + description: Path of the skill being inspected. + PlatformSkillSourcePreviewStreamSkill: + type: object + additionalProperties: false + description: One skill previewed; carries the previewed skill. + required: + - type + - skill + properties: + type: + type: string + enum: + - SKILL + description: Event type, also sent as the SSE `event` name. + skill: + $ref: "#/components/schemas/PlatformSkillSourcePreview" + description: The previewed skill. + PlatformSkillSourcePreviewStreamResult: + type: object + additionalProperties: false + description: Terminal success event carrying the fully assembled preview. + required: + - type + - response + properties: + type: + type: string + enum: + - RESULT + description: Event type, also sent as the SSE `event` name. + response: + $ref: "#/components/schemas/PlatformSkillSourcePreviewResponse" + description: The fully assembled preview response. + PlatformSkillSourcePreviewStreamError: + type: object + additionalProperties: false + description: Terminal failure event carrying the failure as a problem detail. Most GitHub authorization failures return HTTP 422 before the stream opens. If authorization fails after the stream opens, `error.code` is `tools_unauthorized` and `authentication_suggestions` is present. + required: + - type + - error + properties: + type: + type: string + enum: + - ERROR + description: Event type, also sent as the SSE `event` name. + error: + $ref: "#/components/schemas/PlatformProblemDetail" + description: The failure as a problem detail. + authentication_suggestions: + type: array + minItems: 1 + description: Present only when `error.code` is `tools_unauthorized`. Names the GitHub action pack to authorize, with the same retry flow as the 422 response. + items: + $ref: "#/components/schemas/PlatformAuthenticationSuggestion" + PlatformSkillSourcePreviewStreamEvent: + description: | + JSON object written to the SSE `data` field of a streaming source preview. This schema is the payload for SDK transform, not the raw HTTP body. Do not run JSON response conformance on stream bodies. Each frame also carries an `event` name matching the payload `type`. The stream ends with the RESULT event on success or the ERROR event on failure. A typical wire frame is: + event: SCAN + data: {"type":"SCAN","total":1,"skill_paths":["https://github.com/acme/skills/tree/main/skills/example"]} + example: + type: SCAN + total: 1 + skill_paths: + - https://github.com/acme/skills/tree/main/skills/example + oneOf: + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamScan" + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamProgress" + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamSkill" + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamResult" + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamError" + discriminator: + propertyName: type + mapping: + SCAN: "#/components/schemas/PlatformSkillSourcePreviewStreamScan" + PROGRESS: "#/components/schemas/PlatformSkillSourcePreviewStreamProgress" + SKILL: "#/components/schemas/PlatformSkillSourcePreviewStreamSkill" + RESULT: "#/components/schemas/PlatformSkillSourcePreviewStreamResult" + ERROR: "#/components/schemas/PlatformSkillSourcePreviewStreamError" PlatformSkillGetResponse: type: object required: @@ -8544,7 +8883,8 @@ components: enum: - ENABLED - DISABLED - description: New status for the skill. + description: | + Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting. PlatformSkillUpdateRequest: type: object additionalProperties: false @@ -8566,26 +8906,18 @@ components: request_id: type: string description: Platform-generated request ID for support correlation. - PlatformSkillSyncResultStatus: - type: string - enum: - - UP_TO_DATE - description: Synchronization status after a successful refresh. PlatformSkillSyncResponse: type: object required: - - sync_status - commit_sha - - updated + - is_updated - request_id properties: - sync_status: - $ref: "#/components/schemas/PlatformSkillSyncResultStatus" commit_sha: type: string minLength: 1 description: Git commit SHA now associated with the skill. - updated: + is_updated: type: boolean description: Whether this request created a new skill version. request_id: @@ -8629,12 +8961,12 @@ components: PlatformSkillVersionsListResponse: type: object required: - - versions + - results - has_more - next_cursor - request_id properties: - versions: + results: type: array description: Versions available for the skill. items: @@ -9628,6 +9960,87 @@ components: RESPONSE_OUTPUT_TEXT_DONE: "#/components/schemas/PlatformChatStreamOutputTextDoneServerSentEvent" RESPONSE_COMPLETED: "#/components/schemas/PlatformChatStreamResponseCompletedServerSentEvent" RESPONSE_FAILED: "#/components/schemas/PlatformChatStreamResponseFailedServerSentEvent" + PlatformSkillSourcePreviewStreamScanServerSentEvent: + type: object + required: + - event + - data + properties: + id: + type: string + event: + type: string + const: SCAN + data: + $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamScan" + PlatformSkillSourcePreviewStreamProgressServerSentEvent: + type: object + required: + - event + - data + properties: + id: + type: string + event: + type: string + const: PROGRESS + data: + $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamProgress" + PlatformSkillSourcePreviewStreamSkillServerSentEvent: + type: object + required: + - event + - data + properties: + id: + type: string + event: + type: string + const: SKILL + data: + $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamSkill" + PlatformSkillSourcePreviewStreamResultServerSentEvent: + type: object + required: + - event + - data + properties: + id: + type: string + event: + type: string + const: RESULT + data: + $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamResult" + PlatformSkillSourcePreviewStreamErrorServerSentEvent: + type: object + required: + - event + - data + properties: + id: + type: string + event: + type: string + const: ERROR + data: + $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamError" + PlatformSkillSourcePreviewStreamEventServerSentEvent: + description: A typed server-sent event. + oneOf: + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamScanServerSentEvent" + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamProgressServerSentEvent" + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamSkillServerSentEvent" + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamResultServerSentEvent" + - $ref: "#/components/schemas/PlatformSkillSourcePreviewStreamErrorServerSentEvent" + discriminator: + propertyName: event + mapping: + SCAN: "#/components/schemas/PlatformSkillSourcePreviewStreamScanServerSentEvent" + PROGRESS: "#/components/schemas/PlatformSkillSourcePreviewStreamProgressServerSentEvent" + SKILL: "#/components/schemas/PlatformSkillSourcePreviewStreamSkillServerSentEvent" + RESULT: "#/components/schemas/PlatformSkillSourcePreviewStreamResultServerSentEvent" + ERROR: "#/components/schemas/PlatformSkillSourcePreviewStreamErrorServerSentEvent" ActivityEventParams: properties: bodyContent: @@ -10593,6 +11006,9 @@ components: obfuscatedId: type: string description: An opaque identifier that can be used to request metadata for a Person. + identityOnly: + type: boolean + description: True when this is an authenticated identity fallback rather than a people profile. Directory metadata is unavailable. relatedDocuments: type: array items: @@ -11407,6 +11823,7 @@ components: - SPREADSHEET_TYPE - INLINE_HTML_TYPE - PODCAST_TYPE + - VIDEO_TYPE - WORKFLOWS_TYPE FavoriteInfo: type: object @@ -14628,9 +15045,8 @@ components: type: string minLength: 1 page_number: - type: - - integer - - "null" + type: integer + nullable: true required: - text additionalProperties: false @@ -14647,21 +15063,18 @@ components: $ref: '#/components/schemas/ChatCitationSource' minItems: 1 start_index: - type: - - integer - - "null" + type: integer minimum: 0 + nullable: true end_index: - type: - - integer - - "null" + type: integer minimum: 0 + nullable: true snippets: - type: - - array - - "null" + type: array items: $ref: '#/components/schemas/ChatCitationSnippet' + nullable: true required: - type - sources @@ -15152,6 +15565,7 @@ components: - HOST_APPLICATIONS - TOOLS - SERVERS + - AUTH_METHODS description: Type of breakdown to return. hostApplications: type: array @@ -15168,6 +15582,11 @@ components: items: type: string description: MCP servers to filter by. Empty array means all servers. + authMethods: + type: array + items: + type: string + description: Authentication methods to filter by, for example OAUTH_XAA for Cross App Access traffic. Empty array means all authentication methods. InsightsRequest: properties: overviewRequest: @@ -15683,6 +16102,11 @@ components: items: type: string description: MCP servers used by this user in the specified time period. + authMethods: + type: array + items: + type: string + description: Authentication methods this user's MCP clients presented in the specified time period, for example OAUTH_XAA for Cross App Access. McpHostApplicationBreakdown: properties: hostApplication: @@ -15726,6 +16150,22 @@ components: items: type: string description: Host applications using this server in the specified time period. + McpAuthMethodBreakdown: + properties: + authMethod: + type: string + description: Authentication method the MCP client presented, for example OAUTH_GLEAN, OAUTH_XAA (Cross App Access), or API_TOKEN. + totalCalls: + type: integer + description: Total number of MCP calls for this authentication method in the specified time period. + activeUsers: + type: integer + description: Total number of active users for this authentication method in the specified time period. + hostApplications: + type: array + items: + type: string + description: Host applications using this authentication method in the specified time period. McpBreakdownInsightsResponse: properties: usersBreakdown: @@ -15744,6 +16184,10 @@ components: type: array items: $ref: '#/components/schemas/McpServerBreakdown' + authMethodsBreakdown: + type: array + items: + $ref: '#/components/schemas/McpAuthMethodBreakdown' InsightsResponse: properties: gleanAssist: @@ -16280,12 +16724,12 @@ components: - ADDITIONAL_DOCUMENT - APP - BROWSER_HISTORY + - CHAT_HISTORY - DATASOURCE - DOCUMENT - ENTITY - GOLINK - HISTORY - - CHAT_HISTORY - NEW_CHAT - OPERATOR - OPERATOR_VALUE @@ -16376,6 +16820,15 @@ components: - NEW_TAB_PAGE description: The scopes for which this quicklink is applicable description: An action for a specific datasource that will show up in autocomplete and app card, e.g. "Create new issue" for jira. + UgcAction: + oneOf: + - type: object + properties: + create: + $ref: '#/components/schemas/UgcType' + required: + - create + description: An action to perform on user-generated content. This may be accompanied by `text` on the ChatMessageFragment, which acts as the display name content of the pill. AutocompleteResult: properties: result: @@ -16415,6 +16868,8 @@ components: type: string structuredResult: $ref: '#/components/schemas/StructuredResult' + ugcAction: + $ref: '#/components/schemas/UgcAction' trackingToken: type: string description: A token to be passed in /feedback events associated with this autocomplete result. @@ -16566,6 +17021,8 @@ components: - SHARE_ARTIFACT - CREATE_AGENT - MANAGER_INVITE + - ONBOARDING_AUTHORIZATION + - CHAT_REMINDER description: Categories of content requested. An allowlist gives flexibility to request content separately or together. requestOptions: $ref: '#/components/schemas/FeedRequestOptions' @@ -16847,6 +17304,17 @@ components: items: $ref: '#/components/schemas/DigestSection' description: Array of digest sections from which the podcast was created. + ArtifactType: + type: string + enum: + - PAPER + - AGENT + - MESSAGE + - EMAIL + - HTML_CODE + - SLIDE + description: Type of the Artifact + x-include-enum-class-prefix: true ChatSuggestion: properties: query: @@ -16858,6 +17326,9 @@ components: feature: type: string description: Targeted Glean Chat feature for the suggestion. + artifactType: + $ref: '#/components/schemas/ArtifactType' + description: The single artifact type to review for an unread artifact reminder. sourceDocumentIds: type: array items: @@ -17043,6 +17514,8 @@ components: - SHARE_ARTIFACT - CREATE_AGENT - MANAGER_INVITE + - ONBOARDING_AUTHORIZATION + - CHAT_REMINDER description: Type of the justification. justification: type: string @@ -17143,6 +17616,8 @@ components: - SHARE_ARTIFACT - CREATE_AGENT - MANAGER_INVITE + - ONBOARDING_AUTHORIZATION + - CHAT_REMINDER description: Category of the result, one of the requested categories in incoming request. primaryEntry: $ref: '#/components/schemas/FeedEntry' @@ -17355,6 +17830,10 @@ components: PeopleRequest: type: object properties: + fallbackToAuthenticatedIdentity: + type: boolean + description: If true and the current user's people profile is missing, reads the stored SSO profile and returns a minimal Person with its display name, the authenticated user's email, the same obfuscatedId used by a normal self-lookup, and identityOnly set to true. If the SSO profile or its name is unavailable, preserves the missing-profile error. Applies only when emailIds and obfuscatedIds are empty and the request doesn't use act-as, a virtual identity, anonymous authentication, or the INVALID_ENTITIES includeType. The fallback doesn't mask lookup or enrichment errors and doesn't create a directory profile. Normal people profiles don't require an SSO lookup. + default: false 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. diff --git a/.speakeasy/tests.arazzo.yaml b/.speakeasy/tests.arazzo.yaml index f8400bc6..095b25e7 100644 --- a/.speakeasy/tests.arazzo.yaml +++ b/.speakeasy/tests.arazzo.yaml @@ -158867,11 +158867,11 @@ workflows: payload: file: 'x-file: example.file' successCriteria: - - condition: $statusCode == 200 + - condition: $statusCode == 201 - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"skill":{"id":"","display_name":"Merl18","description":"rural ugh unexpectedly excepting livid","latest_version":504149,"latest_minor_version":106110,"status":"DISABLED","origin":"CUSTOM","owner":{"name":""},"created_at":"2025-01-04T03:16:16.951Z","updated_at":"2025-09-10T16:05:46.046Z"},"request_id":""} + {"skill":{"skill_id":"","display_name":"Merl18","description":"rural ugh unexpectedly excepting livid","latest_version":504149,"latest_minor_version":106110,"status":"DISABLED","origin":"CUSTOM","owner":{"name":""},"created_at":"2025-09-10T16:05:46.046Z","updated_at":"2025-08-13T23:05:45.737Z"},"request_id":""} type: simple x-speakeasy-test-group: skills x-speakeasy-test-rebuild: true @@ -158884,8 +158884,12 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"skills":[],"has_more":true,"next_cursor":"","request_id":""} + {"results":[],"has_more":true,"next_cursor":"","request_id":""} type: simple + parameters: + - name: page_size + in: query + value: 20 x-speakeasy-test-group: skills x-speakeasy-test-rebuild: true - workflowId: platform-skills-validate @@ -158918,7 +158922,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"skill":{"id":"","display_name":"Chad_Herzog","description":"whenever up aha controvert","latest_version":151495,"latest_minor_version":170771,"status":"DISABLED","origin":"CUSTOM","owner":{"name":""},"created_at":"2024-12-25T16:41:00.099Z","updated_at":"2026-12-07T21:59:59.375Z"},"request_id":""} + {"skill":{"skill_id":"","display_name":"Chad_Herzog","description":"whenever up aha controvert","latest_version":151495,"latest_minor_version":170771,"status":"DISABLED","origin":"CUSTOM","owner":{"name":""},"created_at":"2024-12-25T16:41:00.099Z","updated_at":"2026-12-07T21:59:59.375Z"},"request_id":""} type: simple x-speakeasy-test-group: skills x-speakeasy-test-rebuild: true @@ -158952,7 +158956,7 @@ workflows: payload: file: 'x-file: example.file' successCriteria: - - condition: $statusCode == 200 + - condition: $statusCode == 201 - condition: $response.header.Content-Type == application/json - context: $response.body condition: | @@ -158968,12 +158972,15 @@ workflows: - name: skill_id in: path value: + - name: page_size + in: query + value: 20 successCriteria: - condition: $statusCode == 200 - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"versions":[],"has_more":false,"next_cursor":"","request_id":""} + {"results":[],"has_more":false,"next_cursor":"","request_id":""} type: simple x-speakeasy-test-group: skills x-speakeasy-test-rebuild: true @@ -159087,7 +159094,7 @@ workflows: source_urls: - https://github.com/anthropics/skills/tree/main/skills/skill-creator successCriteria: - - condition: $statusCode == 200 + - condition: $statusCode == 201 - condition: $response.header.Content-Type == application/json - context: $response.body condition: | @@ -159130,7 +159137,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"skill":{"id":"","display_name":"Afton14","description":"taut netsuke duh sonata boastfully elegantly management come","latest_version":425795,"latest_minor_version":741364,"status":"DISABLED","origin":"CUSTOM","owner":{"name":""},"created_at":"2024-12-20T01:31:39.364Z","updated_at":"2025-12-04T02:59:37.124Z"},"request_id":""} + {"skill":{"skill_id":"","display_name":"Afton14","description":"taut netsuke duh sonata boastfully elegantly management come","latest_version":425795,"latest_minor_version":741364,"status":"DISABLED","origin":"CUSTOM","owner":{"name":""},"created_at":"2024-12-20T01:31:39.364Z","updated_at":"2025-12-04T02:59:37.124Z"},"request_id":""} type: simple x-speakeasy-test-group: skills x-speakeasy-test-rebuild: true @@ -159147,7 +159154,7 @@ workflows: - condition: $response.header.Content-Type == application/json - context: $response.body condition: | - {"sync_status":"UP_TO_DATE","commit_sha":"","updated":false,"request_id":""} + {"commit_sha":"","is_updated":false,"request_id":""} type: simple x-speakeasy-test-group: skills x-speakeasy-test-rebuild: true diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 3bd9a676..cdd743a7 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,9 +1,9 @@ -speakeasyVersion: 1.798.0 +speakeasyVersion: 1.800.1 sources: Glean API: sourceNamespace: glean-api-specs - sourceRevisionDigest: sha256:09823f8003cfb3ebf08b6adfa434cefda4c97f7ee64ae18dc0066fe392647c97 - sourceBlobDigest: sha256:fc4fcf9c37dfd0e8387153211f760a21a602ede64951d4e4c824e8e1b168b7b8 + sourceRevisionDigest: sha256:05e3971be4fa72f84e875d8aa438c2b043bfbe3514333699ffe437d475237773 + sourceBlobDigest: sha256:45258e9abc405d9a60201089c3113b8cc27705016b80fbabdf489eed6ff600aa tags: - latest Glean Client API: @@ -16,10 +16,10 @@ targets: glean: source: Glean API sourceNamespace: glean-api-specs - sourceRevisionDigest: sha256:09823f8003cfb3ebf08b6adfa434cefda4c97f7ee64ae18dc0066fe392647c97 - sourceBlobDigest: sha256:fc4fcf9c37dfd0e8387153211f760a21a602ede64951d4e4c824e8e1b168b7b8 + sourceRevisionDigest: sha256:05e3971be4fa72f84e875d8aa438c2b043bfbe3514333699ffe437d475237773 + sourceBlobDigest: sha256:45258e9abc405d9a60201089c3113b8cc27705016b80fbabdf489eed6ff600aa codeSamplesNamespace: glean-api-specs-python-code-samples - codeSamplesRevisionDigest: sha256:5da391e8e0a7821657f62afcee0636ca4423213b036163bea43637e45c1f3c7c + codeSamplesRevisionDigest: sha256:cdce7efd2330ac7fdb670c272d8c770046ec3450cc0de514c044fe4cac218906 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index b2d1dc57..b016100a 100644 --- a/README.md +++ b/README.md @@ -578,6 +578,7 @@ For more information on obtaining the appropriate token type, please contact you * [list_versions](docs/sdks/skills/README.md#list_versions) - List skill versions * [retrieve_version](docs/sdks/skills/README.md#retrieve_version) - Retrieve skill version * [retrieve_version_content](docs/sdks/skills/README.md#retrieve_version_content) - Download skill version content +* [preview_source_stream](docs/sdks/skills/README.md#preview_source_stream) - Preview a GitHub skill source as events ### [Triggers](docs/sdks/triggers/README.md) diff --git a/RELEASES.md b/RELEASES.md index b416354a..2b99408d 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1008,4 +1008,14 @@ Based on: ### Generated - [python v0.17.15] . ### Releases -- [PyPI v0.17.15] https://pypi.org/project/glean-api-client/0.17.15 - . \ No newline at end of file +- [PyPI v0.17.15] https://pypi.org/project/glean-api-client/0.17.15 - . + +## 2026-10-03 04:09:17 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.800.1 (2.943.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.17.16] . +### Releases +- [PyPI v0.17.16] https://pypi.org/project/glean-api-client/0.17.16 - . \ No newline at end of file diff --git a/docs/models/artifacttype.md b/docs/models/artifacttype.md new file mode 100644 index 00000000..acd892d2 --- /dev/null +++ b/docs/models/artifacttype.md @@ -0,0 +1,25 @@ +# ArtifactType + +Type of the Artifact + +## Example Usage + +```python +from glean.api_client.models import ArtifactType + +value = ArtifactType.PAPER + +# Open enum: unrecognized values are captured as UnrecognizedStr +``` + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `PAPER` | PAPER | +| `AGENT` | AGENT | +| `MESSAGE` | MESSAGE | +| `EMAIL` | EMAIL | +| `HTML_CODE` | HTML_CODE | +| `SLIDE` | SLIDE | \ No newline at end of file diff --git a/docs/models/autocompleterequestresulttype.md b/docs/models/autocompleterequestresulttype.md index 1133a59c..d5efb95f 100644 --- a/docs/models/autocompleterequestresulttype.md +++ b/docs/models/autocompleterequestresulttype.md @@ -16,12 +16,12 @@ value = AutocompleteRequestResultType.ADDITIONAL_DOCUMENT | `ADDITIONAL_DOCUMENT` | ADDITIONAL_DOCUMENT | | `APP` | APP | | `BROWSER_HISTORY` | BROWSER_HISTORY | +| `CHAT_HISTORY` | CHAT_HISTORY | | `DATASOURCE` | DATASOURCE | | `DOCUMENT` | DOCUMENT | | `ENTITY` | ENTITY | | `GOLINK` | GOLINK | | `HISTORY` | HISTORY | -| `CHAT_HISTORY` | CHAT_HISTORY | | `NEW_CHAT` | NEW_CHAT | | `OPERATOR` | OPERATOR | | `OPERATOR_VALUE` | OPERATOR_VALUE | diff --git a/docs/models/autocompleteresult.md b/docs/models/autocompleteresult.md index 73654d2f..b974464a 100644 --- a/docs/models/autocompleteresult.md +++ b/docs/models/autocompleteresult.md @@ -3,16 +3,17 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | -| `result` | *str* | :heavy_check_mark: | N/A | | -| `keywords` | List[*str*] | :heavy_minus_sign: | A list of all possible keywords for given result. | | -| `result_type` | [Optional[models.AutocompleteResultResultType]](../models/autocompleteresultresulttype.md) | :heavy_minus_sign: | N/A | | -| `score` | *Optional[float]* | :heavy_minus_sign: | Higher indicates a more confident match. | | -| `operator_metadata` | [Optional[models.OperatorMetadata]](../models/operatormetadata.md) | :heavy_minus_sign: | N/A | {
"name": "Last Updated",
"operatorType": "DATE",
"scopes": [
{
"datasource": "GDRIVE",
"docType": "Document"
},
{
"datasource": "ZENDESK"
}
]
} | -| `quicklink` | [Optional[models.Quicklink]](../models/quicklink.md) | :heavy_minus_sign: | An action for a specific datasource that will show up in autocomplete and app card, e.g. "Create new issue" for jira. | | -| `document` | [Optional[models.Document]](../models/document.md) | :heavy_minus_sign: | N/A | | -| `url` | *Optional[str]* | :heavy_minus_sign: | N/A | | -| `structured_result` | [Optional[models.StructuredResult]](../models/structuredresult.md) | :heavy_minus_sign: | A single object that can support any object in the work graph. Only a single object will be populated. | | -| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | A token to be passed in /feedback events associated with this autocomplete result. | | -| `ranges` | List[[models.TextRange](../models/textrange.md)] | :heavy_minus_sign: | Subsections of the result string to which some special formatting should be applied (eg. bold) | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `result` | *str* | :heavy_check_mark: | N/A | | +| `keywords` | List[*str*] | :heavy_minus_sign: | A list of all possible keywords for given result. | | +| `result_type` | [Optional[models.AutocompleteResultResultType]](../models/autocompleteresultresulttype.md) | :heavy_minus_sign: | N/A | | +| `score` | *Optional[float]* | :heavy_minus_sign: | Higher indicates a more confident match. | | +| `operator_metadata` | [Optional[models.OperatorMetadata]](../models/operatormetadata.md) | :heavy_minus_sign: | N/A | {
"name": "Last Updated",
"operatorType": "DATE",
"scopes": [
{
"datasource": "GDRIVE",
"docType": "Document"
},
{
"datasource": "ZENDESK"
}
]
} | +| `quicklink` | [Optional[models.Quicklink]](../models/quicklink.md) | :heavy_minus_sign: | An action for a specific datasource that will show up in autocomplete and app card, e.g. "Create new issue" for jira. | | +| `document` | [Optional[models.Document]](../models/document.md) | :heavy_minus_sign: | N/A | | +| `url` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `structured_result` | [Optional[models.StructuredResult]](../models/structuredresult.md) | :heavy_minus_sign: | A single object that can support any object in the work graph. Only a single object will be populated. | | +| `ugc_action` | [Optional[models.UgcActionUnion]](../models/ugcactionunion.md) | :heavy_minus_sign: | An action to perform on user-generated content. This may be accompanied by `text` on the ChatMessageFragment, which acts as the display name content of the pill. | | +| `tracking_token` | *Optional[str]* | :heavy_minus_sign: | A token to be passed in /feedback events associated with this autocomplete result. | | +| `ranges` | List[[models.TextRange](../models/textrange.md)] | :heavy_minus_sign: | Subsections of the result string to which some special formatting should be applied (eg. bold) | | \ No newline at end of file diff --git a/docs/models/breakdowntype.md b/docs/models/breakdowntype.md index dbe36727..6e84b1a5 100644 --- a/docs/models/breakdowntype.md +++ b/docs/models/breakdowntype.md @@ -18,4 +18,5 @@ value = BreakdownType.USERS | `USERS` | USERS | | `HOST_APPLICATIONS` | HOST_APPLICATIONS | | `TOOLS` | TOOLS | -| `SERVERS` | SERVERS | \ No newline at end of file +| `SERVERS` | SERVERS | +| `AUTH_METHODS` | AUTH_METHODS | \ No newline at end of file diff --git a/docs/models/chatsuggestion.md b/docs/models/chatsuggestion.md index e18aae7b..c84fee73 100644 --- a/docs/models/chatsuggestion.md +++ b/docs/models/chatsuggestion.md @@ -8,4 +8,5 @@ | `query` | *Optional[str]* | :heavy_minus_sign: | The actionable chat query to run when the user selects this suggestion. | | `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. | +| `artifact_type` | [Optional[models.ArtifactType]](../models/artifacttype.md) | :heavy_minus_sign: | Type of the Artifact | | `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/feedrequestcategory.md b/docs/models/feedrequestcategory.md index 662a836b..35f342f9 100644 --- a/docs/models/feedrequestcategory.md +++ b/docs/models/feedrequestcategory.md @@ -66,4 +66,6 @@ value = FeedRequestCategory.DOCUMENT_SUGGESTION | `CHAT_TO_ARTIFACT` | CHAT_TO_ARTIFACT | | `SHARE_ARTIFACT` | SHARE_ARTIFACT | | `CREATE_AGENT` | CREATE_AGENT | -| `MANAGER_INVITE` | MANAGER_INVITE | \ No newline at end of file +| `MANAGER_INVITE` | MANAGER_INVITE | +| `ONBOARDING_AUTHORIZATION` | ONBOARDING_AUTHORIZATION | +| `CHAT_REMINDER` | CHAT_REMINDER | \ No newline at end of file diff --git a/docs/models/feedresultcategory.md b/docs/models/feedresultcategory.md index b1ed34c8..591586c6 100644 --- a/docs/models/feedresultcategory.md +++ b/docs/models/feedresultcategory.md @@ -70,4 +70,6 @@ value = FeedResultCategory.DOCUMENT_SUGGESTION | `CHAT_TO_ARTIFACT` | CHAT_TO_ARTIFACT | | `SHARE_ARTIFACT` | SHARE_ARTIFACT | | `CREATE_AGENT` | CREATE_AGENT | -| `MANAGER_INVITE` | MANAGER_INVITE | \ No newline at end of file +| `MANAGER_INVITE` | MANAGER_INVITE | +| `ONBOARDING_AUTHORIZATION` | ONBOARDING_AUTHORIZATION | +| `CHAT_REMINDER` | CHAT_REMINDER | \ No newline at end of file diff --git a/docs/models/justificationtype.md b/docs/models/justificationtype.md index 7764769f..0017912a 100644 --- a/docs/models/justificationtype.md +++ b/docs/models/justificationtype.md @@ -84,4 +84,6 @@ value = JustificationType.FREQUENTLY_ACCESSED | `CHAT_TO_ARTIFACT` | CHAT_TO_ARTIFACT | | `SHARE_ARTIFACT` | SHARE_ARTIFACT | | `CREATE_AGENT` | CREATE_AGENT | -| `MANAGER_INVITE` | MANAGER_INVITE | \ No newline at end of file +| `MANAGER_INVITE` | MANAGER_INVITE | +| `ONBOARDING_AUTHORIZATION` | ONBOARDING_AUTHORIZATION | +| `CHAT_REMINDER` | CHAT_REMINDER | \ No newline at end of file diff --git a/docs/models/mcpauthmethodbreakdown.md b/docs/models/mcpauthmethodbreakdown.md new file mode 100644 index 00000000..bcdeb6cc --- /dev/null +++ b/docs/models/mcpauthmethodbreakdown.md @@ -0,0 +1,11 @@ +# McpAuthMethodBreakdown + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `auth_method` | *Optional[str]* | :heavy_minus_sign: | Authentication method the MCP client presented, for example OAUTH_GLEAN, OAUTH_XAA (Cross App Access), or API_TOKEN. | +| `total_calls` | *Optional[int]* | :heavy_minus_sign: | Total number of MCP calls for this authentication method in the specified time period. | +| `active_users` | *Optional[int]* | :heavy_minus_sign: | Total number of active users for this authentication method in the specified time period. | +| `host_applications` | List[*str*] | :heavy_minus_sign: | Host applications using this authentication method in the specified time period. | \ No newline at end of file diff --git a/docs/models/mcpbreakdowninsightsrequest.md b/docs/models/mcpbreakdowninsightsrequest.md index dfc79947..88e0fb39 100644 --- a/docs/models/mcpbreakdowninsightsrequest.md +++ b/docs/models/mcpbreakdowninsightsrequest.md @@ -3,13 +3,14 @@ ## 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 +| 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. | +| `auth_methods` | List[*str*] | :heavy_minus_sign: | Authentication methods to filter by, for example OAUTH_XAA for Cross App Access traffic. Empty array means all authentication methods. | \ No newline at end of file diff --git a/docs/models/mcpbreakdowninsightsresponse.md b/docs/models/mcpbreakdowninsightsresponse.md index 94328ff4..95f06445 100644 --- a/docs/models/mcpbreakdowninsightsresponse.md +++ b/docs/models/mcpbreakdowninsightsresponse.md @@ -8,4 +8,5 @@ | `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 +| `servers_breakdown` | List[[models.McpServerBreakdown](../models/mcpserverbreakdown.md)] | :heavy_minus_sign: | N/A | +| `auth_methods_breakdown` | List[[models.McpAuthMethodBreakdown](../models/mcpauthmethodbreakdown.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/mcpuserbreakdown.md b/docs/models/mcpuserbreakdown.md index 1c4e22ef..09e90b95 100644 --- a/docs/models/mcpuserbreakdown.md +++ b/docs/models/mcpuserbreakdown.md @@ -3,10 +3,11 @@ ## 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 +| 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. | | +| `auth_methods` | List[*str*] | :heavy_minus_sign: | Authentication methods this user's MCP clients presented in the specified time period, for example OAUTH_XAA for Cross App Access. | | \ No newline at end of file diff --git a/docs/models/peoplerequest.md b/docs/models/peoplerequest.md index cabbe6e5..66af83b5 100644 --- a/docs/models/peoplerequest.md +++ b/docs/models/peoplerequest.md @@ -3,11 +3,12 @@ ## 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. | -| `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. | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `fallback_to_authenticated_identity` | *Optional[bool]* | :heavy_minus_sign: | If true and the current user's people profile is missing, reads the stored SSO profile and returns a minimal Person with its display name, the authenticated user's email, the same obfuscatedId used by a normal self-lookup, and identityOnly set to true. If the SSO profile or its name is unavailable, preserves the missing-profile error. Applies only when emailIds and obfuscatedIds are empty and the request doesn't use act-as, a virtual identity, anonymous authentication, or the INVALID_ENTITIES includeType. The fallback doesn't mask lookup or enrichment errors and doesn't create a directory profile. Normal people profiles don't require an SSO lookup. | +| `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. | \ No newline at end of file diff --git a/docs/models/person.md b/docs/models/person.md index 233784bc..e9846658 100644 --- a/docs/models/person.md +++ b/docs/models/person.md @@ -7,5 +7,6 @@ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `name` | *str* | :heavy_check_mark: | The display name. | | | `obfuscated_id` | *str* | :heavy_check_mark: | An opaque identifier that can be used to request metadata for a Person. | | +| `identity_only` | *Optional[bool]* | :heavy_minus_sign: | True when this is an authenticated identity fallback rather than a people profile. Directory metadata is unavailable. | | | `related_documents` | List[[models.RelatedDocuments](../models/relateddocuments.md)] | :heavy_minus_sign: | A list of documents related to this person. | | | `metadata` | [Optional[models.PersonMetadata]](../models/personmetadata.md) | :heavy_minus_sign: | N/A | {
"department": "Movies",
"email": "george@example.com",
"location": "Hollywood, CA",
"phone": "6505551234",
"photoUrl": "https://example.com/george.jpg",
"startDate": "2000-01-23",
"title": "Actor"
} | \ No newline at end of file diff --git a/docs/models/platformproblemdetail.md b/docs/models/platformproblemdetail.md new file mode 100644 index 00000000..95a5121d --- /dev/null +++ b/docs/models/platformproblemdetail.md @@ -0,0 +1,18 @@ +# PlatformProblemDetail + +Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation. + + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `type` | *str* | :heavy_check_mark: | URI identifying the error type. | https://developers.glean.com/errors/invalid-cursor | +| `title` | *str* | :heavy_check_mark: | Short, human-readable summary of the error. | Invalid Pagination Cursor | +| `status` | *int* | :heavy_check_mark: | HTTP status code mirrored from the response. | 400 | +| `detail` | *str* | :heavy_check_mark: | Human-readable explanation specific to this occurrence. | The provided cursor has expired. Start a new search to get a fresh cursor.
| +| `code` | [models.PlatformProblemDetailCode](../models/platformproblemdetailcode.md) | :heavy_check_mark: | Stable machine-readable error code. | invalid_cursor | +| `documentation_url` | *Optional[str]* | :heavy_minus_sign: | Direct URL to documentation for this error code. | https://developers.glean.com/errors/invalid-cursor | +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | req_7f8a9b0c1d2e | +| `errors` | List[[models.PlatformProblemDetailError](../models/platformproblemdetailerror.md)] | :heavy_minus_sign: | Field-level validation problems, one entry per offending field. | | \ No newline at end of file diff --git a/docs/models/platformskill.md b/docs/models/platformskill.md index f803434a..3a68c65b 100644 --- a/docs/models/platformskill.md +++ b/docs/models/platformskill.md @@ -3,16 +3,16 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | Glean skill ID. | -| `display_name` | *str* | :heavy_check_mark: | Human-readable skill name. | -| `description` | *str* | :heavy_check_mark: | Human-readable skill description. | -| `latest_version` | *int* | :heavy_check_mark: | Latest major version number for the skill. | -| `latest_minor_version` | *int* | :heavy_check_mark: | Latest minor version number for the skill. | -| `status` | [models.PlatformSkillStatus](../models/platformskillstatus.md) | :heavy_check_mark: | Current skill status. | -| `origin` | [models.PlatformSkillOrigin](../models/platformskillorigin.md) | :heavy_check_mark: | Source category for the skill. | -| `source_provenance` | [Optional[models.PlatformSkillSourceProvenance]](../models/platformskillsourceprovenance.md) | :heavy_minus_sign: | N/A | -| `owner` | [models.PlatformPersonReference](../models/platformpersonreference.md) | :heavy_check_mark: | A lightweight reference to a person, used where a payload merely points at someone. | -| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | Time the skill was created. | -| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | Time the skill was last updated. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | +| `display_name` | *str* | :heavy_check_mark: | Human-readable skill name. | +| `description` | *str* | :heavy_check_mark: | Human-readable skill description. | +| `latest_version` | *int* | :heavy_check_mark: | Latest major version number for the skill. | +| `latest_minor_version` | *int* | :heavy_check_mark: | Latest minor version number for the skill. | +| `status` | [models.PlatformSkillStatus](../models/platformskillstatus.md) | :heavy_check_mark: | The caller's effective activation. The owner sees the skill's stored status. Another caller sees their personal setting, or DISABLED when they have none. DRAFT is the stored draft state and is not set by update. Effective activation may also reflect workspace governance policy.
| +| `origin` | [models.PlatformSkillOrigin](../models/platformskillorigin.md) | :heavy_check_mark: | Source category for the skill. | +| `source_provenance` | [Optional[models.PlatformSkillSourceProvenance]](../models/platformskillsourceprovenance.md) | :heavy_minus_sign: | N/A | +| `owner` | [models.PlatformPersonReference](../models/platformpersonreference.md) | :heavy_check_mark: | A lightweight reference to a person, used where a payload merely points at someone. | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | Time the skill was created. | +| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | Time the skill was last updated. | \ No newline at end of file diff --git a/docs/models/platformskillimportresponse.md b/docs/models/platformskillimportresponse.md index 9a383f20..079c091e 100644 --- a/docs/models/platformskillimportresponse.md +++ b/docs/models/platformskillimportresponse.md @@ -3,7 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -| `skills` | List[[models.PlatformSkill](../models/platformskill.md)] | :heavy_check_mark: | Independently persisted skills in request order. | -| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | +| `skills` | List[[models.PlatformSkill](../models/platformskill.md)] | :heavy_check_mark: | Imported skills in request order. The import is atomic: either every source persists or none does.
| +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformskillorigin.md b/docs/models/platformskillorigin.md index ca7bf36f..c43dbe56 100644 --- a/docs/models/platformskillorigin.md +++ b/docs/models/platformskillorigin.md @@ -8,6 +8,8 @@ Source category for the skill. from glean.api_client.models import PlatformSkillOrigin value = PlatformSkillOrigin.CUSTOM + +# Open enum: unrecognized values are captured as UnrecognizedStr ``` @@ -15,4 +17,5 @@ value = PlatformSkillOrigin.CUSTOM | Name | Value | | -------- | -------- | -| `CUSTOM` | CUSTOM | \ No newline at end of file +| `CUSTOM` | CUSTOM | +| `GITHUB` | GITHUB | \ No newline at end of file diff --git a/docs/models/platformskillslistrequest.md b/docs/models/platformskillslistrequest.md index ebf0ada9..321617bd 100644 --- a/docs/models/platformskillslistrequest.md +++ b/docs/models/platformskillslistrequest.md @@ -3,7 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of skills to return. | -| `cursor` | *Optional[str]* | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of skills to return. Defaults to 20. Maximum is 100. | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | \ No newline at end of file diff --git a/docs/models/platformskillslistresponse.md b/docs/models/platformskillslistresponse.md index 1adcf3fe..c880bd46 100644 --- a/docs/models/platformskillslistresponse.md +++ b/docs/models/platformskillslistresponse.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | -| `skills` | List[[models.PlatformSkill](../models/platformskill.md)] | :heavy_check_mark: | Skills available to the user. | +| `results` | List[[models.PlatformSkill](../models/platformskill.md)] | :heavy_check_mark: | Skills available to the user. | | `has_more` | *bool* | :heavy_check_mark: | Whether additional results are available. | | `next_cursor` | *Nullable[str]* | :heavy_check_mark: | Cursor for the next page, or null when no more results are available. | | `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformskillslistversionsrequest.md b/docs/models/platformskillslistversionsrequest.md index a3fa36c9..75cd1177 100644 --- a/docs/models/platformskillslistversionsrequest.md +++ b/docs/models/platformskillslistversionsrequest.md @@ -3,8 +3,8 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | {skill_id} | -| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of versions to return. | | -| `cursor` | *Optional[str]* | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | {skill_id} | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of versions to return. Defaults to 20. Maximum is 100. | | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamerror.md b/docs/models/platformskillsourcepreviewstreamerror.md new file mode 100644 index 00000000..0de09b26 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamerror.md @@ -0,0 +1,12 @@ +# PlatformSkillSourcePreviewStreamError + +Terminal failure event carrying the failure as a problem detail. Most GitHub authorization failures return HTTP 422 before the stream opens. If authorization fails after the stream opens, `error.code` is `tools_unauthorized` and `authentication_suggestions` is present. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| `type` | [models.PlatformSkillSourcePreviewStreamErrorType](../models/platformskillsourcepreviewstreamerrortype.md) | :heavy_check_mark: | Event type, also sent as the SSE `event` name. | +| `error` | [models.PlatformProblemDetail](../models/platformproblemdetail.md) | :heavy_check_mark: | Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation.
| +| `authentication_suggestions` | List[[models.PlatformAuthenticationSuggestion](../models/platformauthenticationsuggestion.md)] | :heavy_minus_sign: | Present only when `error.code` is `tools_unauthorized`. Names the GitHub action pack to authorize, with the same retry flow as the 422 response. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamerrorserversentevent.md b/docs/models/platformskillsourcepreviewstreamerrorserversentevent.md new file mode 100644 index 00000000..0f2bab47 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamerrorserversentevent.md @@ -0,0 +1,10 @@ +# PlatformSkillSourcePreviewStreamErrorServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `event` | *Literal["ERROR"]* | :heavy_check_mark: | N/A | +| `data` | [models.PlatformSkillSourcePreviewStreamError](../models/platformskillsourcepreviewstreamerror.md) | :heavy_check_mark: | Terminal failure event carrying the failure as a problem detail. Most GitHub authorization failures return HTTP 422 before the stream opens. If authorization fails after the stream opens, `error.code` is `tools_unauthorized` and `authentication_suggestions` is present. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamerrortype.md b/docs/models/platformskillsourcepreviewstreamerrortype.md new file mode 100644 index 00000000..eaea8d89 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamerrortype.md @@ -0,0 +1,18 @@ +# PlatformSkillSourcePreviewStreamErrorType + +Event type, also sent as the SSE `event` name. + +## Example Usage + +```python +from glean.api_client.models import PlatformSkillSourcePreviewStreamErrorType + +value = PlatformSkillSourcePreviewStreamErrorType.ERROR +``` + + +## Values + +| Name | Value | +| ------- | ------- | +| `ERROR` | ERROR | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreameventserversentevent.md b/docs/models/platformskillsourcepreviewstreameventserversentevent.md new file mode 100644 index 00000000..1a3ff6a8 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreameventserversentevent.md @@ -0,0 +1,37 @@ +# PlatformSkillSourcePreviewStreamEventServerSentEvent + +A typed server-sent event. + + +## Supported Types + +### `models.PlatformSkillSourcePreviewStreamScanServerSentEvent` + +```python +value: models.PlatformSkillSourcePreviewStreamScanServerSentEvent = /* values here */ +``` + +### `models.PlatformSkillSourcePreviewStreamProgressServerSentEvent` + +```python +value: models.PlatformSkillSourcePreviewStreamProgressServerSentEvent = /* values here */ +``` + +### `models.PlatformSkillSourcePreviewStreamSkillServerSentEvent` + +```python +value: models.PlatformSkillSourcePreviewStreamSkillServerSentEvent = /* values here */ +``` + +### `models.PlatformSkillSourcePreviewStreamResultServerSentEvent` + +```python +value: models.PlatformSkillSourcePreviewStreamResultServerSentEvent = /* values here */ +``` + +### `models.PlatformSkillSourcePreviewStreamErrorServerSentEvent` + +```python +value: models.PlatformSkillSourcePreviewStreamErrorServerSentEvent = /* values here */ +``` + diff --git a/docs/models/platformskillsourcepreviewstreamprogress.md b/docs/models/platformskillsourcepreviewstreamprogress.md new file mode 100644 index 00000000..320e3d52 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamprogress.md @@ -0,0 +1,13 @@ +# PlatformSkillSourcePreviewStreamProgress + +One skill finished inspecting; names the skill in progress. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `type` | [models.PlatformSkillSourcePreviewStreamProgressType](../models/platformskillsourcepreviewstreamprogresstype.md) | :heavy_check_mark: | Event type, also sent as the SSE `event` name. | +| `completed` | *int* | :heavy_check_mark: | Number of skills inspected so far. | +| `total` | *int* | :heavy_check_mark: | Number of skills to inspect. | +| `current_skill` | *str* | :heavy_check_mark: | Path of the skill being inspected. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamprogressserversentevent.md b/docs/models/platformskillsourcepreviewstreamprogressserversentevent.md new file mode 100644 index 00000000..7f606311 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamprogressserversentevent.md @@ -0,0 +1,10 @@ +# PlatformSkillSourcePreviewStreamProgressServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `event` | *Literal["PROGRESS"]* | :heavy_check_mark: | N/A | +| `data` | [models.PlatformSkillSourcePreviewStreamProgress](../models/platformskillsourcepreviewstreamprogress.md) | :heavy_check_mark: | One skill finished inspecting; names the skill in progress. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamprogresstype.md b/docs/models/platformskillsourcepreviewstreamprogresstype.md new file mode 100644 index 00000000..7a25cd48 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamprogresstype.md @@ -0,0 +1,18 @@ +# PlatformSkillSourcePreviewStreamProgressType + +Event type, also sent as the SSE `event` name. + +## Example Usage + +```python +from glean.api_client.models import PlatformSkillSourcePreviewStreamProgressType + +value = PlatformSkillSourcePreviewStreamProgressType.PROGRESS +``` + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `PROGRESS` | PROGRESS | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamresult.md b/docs/models/platformskillsourcepreviewstreamresult.md new file mode 100644 index 00000000..c778b257 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamresult.md @@ -0,0 +1,11 @@ +# PlatformSkillSourcePreviewStreamResult + +Terminal success event carrying the fully assembled preview. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `type` | [models.PlatformSkillSourcePreviewStreamResultType](../models/platformskillsourcepreviewstreamresulttype.md) | :heavy_check_mark: | Event type, also sent as the SSE `event` name. | +| `response` | [models.PlatformSkillSourcePreviewResponse](../models/platformskillsourcepreviewresponse.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamresultserversentevent.md b/docs/models/platformskillsourcepreviewstreamresultserversentevent.md new file mode 100644 index 00000000..fae2c0e8 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamresultserversentevent.md @@ -0,0 +1,10 @@ +# PlatformSkillSourcePreviewStreamResultServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `event` | *Literal["RESULT"]* | :heavy_check_mark: | N/A | +| `data` | [models.PlatformSkillSourcePreviewStreamResult](../models/platformskillsourcepreviewstreamresult.md) | :heavy_check_mark: | Terminal success event carrying the fully assembled preview. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamresulttype.md b/docs/models/platformskillsourcepreviewstreamresulttype.md new file mode 100644 index 00000000..aae68d66 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamresulttype.md @@ -0,0 +1,18 @@ +# PlatformSkillSourcePreviewStreamResultType + +Event type, also sent as the SSE `event` name. + +## Example Usage + +```python +from glean.api_client.models import PlatformSkillSourcePreviewStreamResultType + +value = PlatformSkillSourcePreviewStreamResultType.RESULT +``` + + +## Values + +| Name | Value | +| -------- | -------- | +| `RESULT` | RESULT | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamscan.md b/docs/models/platformskillsourcepreviewstreamscan.md new file mode 100644 index 00000000..c9705a55 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamscan.md @@ -0,0 +1,12 @@ +# PlatformSkillSourcePreviewStreamScan + +Repository scan started; names every skill path found. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `type` | [models.PlatformSkillSourcePreviewStreamScanType](../models/platformskillsourcepreviewstreamscantype.md) | :heavy_check_mark: | Event type, also sent as the SSE `event` name. | +| `total` | *int* | :heavy_check_mark: | Number of skill paths found in the scan. | +| `skill_paths` | List[*str*] | :heavy_check_mark: | Skill paths found in the scan. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamscanserversentevent.md b/docs/models/platformskillsourcepreviewstreamscanserversentevent.md new file mode 100644 index 00000000..6b69806d --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamscanserversentevent.md @@ -0,0 +1,10 @@ +# PlatformSkillSourcePreviewStreamScanServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `event` | *Literal["SCAN"]* | :heavy_check_mark: | N/A | +| `data` | [models.PlatformSkillSourcePreviewStreamScan](../models/platformskillsourcepreviewstreamscan.md) | :heavy_check_mark: | Repository scan started; names every skill path found. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamscantype.md b/docs/models/platformskillsourcepreviewstreamscantype.md new file mode 100644 index 00000000..ba71c62a --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamscantype.md @@ -0,0 +1,18 @@ +# PlatformSkillSourcePreviewStreamScanType + +Event type, also sent as the SSE `event` name. + +## Example Usage + +```python +from glean.api_client.models import PlatformSkillSourcePreviewStreamScanType + +value = PlatformSkillSourcePreviewStreamScanType.SCAN +``` + + +## Values + +| Name | Value | +| ------ | ------ | +| `SCAN` | SCAN | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamskill.md b/docs/models/platformskillsourcepreviewstreamskill.md new file mode 100644 index 00000000..30f6225d --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamskill.md @@ -0,0 +1,11 @@ +# PlatformSkillSourcePreviewStreamSkill + +One skill previewed; carries the previewed skill. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `type` | [models.PlatformSkillSourcePreviewStreamSkillType](../models/platformskillsourcepreviewstreamskilltype.md) | :heavy_check_mark: | Event type, also sent as the SSE `event` name. | +| `skill` | [models.PlatformSkillSourcePreview](../models/platformskillsourcepreview.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamskillserversentevent.md b/docs/models/platformskillsourcepreviewstreamskillserversentevent.md new file mode 100644 index 00000000..740b8380 --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamskillserversentevent.md @@ -0,0 +1,10 @@ +# PlatformSkillSourcePreviewStreamSkillServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `event` | *Literal["SKILL"]* | :heavy_check_mark: | N/A | +| `data` | [models.PlatformSkillSourcePreviewStreamSkill](../models/platformskillsourcepreviewstreamskill.md) | :heavy_check_mark: | One skill previewed; carries the previewed skill. | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewstreamskilltype.md b/docs/models/platformskillsourcepreviewstreamskilltype.md new file mode 100644 index 00000000..512ad4ad --- /dev/null +++ b/docs/models/platformskillsourcepreviewstreamskilltype.md @@ -0,0 +1,18 @@ +# PlatformSkillSourcePreviewStreamSkillType + +Event type, also sent as the SSE `event` name. + +## Example Usage + +```python +from glean.api_client.models import PlatformSkillSourcePreviewStreamSkillType + +value = PlatformSkillSourcePreviewStreamSkillType.SKILL +``` + + +## Values + +| Name | Value | +| ------- | ------- | +| `SKILL` | SKILL | \ No newline at end of file diff --git a/docs/models/platformskillsourcepreviewrequest.md b/docs/models/platformskillspreviewsourcerequest.md similarity index 83% rename from docs/models/platformskillsourcepreviewrequest.md rename to docs/models/platformskillspreviewsourcerequest.md index 8d0b03a4..cabcbff8 100644 --- a/docs/models/platformskillsourcepreviewrequest.md +++ b/docs/models/platformskillspreviewsourcerequest.md @@ -1,4 +1,4 @@ -# PlatformSkillSourcePreviewRequest +# PlatformSkillsPreviewSourceRequest ## Fields @@ -6,4 +6,4 @@ | Field | Type | Required | Description | | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | | `source_url` | *str* | :heavy_check_mark: | GitHub URL for a skill directory, SKILL.md file, or repository to inspect. | -| `stream` | *Optional[bool]* | :heavy_minus_sign: | Whether to stream repository scan progress using server-sent events. | \ No newline at end of file +| `stream` | *Optional[Literal[False]]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/platformskillspreviewsourceresponse.md b/docs/models/platformskillspreviewsourceresponse.md deleted file mode 100644 index 2eabd1c4..00000000 --- a/docs/models/platformskillspreviewsourceresponse.md +++ /dev/null @@ -1,17 +0,0 @@ -# PlatformSkillsPreviewSourceResponse - - -## Supported Types - -### `models.PlatformSkillSourcePreviewResponse` - -```python -value: models.PlatformSkillSourcePreviewResponse = /* values here */ -``` - -### `str` - -```python -value: str = /* values here */ -``` - diff --git a/docs/models/platformskillspreviewsourcestreamrequest.md b/docs/models/platformskillspreviewsourcestreamrequest.md new file mode 100644 index 00000000..6d30247d --- /dev/null +++ b/docs/models/platformskillspreviewsourcestreamrequest.md @@ -0,0 +1,9 @@ +# PlatformSkillsPreviewSourceStreamRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `source_url` | *str* | :heavy_check_mark: | GitHub URL for a skill directory, SKILL.md file, or repository to inspect. | +| `stream` | *Optional[Literal[True]]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/platformskillstatus.md b/docs/models/platformskillstatus.md index 566f1092..b863a5eb 100644 --- a/docs/models/platformskillstatus.md +++ b/docs/models/platformskillstatus.md @@ -1,6 +1,7 @@ # PlatformSkillStatus -Current skill status. +The caller's effective activation. The owner sees the skill's stored status. Another caller sees their personal setting, or DISABLED when they have none. DRAFT is the stored draft state and is not set by update. Effective activation may also reflect workspace governance policy. + ## Example Usage diff --git a/docs/models/platformskillsyncresponse.md b/docs/models/platformskillsyncresponse.md index 03dbf807..a3e14115 100644 --- a/docs/models/platformskillsyncresponse.md +++ b/docs/models/platformskillsyncresponse.md @@ -3,9 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `sync_status` | [models.PlatformSkillSyncResultStatus](../models/platformskillsyncresultstatus.md) | :heavy_check_mark: | Synchronization status after a successful refresh. | -| `commit_sha` | *str* | :heavy_check_mark: | Git commit SHA now associated with the skill. | -| `updated` | *bool* | :heavy_check_mark: | Whether this request created a new skill version. | -| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `commit_sha` | *str* | :heavy_check_mark: | Git commit SHA now associated with the skill. | +| `is_updated` | *bool* | :heavy_check_mark: | Whether this request created a new skill version. | +| `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/platformskillsyncresultstatus.md b/docs/models/platformskillsyncresultstatus.md deleted file mode 100644 index 764a5847..00000000 --- a/docs/models/platformskillsyncresultstatus.md +++ /dev/null @@ -1,18 +0,0 @@ -# PlatformSkillSyncResultStatus - -Synchronization status after a successful refresh. - -## Example Usage - -```python -from glean.api_client.models import PlatformSkillSyncResultStatus - -value = PlatformSkillSyncResultStatus.UP_TO_DATE -``` - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `UP_TO_DATE` | UP_TO_DATE | \ No newline at end of file diff --git a/docs/models/platformskillupdaterequest.md b/docs/models/platformskillupdaterequest.md index 1d94bb0a..3f454aaa 100644 --- a/docs/models/platformskillupdaterequest.md +++ b/docs/models/platformskillupdaterequest.md @@ -3,6 +3,6 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `status` | [models.PlatformSkillUpdateStatus](../models/platformskillupdatestatus.md) | :heavy_check_mark: | New status for the skill. | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `status` | [models.PlatformSkillUpdateStatus](../models/platformskillupdatestatus.md) | :heavy_check_mark: | Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting.
| \ No newline at end of file diff --git a/docs/models/platformskillupdatestatus.md b/docs/models/platformskillupdatestatus.md index 898c434f..87187173 100644 --- a/docs/models/platformskillupdatestatus.md +++ b/docs/models/platformskillupdatestatus.md @@ -1,6 +1,7 @@ # PlatformSkillUpdateStatus -New status for the skill. +Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting. + ## Example Usage diff --git a/docs/models/platformskillversionslistresponse.md b/docs/models/platformskillversionslistresponse.md index edd94537..082388b1 100644 --- a/docs/models/platformskillversionslistresponse.md +++ b/docs/models/platformskillversionslistresponse.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | -| `versions` | List[[models.PlatformSkillVersion](../models/platformskillversion.md)] | :heavy_check_mark: | Versions available for the skill. | +| `results` | List[[models.PlatformSkillVersion](../models/platformskillversion.md)] | :heavy_check_mark: | Versions available for the skill. | | `has_more` | *bool* | :heavy_check_mark: | Whether additional results are available. | | `next_cursor` | *Nullable[str]* | :heavy_check_mark: | Cursor for the next page, or null when no more results are available. | | `request_id` | *str* | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/ugcaction.md b/docs/models/ugcaction.md new file mode 100644 index 00000000..a8b3445c --- /dev/null +++ b/docs/models/ugcaction.md @@ -0,0 +1,8 @@ +# UgcAction + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | -------------------------------------- | +| `create` | [models.UgcType](../models/ugctype.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/ugcactionunion.md b/docs/models/ugcactionunion.md new file mode 100644 index 00000000..2642d3d9 --- /dev/null +++ b/docs/models/ugcactionunion.md @@ -0,0 +1,13 @@ +# UgcActionUnion + +An action to perform on user-generated content. This may be accompanied by `text` on the ChatMessageFragment, which acts as the display name content of the pill. + + +## Supported Types + +### `models.UgcAction` + +```python +value: models.UgcAction = /* values here */ +``` + diff --git a/docs/models/ugctype.md b/docs/models/ugctype.md index edccbd16..eeb95b91 100644 --- a/docs/models/ugctype.md +++ b/docs/models/ugctype.md @@ -35,4 +35,5 @@ value = UgcType.AGENT_TYPE | `SPREADSHEET_TYPE` | SPREADSHEET_TYPE | | `INLINE_HTML_TYPE` | INLINE_HTML_TYPE | | `PODCAST_TYPE` | PODCAST_TYPE | +| `VIDEO_TYPE` | VIDEO_TYPE | | `WORKFLOWS_TYPE` | WORKFLOWS_TYPE | \ No newline at end of file diff --git a/docs/sdks/entities/README.md b/docs/sdks/entities/README.md index 55516c7d..a5c95e0e 100644 --- a/docs/sdks/entities/README.md +++ b/docs/sdks/entities/README.md @@ -88,7 +88,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.client.entities.read_people(obfuscated_ids=[ + res = glean.client.entities.read_people(fallback_to_authenticated_identity=False, obfuscated_ids=[ "abc123", "abc456", ]) @@ -100,16 +100,17 @@ with Glean( ### 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. | +| 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`. | +| `fallback_to_authenticated_identity` | *Optional[bool]* | :heavy_minus_sign: | If true and the current user's people profile is missing, reads the stored SSO profile and returns a minimal Person with its display name, the authenticated user's email, the same obfuscatedId used by a normal self-lookup, and identityOnly set to true. If the SSO profile or its name is unavailable, preserves the missing-profile error. Applies only when emailIds and obfuscatedIds are empty and the request doesn't use act-as, a virtual identity, anonymous authentication, or the INVALID_ENTITIES includeType. The fallback doesn't mask lookup or enrichment errors and doesn't create a directory profile. Normal people profiles don't require an SSO lookup. | +| `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 diff --git a/docs/sdks/skills/README.md b/docs/sdks/skills/README.md index 7a11b9bc..6c9d5b42 100644 --- a/docs/sdks/skills/README.md +++ b/docs/sdks/skills/README.md @@ -18,10 +18,11 @@ * [list_versions](#list_versions) - List skill versions * [retrieve_version](#retrieve_version) - Retrieve skill version * [retrieve_version_content](#retrieve_version_content) - Download skill version content +* [preview_source_stream](#preview_source_stream) - Preview a GitHub skill source as events ## create -Create a skill from an uploaded SKILL.md, .zip, or .skill bundle. If the authenticated user already has a skill with the same name, the existing skill is superseded with a new version. +Create a skill from an uploaded SKILL.md, .zip, or .skill bundle. If the authenticated user already has a skill with the same name, the existing skill is superseded with a new version, unless it is source-managed: a same-name create over a GitHub-imported skill returns 409, and the caller syncs the existing skill instead. Two concurrent same-name creates can still produce two skills. ### Example Usage @@ -59,15 +60,15 @@ with Glean( ### Errors -| Error Type | Status Code | Content Type | -| --------------------------------- | --------------------------------- | --------------------------------- | -| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 413, 429 | application/problem+json | -| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | -| errors.GleanError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 409, 413, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | ## list -List skills available to the authenticated user. +List every custom skill the authenticated caller can access. Built-in skills are excluded: they have no versions, content download, update, or delete, so their identifiers would fail most skill operations. Chat-authored skills shared with the caller without a listed grant are omitted: they stay retrievable by identifier when it is known, but this list does not discover them. ### Example Usage @@ -82,7 +83,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.skills.list() + res = glean.skills.list(page_size=20) # Handle response print(res) @@ -93,7 +94,7 @@ with Glean( | Parameter | Type | Required | Description | | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of skills to return. | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of skills to return. Defaults to 20. Maximum is 100. | | `cursor` | *Optional[str]* | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | @@ -148,11 +149,12 @@ with Glean( ### Errors -| Error Type | Status Code | Content Type | -| --------------------------------- | --------------------------------- | --------------------------------- | -| errors.PlatformProblemDetailError | 400, 401, 403, 408, 409, 413, 429 | application/problem+json | -| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | -| errors.GleanError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| errors.PlatformUnauthorizedAgentToolsProblemError | 422 | application/problem+json | +| errors.PlatformProblemDetailError | 400, 401, 403, 408, 409, 413, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | ## validate @@ -217,7 +219,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.skills.preview_source(source_url="https://github.com/anthropics/skills", stream=False) + res = glean.skills.preview_source(source_url="https://github.com/anthropics/skills") # Handle response print(res) @@ -229,24 +231,24 @@ with Glean( | Parameter | Type | Required | Description | | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | | `source_url` | *str* | :heavy_check_mark: | GitHub URL for a skill directory, SKILL.md file, or repository to inspect. | -| `stream` | *Optional[bool]* | :heavy_minus_sign: | Whether to stream repository scan progress using server-sent events. | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[models.PlatformSkillsPreviewSourceResponse](../../models/platformskillspreviewsourceresponse.md)** +**[models.PlatformSkillSourcePreviewResponse](../../models/platformskillsourcepreviewresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| --------------------------------- | --------------------------------- | --------------------------------- | -| errors.PlatformProblemDetailError | 400, 401, 403, 408, 413, 429 | application/problem+json | -| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | -| errors.GleanError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| errors.PlatformUnauthorizedAgentToolsProblemError | 422 | application/problem+json | +| errors.PlatformProblemDetailError | 400, 401, 403, 408, 413, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | ## update -Update mutable metadata for a skill. V1 supports enabling or disabling a skill without changing its content. +Enable or disable the skill for the authenticated caller without changing its content. The owner's update sets the skill's stored status. Any other caller's update applies only to that caller. ### Example Usage @@ -270,11 +272,11 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | {skill_id} | -| `status` | [models.PlatformSkillUpdateStatus](../../models/platformskillupdatestatus.md) | :heavy_check_mark: | New status for the skill. | | -| `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 | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | {skill_id} | +| `status` | [models.PlatformSkillUpdateStatus](../../models/platformskillupdatestatus.md) | :heavy_check_mark: | Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting.
| | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response @@ -449,15 +451,16 @@ with Glean( ### Errors -| Error Type | Status Code | Content Type | -| -------------------------------------- | -------------------------------------- | -------------------------------------- | -| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 409, 413, 429 | application/problem+json | -| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | -| errors.GleanError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| errors.PlatformUnauthorizedAgentToolsProblemError | 422 | application/problem+json | +| errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 409, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | ## create_version -Create a new immutable version for an existing caller-managed skill from an uploaded SKILL.md, .zip, or .skill bundle. +Create a new immutable version for an existing caller-managed skill from an uploaded SKILL.md, .zip, or .skill bundle. A create-version over a GitHub-imported skill returns 409, and the caller syncs the existing skill instead. ### Example Usage @@ -519,7 +522,7 @@ with Glean( api_token=os.getenv("GLEAN_API_TOKEN", ""), ) as glean: - res = glean.skills.list_versions(skill_id="{skill_id}") + res = glean.skills.list_versions(skill_id="{skill_id}", page_size=20) # Handle response print(res) @@ -528,12 +531,12 @@ with Glean( ### Parameters -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | {skill_id} | -| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of versions to return. | | -| `cursor` | *Optional[str]* | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | | -| `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 | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `skill_id` | *str* | :heavy_check_mark: | Glean skill ID. | {skill_id} | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Maximum number of versions to return. Defaults to 20. Maximum is 100. | | +| `cursor` | *Optional[str]* | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response @@ -633,4 +636,50 @@ with Glean( | --------------------------------- | --------------------------------- | --------------------------------- | | errors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 429 | application/problem+json | | errors.PlatformProblemDetailError | 500, 503 | application/problem+json | -| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file +| errors.GleanError | 4XX, 5XX | \*/\* | + +## preview_source_stream + +SDK-only logical operation. HTTP clients must call the base path; the URL fragment is not sent. Inspect a GitHub URL as server-sent events. HTTP clients request this mode by setting `stream` to true in the JSON body. + + +### Example Usage + + +```python +from glean.api_client import Glean +import os + + +with Glean( + api_token=os.getenv("GLEAN_API_TOKEN", ""), +) as glean: + + res = glean.skills.preview_source_stream(source_url="https://github.com/anthropics/skills") + + with res as event_stream: + for event in event_stream: + # handle event + print(event, flush=True) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `source_url` | *str* | :heavy_check_mark: | GitHub URL for a skill directory, SKILL.md file, or repository to inspect. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[Union[eventstreaming.EventStream[models.PlatformSkillSourcePreviewStreamEventServerSentEvent], eventstreaming.EventStreamAsync[models.PlatformSkillSourcePreviewStreamEventServerSentEvent]]](../../models/.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| errors.PlatformUnauthorizedAgentToolsProblemError | 422 | application/problem+json | +| errors.PlatformProblemDetailError | 400, 401, 403, 408, 413, 429 | application/problem+json | +| errors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| errors.GleanError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index b7cb0276..c6ffa3b5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "glean-api-client" -version = "0.17.15" +version = "0.17.16" description = "Python Client SDK Generated by Speakeasy." authors = [{ name = "Glean Technologies, Inc." },] readme = "README-PYPI.md" diff --git a/src/glean/api_client/_version.py b/src/glean/api_client/_version.py index 4af11e8e..ce7e0a16 100644 --- a/src/glean/api_client/_version.py +++ b/src/glean/api_client/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "glean-api-client" -__version__: str = "0.17.15" +__version__: str = "0.17.16" __openapi_doc_version__: str = "0.9.0" -__gen_version__: str = "2.938.0" -__user_agent__: str = "speakeasy-sdk/python 0.17.15 2.938.0 0.9.0 glean-api-client" +__gen_version__: str = "2.943.0" +__user_agent__: str = "speakeasy-sdk/python 0.17.16 2.943.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 23c75362..67c2c86a 100644 --- a/src/glean/api_client/agents.py +++ b/src/glean/api_client/agents.py @@ -90,6 +90,10 @@ def search( tags=["Agents"], extensions={ "x-codegen-request-body-name": "payload", + "x-glean-scopes": { + "legacy": ["AGENTS"], + "platform": ["agents:read"], + }, "x-visibility": "Public", }, ), @@ -200,6 +204,10 @@ async def search_async( tags=["Agents"], extensions={ "x-codegen-request-body-name": "payload", + "x-glean-scopes": { + "legacy": ["AGENTS"], + "platform": ["agents:read"], + }, "x-visibility": "Public", }, ), @@ -305,7 +313,13 @@ def get( self.sdk_configuration.security, models.Security ), tags=["Agents"], - extensions={"x-visibility": "Public"}, + extensions={ + "x-glean-scopes": { + "legacy": ["AGENTS"], + "platform": ["agents:read"], + }, + "x-visibility": "Public", + }, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), @@ -407,7 +421,13 @@ async def get_async( self.sdk_configuration.security, models.Security ), tags=["Agents"], - extensions={"x-visibility": "Public"}, + extensions={ + "x-glean-scopes": { + "legacy": ["AGENTS"], + "platform": ["agents:read"], + }, + "x-visibility": "Public", + }, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), @@ -512,7 +532,13 @@ def get_schemas( self.sdk_configuration.security, models.Security ), tags=["Agents"], - extensions={"x-visibility": "Public"}, + extensions={ + "x-glean-scopes": { + "legacy": ["AGENTS"], + "platform": ["agents:read"], + }, + "x-visibility": "Public", + }, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), @@ -619,7 +645,13 @@ async def get_schemas_async( self.sdk_configuration.security, models.Security ), tags=["Agents"], - extensions={"x-visibility": "Public"}, + extensions={ + "x-glean-scopes": { + "legacy": ["AGENTS"], + "platform": ["agents:read"], + }, + "x-visibility": "Public", + }, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), @@ -764,6 +796,10 @@ def create_run( tags=["Agents"], extensions={ "x-codegen-request-body-name": "payload", + "x-glean-scopes": { + "legacy": ["AGENTS"], + "platform": ["agents:run"], + }, "x-visibility": "Public", }, ), @@ -921,6 +957,10 @@ async def create_run_async( tags=["Agents"], extensions={ "x-codegen-request-body-name": "payload", + "x-glean-scopes": { + "legacy": ["AGENTS"], + "platform": ["agents:run"], + }, "x-visibility": "Public", }, ), @@ -1040,7 +1080,13 @@ def get_run( self.sdk_configuration.security, models.Security ), tags=["Agents"], - extensions={"x-visibility": "Public"}, + extensions={ + "x-glean-scopes": { + "legacy": ["AGENTS"], + "platform": ["agents:run"], + }, + "x-visibility": "Public", + }, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), @@ -1145,7 +1191,13 @@ async def get_run_async( self.sdk_configuration.security, models.Security ), tags=["Agents"], - extensions={"x-visibility": "Public"}, + extensions={ + "x-glean-scopes": { + "legacy": ["AGENTS"], + "platform": ["agents:run"], + }, + "x-visibility": "Public", + }, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), @@ -1261,6 +1313,10 @@ def cancel_run( tags=["Agents"], extensions={ "x-codegen-request-body-name": "payload", + "x-glean-scopes": { + "legacy": ["AGENTS"], + "platform": ["agents:run"], + }, "x-visibility": "Public", }, ), @@ -1378,6 +1434,10 @@ async def cancel_run_async( tags=["Agents"], extensions={ "x-codegen-request-body-name": "payload", + "x-glean-scopes": { + "legacy": ["AGENTS"], + "platform": ["agents:run"], + }, "x-visibility": "Public", }, ), @@ -1501,7 +1561,13 @@ def respond_to_run( self.sdk_configuration.security, models.Security ), tags=["Agents"], - extensions={"x-visibility": "Public"}, + extensions={ + "x-glean-scopes": { + "legacy": ["AGENTS"], + "platform": ["agents:run"], + }, + "x-visibility": "Public", + }, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), @@ -1623,7 +1689,13 @@ async def respond_to_run_async( self.sdk_configuration.security, models.Security ), tags=["Agents"], - extensions={"x-visibility": "Public"}, + extensions={ + "x-glean-scopes": { + "legacy": ["AGENTS"], + "platform": ["agents:run"], + }, + "x-visibility": "Public", + }, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), diff --git a/src/glean/api_client/chat_sdk.py b/src/glean/api_client/chat_sdk.py index b37457a8..2b43c607 100644 --- a/src/glean/api_client/chat_sdk.py +++ b/src/glean/api_client/chat_sdk.py @@ -103,6 +103,7 @@ def create( tags=["Chat"], extensions={ "x-codegen-request-body-name": "payload", + "x-glean-scopes": {"legacy": ["CHAT"], "platform": ["chat:write"]}, "x-visibility": "Public", }, ), @@ -232,6 +233,7 @@ async def create_async( tags=["Chat"], extensions={ "x-codegen-request-body-name": "payload", + "x-glean-scopes": {"legacy": ["CHAT"], "platform": ["chat:write"]}, "x-visibility": "Public", }, ), @@ -365,6 +367,7 @@ def create_stream( tags=["Chat"], extensions={ "x-codegen-request-body-name": "payload", + "x-glean-scopes": {"legacy": ["CHAT"], "platform": ["chat:write"]}, "x-visibility": "Public", }, ), @@ -510,6 +513,7 @@ async def create_stream_async( tags=["Chat"], extensions={ "x-codegen-request-body-name": "payload", + "x-glean-scopes": {"legacy": ["CHAT"], "platform": ["chat:write"]}, "x-visibility": "Public", }, ), diff --git a/src/glean/api_client/entities.py b/src/glean/api_client/entities.py index adc08d27..44a41c98 100644 --- a/src/glean/api_client/entities.py +++ b/src/glean/api_client/entities.py @@ -306,6 +306,7 @@ def read_people( self, *, locale: Optional[str] = None, + fallback_to_authenticated_identity: Optional[bool] = False, timezone_offset: Optional[int] = None, obfuscated_ids: Optional[Iterable[str]] = None, email_ids: Optional[Iterable[str]] = None, @@ -322,6 +323,7 @@ def 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 fallback_to_authenticated_identity: If true and the current user's people profile is missing, reads the stored SSO profile and returns a minimal Person with its display name, the authenticated user's email, the same obfuscatedId used by a normal self-lookup, and identityOnly set to true. If the SSO profile or its name is unavailable, preserves the missing-profile error. Applies only when emailIds and obfuscatedIds are empty and the request doesn't use act-as, a virtual identity, anonymous authentication, or the INVALID_ENTITIES includeType. The fallback doesn't mask lookup or enrichment errors and doesn't create a directory profile. Normal people profiles don't require an SSO lookup. :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. @@ -346,6 +348,7 @@ def read_people( request = models.PeopleRequestRequest( locale=locale, people_request=models.PeopleRequest( + fallback_to_authenticated_identity=fallback_to_authenticated_identity, timezone_offset=timezone_offset, obfuscated_ids=utils.unmarshal(obfuscated_ids, Optional[List[str]]), email_ids=utils.unmarshal(email_ids, Optional[List[str]]), @@ -422,6 +425,7 @@ async def read_people_async( self, *, locale: Optional[str] = None, + fallback_to_authenticated_identity: Optional[bool] = False, timezone_offset: Optional[int] = None, obfuscated_ids: Optional[Iterable[str]] = None, email_ids: Optional[Iterable[str]] = None, @@ -438,6 +442,7 @@ async def read_people_async( 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 fallback_to_authenticated_identity: If true and the current user's people profile is missing, reads the stored SSO profile and returns a minimal Person with its display name, the authenticated user's email, the same obfuscatedId used by a normal self-lookup, and identityOnly set to true. If the SSO profile or its name is unavailable, preserves the missing-profile error. Applies only when emailIds and obfuscatedIds are empty and the request doesn't use act-as, a virtual identity, anonymous authentication, or the INVALID_ENTITIES includeType. The fallback doesn't mask lookup or enrichment errors and doesn't create a directory profile. Normal people profiles don't require an SSO lookup. :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. @@ -462,6 +467,7 @@ async def read_people_async( request = models.PeopleRequestRequest( locale=locale, people_request=models.PeopleRequest( + fallback_to_authenticated_identity=fallback_to_authenticated_identity, timezone_offset=timezone_offset, obfuscated_ids=utils.unmarshal(obfuscated_ids, Optional[List[str]]), email_ids=utils.unmarshal(email_ids, Optional[List[str]]), diff --git a/src/glean/api_client/models/__init__.py b/src/glean/api_client/models/__init__.py index 6eac20c2..d7a3e56e 100644 --- a/src/glean/api_client/models/__init__.py +++ b/src/glean/api_client/models/__init__.py @@ -183,6 +183,7 @@ ) from .answerresult import AnswerResult, AnswerResultTypedDict from .appresult import AppResult, AppResultTypedDict + from .artifacttype import ArtifactType from .assistantinsightsresponse import ( AssistantInsightsResponse, AssistantInsightsResponseTypedDict, @@ -1203,6 +1204,10 @@ ManualFeedbackSideBySideInfoTypedDict, ManualFeedbackSideBySideInfoVote, ) + from .mcpauthmethodbreakdown import ( + McpAuthMethodBreakdown, + McpAuthMethodBreakdownTypedDict, + ) from .mcpbreakdowninsightsrequest import ( BreakdownType, McpBreakdownInsightsRequest, @@ -1367,9 +1372,13 @@ PlatformSkillsListRequest, PlatformSkillsListRequestTypedDict, ) + from .platform_skills_preview_source_streamop import ( + PlatformSkillsPreviewSourceStreamRequest, + PlatformSkillsPreviewSourceStreamRequestTypedDict, + ) from .platform_skills_preview_sourceop import ( - PlatformSkillsPreviewSourceResponse, - PlatformSkillsPreviewSourceResponseTypedDict, + PlatformSkillsPreviewSourceRequest, + PlatformSkillsPreviewSourceRequestTypedDict, ) from .platform_skills_syncop import ( PlatformSkillsSyncRequest, @@ -1667,6 +1676,10 @@ PlatformPersonReference, PlatformPersonReferenceTypedDict, ) + from .platformproblemdetail import ( + PlatformProblemDetail, + PlatformProblemDetailTypedDict, + ) from .platformproblemdetailcode import PlatformProblemDetailCode from .platformproblemdetailerror import ( PlatformProblemDetailError, @@ -1728,14 +1741,59 @@ PlatformSkillSourcePreviewFile, PlatformSkillSourcePreviewFileTypedDict, ) - from .platformskillsourcepreviewrequest import ( - PlatformSkillSourcePreviewRequest, - PlatformSkillSourcePreviewRequestTypedDict, - ) from .platformskillsourcepreviewresponse import ( PlatformSkillSourcePreviewResponse, PlatformSkillSourcePreviewResponseTypedDict, ) + from .platformskillsourcepreviewstreamerror import ( + PlatformSkillSourcePreviewStreamError, + PlatformSkillSourcePreviewStreamErrorType, + PlatformSkillSourcePreviewStreamErrorTypedDict, + ) + from .platformskillsourcepreviewstreamerrorserversentevent import ( + PlatformSkillSourcePreviewStreamErrorServerSentEvent, + PlatformSkillSourcePreviewStreamErrorServerSentEventTypedDict, + ) + from .platformskillsourcepreviewstreameventserversentevent import ( + PlatformSkillSourcePreviewStreamEventServerSentEvent, + PlatformSkillSourcePreviewStreamEventServerSentEventTypedDict, + ) + from .platformskillsourcepreviewstreamprogress import ( + PlatformSkillSourcePreviewStreamProgress, + PlatformSkillSourcePreviewStreamProgressType, + PlatformSkillSourcePreviewStreamProgressTypedDict, + ) + from .platformskillsourcepreviewstreamprogressserversentevent import ( + PlatformSkillSourcePreviewStreamProgressServerSentEvent, + PlatformSkillSourcePreviewStreamProgressServerSentEventTypedDict, + ) + from .platformskillsourcepreviewstreamresult import ( + PlatformSkillSourcePreviewStreamResult, + PlatformSkillSourcePreviewStreamResultType, + PlatformSkillSourcePreviewStreamResultTypedDict, + ) + from .platformskillsourcepreviewstreamresultserversentevent import ( + PlatformSkillSourcePreviewStreamResultServerSentEvent, + PlatformSkillSourcePreviewStreamResultServerSentEventTypedDict, + ) + from .platformskillsourcepreviewstreamscan import ( + PlatformSkillSourcePreviewStreamScan, + PlatformSkillSourcePreviewStreamScanType, + PlatformSkillSourcePreviewStreamScanTypedDict, + ) + from .platformskillsourcepreviewstreamscanserversentevent import ( + PlatformSkillSourcePreviewStreamScanServerSentEvent, + PlatformSkillSourcePreviewStreamScanServerSentEventTypedDict, + ) + from .platformskillsourcepreviewstreamskill import ( + PlatformSkillSourcePreviewStreamSkill, + PlatformSkillSourcePreviewStreamSkillType, + PlatformSkillSourcePreviewStreamSkillTypedDict, + ) + from .platformskillsourcepreviewstreamskillserversentevent import ( + PlatformSkillSourcePreviewStreamSkillServerSentEvent, + PlatformSkillSourcePreviewStreamSkillServerSentEventTypedDict, + ) from .platformskillsourceprovenance import ( PlatformSkillSourceProvenance, PlatformSkillSourceProvenanceTypedDict, @@ -1745,7 +1803,6 @@ PlatformSkillSyncResponse, PlatformSkillSyncResponseTypedDict, ) - from .platformskillsyncresultstatus import PlatformSkillSyncResultStatus from .platformskillsyncstatus import PlatformSkillSyncStatus from .platformskillupdaterequest import ( PlatformSkillUpdateRequest, @@ -2125,6 +2182,12 @@ ) from .toolsets import ToolSets, ToolSetsTypedDict from .toolslistresponse import ToolsListResponse, ToolsListResponseTypedDict + from .ugcaction_union import ( + UgcAction, + UgcActionTypedDict, + UgcActionUnion, + UgcActionUnionTypedDict, + ) from .ugctype import UgcType from .unauthorizeddatasourceinstance import ( UnauthorizedDatasourceInstance, @@ -2390,6 +2453,7 @@ "AnswerTypedDict", "AppResult", "AppResultTypedDict", + "ArtifactType", "AssistantInsightsResponse", "AssistantInsightsResponseTypedDict", "AuthConfig", @@ -3186,6 +3250,8 @@ "ManualFeedbackSideBySideInfoSource", "ManualFeedbackSideBySideInfoTypedDict", "ManualFeedbackSideBySideInfoVote", + "McpAuthMethodBreakdown", + "McpAuthMethodBreakdownTypedDict", "McpBreakdownInsightsRequest", "McpBreakdownInsightsRequestTypedDict", "McpBreakdownInsightsResponse", @@ -3450,9 +3516,11 @@ "PlatformMessageTypedDict", "PlatformPersonReference", "PlatformPersonReferenceTypedDict", + "PlatformProblemDetail", "PlatformProblemDetailCode", "PlatformProblemDetailError", "PlatformProblemDetailErrorTypedDict", + "PlatformProblemDetailTypedDict", "PlatformResult", "PlatformResultTypedDict", "PlatformSearchFiltersRequest", @@ -3485,17 +3553,41 @@ "PlatformSkillSourcePreviewFailureTypedDict", "PlatformSkillSourcePreviewFile", "PlatformSkillSourcePreviewFileTypedDict", - "PlatformSkillSourcePreviewRequest", - "PlatformSkillSourcePreviewRequestTypedDict", "PlatformSkillSourcePreviewResponse", "PlatformSkillSourcePreviewResponseTypedDict", + "PlatformSkillSourcePreviewStreamError", + "PlatformSkillSourcePreviewStreamErrorServerSentEvent", + "PlatformSkillSourcePreviewStreamErrorServerSentEventTypedDict", + "PlatformSkillSourcePreviewStreamErrorType", + "PlatformSkillSourcePreviewStreamErrorTypedDict", + "PlatformSkillSourcePreviewStreamEventServerSentEvent", + "PlatformSkillSourcePreviewStreamEventServerSentEventTypedDict", + "PlatformSkillSourcePreviewStreamProgress", + "PlatformSkillSourcePreviewStreamProgressServerSentEvent", + "PlatformSkillSourcePreviewStreamProgressServerSentEventTypedDict", + "PlatformSkillSourcePreviewStreamProgressType", + "PlatformSkillSourcePreviewStreamProgressTypedDict", + "PlatformSkillSourcePreviewStreamResult", + "PlatformSkillSourcePreviewStreamResultServerSentEvent", + "PlatformSkillSourcePreviewStreamResultServerSentEventTypedDict", + "PlatformSkillSourcePreviewStreamResultType", + "PlatformSkillSourcePreviewStreamResultTypedDict", + "PlatformSkillSourcePreviewStreamScan", + "PlatformSkillSourcePreviewStreamScanServerSentEvent", + "PlatformSkillSourcePreviewStreamScanServerSentEventTypedDict", + "PlatformSkillSourcePreviewStreamScanType", + "PlatformSkillSourcePreviewStreamScanTypedDict", + "PlatformSkillSourcePreviewStreamSkill", + "PlatformSkillSourcePreviewStreamSkillServerSentEvent", + "PlatformSkillSourcePreviewStreamSkillServerSentEventTypedDict", + "PlatformSkillSourcePreviewStreamSkillType", + "PlatformSkillSourcePreviewStreamSkillTypedDict", "PlatformSkillSourcePreviewTypedDict", "PlatformSkillSourceProvenance", "PlatformSkillSourceProvenanceTypedDict", "PlatformSkillStatus", "PlatformSkillSyncResponse", "PlatformSkillSyncResponseTypedDict", - "PlatformSkillSyncResultStatus", "PlatformSkillSyncStatus", "PlatformSkillTypedDict", "PlatformSkillUpdateRequest", @@ -3547,8 +3639,10 @@ "PlatformSkillsListResponseTypedDict", "PlatformSkillsListVersionsRequest", "PlatformSkillsListVersionsRequestTypedDict", - "PlatformSkillsPreviewSourceResponse", - "PlatformSkillsPreviewSourceResponseTypedDict", + "PlatformSkillsPreviewSourceRequest", + "PlatformSkillsPreviewSourceRequestTypedDict", + "PlatformSkillsPreviewSourceStreamRequest", + "PlatformSkillsPreviewSourceStreamRequestTypedDict", "PlatformSkillsSyncRequest", "PlatformSkillsSyncRequestTypedDict", "PlatformSkillsUpdateRequest", @@ -3878,6 +3972,10 @@ "UIConfig", "UIConfigTypedDict", "UIOptions", + "UgcAction", + "UgcActionTypedDict", + "UgcActionUnion", + "UgcActionUnionTypedDict", "UgcType", "UnauthorizedDatasourceInstance", "UnauthorizedDatasourceInstanceTypedDict", @@ -4068,6 +4166,7 @@ "AnswerResultTypedDict": ".answerresult", "AppResult": ".appresult", "AppResultTypedDict": ".appresult", + "ArtifactType": ".artifacttype", "AssistantInsightsResponse": ".assistantinsightsresponse", "AssistantInsightsResponseTypedDict": ".assistantinsightsresponse", "AuthConfig": ".authconfig", @@ -4822,6 +4921,8 @@ "ManualFeedbackSideBySideInfoSource": ".manualfeedbacksidebysideinfo", "ManualFeedbackSideBySideInfoTypedDict": ".manualfeedbacksidebysideinfo", "ManualFeedbackSideBySideInfoVote": ".manualfeedbacksidebysideinfo", + "McpAuthMethodBreakdown": ".mcpauthmethodbreakdown", + "McpAuthMethodBreakdownTypedDict": ".mcpauthmethodbreakdown", "BreakdownType": ".mcpbreakdowninsightsrequest", "McpBreakdownInsightsRequest": ".mcpbreakdowninsightsrequest", "McpBreakdownInsightsRequestTypedDict": ".mcpbreakdowninsightsrequest", @@ -4951,8 +5052,10 @@ "PlatformSkillsListVersionsRequestTypedDict": ".platform_skills_list_versionsop", "PlatformSkillsListRequest": ".platform_skills_listop", "PlatformSkillsListRequestTypedDict": ".platform_skills_listop", - "PlatformSkillsPreviewSourceResponse": ".platform_skills_preview_sourceop", - "PlatformSkillsPreviewSourceResponseTypedDict": ".platform_skills_preview_sourceop", + "PlatformSkillsPreviewSourceStreamRequest": ".platform_skills_preview_source_streamop", + "PlatformSkillsPreviewSourceStreamRequestTypedDict": ".platform_skills_preview_source_streamop", + "PlatformSkillsPreviewSourceRequest": ".platform_skills_preview_sourceop", + "PlatformSkillsPreviewSourceRequestTypedDict": ".platform_skills_preview_sourceop", "PlatformSkillsSyncRequest": ".platform_skills_syncop", "PlatformSkillsSyncRequestTypedDict": ".platform_skills_syncop", "PlatformSkillsUpdateRequest": ".platform_skills_updateop", @@ -5125,6 +5228,8 @@ "PlatformMessageTextBlockInputTypedDict": ".platformmessagetextblock_input", "PlatformPersonReference": ".platformpersonreference", "PlatformPersonReferenceTypedDict": ".platformpersonreference", + "PlatformProblemDetail": ".platformproblemdetail", + "PlatformProblemDetailTypedDict": ".platformproblemdetail", "PlatformProblemDetailCode": ".platformproblemdetailcode", "PlatformProblemDetailError": ".platformproblemdetailerror", "PlatformProblemDetailErrorTypedDict": ".platformproblemdetailerror", @@ -5160,16 +5265,40 @@ "PlatformSkillSourcePreviewFailureCode": ".platformskillsourcepreviewfailurecode", "PlatformSkillSourcePreviewFile": ".platformskillsourcepreviewfile", "PlatformSkillSourcePreviewFileTypedDict": ".platformskillsourcepreviewfile", - "PlatformSkillSourcePreviewRequest": ".platformskillsourcepreviewrequest", - "PlatformSkillSourcePreviewRequestTypedDict": ".platformskillsourcepreviewrequest", "PlatformSkillSourcePreviewResponse": ".platformskillsourcepreviewresponse", "PlatformSkillSourcePreviewResponseTypedDict": ".platformskillsourcepreviewresponse", + "PlatformSkillSourcePreviewStreamError": ".platformskillsourcepreviewstreamerror", + "PlatformSkillSourcePreviewStreamErrorType": ".platformskillsourcepreviewstreamerror", + "PlatformSkillSourcePreviewStreamErrorTypedDict": ".platformskillsourcepreviewstreamerror", + "PlatformSkillSourcePreviewStreamErrorServerSentEvent": ".platformskillsourcepreviewstreamerrorserversentevent", + "PlatformSkillSourcePreviewStreamErrorServerSentEventTypedDict": ".platformskillsourcepreviewstreamerrorserversentevent", + "PlatformSkillSourcePreviewStreamEventServerSentEvent": ".platformskillsourcepreviewstreameventserversentevent", + "PlatformSkillSourcePreviewStreamEventServerSentEventTypedDict": ".platformskillsourcepreviewstreameventserversentevent", + "PlatformSkillSourcePreviewStreamProgress": ".platformskillsourcepreviewstreamprogress", + "PlatformSkillSourcePreviewStreamProgressType": ".platformskillsourcepreviewstreamprogress", + "PlatformSkillSourcePreviewStreamProgressTypedDict": ".platformskillsourcepreviewstreamprogress", + "PlatformSkillSourcePreviewStreamProgressServerSentEvent": ".platformskillsourcepreviewstreamprogressserversentevent", + "PlatformSkillSourcePreviewStreamProgressServerSentEventTypedDict": ".platformskillsourcepreviewstreamprogressserversentevent", + "PlatformSkillSourcePreviewStreamResult": ".platformskillsourcepreviewstreamresult", + "PlatformSkillSourcePreviewStreamResultType": ".platformskillsourcepreviewstreamresult", + "PlatformSkillSourcePreviewStreamResultTypedDict": ".platformskillsourcepreviewstreamresult", + "PlatformSkillSourcePreviewStreamResultServerSentEvent": ".platformskillsourcepreviewstreamresultserversentevent", + "PlatformSkillSourcePreviewStreamResultServerSentEventTypedDict": ".platformskillsourcepreviewstreamresultserversentevent", + "PlatformSkillSourcePreviewStreamScan": ".platformskillsourcepreviewstreamscan", + "PlatformSkillSourcePreviewStreamScanType": ".platformskillsourcepreviewstreamscan", + "PlatformSkillSourcePreviewStreamScanTypedDict": ".platformskillsourcepreviewstreamscan", + "PlatformSkillSourcePreviewStreamScanServerSentEvent": ".platformskillsourcepreviewstreamscanserversentevent", + "PlatformSkillSourcePreviewStreamScanServerSentEventTypedDict": ".platformskillsourcepreviewstreamscanserversentevent", + "PlatformSkillSourcePreviewStreamSkill": ".platformskillsourcepreviewstreamskill", + "PlatformSkillSourcePreviewStreamSkillType": ".platformskillsourcepreviewstreamskill", + "PlatformSkillSourcePreviewStreamSkillTypedDict": ".platformskillsourcepreviewstreamskill", + "PlatformSkillSourcePreviewStreamSkillServerSentEvent": ".platformskillsourcepreviewstreamskillserversentevent", + "PlatformSkillSourcePreviewStreamSkillServerSentEventTypedDict": ".platformskillsourcepreviewstreamskillserversentevent", "PlatformSkillSourceProvenance": ".platformskillsourceprovenance", "PlatformSkillSourceProvenanceTypedDict": ".platformskillsourceprovenance", "PlatformSkillStatus": ".platformskillstatus", "PlatformSkillSyncResponse": ".platformskillsyncresponse", "PlatformSkillSyncResponseTypedDict": ".platformskillsyncresponse", - "PlatformSkillSyncResultStatus": ".platformskillsyncresultstatus", "PlatformSkillSyncStatus": ".platformskillsyncstatus", "PlatformSkillUpdateRequest": ".platformskillupdaterequest", "PlatformSkillUpdateRequestTypedDict": ".platformskillupdaterequest", @@ -5464,6 +5593,10 @@ "ToolSetsTypedDict": ".toolsets", "ToolsListResponse": ".toolslistresponse", "ToolsListResponseTypedDict": ".toolslistresponse", + "UgcAction": ".ugcaction_union", + "UgcActionTypedDict": ".ugcaction_union", + "UgcActionUnion": ".ugcaction_union", + "UgcActionUnionTypedDict": ".ugcaction_union", "UgcType": ".ugctype", "UnauthorizedDatasourceInstance": ".unauthorizeddatasourceinstance", "UnauthorizedDatasourceInstanceTypedDict": ".unauthorizeddatasourceinstance", diff --git a/src/glean/api_client/models/artifacttype.py b/src/glean/api_client/models/artifacttype.py new file mode 100644 index 00000000..1d5c4d3d --- /dev/null +++ b/src/glean/api_client/models/artifacttype.py @@ -0,0 +1,16 @@ +"""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 ArtifactType(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Type of the Artifact""" + + PAPER = "PAPER" + AGENT = "AGENT" + MESSAGE = "MESSAGE" + EMAIL = "EMAIL" + HTML_CODE = "HTML_CODE" + SLIDE = "SLIDE" diff --git a/src/glean/api_client/models/autocompleterequest.py b/src/glean/api_client/models/autocompleterequest.py index 77f48a08..adfebaa0 100644 --- a/src/glean/api_client/models/autocompleterequest.py +++ b/src/glean/api_client/models/autocompleterequest.py @@ -15,12 +15,12 @@ class AutocompleteRequestResultType(str, Enum): ADDITIONAL_DOCUMENT = "ADDITIONAL_DOCUMENT" APP = "APP" BROWSER_HISTORY = "BROWSER_HISTORY" + CHAT_HISTORY = "CHAT_HISTORY" DATASOURCE = "DATASOURCE" DOCUMENT = "DOCUMENT" ENTITY = "ENTITY" GOLINK = "GOLINK" HISTORY = "HISTORY" - CHAT_HISTORY = "CHAT_HISTORY" NEW_CHAT = "NEW_CHAT" OPERATOR = "OPERATOR" OPERATOR_VALUE = "OPERATOR_VALUE" diff --git a/src/glean/api_client/models/autocompleteresult.py b/src/glean/api_client/models/autocompleteresult.py index 7b4d8010..68854db6 100644 --- a/src/glean/api_client/models/autocompleteresult.py +++ b/src/glean/api_client/models/autocompleteresult.py @@ -6,6 +6,7 @@ from .quicklink import Quicklink, QuicklinkTypedDict from .structuredresult import StructuredResult, StructuredResultTypedDict from .textrange import TextRange, TextRangeTypedDict +from .ugcaction_union import UgcActionUnion, UgcActionUnionTypedDict from enum import Enum from glean.api_client import models, utils from glean.api_client.types import BaseModel, UNSET_SENTINEL @@ -46,6 +47,8 @@ class AutocompleteResultTypedDict(TypedDict): url: NotRequired[str] structured_result: NotRequired[StructuredResultTypedDict] r"""A single object that can support any object in the work graph. Only a single object will be populated.""" + ugc_action: NotRequired[UgcActionUnionTypedDict] + r"""An action to perform on user-generated content. This may be accompanied by `text` on the ChatMessageFragment, which acts as the display name content of the pill.""" tracking_token: NotRequired[str] r"""A token to be passed in /feedback events associated with this autocomplete result.""" ranges: NotRequired[List[TextRangeTypedDict]] @@ -81,6 +84,11 @@ class AutocompleteResult(BaseModel): ] = None r"""A single object that can support any object in the work graph. Only a single object will be populated.""" + ugc_action: Annotated[ + Optional[UgcActionUnion], pydantic.Field(alias="ugcAction") + ] = None + r"""An action to perform on user-generated content. This may be accompanied by `text` on the ChatMessageFragment, which acts as the display name content of the pill.""" + tracking_token: Annotated[Optional[str], pydantic.Field(alias="trackingToken")] = ( None ) @@ -110,6 +118,7 @@ def serialize_model(self, handler): "document", "url", "structuredResult", + "ugcAction", "trackingToken", "ranges", ] diff --git a/src/glean/api_client/models/chatsuggestion.py b/src/glean/api_client/models/chatsuggestion.py index 8d24fdad..95b2928c 100644 --- a/src/glean/api_client/models/chatsuggestion.py +++ b/src/glean/api_client/models/chatsuggestion.py @@ -1,9 +1,11 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations +from .artifacttype import ArtifactType +from glean.api_client import models from glean.api_client.types import BaseModel, UNSET_SENTINEL import pydantic -from pydantic import model_serializer +from pydantic import field_serializer, model_serializer from typing import List, Optional from typing_extensions import Annotated, NotRequired, TypedDict @@ -15,6 +17,8 @@ class ChatSuggestionTypedDict(TypedDict): r"""Button text to show for the suggestion action.""" feature: NotRequired[str] r"""Targeted Glean Chat feature for the suggestion.""" + artifact_type: NotRequired[ArtifactType] + r"""Type of the Artifact""" source_document_ids: NotRequired[List[str]] r"""Document IDs that grounded the suggestion.""" @@ -29,14 +33,30 @@ class ChatSuggestion(BaseModel): feature: Optional[str] = None r"""Targeted Glean Chat feature for the suggestion.""" + artifact_type: Annotated[ + Optional[ArtifactType], pydantic.Field(alias="artifactType") + ] = None + r"""Type of the Artifact""" + source_document_ids: Annotated[ Optional[List[str]], pydantic.Field(alias="sourceDocumentIds") ] = None r"""Document IDs that grounded the suggestion.""" + @field_serializer("artifact_type") + def serialize_artifact_type(self, value): + if isinstance(value, str): + try: + return models.ArtifactType(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["query", "cta", "feature", "sourceDocumentIds"]) + optional_fields = set( + ["query", "cta", "feature", "artifactType", "sourceDocumentIds"] + ) serialized = handler(self) m = {} diff --git a/src/glean/api_client/models/feedentry.py b/src/glean/api_client/models/feedentry.py index 83e2c6f0..cee66e4f 100644 --- a/src/glean/api_client/models/feedentry.py +++ b/src/glean/api_client/models/feedentry.py @@ -138,6 +138,8 @@ class JustificationType(str, Enum, metaclass=utils.OpenEnumMeta): SHARE_ARTIFACT = "SHARE_ARTIFACT" CREATE_AGENT = "CREATE_AGENT" MANAGER_INVITE = "MANAGER_INVITE" + ONBOARDING_AUTHORIZATION = "ONBOARDING_AUTHORIZATION" + CHAT_REMINDER = "CHAT_REMINDER" class FeedEntryTypedDict(TypedDict): diff --git a/src/glean/api_client/models/feedrequest.py b/src/glean/api_client/models/feedrequest.py index 75cd4b1b..90fefe14 100644 --- a/src/glean/api_client/models/feedrequest.py +++ b/src/glean/api_client/models/feedrequest.py @@ -66,6 +66,8 @@ class FeedRequestCategory(str, Enum): SHARE_ARTIFACT = "SHARE_ARTIFACT" CREATE_AGENT = "CREATE_AGENT" MANAGER_INVITE = "MANAGER_INVITE" + ONBOARDING_AUTHORIZATION = "ONBOARDING_AUTHORIZATION" + CHAT_REMINDER = "CHAT_REMINDER" class FeedRequestTypedDict(TypedDict): diff --git a/src/glean/api_client/models/feedresult.py b/src/glean/api_client/models/feedresult.py index f450760d..dccf45ad 100644 --- a/src/glean/api_client/models/feedresult.py +++ b/src/glean/api_client/models/feedresult.py @@ -68,6 +68,8 @@ class FeedResultCategory(str, Enum, metaclass=utils.OpenEnumMeta): SHARE_ARTIFACT = "SHARE_ARTIFACT" CREATE_AGENT = "CREATE_AGENT" MANAGER_INVITE = "MANAGER_INVITE" + ONBOARDING_AUTHORIZATION = "ONBOARDING_AUTHORIZATION" + CHAT_REMINDER = "CHAT_REMINDER" class PlacementReason(str, Enum, metaclass=utils.OpenEnumMeta): diff --git a/src/glean/api_client/models/mcpauthmethodbreakdown.py b/src/glean/api_client/models/mcpauthmethodbreakdown.py new file mode 100644 index 00000000..fb87c13e --- /dev/null +++ b/src/glean/api_client/models/mcpauthmethodbreakdown.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 McpAuthMethodBreakdownTypedDict(TypedDict): + auth_method: NotRequired[str] + r"""Authentication method the MCP client presented, for example OAUTH_GLEAN, OAUTH_XAA (Cross App Access), or API_TOKEN.""" + total_calls: NotRequired[int] + r"""Total number of MCP calls for this authentication method in the specified time period.""" + active_users: NotRequired[int] + r"""Total number of active users for this authentication method in the specified time period.""" + host_applications: NotRequired[List[str]] + r"""Host applications using this authentication method in the specified time period.""" + + +class McpAuthMethodBreakdown(BaseModel): + auth_method: Annotated[Optional[str], pydantic.Field(alias="authMethod")] = None + r"""Authentication method the MCP client presented, for example OAUTH_GLEAN, OAUTH_XAA (Cross App Access), or API_TOKEN.""" + + total_calls: Annotated[Optional[int], pydantic.Field(alias="totalCalls")] = None + r"""Total number of MCP calls for this authentication method in the specified time period.""" + + active_users: Annotated[Optional[int], pydantic.Field(alias="activeUsers")] = None + r"""Total number of active users for this authentication method in the specified time period.""" + + host_applications: Annotated[ + Optional[List[str]], pydantic.Field(alias="hostApplications") + ] = None + r"""Host applications using this authentication method in the specified time period.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set( + ["authMethod", "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: + McpAuthMethodBreakdown.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/mcpbreakdowninsightsrequest.py b/src/glean/api_client/models/mcpbreakdowninsightsrequest.py index 2893dadf..4d3a744d 100644 --- a/src/glean/api_client/models/mcpbreakdowninsightsrequest.py +++ b/src/glean/api_client/models/mcpbreakdowninsightsrequest.py @@ -17,6 +17,7 @@ class BreakdownType(str, Enum): HOST_APPLICATIONS = "HOST_APPLICATIONS" TOOLS = "TOOLS" SERVERS = "SERVERS" + AUTH_METHODS = "AUTH_METHODS" class McpBreakdownInsightsRequestTypedDict(TypedDict): @@ -35,6 +36,8 @@ class McpBreakdownInsightsRequestTypedDict(TypedDict): 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.""" + auth_methods: NotRequired[List[str]] + r"""Authentication methods to filter by, for example OAUTH_XAA for Cross App Access traffic. Empty array means all authentication methods.""" class McpBreakdownInsightsRequest(BaseModel): @@ -69,6 +72,11 @@ class McpBreakdownInsightsRequest(BaseModel): servers: Optional[List[str]] = None r"""MCP servers to filter by. Empty array means all servers.""" + auth_methods: Annotated[ + Optional[List[str]], pydantic.Field(alias="authMethods") + ] = None + r"""Authentication methods to filter by, for example OAUTH_XAA for Cross App Access traffic. Empty array means all authentication methods.""" + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -81,6 +89,7 @@ def serialize_model(self, handler): "hostApplications", "tools", "servers", + "authMethods", ] ) serialized = handler(self) diff --git a/src/glean/api_client/models/mcpbreakdowninsightsresponse.py b/src/glean/api_client/models/mcpbreakdowninsightsresponse.py index 5afd6a5c..e3f49671 100644 --- a/src/glean/api_client/models/mcpbreakdowninsightsresponse.py +++ b/src/glean/api_client/models/mcpbreakdowninsightsresponse.py @@ -1,6 +1,10 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations +from .mcpauthmethodbreakdown import ( + McpAuthMethodBreakdown, + McpAuthMethodBreakdownTypedDict, +) from .mcphostapplicationbreakdown import ( McpHostApplicationBreakdown, McpHostApplicationBreakdownTypedDict, @@ -20,6 +24,7 @@ class McpBreakdownInsightsResponseTypedDict(TypedDict): host_applications_breakdown: NotRequired[List[McpHostApplicationBreakdownTypedDict]] tools_breakdown: NotRequired[List[McpToolBreakdownTypedDict]] servers_breakdown: NotRequired[List[McpServerBreakdownTypedDict]] + auth_methods_breakdown: NotRequired[List[McpAuthMethodBreakdownTypedDict]] class McpBreakdownInsightsResponse(BaseModel): @@ -40,6 +45,11 @@ class McpBreakdownInsightsResponse(BaseModel): Optional[List[McpServerBreakdown]], pydantic.Field(alias="serversBreakdown") ] = None + auth_methods_breakdown: Annotated[ + Optional[List[McpAuthMethodBreakdown]], + pydantic.Field(alias="authMethodsBreakdown"), + ] = None + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( @@ -48,6 +58,7 @@ def serialize_model(self, handler): "hostApplicationsBreakdown", "toolsBreakdown", "serversBreakdown", + "authMethodsBreakdown", ] ) serialized = handler(self) diff --git a/src/glean/api_client/models/mcpuserbreakdown.py b/src/glean/api_client/models/mcpuserbreakdown.py index ec4587ff..42a1ac29 100644 --- a/src/glean/api_client/models/mcpuserbreakdown.py +++ b/src/glean/api_client/models/mcpuserbreakdown.py @@ -19,6 +19,8 @@ class McpUserBreakdownTypedDict(TypedDict): 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.""" + auth_methods: NotRequired[List[str]] + r"""Authentication methods this user's MCP clients presented in the specified time period, for example OAUTH_XAA for Cross App Access.""" class McpUserBreakdown(BaseModel): @@ -38,10 +40,22 @@ class McpUserBreakdown(BaseModel): servers: Optional[List[str]] = None r"""MCP servers used by this user in the specified time period.""" + auth_methods: Annotated[ + Optional[List[str]], pydantic.Field(alias="authMethods") + ] = None + r"""Authentication methods this user's MCP clients presented in the specified time period, for example OAUTH_XAA for Cross App Access.""" + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set( - ["person", "totalCalls", "hostApplications", "tools", "servers"] + [ + "person", + "totalCalls", + "hostApplications", + "tools", + "servers", + "authMethods", + ] ) serialized = handler(self) m = {} diff --git a/src/glean/api_client/models/peoplerequest.py b/src/glean/api_client/models/peoplerequest.py index 520c04d8..1ecee9b1 100644 --- a/src/glean/api_client/models/peoplerequest.py +++ b/src/glean/api_client/models/peoplerequest.py @@ -28,6 +28,8 @@ class IncludeType(str, Enum): class PeopleRequestTypedDict(TypedDict): + fallback_to_authenticated_identity: NotRequired[bool] + r"""If true and the current user's people profile is missing, reads the stored SSO profile and returns a minimal Person with its display name, the authenticated user's email, the same obfuscatedId used by a normal self-lookup, and identityOnly set to true. If the SSO profile or its name is unavailable, preserves the missing-profile error. Applies only when emailIds and obfuscatedIds are empty and the request doesn't use act-as, a virtual identity, anonymous authentication, or the INVALID_ENTITIES includeType. The fallback doesn't mask lookup or enrichment errors and doesn't create a directory profile. Normal people profiles don't require an SSO lookup.""" 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.""" obfuscated_ids: NotRequired[List[str]] @@ -43,6 +45,11 @@ class PeopleRequestTypedDict(TypedDict): class PeopleRequest(BaseModel): + fallback_to_authenticated_identity: Annotated[ + Optional[bool], pydantic.Field(alias="fallbackToAuthenticatedIdentity") + ] = False + r"""If true and the current user's people profile is missing, reads the stored SSO profile and returns a minimal Person with its display name, the authenticated user's email, the same obfuscatedId used by a normal self-lookup, and identityOnly set to true. If the SSO profile or its name is unavailable, preserves the missing-profile error. Applies only when emailIds and obfuscatedIds are empty and the request doesn't use act-as, a virtual identity, anonymous authentication, or the INVALID_ENTITIES includeType. The fallback doesn't mask lookup or enrichment errors and doesn't create a directory profile. Normal people profiles don't require an SSO lookup.""" + timezone_offset: Annotated[ Optional[int], pydantic.Field(alias="timezoneOffset") ] = None @@ -73,6 +80,7 @@ class PeopleRequest(BaseModel): def serialize_model(self, handler): optional_fields = set( [ + "fallbackToAuthenticatedIdentity", "timezoneOffset", "obfuscatedIds", "emailIds", diff --git a/src/glean/api_client/models/person.py b/src/glean/api_client/models/person.py index 24355a99..be88dd7e 100644 --- a/src/glean/api_client/models/person.py +++ b/src/glean/api_client/models/person.py @@ -17,6 +17,8 @@ class PersonTypedDict(TypedDict): r"""The display name.""" obfuscated_id: str r"""An opaque identifier that can be used to request metadata for a Person.""" + identity_only: NotRequired[bool] + r"""True when this is an authenticated identity fallback rather than a people profile. Directory metadata is unavailable.""" related_documents: NotRequired[List["RelatedDocumentsTypedDict"]] r"""A list of documents related to this person.""" metadata: NotRequired["PersonMetadataTypedDict"] @@ -29,6 +31,11 @@ class Person(BaseModel): obfuscated_id: Annotated[str, pydantic.Field(alias="obfuscatedId")] r"""An opaque identifier that can be used to request metadata for a Person.""" + identity_only: Annotated[Optional[bool], pydantic.Field(alias="identityOnly")] = ( + None + ) + r"""True when this is an authenticated identity fallback rather than a people profile. Directory metadata is unavailable.""" + related_documents: Annotated[ Optional[List["RelatedDocuments"]], pydantic.Field(alias="relatedDocuments") ] = None @@ -38,7 +45,7 @@ class Person(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = set(["relatedDocuments", "metadata"]) + optional_fields = set(["identityOnly", "relatedDocuments", "metadata"]) serialized = handler(self) m = {} diff --git a/src/glean/api_client/models/platform_skills_list_versionsop.py b/src/glean/api_client/models/platform_skills_list_versionsop.py index 145d396d..b34fd73f 100644 --- a/src/glean/api_client/models/platform_skills_list_versionsop.py +++ b/src/glean/api_client/models/platform_skills_list_versionsop.py @@ -12,7 +12,7 @@ class PlatformSkillsListVersionsRequestTypedDict(TypedDict): skill_id: str r"""Glean skill ID.""" page_size: NotRequired[int] - r"""Maximum number of versions to return.""" + r"""Maximum number of versions to return. Defaults to 20. Maximum is 100.""" cursor: NotRequired[str] r"""Opaque pagination cursor from a previous response.""" @@ -26,8 +26,8 @@ class PlatformSkillsListVersionsRequest(BaseModel): page_size: Annotated[ Optional[int], FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Maximum number of versions to return.""" + ] = 20 + r"""Maximum number of versions to return. Defaults to 20. Maximum is 100.""" cursor: Annotated[ Optional[str], diff --git a/src/glean/api_client/models/platform_skills_listop.py b/src/glean/api_client/models/platform_skills_listop.py index 3f774193..5c21fa77 100644 --- a/src/glean/api_client/models/platform_skills_listop.py +++ b/src/glean/api_client/models/platform_skills_listop.py @@ -10,7 +10,7 @@ class PlatformSkillsListRequestTypedDict(TypedDict): page_size: NotRequired[int] - r"""Maximum number of skills to return.""" + r"""Maximum number of skills to return. Defaults to 20. Maximum is 100.""" cursor: NotRequired[str] r"""Opaque pagination cursor from a previous response.""" @@ -19,8 +19,8 @@ class PlatformSkillsListRequest(BaseModel): page_size: Annotated[ Optional[int], FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Maximum number of skills to return.""" + ] = 20 + r"""Maximum number of skills to return. Defaults to 20. Maximum is 100.""" cursor: Annotated[ Optional[str], diff --git a/src/glean/api_client/models/platformskillsourcepreviewrequest.py b/src/glean/api_client/models/platform_skills_preview_source_streamop.py similarity index 58% rename from src/glean/api_client/models/platformskillsourcepreviewrequest.py rename to src/glean/api_client/models/platform_skills_preview_source_streamop.py index 92057490..2ce11df6 100644 --- a/src/glean/api_client/models/platformskillsourcepreviewrequest.py +++ b/src/glean/api_client/models/platform_skills_preview_source_streamop.py @@ -2,24 +2,28 @@ from __future__ import annotations from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic from pydantic import model_serializer -from typing import Optional -from typing_extensions import NotRequired, TypedDict +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, TypedDict -class PlatformSkillSourcePreviewRequestTypedDict(TypedDict): +class PlatformSkillsPreviewSourceStreamRequestTypedDict(TypedDict): source_url: str r"""GitHub URL for a skill directory, SKILL.md file, or repository to inspect.""" - stream: NotRequired[bool] - r"""Whether to stream repository scan progress using server-sent events.""" + stream: Literal[True] -class PlatformSkillSourcePreviewRequest(BaseModel): +class PlatformSkillsPreviewSourceStreamRequest(BaseModel): source_url: str r"""GitHub URL for a skill directory, SKILL.md file, or repository to inspect.""" - stream: Optional[bool] = False - r"""Whether to stream repository scan progress using server-sent events.""" + STREAM: Annotated[ + Annotated[Optional[Literal[True]], AfterValidator(validate_const(True))], + pydantic.Field(alias="stream"), + ] = True @model_serializer(mode="wrap") def serialize_model(self, handler): @@ -36,3 +40,9 @@ def serialize_model(self, handler): m[k] = val return m + + +try: + PlatformSkillsPreviewSourceStreamRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platform_skills_preview_sourceop.py b/src/glean/api_client/models/platform_skills_preview_sourceop.py index 30dcdd72..f5667276 100644 --- a/src/glean/api_client/models/platform_skills_preview_sourceop.py +++ b/src/glean/api_client/models/platform_skills_preview_sourceop.py @@ -1,21 +1,48 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from .platformskillsourcepreviewresponse import ( - PlatformSkillSourcePreviewResponse, - PlatformSkillSourcePreviewResponseTypedDict, -) -from typing import Union -from typing_extensions import TypeAliasType +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, TypedDict -PlatformSkillsPreviewSourceResponseTypedDict = TypeAliasType( - "PlatformSkillsPreviewSourceResponseTypedDict", - Union[PlatformSkillSourcePreviewResponseTypedDict, str], -) +class PlatformSkillsPreviewSourceRequestTypedDict(TypedDict): + source_url: str + r"""GitHub URL for a skill directory, SKILL.md file, or repository to inspect.""" + stream: Literal[False] -PlatformSkillsPreviewSourceResponse = TypeAliasType( - "PlatformSkillsPreviewSourceResponse", - Union[PlatformSkillSourcePreviewResponse, str], -) +class PlatformSkillsPreviewSourceRequest(BaseModel): + source_url: str + r"""GitHub URL for a skill directory, SKILL.md file, or repository to inspect.""" + + STREAM: Annotated[ + Annotated[Optional[Literal[False]], AfterValidator(validate_const(False))], + pydantic.Field(alias="stream"), + ] = False + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["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: + PlatformSkillsPreviewSourceRequest.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platformproblemdetail.py b/src/glean/api_client/models/platformproblemdetail.py new file mode 100644 index 00000000..05d4d46e --- /dev/null +++ b/src/glean/api_client/models/platformproblemdetail.py @@ -0,0 +1,87 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformproblemdetailcode import PlatformProblemDetailCode +from .platformproblemdetailerror import ( + PlatformProblemDetailError, + PlatformProblemDetailErrorTypedDict, +) +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 + + +class PlatformProblemDetailTypedDict(TypedDict): + r"""Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation.""" + + type: str + r"""URI identifying the error type.""" + title: str + r"""Short, human-readable summary of the error.""" + status: int + r"""HTTP status code mirrored from the response.""" + detail: str + r"""Human-readable explanation specific to this occurrence.""" + code: PlatformProblemDetailCode + r"""Stable machine-readable error code.""" + request_id: str + r"""Platform-generated request ID for support correlation.""" + documentation_url: NotRequired[str] + r"""Direct URL to documentation for this error code.""" + errors: NotRequired[List[PlatformProblemDetailErrorTypedDict]] + r"""Field-level validation problems, one entry per offending field.""" + + +class PlatformProblemDetail(BaseModel): + r"""Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation.""" + + type: str + r"""URI identifying the error type.""" + + title: str + r"""Short, human-readable summary of the error.""" + + status: int + r"""HTTP status code mirrored from the response.""" + + detail: str + r"""Human-readable explanation specific to this occurrence.""" + + code: PlatformProblemDetailCode + r"""Stable machine-readable error code.""" + + request_id: str + r"""Platform-generated request ID for support correlation.""" + + documentation_url: Optional[str] = None + r"""Direct URL to documentation for this error code.""" + + errors: Optional[List[PlatformProblemDetailError]] = None + r"""Field-level validation problems, one entry per offending field.""" + + @field_serializer("code") + def serialize_code(self, value): + if isinstance(value, str): + try: + return models.PlatformProblemDetailCode(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["documentation_url", "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 diff --git a/src/glean/api_client/models/platformskill.py b/src/glean/api_client/models/platformskill.py index 4b7e21a7..d77b1fa2 100644 --- a/src/glean/api_client/models/platformskill.py +++ b/src/glean/api_client/models/platformskill.py @@ -20,7 +20,7 @@ class PlatformSkillTypedDict(TypedDict): - id: str + skill_id: str r"""Glean skill ID.""" display_name: str r"""Human-readable skill name.""" @@ -31,7 +31,9 @@ class PlatformSkillTypedDict(TypedDict): latest_minor_version: int r"""Latest minor version number for the skill.""" status: PlatformSkillStatus - r"""Current skill status.""" + r"""The caller's effective activation. The owner sees the skill's stored status. Another caller sees their personal setting, or DISABLED when they have none. DRAFT is the stored draft state and is not set by update. Effective activation may also reflect workspace governance policy. + + """ origin: PlatformSkillOrigin r"""Source category for the skill.""" owner: PlatformPersonReferenceTypedDict @@ -44,7 +46,7 @@ class PlatformSkillTypedDict(TypedDict): class PlatformSkill(BaseModel): - id: str + skill_id: str r"""Glean skill ID.""" display_name: str @@ -60,7 +62,9 @@ class PlatformSkill(BaseModel): r"""Latest minor version number for the skill.""" status: PlatformSkillStatus - r"""Current skill status.""" + r"""The caller's effective activation. The owner sees the skill's stored status. Another caller sees their personal setting, or DISABLED when they have none. DRAFT is the stored draft state and is not set by update. Effective activation may also reflect workspace governance policy. + + """ origin: PlatformSkillOrigin r"""Source category for the skill.""" @@ -85,6 +89,15 @@ def serialize_status(self, value): return value return value + @field_serializer("origin") + def serialize_origin(self, value): + if isinstance(value, str): + try: + return models.PlatformSkillOrigin(value) + except ValueError: + return value + return value + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = set(["source_provenance"]) diff --git a/src/glean/api_client/models/platformskillimportresponse.py b/src/glean/api_client/models/platformskillimportresponse.py index 4e8827e5..f0789925 100644 --- a/src/glean/api_client/models/platformskillimportresponse.py +++ b/src/glean/api_client/models/platformskillimportresponse.py @@ -9,14 +9,18 @@ class PlatformSkillImportResponseTypedDict(TypedDict): skills: List[PlatformSkillTypedDict] - r"""Independently persisted skills in request order.""" + r"""Imported skills in request order. The import is atomic: either every source persists or none does. + + """ request_id: str r"""Platform-generated request ID for support correlation.""" class PlatformSkillImportResponse(BaseModel): skills: List[PlatformSkill] - r"""Independently persisted skills in request order.""" + r"""Imported skills in request order. The import is atomic: either every source persists or none does. + + """ request_id: str r"""Platform-generated request ID for support correlation.""" diff --git a/src/glean/api_client/models/platformskillorigin.py b/src/glean/api_client/models/platformskillorigin.py index 320c60ec..f05da6ac 100644 --- a/src/glean/api_client/models/platformskillorigin.py +++ b/src/glean/api_client/models/platformskillorigin.py @@ -2,9 +2,11 @@ from __future__ import annotations from enum import Enum +from glean.api_client import utils -class PlatformSkillOrigin(str, Enum): +class PlatformSkillOrigin(str, Enum, metaclass=utils.OpenEnumMeta): r"""Source category for the skill.""" CUSTOM = "CUSTOM" + GITHUB = "GITHUB" diff --git a/src/glean/api_client/models/platformskillslistresponse.py b/src/glean/api_client/models/platformskillslistresponse.py index 7303b051..8d37912a 100644 --- a/src/glean/api_client/models/platformskillslistresponse.py +++ b/src/glean/api_client/models/platformskillslistresponse.py @@ -9,7 +9,7 @@ class PlatformSkillsListResponseTypedDict(TypedDict): - skills: List[PlatformSkillTypedDict] + results: List[PlatformSkillTypedDict] r"""Skills available to the user.""" has_more: bool r"""Whether additional results are available.""" @@ -20,7 +20,7 @@ class PlatformSkillsListResponseTypedDict(TypedDict): class PlatformSkillsListResponse(BaseModel): - skills: List[PlatformSkill] + results: List[PlatformSkill] r"""Skills available to the user.""" has_more: bool diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreamerror.py b/src/glean/api_client/models/platformskillsourcepreviewstreamerror.py new file mode 100644 index 00000000..68f225d3 --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamerror.py @@ -0,0 +1,65 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformauthenticationsuggestion import ( + PlatformAuthenticationSuggestion, + PlatformAuthenticationSuggestionTypedDict, +) +from .platformproblemdetail import PlatformProblemDetail, PlatformProblemDetailTypedDict +from enum import Enum +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 PlatformSkillSourcePreviewStreamErrorType(str, Enum): + r"""Event type, also sent as the SSE `event` name.""" + + ERROR = "ERROR" + + +class PlatformSkillSourcePreviewStreamErrorTypedDict(TypedDict): + r"""Terminal failure event carrying the failure as a problem detail. Most GitHub authorization failures return HTTP 422 before the stream opens. If authorization fails after the stream opens, `error.code` is `tools_unauthorized` and `authentication_suggestions` is present.""" + + type: PlatformSkillSourcePreviewStreamErrorType + r"""Event type, also sent as the SSE `event` name.""" + error: PlatformProblemDetailTypedDict + r"""Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation. + + """ + authentication_suggestions: NotRequired[ + List[PlatformAuthenticationSuggestionTypedDict] + ] + r"""Present only when `error.code` is `tools_unauthorized`. Names the GitHub action pack to authorize, with the same retry flow as the 422 response.""" + + +class PlatformSkillSourcePreviewStreamError(BaseModel): + r"""Terminal failure event carrying the failure as a problem detail. Most GitHub authorization failures return HTTP 422 before the stream opens. If authorization fails after the stream opens, `error.code` is `tools_unauthorized` and `authentication_suggestions` is present.""" + + type: PlatformSkillSourcePreviewStreamErrorType + r"""Event type, also sent as the SSE `event` name.""" + + error: PlatformProblemDetail + r"""Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation. + + """ + + authentication_suggestions: Optional[List[PlatformAuthenticationSuggestion]] = None + r"""Present only when `error.code` is `tools_unauthorized`. Names the GitHub action pack to authorize, with the same retry flow as the 422 response.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = set(["authentication_suggestions"]) + serialized = handler(self) + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(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/platformskillsourcepreviewstreamerrorserversentevent.py b/src/glean/api_client/models/platformskillsourcepreviewstreamerrorserversentevent.py new file mode 100644 index 00000000..cd9a68bd --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamerrorserversentevent.py @@ -0,0 +1,55 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsourcepreviewstreamerror import ( + PlatformSkillSourcePreviewStreamError, + PlatformSkillSourcePreviewStreamErrorTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformSkillSourcePreviewStreamErrorServerSentEventTypedDict(TypedDict): + data: PlatformSkillSourcePreviewStreamErrorTypedDict + r"""Terminal failure event carrying the failure as a problem detail. Most GitHub authorization failures return HTTP 422 before the stream opens. If authorization fails after the stream opens, `error.code` is `tools_unauthorized` and `authentication_suggestions` is present.""" + id: NotRequired[str] + event: Literal["ERROR"] + + +class PlatformSkillSourcePreviewStreamErrorServerSentEvent(BaseModel): + data: PlatformSkillSourcePreviewStreamError + r"""Terminal failure event carrying the failure as a problem detail. Most GitHub authorization failures return HTTP 422 before the stream opens. If authorization fails after the stream opens, `error.code` is `tools_unauthorized` and `authentication_suggestions` is present.""" + + id: Optional[str] = None + + EVENT: Annotated[ + Annotated[Literal["ERROR"], AfterValidator(validate_const("ERROR"))], + pydantic.Field(alias="event"), + ] = "ERROR" + + @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 + + +try: + PlatformSkillSourcePreviewStreamErrorServerSentEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreameventserversentevent.py b/src/glean/api_client/models/platformskillsourcepreviewstreameventserversentevent.py new file mode 100644 index 00000000..a4974c16 --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreameventserversentevent.py @@ -0,0 +1,52 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsourcepreviewstreamerrorserversentevent import ( + PlatformSkillSourcePreviewStreamErrorServerSentEvent, + PlatformSkillSourcePreviewStreamErrorServerSentEventTypedDict, +) +from .platformskillsourcepreviewstreamprogressserversentevent import ( + PlatformSkillSourcePreviewStreamProgressServerSentEvent, + PlatformSkillSourcePreviewStreamProgressServerSentEventTypedDict, +) +from .platformskillsourcepreviewstreamresultserversentevent import ( + PlatformSkillSourcePreviewStreamResultServerSentEvent, + PlatformSkillSourcePreviewStreamResultServerSentEventTypedDict, +) +from .platformskillsourcepreviewstreamscanserversentevent import ( + PlatformSkillSourcePreviewStreamScanServerSentEvent, + PlatformSkillSourcePreviewStreamScanServerSentEventTypedDict, +) +from .platformskillsourcepreviewstreamskillserversentevent import ( + PlatformSkillSourcePreviewStreamSkillServerSentEvent, + PlatformSkillSourcePreviewStreamSkillServerSentEventTypedDict, +) +from pydantic import Field +from typing import Union +from typing_extensions import Annotated, TypeAliasType + + +PlatformSkillSourcePreviewStreamEventServerSentEventTypedDict = TypeAliasType( + "PlatformSkillSourcePreviewStreamEventServerSentEventTypedDict", + Union[ + PlatformSkillSourcePreviewStreamScanServerSentEventTypedDict, + PlatformSkillSourcePreviewStreamProgressServerSentEventTypedDict, + PlatformSkillSourcePreviewStreamSkillServerSentEventTypedDict, + PlatformSkillSourcePreviewStreamResultServerSentEventTypedDict, + PlatformSkillSourcePreviewStreamErrorServerSentEventTypedDict, + ], +) +r"""A typed server-sent event.""" + + +PlatformSkillSourcePreviewStreamEventServerSentEvent = Annotated[ + Union[ + PlatformSkillSourcePreviewStreamScanServerSentEvent, + PlatformSkillSourcePreviewStreamProgressServerSentEvent, + PlatformSkillSourcePreviewStreamSkillServerSentEvent, + PlatformSkillSourcePreviewStreamResultServerSentEvent, + PlatformSkillSourcePreviewStreamErrorServerSentEvent, + ], + Field(discriminator="EVENT"), +] +r"""A typed server-sent event.""" diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreamprogress.py b/src/glean/api_client/models/platformskillsourcepreviewstreamprogress.py new file mode 100644 index 00000000..ecca3b70 --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamprogress.py @@ -0,0 +1,41 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformSkillSourcePreviewStreamProgressType(str, Enum): + r"""Event type, also sent as the SSE `event` name.""" + + PROGRESS = "PROGRESS" + + +class PlatformSkillSourcePreviewStreamProgressTypedDict(TypedDict): + r"""One skill finished inspecting; names the skill in progress.""" + + type: PlatformSkillSourcePreviewStreamProgressType + r"""Event type, also sent as the SSE `event` name.""" + completed: int + r"""Number of skills inspected so far.""" + total: int + r"""Number of skills to inspect.""" + current_skill: str + r"""Path of the skill being inspected.""" + + +class PlatformSkillSourcePreviewStreamProgress(BaseModel): + r"""One skill finished inspecting; names the skill in progress.""" + + type: PlatformSkillSourcePreviewStreamProgressType + r"""Event type, also sent as the SSE `event` name.""" + + completed: int + r"""Number of skills inspected so far.""" + + total: int + r"""Number of skills to inspect.""" + + current_skill: str + r"""Path of the skill being inspected.""" diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreamprogressserversentevent.py b/src/glean/api_client/models/platformskillsourcepreviewstreamprogressserversentevent.py new file mode 100644 index 00000000..60c2dbed --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamprogressserversentevent.py @@ -0,0 +1,55 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsourcepreviewstreamprogress import ( + PlatformSkillSourcePreviewStreamProgress, + PlatformSkillSourcePreviewStreamProgressTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformSkillSourcePreviewStreamProgressServerSentEventTypedDict(TypedDict): + data: PlatformSkillSourcePreviewStreamProgressTypedDict + r"""One skill finished inspecting; names the skill in progress.""" + id: NotRequired[str] + event: Literal["PROGRESS"] + + +class PlatformSkillSourcePreviewStreamProgressServerSentEvent(BaseModel): + data: PlatformSkillSourcePreviewStreamProgress + r"""One skill finished inspecting; names the skill in progress.""" + + id: Optional[str] = None + + EVENT: Annotated[ + Annotated[Literal["PROGRESS"], AfterValidator(validate_const("PROGRESS"))], + pydantic.Field(alias="event"), + ] = "PROGRESS" + + @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 + + +try: + PlatformSkillSourcePreviewStreamProgressServerSentEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreamresult.py b/src/glean/api_client/models/platformskillsourcepreviewstreamresult.py new file mode 100644 index 00000000..df6d3b6e --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamresult.py @@ -0,0 +1,33 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsourcepreviewresponse import ( + PlatformSkillSourcePreviewResponse, + PlatformSkillSourcePreviewResponseTypedDict, +) +from enum import Enum +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformSkillSourcePreviewStreamResultType(str, Enum): + r"""Event type, also sent as the SSE `event` name.""" + + RESULT = "RESULT" + + +class PlatformSkillSourcePreviewStreamResultTypedDict(TypedDict): + r"""Terminal success event carrying the fully assembled preview.""" + + type: PlatformSkillSourcePreviewStreamResultType + r"""Event type, also sent as the SSE `event` name.""" + response: PlatformSkillSourcePreviewResponseTypedDict + + +class PlatformSkillSourcePreviewStreamResult(BaseModel): + r"""Terminal success event carrying the fully assembled preview.""" + + type: PlatformSkillSourcePreviewStreamResultType + r"""Event type, also sent as the SSE `event` name.""" + + response: PlatformSkillSourcePreviewResponse diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreamresultserversentevent.py b/src/glean/api_client/models/platformskillsourcepreviewstreamresultserversentevent.py new file mode 100644 index 00000000..0741143e --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamresultserversentevent.py @@ -0,0 +1,55 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsourcepreviewstreamresult import ( + PlatformSkillSourcePreviewStreamResult, + PlatformSkillSourcePreviewStreamResultTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformSkillSourcePreviewStreamResultServerSentEventTypedDict(TypedDict): + data: PlatformSkillSourcePreviewStreamResultTypedDict + r"""Terminal success event carrying the fully assembled preview.""" + id: NotRequired[str] + event: Literal["RESULT"] + + +class PlatformSkillSourcePreviewStreamResultServerSentEvent(BaseModel): + data: PlatformSkillSourcePreviewStreamResult + r"""Terminal success event carrying the fully assembled preview.""" + + id: Optional[str] = None + + EVENT: Annotated[ + Annotated[Literal["RESULT"], AfterValidator(validate_const("RESULT"))], + pydantic.Field(alias="event"), + ] = "RESULT" + + @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 + + +try: + PlatformSkillSourcePreviewStreamResultServerSentEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreamscan.py b/src/glean/api_client/models/platformskillsourcepreviewstreamscan.py new file mode 100644 index 00000000..a8fd4229 --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamscan.py @@ -0,0 +1,37 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from glean.api_client.types import BaseModel +from typing import List +from typing_extensions import TypedDict + + +class PlatformSkillSourcePreviewStreamScanType(str, Enum): + r"""Event type, also sent as the SSE `event` name.""" + + SCAN = "SCAN" + + +class PlatformSkillSourcePreviewStreamScanTypedDict(TypedDict): + r"""Repository scan started; names every skill path found.""" + + type: PlatformSkillSourcePreviewStreamScanType + r"""Event type, also sent as the SSE `event` name.""" + total: int + r"""Number of skill paths found in the scan.""" + skill_paths: List[str] + r"""Skill paths found in the scan.""" + + +class PlatformSkillSourcePreviewStreamScan(BaseModel): + r"""Repository scan started; names every skill path found.""" + + type: PlatformSkillSourcePreviewStreamScanType + r"""Event type, also sent as the SSE `event` name.""" + + total: int + r"""Number of skill paths found in the scan.""" + + skill_paths: List[str] + r"""Skill paths found in the scan.""" diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreamscanserversentevent.py b/src/glean/api_client/models/platformskillsourcepreviewstreamscanserversentevent.py new file mode 100644 index 00000000..aa588667 --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamscanserversentevent.py @@ -0,0 +1,55 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsourcepreviewstreamscan import ( + PlatformSkillSourcePreviewStreamScan, + PlatformSkillSourcePreviewStreamScanTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformSkillSourcePreviewStreamScanServerSentEventTypedDict(TypedDict): + data: PlatformSkillSourcePreviewStreamScanTypedDict + r"""Repository scan started; names every skill path found.""" + id: NotRequired[str] + event: Literal["SCAN"] + + +class PlatformSkillSourcePreviewStreamScanServerSentEvent(BaseModel): + data: PlatformSkillSourcePreviewStreamScan + r"""Repository scan started; names every skill path found.""" + + id: Optional[str] = None + + EVENT: Annotated[ + Annotated[Literal["SCAN"], AfterValidator(validate_const("SCAN"))], + pydantic.Field(alias="event"), + ] = "SCAN" + + @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 + + +try: + PlatformSkillSourcePreviewStreamScanServerSentEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreamskill.py b/src/glean/api_client/models/platformskillsourcepreviewstreamskill.py new file mode 100644 index 00000000..937205e3 --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamskill.py @@ -0,0 +1,33 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsourcepreview import ( + PlatformSkillSourcePreview, + PlatformSkillSourcePreviewTypedDict, +) +from enum import Enum +from glean.api_client.types import BaseModel +from typing_extensions import TypedDict + + +class PlatformSkillSourcePreviewStreamSkillType(str, Enum): + r"""Event type, also sent as the SSE `event` name.""" + + SKILL = "SKILL" + + +class PlatformSkillSourcePreviewStreamSkillTypedDict(TypedDict): + r"""One skill previewed; carries the previewed skill.""" + + type: PlatformSkillSourcePreviewStreamSkillType + r"""Event type, also sent as the SSE `event` name.""" + skill: PlatformSkillSourcePreviewTypedDict + + +class PlatformSkillSourcePreviewStreamSkill(BaseModel): + r"""One skill previewed; carries the previewed skill.""" + + type: PlatformSkillSourcePreviewStreamSkillType + r"""Event type, also sent as the SSE `event` name.""" + + skill: PlatformSkillSourcePreview diff --git a/src/glean/api_client/models/platformskillsourcepreviewstreamskillserversentevent.py b/src/glean/api_client/models/platformskillsourcepreviewstreamskillserversentevent.py new file mode 100644 index 00000000..6197d06d --- /dev/null +++ b/src/glean/api_client/models/platformskillsourcepreviewstreamskillserversentevent.py @@ -0,0 +1,55 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .platformskillsourcepreviewstreamskill import ( + PlatformSkillSourcePreviewStreamSkill, + PlatformSkillSourcePreviewStreamSkillTypedDict, +) +from glean.api_client.types import BaseModel, UNSET_SENTINEL +from glean.api_client.utils import validate_const +import pydantic +from pydantic import model_serializer +from pydantic.functional_validators import AfterValidator +from typing import Literal, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlatformSkillSourcePreviewStreamSkillServerSentEventTypedDict(TypedDict): + data: PlatformSkillSourcePreviewStreamSkillTypedDict + r"""One skill previewed; carries the previewed skill.""" + id: NotRequired[str] + event: Literal["SKILL"] + + +class PlatformSkillSourcePreviewStreamSkillServerSentEvent(BaseModel): + data: PlatformSkillSourcePreviewStreamSkill + r"""One skill previewed; carries the previewed skill.""" + + id: Optional[str] = None + + EVENT: Annotated[ + Annotated[Literal["SKILL"], AfterValidator(validate_const("SKILL"))], + pydantic.Field(alias="event"), + ] = "SKILL" + + @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 + + +try: + PlatformSkillSourcePreviewStreamSkillServerSentEvent.model_rebuild() +except NameError: + pass diff --git a/src/glean/api_client/models/platformskillstatus.py b/src/glean/api_client/models/platformskillstatus.py index d57185fb..d7058723 100644 --- a/src/glean/api_client/models/platformskillstatus.py +++ b/src/glean/api_client/models/platformskillstatus.py @@ -6,7 +6,7 @@ class PlatformSkillStatus(str, Enum, metaclass=utils.OpenEnumMeta): - r"""Current skill status.""" + r"""The caller's effective activation. The owner sees the skill's stored status. Another caller sees their personal setting, or DISABLED when they have none. DRAFT is the stored draft state and is not set by update. Effective activation may also reflect workspace governance policy.""" DRAFT = "DRAFT" ENABLED = "ENABLED" diff --git a/src/glean/api_client/models/platformskillsyncresponse.py b/src/glean/api_client/models/platformskillsyncresponse.py index 731c531d..8fe7526e 100644 --- a/src/glean/api_client/models/platformskillsyncresponse.py +++ b/src/glean/api_client/models/platformskillsyncresponse.py @@ -1,30 +1,24 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from .platformskillsyncresultstatus import PlatformSkillSyncResultStatus from glean.api_client.types import BaseModel from typing_extensions import TypedDict class PlatformSkillSyncResponseTypedDict(TypedDict): - sync_status: PlatformSkillSyncResultStatus - r"""Synchronization status after a successful refresh.""" commit_sha: str r"""Git commit SHA now associated with the skill.""" - updated: bool + is_updated: bool r"""Whether this request created a new skill version.""" request_id: str r"""Platform-generated request ID for support correlation.""" class PlatformSkillSyncResponse(BaseModel): - sync_status: PlatformSkillSyncResultStatus - r"""Synchronization status after a successful refresh.""" - commit_sha: str r"""Git commit SHA now associated with the skill.""" - updated: bool + is_updated: bool r"""Whether this request created a new skill version.""" request_id: str diff --git a/src/glean/api_client/models/platformskillsyncresultstatus.py b/src/glean/api_client/models/platformskillsyncresultstatus.py deleted file mode 100644 index b85415a1..00000000 --- a/src/glean/api_client/models/platformskillsyncresultstatus.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum - - -class PlatformSkillSyncResultStatus(str, Enum): - r"""Synchronization status after a successful refresh.""" - - UP_TO_DATE = "UP_TO_DATE" diff --git a/src/glean/api_client/models/platformskillupdaterequest.py b/src/glean/api_client/models/platformskillupdaterequest.py index 0d87a591..77732fcd 100644 --- a/src/glean/api_client/models/platformskillupdaterequest.py +++ b/src/glean/api_client/models/platformskillupdaterequest.py @@ -8,9 +8,13 @@ class PlatformSkillUpdateRequestTypedDict(TypedDict): status: PlatformSkillUpdateStatus - r"""New status for the skill.""" + r"""Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting. + + """ class PlatformSkillUpdateRequest(BaseModel): status: PlatformSkillUpdateStatus - r"""New status for the skill.""" + r"""Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting. + + """ diff --git a/src/glean/api_client/models/platformskillupdatestatus.py b/src/glean/api_client/models/platformskillupdatestatus.py index ede7b308..50cf71de 100644 --- a/src/glean/api_client/models/platformskillupdatestatus.py +++ b/src/glean/api_client/models/platformskillupdatestatus.py @@ -5,7 +5,7 @@ class PlatformSkillUpdateStatus(str, Enum): - r"""New status for the skill.""" + r"""Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting.""" ENABLED = "ENABLED" DISABLED = "DISABLED" diff --git a/src/glean/api_client/models/platformskillversionslistresponse.py b/src/glean/api_client/models/platformskillversionslistresponse.py index 2ae04090..37b4b1c8 100644 --- a/src/glean/api_client/models/platformskillversionslistresponse.py +++ b/src/glean/api_client/models/platformskillversionslistresponse.py @@ -9,7 +9,7 @@ class PlatformSkillVersionsListResponseTypedDict(TypedDict): - versions: List[PlatformSkillVersionTypedDict] + results: List[PlatformSkillVersionTypedDict] r"""Versions available for the skill.""" has_more: bool r"""Whether additional results are available.""" @@ -20,7 +20,7 @@ class PlatformSkillVersionsListResponseTypedDict(TypedDict): class PlatformSkillVersionsListResponse(BaseModel): - versions: List[PlatformSkillVersion] + results: List[PlatformSkillVersion] r"""Versions available for the skill.""" has_more: bool diff --git a/src/glean/api_client/models/ugcaction_union.py b/src/glean/api_client/models/ugcaction_union.py new file mode 100644 index 00000000..996aba53 --- /dev/null +++ b/src/glean/api_client/models/ugcaction_union.py @@ -0,0 +1,33 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .ugctype import UgcType +from glean.api_client import models +from glean.api_client.types import BaseModel +from pydantic import field_serializer +from typing_extensions import TypedDict + + +class UgcActionTypedDict(TypedDict): + create: UgcType + + +class UgcAction(BaseModel): + create: UgcType + + @field_serializer("create") + def serialize_create(self, value): + if isinstance(value, str): + try: + return models.UgcType(value) + except ValueError: + return value + return value + + +UgcActionUnionTypedDict = UgcActionTypedDict +r"""An action to perform on user-generated content. This may be accompanied by `text` on the ChatMessageFragment, which acts as the display name content of the pill.""" + + +UgcActionUnion = UgcAction +r"""An action to perform on user-generated content. This may be accompanied by `text` on the ChatMessageFragment, which acts as the display name content of the pill.""" diff --git a/src/glean/api_client/models/ugctype.py b/src/glean/api_client/models/ugctype.py index a628cc8f..01c9179a 100644 --- a/src/glean/api_client/models/ugctype.py +++ b/src/glean/api_client/models/ugctype.py @@ -26,4 +26,5 @@ class UgcType(str, Enum, metaclass=utils.OpenEnumMeta): SPREADSHEET_TYPE = "SPREADSHEET_TYPE" INLINE_HTML_TYPE = "INLINE_HTML_TYPE" PODCAST_TYPE = "PODCAST_TYPE" + VIDEO_TYPE = "VIDEO_TYPE" WORKFLOWS_TYPE = "WORKFLOWS_TYPE" diff --git a/src/glean/api_client/search.py b/src/glean/api_client/search.py index 0c1935e0..7150efbf 100644 --- a/src/glean/api_client/search.py +++ b/src/glean/api_client/search.py @@ -115,6 +115,10 @@ def query( tags=["Search"], extensions={ "x-codegen-request-body-name": "payload", + "x-glean-scopes": { + "legacy": ["SEARCH"], + "platform": ["search:query"], + }, "x-visibility": "Public", }, ), @@ -254,6 +258,10 @@ async def query_async( tags=["Search"], extensions={ "x-codegen-request-body-name": "payload", + "x-glean-scopes": { + "legacy": ["SEARCH"], + "platform": ["search:query"], + }, "x-visibility": "Public", }, ), @@ -363,7 +371,13 @@ def list_filters( self.sdk_configuration.security, models.Security ), tags=["Search"], - extensions={"x-visibility": "Public"}, + extensions={ + "x-glean-scopes": { + "legacy": ["SEARCH"], + "platform": ["search:query"], + }, + "x-visibility": "Public", + }, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), @@ -476,7 +490,13 @@ async def list_filters_async( self.sdk_configuration.security, models.Security ), tags=["Search"], - extensions={"x-visibility": "Public"}, + extensions={ + "x-glean-scopes": { + "legacy": ["SEARCH"], + "platform": ["search:query"], + }, + "x-visibility": "Public", + }, ), request=req, is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), diff --git a/src/glean/api_client/skills.py b/src/glean/api_client/skills.py index 89e97e10..4a80b997 100644 --- a/src/glean/api_client/skills.py +++ b/src/glean/api_client/skills.py @@ -1,20 +1,14 @@ """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 import eventstreaming, get_security_from_env from glean.api_client.utils.unmarshal_json_response import unmarshal_json_response from typing import Any, Iterable, List, Mapping, Optional, Union -class PreviewSourceAcceptEnum(str, Enum): - APPLICATION_JSON = "application/json" - TEXT_EVENT_STREAM = "text/event-stream" - - class Skills(BaseSDK): def create( self, @@ -30,7 +24,7 @@ def create( ) -> models.PlatformSkillCreateResponse: r"""Create skill - Create a skill from an uploaded SKILL.md, .zip, or .skill bundle. If the authenticated user already has a skill with the same name, the existing skill is superseded with a new version. + Create a skill from an uploaded SKILL.md, .zip, or .skill bundle. If the authenticated user already has a skill with the same name, the existing skill is superseded with a new version, unless it is source-managed: a same-name create over a GitHub-imported skill returns 409, and the caller syncs the existing skill instead. Two concurrent same-name creates can still produce two skills. :param file: SKILL.md, .zip, or .skill bundle to create. @@ -92,9 +86,9 @@ def create( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "3cd55572-0d5c-4898-9ecf-1b86c520d1c7", - "introduced": "2026-06-24", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:write"], }, "x-visibility": "Public", }, @@ -105,11 +99,11 @@ def create( ) response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): + if utils.match_response(http_res, "201", "application/json"): return unmarshal_json_response(models.PlatformSkillCreateResponse, http_res) if utils.match_response( http_res, - ["400", "401", "403", "404", "408", "413", "429"], + ["400", "401", "403", "404", "408", "409", "413", "429"], "application/problem+json", ): response_data = unmarshal_json_response( @@ -144,7 +138,7 @@ async def create_async( ) -> models.PlatformSkillCreateResponse: r"""Create skill - Create a skill from an uploaded SKILL.md, .zip, or .skill bundle. If the authenticated user already has a skill with the same name, the existing skill is superseded with a new version. + Create a skill from an uploaded SKILL.md, .zip, or .skill bundle. If the authenticated user already has a skill with the same name, the existing skill is superseded with a new version, unless it is source-managed: a same-name create over a GitHub-imported skill returns 409, and the caller syncs the existing skill instead. Two concurrent same-name creates can still produce two skills. :param file: SKILL.md, .zip, or .skill bundle to create. @@ -206,9 +200,9 @@ async def create_async( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "3cd55572-0d5c-4898-9ecf-1b86c520d1c7", - "introduced": "2026-06-24", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:write"], }, "x-visibility": "Public", }, @@ -219,11 +213,11 @@ async def create_async( ) response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): + if utils.match_response(http_res, "201", "application/json"): return unmarshal_json_response(models.PlatformSkillCreateResponse, http_res) if utils.match_response( http_res, - ["400", "401", "403", "404", "408", "413", "429"], + ["400", "401", "403", "404", "408", "409", "413", "429"], "application/problem+json", ): response_data = unmarshal_json_response( @@ -247,7 +241,7 @@ async def create_async( def list( self, *, - page_size: Optional[int] = None, + page_size: Optional[int] = 20, cursor: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -256,10 +250,10 @@ def list( ) -> models.PlatformSkillsListResponse: r"""List skills - List skills available to the authenticated user. + List every custom skill the authenticated caller can access. Built-in skills are excluded: they have no versions, content download, update, or delete, so their identifiers would fail most skill operations. Chat-authored skills shared with the caller without a listed grant are omitted: they stay retrievable by identifier when it is known, but this list does not discover them. - :param page_size: Maximum number of skills to return. + :param page_size: Maximum number of skills to return. Defaults to 20. Maximum is 100. :param cursor: Opaque pagination cursor from a previous response. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -317,9 +311,9 @@ def list( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "3eb65937-03a3-472b-9a00-be713f302b5f", - "introduced": "2026-06-23", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:read"], }, "x-visibility": "Public", }, @@ -358,7 +352,7 @@ def list( async def list_async( self, *, - page_size: Optional[int] = None, + page_size: Optional[int] = 20, cursor: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -367,10 +361,10 @@ async def list_async( ) -> models.PlatformSkillsListResponse: r"""List skills - List skills available to the authenticated user. + List every custom skill the authenticated caller can access. Built-in skills are excluded: they have no versions, content download, update, or delete, so their identifiers would fail most skill operations. Chat-authored skills shared with the caller without a listed grant are omitted: they stay retrievable by identifier when it is known, but this list does not discover them. - :param page_size: Maximum number of skills to return. + :param page_size: Maximum number of skills to return. Defaults to 20. Maximum is 100. :param cursor: Opaque pagination cursor from a previous response. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -428,9 +422,9 @@ async def list_async( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "3eb65937-03a3-472b-9a00-be713f302b5f", - "introduced": "2026-06-23", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:read"], }, "x-visibility": "Public", }, @@ -540,9 +534,9 @@ def import_( tags=["Skills"], extensions={ "x-codegen-request-body-name": "request", - "x-glean-experimental": { - "id": "9162d790-e101-437d-a9a0-25e4687d150b", - "introduced": "2026-07-28", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:write"], }, "x-visibility": "Public", }, @@ -553,8 +547,15 @@ def import_( ) response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): + if utils.match_response(http_res, "201", "application/json"): return unmarshal_json_response(models.PlatformSkillImportResponse, http_res) + if utils.match_response(http_res, "422", "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformUnauthorizedAgentToolsProblemErrorData, http_res + ) + raise errors.PlatformUnauthorizedAgentToolsProblemError( + response_data, http_res + ) if utils.match_response( http_res, ["400", "401", "403", "408", "409", "413", "429"], @@ -652,9 +653,9 @@ async def import__async( tags=["Skills"], extensions={ "x-codegen-request-body-name": "request", - "x-glean-experimental": { - "id": "9162d790-e101-437d-a9a0-25e4687d150b", - "introduced": "2026-07-28", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:write"], }, "x-visibility": "Public", }, @@ -665,8 +666,15 @@ async def import__async( ) response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): + if utils.match_response(http_res, "201", "application/json"): return unmarshal_json_response(models.PlatformSkillImportResponse, http_res) + if utils.match_response(http_res, "422", "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformUnauthorizedAgentToolsProblemErrorData, http_res + ) + raise errors.PlatformUnauthorizedAgentToolsProblemError( + response_data, http_res + ) if utils.match_response( http_res, ["400", "401", "403", "408", "409", "413", "429"], @@ -772,9 +780,9 @@ def validate( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "0b086fa6-30f8-4279-8d11-10ab0059c14a", - "introduced": "2026-06-24", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:write"], }, "x-visibility": "Public", }, @@ -894,9 +902,9 @@ async def validate_async( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "0b086fa6-30f8-4279-8d11-10ab0059c14a", - "introduced": "2026-06-24", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:write"], }, "x-visibility": "Public", }, @@ -938,24 +946,20 @@ def preview_source( self, *, source_url: str, - stream: Optional[bool] = False, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, - accept_header_override: Optional[PreviewSourceAcceptEnum] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.PlatformSkillsPreviewSourceResponse: + ) -> models.PlatformSkillSourcePreviewResponse: r"""Preview a GitHub skill source Inspect a GitHub URL without persisting a source or any discovered skills. Set stream to true to receive repository scan progress as server-sent events; otherwise the response contains the completed preview. :param source_url: GitHub URL for a skill directory, SKILL.md file, or repository to inspect. - :param stream: Whether to stream repository scan progress using server-sent events. :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 @@ -968,9 +972,8 @@ def preview_source( else: base_url = self._get_url(base_url, url_variables) - request = models.PlatformSkillSourcePreviewRequest( + request = models.PlatformSkillsPreviewSourceRequest( source_url=source_url, - stream=stream, ) req = self._build_request( @@ -983,13 +986,11 @@ def preview_source( request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value=accept_header_override.value - if accept_header_override is not None - else "application/json;q=1, text/event-stream;q=0", + 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.PlatformSkillSourcePreviewRequest + request, False, False, "json", models.PlatformSkillsPreviewSourceRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -1015,9 +1016,9 @@ def preview_source( tags=["Skills"], extensions={ "x-codegen-request-body-name": "request", - "x-glean-experimental": { - "id": "1629009b-244a-400a-bf55-c441dfbc586c", - "introduced": "2026-07-23", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:write"], }, "x-visibility": "Public", }, @@ -1032,8 +1033,13 @@ def preview_source( return unmarshal_json_response( models.PlatformSkillSourcePreviewResponse, http_res ) - if utils.match_response(http_res, "200", "text/event-stream"): - return http_res.text + if utils.match_response(http_res, "422", "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformUnauthorizedAgentToolsProblemErrorData, http_res + ) + raise errors.PlatformUnauthorizedAgentToolsProblemError( + response_data, http_res + ) if utils.match_response( http_res, ["400", "401", "403", "408", "413", "429"], @@ -1061,24 +1067,20 @@ async def preview_source_async( self, *, source_url: str, - stream: Optional[bool] = False, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, - accept_header_override: Optional[PreviewSourceAcceptEnum] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> models.PlatformSkillsPreviewSourceResponse: + ) -> models.PlatformSkillSourcePreviewResponse: r"""Preview a GitHub skill source Inspect a GitHub URL without persisting a source or any discovered skills. Set stream to true to receive repository scan progress as server-sent events; otherwise the response contains the completed preview. :param source_url: GitHub URL for a skill directory, SKILL.md file, or repository to inspect. - :param stream: Whether to stream repository scan progress using server-sent events. :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 @@ -1091,9 +1093,8 @@ async def preview_source_async( else: base_url = self._get_url(base_url, url_variables) - request = models.PlatformSkillSourcePreviewRequest( + request = models.PlatformSkillsPreviewSourceRequest( source_url=source_url, - stream=stream, ) req = self._build_request_async( @@ -1106,13 +1107,11 @@ async def preview_source_async( request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value=accept_header_override.value - if accept_header_override is not None - else "application/json;q=1, text/event-stream;q=0", + 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.PlatformSkillSourcePreviewRequest + request, False, False, "json", models.PlatformSkillsPreviewSourceRequest ), allow_empty_value=None, timeout_ms=timeout_ms, @@ -1138,9 +1137,9 @@ async def preview_source_async( tags=["Skills"], extensions={ "x-codegen-request-body-name": "request", - "x-glean-experimental": { - "id": "1629009b-244a-400a-bf55-c441dfbc586c", - "introduced": "2026-07-23", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:write"], }, "x-visibility": "Public", }, @@ -1155,8 +1154,13 @@ async def preview_source_async( return unmarshal_json_response( models.PlatformSkillSourcePreviewResponse, http_res ) - if utils.match_response(http_res, "200", "text/event-stream"): - return http_res.text + if utils.match_response(http_res, "422", "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformUnauthorizedAgentToolsProblemErrorData, http_res + ) + raise errors.PlatformUnauthorizedAgentToolsProblemError( + response_data, http_res + ) if utils.match_response( http_res, ["400", "401", "403", "408", "413", "429"], @@ -1192,11 +1196,12 @@ def update( ) -> models.PlatformSkillUpdateResponse: r"""Update skill - Update mutable metadata for a skill. V1 supports enabling or disabling a skill without changing its content. + Enable or disable the skill for the authenticated caller without changing its content. The owner's update sets the skill's stored status. Any other caller's update applies only to that caller. :param skill_id: Glean skill ID. - :param status: New status for the skill. + :param status: Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting. + :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 @@ -1262,9 +1267,9 @@ def update( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "262e1f6b-6c2d-4d6d-943b-fc251d2fb38b", - "introduced": "2026-07-20", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:write"], }, "x-visibility": "Public", }, @@ -1312,11 +1317,12 @@ async def update_async( ) -> models.PlatformSkillUpdateResponse: r"""Update skill - Update mutable metadata for a skill. V1 supports enabling or disabling a skill without changing its content. + Enable or disable the skill for the authenticated caller without changing its content. The owner's update sets the skill's stored status. Any other caller's update applies only to that caller. :param skill_id: Glean skill ID. - :param status: New status for the skill. + :param status: Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting. + :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 @@ -1382,9 +1388,9 @@ async def update_async( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "262e1f6b-6c2d-4d6d-943b-fc251d2fb38b", - "introduced": "2026-07-20", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:write"], }, "x-visibility": "Public", }, @@ -1490,9 +1496,9 @@ def delete( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "c4351fd0-4d28-4ad4-ab93-587ca4778173", - "introduced": "2026-07-31", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:write"], }, "x-visibility": "Public", }, @@ -1598,9 +1604,9 @@ async def delete_async( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "c4351fd0-4d28-4ad4-ab93-587ca4778173", - "introduced": "2026-07-31", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:write"], }, "x-visibility": "Public", }, @@ -1706,9 +1712,9 @@ def retrieve( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "8f8d1c92-a484-4769-9903-200613dc8a72", - "introduced": "2026-06-23", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:read"], }, "x-visibility": "Public", }, @@ -1814,9 +1820,9 @@ async def retrieve_async( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "8f8d1c92-a484-4769-9903-200613dc8a72", - "introduced": "2026-06-23", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:read"], }, "x-visibility": "Public", }, @@ -1922,9 +1928,9 @@ def retrieve_content( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "fd6908d8-f230-4cd5-bf45-f71e69266b1d", - "introduced": "2026-06-24", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:read"], }, "x-visibility": "Public", }, @@ -2040,9 +2046,9 @@ async def retrieve_content_async( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "fd6908d8-f230-4cd5-bf45-f71e69266b1d", - "introduced": "2026-06-24", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:read"], }, "x-visibility": "Public", }, @@ -2158,9 +2164,9 @@ def sync( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "568aa3f8-2af8-449c-9e4f-818ed4b877ef", - "introduced": "2026-08-03", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:write"], }, "x-visibility": "Public", }, @@ -2173,9 +2179,16 @@ def sync( response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.PlatformSkillSyncResponse, http_res) + if utils.match_response(http_res, "422", "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformUnauthorizedAgentToolsProblemErrorData, http_res + ) + raise errors.PlatformUnauthorizedAgentToolsProblemError( + response_data, http_res + ) if utils.match_response( http_res, - ["400", "401", "403", "404", "408", "409", "413", "429"], + ["400", "401", "403", "404", "408", "409", "429"], "application/problem+json", ): response_data = unmarshal_json_response( @@ -2266,9 +2279,9 @@ async def sync_async( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "568aa3f8-2af8-449c-9e4f-818ed4b877ef", - "introduced": "2026-08-03", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:write"], }, "x-visibility": "Public", }, @@ -2281,9 +2294,16 @@ async def sync_async( response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return unmarshal_json_response(models.PlatformSkillSyncResponse, http_res) + if utils.match_response(http_res, "422", "application/problem+json"): + response_data = unmarshal_json_response( + errors.PlatformUnauthorizedAgentToolsProblemErrorData, http_res + ) + raise errors.PlatformUnauthorizedAgentToolsProblemError( + response_data, http_res + ) if utils.match_response( http_res, - ["400", "401", "403", "404", "408", "409", "413", "429"], + ["400", "401", "403", "404", "408", "409", "429"], "application/problem+json", ): response_data = unmarshal_json_response( @@ -2319,7 +2339,7 @@ def create_version( ) -> models.PlatformSkillVersionCreateResponse: r"""Create skill version - Create a new immutable version for an existing caller-managed skill from an uploaded SKILL.md, .zip, or .skill bundle. + Create a new immutable version for an existing caller-managed skill from an uploaded SKILL.md, .zip, or .skill bundle. A create-version over a GitHub-imported skill returns 409, and the caller syncs the existing skill instead. :param skill_id: Glean skill ID. @@ -2391,9 +2411,9 @@ def create_version( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "0d5e48e2-7a41-4d54-b3aa-5026f0dd65df", - "introduced": "2026-06-24", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:write"], }, "x-visibility": "Public", }, @@ -2404,7 +2424,7 @@ def create_version( ) response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): + if utils.match_response(http_res, "201", "application/json"): return unmarshal_json_response( models.PlatformSkillVersionCreateResponse, http_res ) @@ -2446,7 +2466,7 @@ async def create_version_async( ) -> models.PlatformSkillVersionCreateResponse: r"""Create skill version - Create a new immutable version for an existing caller-managed skill from an uploaded SKILL.md, .zip, or .skill bundle. + Create a new immutable version for an existing caller-managed skill from an uploaded SKILL.md, .zip, or .skill bundle. A create-version over a GitHub-imported skill returns 409, and the caller syncs the existing skill instead. :param skill_id: Glean skill ID. @@ -2518,9 +2538,9 @@ async def create_version_async( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "0d5e48e2-7a41-4d54-b3aa-5026f0dd65df", - "introduced": "2026-06-24", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:write"], }, "x-visibility": "Public", }, @@ -2531,7 +2551,7 @@ async def create_version_async( ) response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): + if utils.match_response(http_res, "201", "application/json"): return unmarshal_json_response( models.PlatformSkillVersionCreateResponse, http_res ) @@ -2562,7 +2582,7 @@ def list_versions( self, *, skill_id: str, - page_size: Optional[int] = None, + page_size: Optional[int] = 20, cursor: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -2575,7 +2595,7 @@ def list_versions( :param skill_id: Glean skill ID. - :param page_size: Maximum number of versions to return. + :param page_size: Maximum number of versions to return. Defaults to 20. Maximum is 100. :param cursor: Opaque pagination cursor from a previous response. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -2634,9 +2654,9 @@ def list_versions( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "9efbb8a3-d546-4304-a653-09bb427e3681", - "introduced": "2026-06-24", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:read"], }, "x-visibility": "Public", }, @@ -2678,7 +2698,7 @@ async def list_versions_async( self, *, skill_id: str, - page_size: Optional[int] = None, + page_size: Optional[int] = 20, cursor: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, @@ -2691,7 +2711,7 @@ async def list_versions_async( :param skill_id: Glean skill ID. - :param page_size: Maximum number of versions to return. + :param page_size: Maximum number of versions to return. Defaults to 20. Maximum is 100. :param cursor: Opaque pagination cursor from a previous response. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -2750,9 +2770,9 @@ async def list_versions_async( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "9efbb8a3-d546-4304-a653-09bb427e3681", - "introduced": "2026-06-24", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:read"], }, "x-visibility": "Public", }, @@ -2863,9 +2883,9 @@ def retrieve_version( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "d70986b1-ad80-48dd-8e52-f294e7251dda", - "introduced": "2026-06-24", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:read"], }, "x-visibility": "Public", }, @@ -2976,9 +2996,9 @@ async def retrieve_version_async( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "d70986b1-ad80-48dd-8e52-f294e7251dda", - "introduced": "2026-06-24", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:read"], }, "x-visibility": "Public", }, @@ -3089,9 +3109,9 @@ def retrieve_version_content( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "70c85692-7042-403a-a3a5-5b315576432a", - "introduced": "2026-06-24", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:read"], }, "x-visibility": "Public", }, @@ -3210,9 +3230,9 @@ async def retrieve_version_content_async( ), tags=["Skills"], extensions={ - "x-glean-experimental": { - "id": "70c85692-7042-403a-a3a5-5b315576432a", - "introduced": "2026-06-24", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:read"], }, "x-visibility": "Public", }, @@ -3257,3 +3277,291 @@ async def retrieve_version_content_async( http_res_text = await utils.stream_to_text_async(http_res) raise errors.GleanError("Unexpected response received", http_res, http_res_text) + + def preview_source_stream( + self, + *, + source_url: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> eventstreaming.EventStream[ + models.PlatformSkillSourcePreviewStreamEventServerSentEvent + ]: + r"""Preview a GitHub skill source as events + + SDK-only logical operation. HTTP clients must call the base path; the URL fragment is not sent. Inspect a GitHub URL as server-sent events. HTTP clients request this mode by setting `stream` to true in the JSON body. + + + :param source_url: GitHub URL for a skill directory, SKILL.md file, or repository to inspect. + :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.PlatformSkillsPreviewSourceStreamRequest( + source_url=source_url, + ) + + req = self._build_request( + method="POST", + path="/api/skills/sources/preview#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.PlatformSkillsPreviewSourceStreamRequest, + ), + 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="platform-skills-preview-source-stream", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-codegen-request-body-name": "request", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:write"], + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=True, + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "text/event-stream"): + return eventstreaming.EventStream( + http_res, + lambda raw: unmarshal_json_response( + models.PlatformSkillSourcePreviewStreamEventServerSentEvent, + http_res, + raw, + ), + client_ref=self, + ) + if utils.match_response(http_res, "422", "application/problem+json"): + http_res_text = utils.stream_to_text(http_res) + response_data = unmarshal_json_response( + errors.PlatformUnauthorizedAgentToolsProblemErrorData, + http_res, + http_res_text, + ) + raise errors.PlatformUnauthorizedAgentToolsProblemError( + response_data, http_res, http_res_text + ) + if utils.match_response( + http_res, + ["400", "401", "403", "408", "413", "429"], + "application/problem+json", + ): + http_res_text = utils.stream_to_text(http_res) + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res, http_res_text + ) + raise errors.PlatformProblemDetailError( + response_data, http_res, http_res_text + ) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + http_res_text = utils.stream_to_text(http_res) + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res, http_res_text + ) + raise errors.PlatformProblemDetailError( + response_data, http_res, http_res_text + ) + 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) + + http_res_text = utils.stream_to_text(http_res) + raise errors.GleanError("Unexpected response received", http_res, http_res_text) + + async def preview_source_stream_async( + self, + *, + source_url: str, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> eventstreaming.EventStreamAsync[ + models.PlatformSkillSourcePreviewStreamEventServerSentEvent + ]: + r"""Preview a GitHub skill source as events + + SDK-only logical operation. HTTP clients must call the base path; the URL fragment is not sent. Inspect a GitHub URL as server-sent events. HTTP clients request this mode by setting `stream` to true in the JSON body. + + + :param source_url: GitHub URL for a skill directory, SKILL.md file, or repository to inspect. + :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.PlatformSkillsPreviewSourceStreamRequest( + source_url=source_url, + ) + + req = self._build_request_async( + method="POST", + path="/api/skills/sources/preview#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.PlatformSkillsPreviewSourceStreamRequest, + ), + 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="platform-skills-preview-source-stream", + oauth2_scopes=None, + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + tags=["Skills"], + extensions={ + "x-codegen-request-body-name": "request", + "x-glean-scopes": { + "legacy": ["SKILLS"], + "platform": ["skills:write"], + }, + "x-visibility": "Public", + }, + ), + request=req, + is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c), + stream=True, + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "text/event-stream"): + return eventstreaming.EventStreamAsync( + http_res, + lambda raw: unmarshal_json_response( + models.PlatformSkillSourcePreviewStreamEventServerSentEvent, + http_res, + raw, + ), + client_ref=self, + ) + if utils.match_response(http_res, "422", "application/problem+json"): + http_res_text = await utils.stream_to_text_async(http_res) + response_data = unmarshal_json_response( + errors.PlatformUnauthorizedAgentToolsProblemErrorData, + http_res, + http_res_text, + ) + raise errors.PlatformUnauthorizedAgentToolsProblemError( + response_data, http_res, http_res_text + ) + if utils.match_response( + http_res, + ["400", "401", "403", "408", "413", "429"], + "application/problem+json", + ): + http_res_text = await utils.stream_to_text_async(http_res) + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res, http_res_text + ) + raise errors.PlatformProblemDetailError( + response_data, http_res, http_res_text + ) + if utils.match_response(http_res, ["500", "503"], "application/problem+json"): + http_res_text = await utils.stream_to_text_async(http_res) + response_data = unmarshal_json_response( + errors.PlatformProblemDetailErrorData, http_res, http_res_text + ) + raise errors.PlatformProblemDetailError( + response_data, http_res, http_res_text + ) + 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) + + 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/triggers.py b/src/glean/api_client/triggers.py index d0546336..3bbd7579 100644 --- a/src/glean/api_client/triggers.py +++ b/src/glean/api_client/triggers.py @@ -99,6 +99,10 @@ def create( "id": "eb175f18-74e6-4c9c-ba02-23bcc9018fc9", "introduced": "2026-07-06", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:write"], + }, "x-visibility": "Public", }, ), @@ -224,6 +228,10 @@ async def create_async( "id": "eb175f18-74e6-4c9c-ba02-23bcc9018fc9", "introduced": "2026-07-06", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:write"], + }, "x-visibility": "Public", }, ), @@ -337,6 +345,10 @@ def list( "id": "e3554987-e043-4561-889a-a1117b1bce06", "introduced": "2026-07-06", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:read"], + }, "x-visibility": "Public", }, ), @@ -446,6 +458,10 @@ async def list_async( "id": "e3554987-e043-4561-889a-a1117b1bce06", "introduced": "2026-07-06", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:read"], + }, "x-visibility": "Public", }, ), @@ -552,6 +568,10 @@ def get( "id": "46de62cb-ba31-4f71-9646-649c1d604816", "introduced": "2026-07-06", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:read"], + }, "x-visibility": "Public", }, ), @@ -660,6 +680,10 @@ async def get_async( "id": "46de62cb-ba31-4f71-9646-649c1d604816", "introduced": "2026-07-06", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:read"], + }, "x-visibility": "Public", }, ), @@ -796,6 +820,10 @@ def update( "id": "3eb4c709-bd5c-4019-b913-0db36c766350", "introduced": "2026-07-06", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:write"], + }, "x-visibility": "Public", }, ), @@ -932,6 +960,10 @@ async def update_async( "id": "3eb4c709-bd5c-4019-b913-0db36c766350", "introduced": "2026-07-06", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:write"], + }, "x-visibility": "Public", }, ), @@ -1040,6 +1072,10 @@ def delete( "id": "e6564ed7-8b4b-4708-918b-eed97110859f", "introduced": "2026-07-06", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:write"], + }, "x-visibility": "Public", }, ), @@ -1148,6 +1184,10 @@ async def delete_async( "id": "e6564ed7-8b4b-4708-918b-eed97110859f", "introduced": "2026-07-06", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:write"], + }, "x-visibility": "Public", }, ), @@ -1270,6 +1310,10 @@ def search_events( "id": "c734a377-3dec-4ee2-9ec5-3848a8384f03", "introduced": "2026-08-07", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:read"], + }, "x-visibility": "Public", }, ), @@ -1394,6 +1438,10 @@ async def search_events_async( "id": "c734a377-3dec-4ee2-9ec5-3848a8384f03", "introduced": "2026-08-07", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:read"], + }, "x-visibility": "Public", }, ), @@ -1510,6 +1558,10 @@ def list_presets( "id": "f5b16196-0d4c-42f0-89bf-40313398728e", "introduced": "2026-07-22", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:read"], + }, "x-visibility": "Public", }, ), @@ -1624,6 +1676,10 @@ async def list_presets_async( "id": "f5b16196-0d4c-42f0-89bf-40313398728e", "introduced": "2026-07-22", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:read"], + }, "x-visibility": "Public", }, ), @@ -1732,6 +1788,10 @@ def get_preset( "id": "5277167d-909b-4eee-95d1-8958b07016bb", "introduced": "2026-07-22", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:read"], + }, "x-visibility": "Public", }, ), @@ -1842,6 +1902,10 @@ async def get_preset_async( "id": "5277167d-909b-4eee-95d1-8958b07016bb", "introduced": "2026-07-22", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:read"], + }, "x-visibility": "Public", }, ), @@ -1959,6 +2023,10 @@ def list_preset_input_values( "id": "24c5675d-a57a-48cb-9d71-3dece296f28c", "introduced": "2026-08-06", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:read"], + }, "x-visibility": "Public", }, ), @@ -2076,6 +2144,10 @@ async def list_preset_input_values_async( "id": "24c5675d-a57a-48cb-9d71-3dece296f28c", "introduced": "2026-08-06", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:read"], + }, "x-visibility": "Public", }, ), @@ -2204,6 +2276,10 @@ def search_preset_events( "id": "a48efd80-78d6-46de-9f23-5b8c63ecd157", "introduced": "2026-08-12", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:read"], + }, "x-visibility": "Public", }, ), @@ -2332,6 +2408,10 @@ async def search_preset_events_async( "id": "a48efd80-78d6-46de-9f23-5b8c63ecd157", "introduced": "2026-08-12", }, + "x-glean-scopes": { + "legacy": ["TRIGGERS"], + "platform": ["triggers:read"], + }, "x-visibility": "Public", }, ), diff --git a/src/glean/api_client/utils/datetimes.py b/src/glean/api_client/utils/datetimes.py index adad2476..688c29a5 100644 --- a/src/glean/api_client/utils/datetimes.py +++ b/src/glean/api_client/utils/datetimes.py @@ -35,3 +35,7 @@ def parse_duration(duration_string: str) -> timedelta: pydantic, which is already a runtime dependency of the SDK. """ return _DURATION_ADAPTER.validate_python(duration_string) + + +def format_duration(duration: timedelta) -> str: + return _DURATION_ADAPTER.dump_python(duration, mode="json") diff --git a/src/glean/api_client/utils/url.py b/src/glean/api_client/utils/url.py index c78ccbae..8eeaa7b0 100644 --- a/src/glean/api_client/utils/url.py +++ b/src/glean/api_client/utils/url.py @@ -1,6 +1,5 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" -from decimal import Decimal from typing import ( Any, Dict, @@ -105,7 +104,7 @@ def _populate_path_params( else: pp_vals.append(f"{pp_key},{_val_to_string(param[pp_key])}") path_param_values[f_name] = ",".join(pp_vals) - elif not isinstance(param, (str, int, float, complex, bool, Decimal)): + elif isinstance(param, BaseModel): param_fields: Dict[str, FieldInfo] = param.__class__.model_fields for name in param_fields: param_field = param_fields[name] @@ -132,7 +131,7 @@ def _populate_path_params( f"{param_name},{_val_to_string(param_field_val)}" ) path_param_values[f_name] = ",".join(pp_vals) - elif _is_set(param): + else: path_param_values[f_name] = _val_to_string(param) return globals_already_populated diff --git a/src/glean/api_client/utils/values.py b/src/glean/api_client/utils/values.py index ac217f47..094755b7 100644 --- a/src/glean/api_client/utils/values.py +++ b/src/glean/api_client/utils/values.py @@ -1,6 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" -from datetime import datetime +from datetime import datetime, timedelta from enum import Enum from email.message import Message from functools import partial @@ -13,6 +13,7 @@ from ..types.basemodel import Unset +from .datetimes import format_duration from .serializers import marshal_json from .metadata import ParamMetadata, find_field_metadata @@ -117,6 +118,8 @@ def _val_to_string(val) -> str: return str(val).lower() if isinstance(val, datetime): return str(val.isoformat().replace("+00:00", "Z")) + if isinstance(val, timedelta): + return format_duration(val) if isinstance(val, Enum): return str(val.value) diff --git a/tests/mockserver/internal/handler/pathgetapiskills.go b/tests/mockserver/internal/handler/pathgetapiskills.go index 7baa51e7..7eb2a3a1 100644 --- a/tests/mockserver/internal/handler/pathgetapiskills.go +++ b/tests/mockserver/internal/handler/pathgetapiskills.go @@ -47,7 +47,7 @@ func testPlatformSkillsListPlatformSkillsList0(w http.ResponseWriter, req *http. return } var respBody *components.PlatformSkillsListResponse = &components.PlatformSkillsListResponse{ - Skills: []components.PlatformSkill{}, + Results: []components.PlatformSkill{}, HasMore: true, NextCursor: types.String(""), RequestID: "", diff --git a/tests/mockserver/internal/handler/pathgetapiskillsskillid.go b/tests/mockserver/internal/handler/pathgetapiskillsskillid.go index 4f097d84..7e0b98d7 100644 --- a/tests/mockserver/internal/handler/pathgetapiskillsskillid.go +++ b/tests/mockserver/internal/handler/pathgetapiskillsskillid.go @@ -48,7 +48,7 @@ func testPlatformSkillsGetPlatformSkillsGet0(w http.ResponseWriter, req *http.Re } var respBody *components.PlatformSkillGetResponse = &components.PlatformSkillGetResponse{ Skill: components.PlatformSkill{ - ID: "", + SkillID: "", DisplayName: "Chad_Herzog", Description: "whenever up aha controvert", LatestVersion: 151495, diff --git a/tests/mockserver/internal/handler/pathgetapiskillsskillidversions.go b/tests/mockserver/internal/handler/pathgetapiskillsskillidversions.go index 878e7567..41840fae 100644 --- a/tests/mockserver/internal/handler/pathgetapiskillsskillidversions.go +++ b/tests/mockserver/internal/handler/pathgetapiskillsskillidversions.go @@ -47,7 +47,7 @@ func testPlatformSkillsListVersionsPlatformSkillsListVersions0(w http.ResponseWr return } var respBody *components.PlatformSkillVersionsListResponse = &components.PlatformSkillVersionsListResponse{ - Versions: []components.PlatformSkillVersion{}, + Results: []components.PlatformSkillVersion{}, HasMore: false, NextCursor: types.String(""), RequestID: "", diff --git a/tests/mockserver/internal/handler/pathpatchapiskillsskillid.go b/tests/mockserver/internal/handler/pathpatchapiskillsskillid.go index 2b4d9db5..abc15386 100644 --- a/tests/mockserver/internal/handler/pathpatchapiskillsskillid.go +++ b/tests/mockserver/internal/handler/pathpatchapiskillsskillid.go @@ -53,7 +53,7 @@ func testPlatformSkillsUpdatePlatformSkillsUpdate0(w http.ResponseWriter, req *h } var respBody *components.PlatformSkillUpdateResponse = &components.PlatformSkillUpdateResponse{ Skill: components.PlatformSkill{ - ID: "", + SkillID: "", DisplayName: "Afton14", Description: "taut netsuke duh sonata boastfully elegantly management come", LatestVersion: 425795, diff --git a/tests/mockserver/internal/handler/pathpostapiskills.go b/tests/mockserver/internal/handler/pathpostapiskills.go index dfe54aaf..d6998289 100644 --- a/tests/mockserver/internal/handler/pathpostapiskills.go +++ b/tests/mockserver/internal/handler/pathpostapiskills.go @@ -53,7 +53,7 @@ func testPlatformSkillsCreatePlatformSkillsCreate0(w http.ResponseWriter, req *h } var respBody *components.PlatformSkillCreateResponse = &components.PlatformSkillCreateResponse{ Skill: components.PlatformSkill{ - ID: "", + SkillID: "", DisplayName: "Merl18", Description: "rural ugh unexpectedly excepting livid", LatestVersion: 504149, @@ -63,8 +63,8 @@ func testPlatformSkillsCreatePlatformSkillsCreate0(w http.ResponseWriter, req *h Owner: components.PlatformPersonReference{ Name: "", }, - CreatedAt: types.MustTimeFromString("2025-01-04T03:16:16.951Z"), - UpdatedAt: types.MustTimeFromString("2025-09-10T16:05:46.046Z"), + CreatedAt: types.MustTimeFromString("2025-09-10T16:05:46.046Z"), + UpdatedAt: types.MustTimeFromString("2025-08-13T23:05:45.737Z"), }, RequestID: "", } @@ -79,6 +79,6 @@ func testPlatformSkillsCreatePlatformSkillsCreate0(w http.ResponseWriter, req *h return } w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusOK) + w.WriteHeader(http.StatusCreated) _, _ = w.Write(respBodyBytes) } diff --git a/tests/mockserver/internal/handler/pathpostapiskillsimport.go b/tests/mockserver/internal/handler/pathpostapiskillsimport.go index cdcc73da..6c82be5d 100644 --- a/tests/mockserver/internal/handler/pathpostapiskillsimport.go +++ b/tests/mockserver/internal/handler/pathpostapiskillsimport.go @@ -65,6 +65,6 @@ func testPlatformSkillsImportPlatformSkillsImport0(w http.ResponseWriter, req *h return } w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusOK) + w.WriteHeader(http.StatusCreated) _, _ = w.Write(respBodyBytes) } diff --git a/tests/mockserver/internal/handler/pathpostapiskillsskillidsync.go b/tests/mockserver/internal/handler/pathpostapiskillsskillidsync.go index 0cab544f..c54314fa 100644 --- a/tests/mockserver/internal/handler/pathpostapiskillsskillidsync.go +++ b/tests/mockserver/internal/handler/pathpostapiskillsskillidsync.go @@ -46,10 +46,9 @@ func testPlatformSkillsSyncPlatformSkillsSync0(w http.ResponseWriter, req *http. return } var respBody *components.PlatformSkillSyncResponse = &components.PlatformSkillSyncResponse{ - SyncStatus: components.PlatformSkillSyncResultStatusUpToDate, - CommitSha: "", - Updated: false, - RequestID: "", + CommitSha: "", + IsUpdated: false, + RequestID: "", } respBodyBytes, err := utils.MarshalJSON(respBody, "", true) diff --git a/tests/mockserver/internal/handler/pathpostapiskillsskillidversions.go b/tests/mockserver/internal/handler/pathpostapiskillsskillidversions.go index 1f3d1fde..664245fc 100644 --- a/tests/mockserver/internal/handler/pathpostapiskillsskillidversions.go +++ b/tests/mockserver/internal/handler/pathpostapiskillsskillidversions.go @@ -76,6 +76,6 @@ func testPlatformSkillsCreateVersionPlatformSkillsCreateVersion0(w http.Response return } w.Header().Set("Content-Type", "application/json") - w.WriteHeader(http.StatusOK) + w.WriteHeader(http.StatusCreated) _, _ = w.Write(respBodyBytes) } diff --git a/tests/mockserver/internal/handler/pathpostapiskillssourcespreview.go b/tests/mockserver/internal/handler/pathpostapiskillssourcespreview.go index 11e0efca..f8a79c8f 100644 --- a/tests/mockserver/internal/handler/pathpostapiskillssourcespreview.go +++ b/tests/mockserver/internal/handler/pathpostapiskillssourcespreview.go @@ -40,7 +40,7 @@ func testPlatformSkillsPreviewSourcePlatformSkillsPreviewSource0(w http.Response http.Error(w, err.Error(), http.StatusBadRequest) return } - if err := assert.AcceptHeader(req, []string{"application/json;q=1", "text/event-stream;q=0"}); err != nil { + 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 diff --git a/tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go b/tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go index 75fb8eb7..469bd6e6 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1createcollection.go @@ -56,14 +56,14 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ operations.ResponseBody2{ Collection: &components.Collection{ Name: "", - Description: "motionless whenever paintwork import over cuckoo", + Description: "whole busily jive hawk gee basic minus hence", AddedRoles: []components.UserRoleSpecification{ components.UserRoleSpecification{ Person: &components.Person{ Name: "George Clooney", ObfuscatedID: "abc123", }, - Role: components.UserRoleOwner, + Role: components.UserRoleAnswerModerator, }, }, RemovedRoles: []components.UserRoleSpecification{ @@ -90,7 +90,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ }, }, }, - ID: 363711, + ID: 158969, Creator: &components.Person{ Name: "George Clooney", ObfuscatedID: "abc123", @@ -101,7 +101,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ }, Items: []components.CollectionItem{ components.CollectionItem{ - CollectionID: 570197, + CollectionID: 110375, CreatedBy: &components.Person{ Name: "George Clooney", ObfuscatedID: "abc123", @@ -278,13 +278,13 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ Name: "George Clooney", ObfuscatedID: "abc123", }, - Role: components.UserRoleAnswerModerator, + Role: components.UserRoleEditor, }, }, }, Collection: &components.Collection{ Name: "", - Description: "athwart skateboard newsstand farm bourgeoisie ah how elliptical aha well-to-do", + Description: "wedge colorfully orientate rally", AudienceFilters: []components.FacetFilter{ components.FacetFilter{ FieldName: types.String("type"), @@ -300,7 +300,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ }, }, }, - ID: 643990, + ID: 131797, Creator: &components.Person{ Name: "George Clooney", ObfuscatedID: "abc123", @@ -312,7 +312,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ Children: []components.Collection{ components.Collection{ Name: "", - Description: "woot purse salty even as advanced", + Description: "outside yippee sidetrack mature regularly mouser inject worth", AudienceFilters: []components.FacetFilter{ components.FacetFilter{ FieldName: types.String("type"), @@ -328,7 +328,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ }, }, }, - ID: 359978, + ID: 149448, Creator: &components.Person{ Name: "George Clooney", ObfuscatedID: "abc123", @@ -340,7 +340,7 @@ func testCreatecollectionCreatecollection0(w http.ResponseWriter, req *http.Requ }, }, }, - ItemType: components.CollectionItemItemTypeURL, + ItemType: components.CollectionItemItemTypeCollection, }, }, }, diff --git a/tests/mockserver/internal/sdk/models/components/artifacttype.go b/tests/mockserver/internal/sdk/models/components/artifacttype.go new file mode 100644 index 00000000..c07eb6aa --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/artifacttype.go @@ -0,0 +1,47 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" +) + +// ArtifactType - Type of the Artifact +type ArtifactType string + +const ( + ArtifactTypePaper ArtifactType = "PAPER" + ArtifactTypeAgent ArtifactType = "AGENT" + ArtifactTypeMessage ArtifactType = "MESSAGE" + ArtifactTypeEmail ArtifactType = "EMAIL" + ArtifactTypeHTMLCode ArtifactType = "HTML_CODE" + ArtifactTypeSlide ArtifactType = "SLIDE" +) + +func (e ArtifactType) ToPointer() *ArtifactType { + return &e +} +func (e *ArtifactType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "PAPER": + fallthrough + case "AGENT": + fallthrough + case "MESSAGE": + fallthrough + case "EMAIL": + fallthrough + case "HTML_CODE": + fallthrough + case "SLIDE": + *e = ArtifactType(v) + return nil + default: + return fmt.Errorf("invalid value for ArtifactType: %v", v) + } +} diff --git a/tests/mockserver/internal/sdk/models/components/autocompleterequest.go b/tests/mockserver/internal/sdk/models/components/autocompleterequest.go index 2b02c414..d3de9d57 100644 --- a/tests/mockserver/internal/sdk/models/components/autocompleterequest.go +++ b/tests/mockserver/internal/sdk/models/components/autocompleterequest.go @@ -13,12 +13,12 @@ const ( AutocompleteRequestResultTypeAdditionalDocument AutocompleteRequestResultType = "ADDITIONAL_DOCUMENT" AutocompleteRequestResultTypeApp AutocompleteRequestResultType = "APP" AutocompleteRequestResultTypeBrowserHistory AutocompleteRequestResultType = "BROWSER_HISTORY" + AutocompleteRequestResultTypeChatHistory AutocompleteRequestResultType = "CHAT_HISTORY" AutocompleteRequestResultTypeDatasource AutocompleteRequestResultType = "DATASOURCE" AutocompleteRequestResultTypeDocument AutocompleteRequestResultType = "DOCUMENT" AutocompleteRequestResultTypeEntity AutocompleteRequestResultType = "ENTITY" AutocompleteRequestResultTypeGolink AutocompleteRequestResultType = "GOLINK" AutocompleteRequestResultTypeHistory AutocompleteRequestResultType = "HISTORY" - AutocompleteRequestResultTypeChatHistory AutocompleteRequestResultType = "CHAT_HISTORY" AutocompleteRequestResultTypeNewChat AutocompleteRequestResultType = "NEW_CHAT" AutocompleteRequestResultTypeOperator AutocompleteRequestResultType = "OPERATOR" AutocompleteRequestResultTypeOperatorValue AutocompleteRequestResultType = "OPERATOR_VALUE" @@ -41,6 +41,8 @@ func (e *AutocompleteRequestResultType) UnmarshalJSON(data []byte) error { fallthrough case "BROWSER_HISTORY": fallthrough + case "CHAT_HISTORY": + fallthrough case "DATASOURCE": fallthrough case "DOCUMENT": @@ -51,8 +53,6 @@ func (e *AutocompleteRequestResultType) UnmarshalJSON(data []byte) error { fallthrough case "HISTORY": fallthrough - case "CHAT_HISTORY": - fallthrough case "NEW_CHAT": fallthrough case "OPERATOR": diff --git a/tests/mockserver/internal/sdk/models/components/autocompleteresult.go b/tests/mockserver/internal/sdk/models/components/autocompleteresult.go index 01edf626..ea673e0f 100644 --- a/tests/mockserver/internal/sdk/models/components/autocompleteresult.go +++ b/tests/mockserver/internal/sdk/models/components/autocompleteresult.go @@ -83,6 +83,8 @@ type AutocompleteResult struct { URL *string `json:"url,omitempty"` // A single object that can support any object in the work graph. Only a single object will be populated. StructuredResult *StructuredResult `json:"structuredResult,omitempty"` + // An action to perform on user-generated content. This may be accompanied by `text` on the ChatMessageFragment, which acts as the display name content of the pill. + UgcAction *UgcActionUnion `json:"ugcAction,omitempty"` // A token to be passed in /feedback events associated with this autocomplete result. TrackingToken *string `json:"trackingToken,omitempty"` // Subsections of the result string to which some special formatting should be applied (eg. bold) @@ -152,6 +154,13 @@ func (o *AutocompleteResult) GetStructuredResult() *StructuredResult { return o.StructuredResult } +func (o *AutocompleteResult) GetUgcAction() *UgcActionUnion { + if o == nil { + return nil + } + return o.UgcAction +} + func (o *AutocompleteResult) GetTrackingToken() *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 b8269ceb..73c2c222 100644 --- a/tests/mockserver/internal/sdk/models/components/chatsuggestion.go +++ b/tests/mockserver/internal/sdk/models/components/chatsuggestion.go @@ -9,6 +9,8 @@ type ChatSuggestion struct { Cta *string `json:"cta,omitempty"` // Targeted Glean Chat feature for the suggestion. Feature *string `json:"feature,omitempty"` + // Type of the Artifact + ArtifactType *ArtifactType `json:"artifactType,omitempty"` // Document IDs that grounded the suggestion. SourceDocumentIds []string `json:"sourceDocumentIds,omitempty"` } @@ -34,6 +36,13 @@ func (o *ChatSuggestion) GetFeature() *string { return o.Feature } +func (o *ChatSuggestion) GetArtifactType() *ArtifactType { + if o == nil { + return nil + } + return o.ArtifactType +} + func (o *ChatSuggestion) GetSourceDocumentIds() []string { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/feedentry.go b/tests/mockserver/internal/sdk/models/components/feedentry.go index 44f5dfe7..44e6f90d 100644 --- a/tests/mockserver/internal/sdk/models/components/feedentry.go +++ b/tests/mockserver/internal/sdk/models/components/feedentry.go @@ -124,6 +124,8 @@ const ( JustificationTypeShareArtifact JustificationType = "SHARE_ARTIFACT" JustificationTypeCreateAgent JustificationType = "CREATE_AGENT" JustificationTypeManagerInvite JustificationType = "MANAGER_INVITE" + JustificationTypeOnboardingAuthorization JustificationType = "ONBOARDING_AUTHORIZATION" + JustificationTypeChatReminder JustificationType = "CHAT_REMINDER" ) func (e JustificationType) ToPointer() *JustificationType { @@ -270,6 +272,10 @@ func (e *JustificationType) UnmarshalJSON(data []byte) error { case "CREATE_AGENT": fallthrough case "MANAGER_INVITE": + fallthrough + case "ONBOARDING_AUTHORIZATION": + fallthrough + case "CHAT_REMINDER": *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 9489bdd5..b89f4ded 100644 --- a/tests/mockserver/internal/sdk/models/components/feedrequest.go +++ b/tests/mockserver/internal/sdk/models/components/feedrequest.go @@ -64,6 +64,8 @@ const ( FeedRequestCategoryShareArtifact FeedRequestCategory = "SHARE_ARTIFACT" FeedRequestCategoryCreateAgent FeedRequestCategory = "CREATE_AGENT" FeedRequestCategoryManagerInvite FeedRequestCategory = "MANAGER_INVITE" + FeedRequestCategoryOnboardingAuthorization FeedRequestCategory = "ONBOARDING_AUTHORIZATION" + FeedRequestCategoryChatReminder FeedRequestCategory = "CHAT_REMINDER" ) func (e FeedRequestCategory) ToPointer() *FeedRequestCategory { @@ -182,6 +184,10 @@ func (e *FeedRequestCategory) UnmarshalJSON(data []byte) error { case "CREATE_AGENT": fallthrough case "MANAGER_INVITE": + fallthrough + case "ONBOARDING_AUTHORIZATION": + fallthrough + case "CHAT_REMINDER": *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 4d9a33d3..e2417ff8 100644 --- a/tests/mockserver/internal/sdk/models/components/feedresult.go +++ b/tests/mockserver/internal/sdk/models/components/feedresult.go @@ -65,6 +65,8 @@ const ( FeedResultCategoryShareArtifact FeedResultCategory = "SHARE_ARTIFACT" FeedResultCategoryCreateAgent FeedResultCategory = "CREATE_AGENT" FeedResultCategoryManagerInvite FeedResultCategory = "MANAGER_INVITE" + FeedResultCategoryOnboardingAuthorization FeedResultCategory = "ONBOARDING_AUTHORIZATION" + FeedResultCategoryChatReminder FeedResultCategory = "CHAT_REMINDER" ) func (e FeedResultCategory) ToPointer() *FeedResultCategory { @@ -183,6 +185,10 @@ func (e *FeedResultCategory) UnmarshalJSON(data []byte) error { case "CREATE_AGENT": fallthrough case "MANAGER_INVITE": + fallthrough + case "ONBOARDING_AUTHORIZATION": + fallthrough + case "CHAT_REMINDER": *e = FeedResultCategory(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/mcpauthmethodbreakdown.go b/tests/mockserver/internal/sdk/models/components/mcpauthmethodbreakdown.go new file mode 100644 index 00000000..31f4103f --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/mcpauthmethodbreakdown.go @@ -0,0 +1,42 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +type McpAuthMethodBreakdown struct { + // Authentication method the MCP client presented, for example OAUTH_GLEAN, OAUTH_XAA (Cross App Access), or API_TOKEN. + AuthMethod *string `json:"authMethod,omitempty"` + // Total number of MCP calls for this authentication method in the specified time period. + TotalCalls *int64 `json:"totalCalls,omitempty"` + // Total number of active users for this authentication method in the specified time period. + ActiveUsers *int64 `json:"activeUsers,omitempty"` + // Host applications using this authentication method in the specified time period. + HostApplications []string `json:"hostApplications,omitempty"` +} + +func (o *McpAuthMethodBreakdown) GetAuthMethod() *string { + if o == nil { + return nil + } + return o.AuthMethod +} + +func (o *McpAuthMethodBreakdown) GetTotalCalls() *int64 { + if o == nil { + return nil + } + return o.TotalCalls +} + +func (o *McpAuthMethodBreakdown) GetActiveUsers() *int64 { + if o == nil { + return nil + } + return o.ActiveUsers +} + +func (o *McpAuthMethodBreakdown) GetHostApplications() []string { + if o == nil { + return nil + } + return o.HostApplications +} diff --git a/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsrequest.go b/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsrequest.go index ef9a081c..4c60272b 100644 --- a/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsrequest.go +++ b/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsrequest.go @@ -15,6 +15,7 @@ const ( BreakdownTypeHostApplications BreakdownType = "HOST_APPLICATIONS" BreakdownTypeTools BreakdownType = "TOOLS" BreakdownTypeServers BreakdownType = "SERVERS" + BreakdownTypeAuthMethods BreakdownType = "AUTH_METHODS" ) func (e BreakdownType) ToPointer() *BreakdownType { @@ -33,6 +34,8 @@ func (e *BreakdownType) UnmarshalJSON(data []byte) error { case "TOOLS": fallthrough case "SERVERS": + fallthrough + case "AUTH_METHODS": *e = BreakdownType(v) return nil default: @@ -56,6 +59,8 @@ type McpBreakdownInsightsRequest struct { Tools []string `json:"tools,omitempty"` // MCP servers to filter by. Empty array means all servers. Servers []string `json:"servers,omitempty"` + // Authentication methods to filter by, for example OAUTH_XAA for Cross App Access traffic. Empty array means all authentication methods. + AuthMethods []string `json:"authMethods,omitempty"` } func (o *McpBreakdownInsightsRequest) GetDepartments() []string { @@ -113,3 +118,10 @@ func (o *McpBreakdownInsightsRequest) GetServers() []string { } return o.Servers } + +func (o *McpBreakdownInsightsRequest) GetAuthMethods() []string { + if o == nil { + return nil + } + return o.AuthMethods +} diff --git a/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsresponse.go b/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsresponse.go index 8ae55f17..2383c4ea 100644 --- a/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsresponse.go +++ b/tests/mockserver/internal/sdk/models/components/mcpbreakdowninsightsresponse.go @@ -7,6 +7,7 @@ type McpBreakdownInsightsResponse struct { HostApplicationsBreakdown []McpHostApplicationBreakdown `json:"hostApplicationsBreakdown,omitempty"` ToolsBreakdown []McpToolBreakdown `json:"toolsBreakdown,omitempty"` ServersBreakdown []McpServerBreakdown `json:"serversBreakdown,omitempty"` + AuthMethodsBreakdown []McpAuthMethodBreakdown `json:"authMethodsBreakdown,omitempty"` } func (o *McpBreakdownInsightsResponse) GetUsersBreakdown() []McpUserBreakdown { @@ -36,3 +37,10 @@ func (o *McpBreakdownInsightsResponse) GetServersBreakdown() []McpServerBreakdow } return o.ServersBreakdown } + +func (o *McpBreakdownInsightsResponse) GetAuthMethodsBreakdown() []McpAuthMethodBreakdown { + if o == nil { + return nil + } + return o.AuthMethodsBreakdown +} diff --git a/tests/mockserver/internal/sdk/models/components/mcpuserbreakdown.go b/tests/mockserver/internal/sdk/models/components/mcpuserbreakdown.go index 73014b6f..045685a2 100644 --- a/tests/mockserver/internal/sdk/models/components/mcpuserbreakdown.go +++ b/tests/mockserver/internal/sdk/models/components/mcpuserbreakdown.go @@ -12,6 +12,8 @@ type McpUserBreakdown struct { Tools []string `json:"tools,omitempty"` // MCP servers used by this user in the specified time period. Servers []string `json:"servers,omitempty"` + // Authentication methods this user's MCP clients presented in the specified time period, for example OAUTH_XAA for Cross App Access. + AuthMethods []string `json:"authMethods,omitempty"` } func (o *McpUserBreakdown) GetPerson() *Person { @@ -48,3 +50,10 @@ func (o *McpUserBreakdown) GetServers() []string { } return o.Servers } + +func (o *McpUserBreakdown) GetAuthMethods() []string { + if o == nil { + return nil + } + return o.AuthMethods +} diff --git a/tests/mockserver/internal/sdk/models/components/peoplerequest.go b/tests/mockserver/internal/sdk/models/components/peoplerequest.go index 1240c00e..4d75414b 100644 --- a/tests/mockserver/internal/sdk/models/components/peoplerequest.go +++ b/tests/mockserver/internal/sdk/models/components/peoplerequest.go @@ -5,6 +5,7 @@ package components import ( "encoding/json" "fmt" + "mockserver/internal/sdk/utils" ) type PeopleRequestIncludeField string @@ -84,6 +85,8 @@ func (e *IncludeType) UnmarshalJSON(data []byte) error { } type PeopleRequest struct { + // If true and the current user's people profile is missing, reads the stored SSO profile and returns a minimal Person with its display name, the authenticated user's email, the same obfuscatedId used by a normal self-lookup, and identityOnly set to true. If the SSO profile or its name is unavailable, preserves the missing-profile error. Applies only when emailIds and obfuscatedIds are empty and the request doesn't use act-as, a virtual identity, anonymous authentication, or the INVALID_ENTITIES includeType. The fallback doesn't mask lookup or enrichment errors and doesn't create a directory profile. Normal people profiles don't require an SSO lookup. + FallbackToAuthenticatedIdentity *bool `default:"false" json:"fallbackToAuthenticatedIdentity"` // 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 `json:"timezoneOffset,omitempty"` // The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. @@ -98,6 +101,24 @@ type PeopleRequest struct { Source *string `json:"source,omitempty"` } +func (p PeopleRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PeopleRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, nil); err != nil { + return err + } + return nil +} + +func (o *PeopleRequest) GetFallbackToAuthenticatedIdentity() *bool { + if o == nil { + return nil + } + return o.FallbackToAuthenticatedIdentity +} + func (o *PeopleRequest) GetTimezoneOffset() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/person.go b/tests/mockserver/internal/sdk/models/components/person.go index ab2c5f86..e3bd9441 100644 --- a/tests/mockserver/internal/sdk/models/components/person.go +++ b/tests/mockserver/internal/sdk/models/components/person.go @@ -11,6 +11,8 @@ type Person struct { Name string `json:"name"` // An opaque identifier that can be used to request metadata for a Person. ObfuscatedID string `json:"obfuscatedId"` + // True when this is an authenticated identity fallback rather than a people profile. Directory metadata is unavailable. + IdentityOnly *bool `json:"identityOnly,omitempty"` // A list of documents related to this person. RelatedDocuments []RelatedDocuments `json:"relatedDocuments,omitempty"` Metadata *PersonMetadata `json:"metadata,omitempty"` @@ -41,6 +43,13 @@ func (o *Person) GetObfuscatedID() string { return o.ObfuscatedID } +func (o *Person) GetIdentityOnly() *bool { + if o == nil { + return nil + } + return o.IdentityOnly +} + func (o *Person) GetRelatedDocuments() []RelatedDocuments { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/platformauthenticationsuggestion.go b/tests/mockserver/internal/sdk/models/components/platformauthenticationsuggestion.go index 58281ae6..30dae6db 100644 --- a/tests/mockserver/internal/sdk/models/components/platformauthenticationsuggestion.go +++ b/tests/mockserver/internal/sdk/models/components/platformauthenticationsuggestion.go @@ -2,6 +2,10 @@ package components +import ( + "mockserver/internal/sdk/utils" +) + // PlatformAuthenticationSuggestion - One tool the caller must authorize before the agent can run. type PlatformAuthenticationSuggestion struct { // Human-readable tool name. @@ -10,6 +14,17 @@ type PlatformAuthenticationSuggestion struct { ServerID string `json:"server_id"` } +func (p PlatformAuthenticationSuggestion) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformAuthenticationSuggestion) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"server_id"}); err != nil { + return err + } + return nil +} + func (o *PlatformAuthenticationSuggestion) GetToolName() *string { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/components/platformproblemdetail.go b/tests/mockserver/internal/sdk/models/components/platformproblemdetail.go new file mode 100644 index 00000000..f4cb5aa3 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformproblemdetail.go @@ -0,0 +1,94 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +// PlatformProblemDetail - Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation. +type PlatformProblemDetail struct { + // URI identifying the error type. + Type string `json:"type"` + // Short, human-readable summary of the error. + Title string `json:"title"` + // HTTP status code mirrored from the response. + Status int64 `json:"status"` + // Human-readable explanation specific to this occurrence. + Detail string `json:"detail"` + // Stable machine-readable error code. + Code PlatformProblemDetailCode `json:"code"` + // Direct URL to documentation for this error code. + DocumentationURL *string `json:"documentation_url,omitempty"` + // Platform-generated request ID for support correlation. + RequestID string `json:"request_id"` + // Field-level validation problems, one entry per offending field. + Errors []PlatformProblemDetailError `json:"errors,omitempty"` +} + +func (p PlatformProblemDetail) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformProblemDetail) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "title", "status", "detail", "code", "request_id"}); err != nil { + return err + } + return nil +} + +func (o *PlatformProblemDetail) GetType() string { + if o == nil { + return "" + } + return o.Type +} + +func (o *PlatformProblemDetail) GetTitle() string { + if o == nil { + return "" + } + return o.Title +} + +func (o *PlatformProblemDetail) GetStatus() int64 { + if o == nil { + return 0 + } + return o.Status +} + +func (o *PlatformProblemDetail) GetDetail() string { + if o == nil { + return "" + } + return o.Detail +} + +func (o *PlatformProblemDetail) GetCode() PlatformProblemDetailCode { + if o == nil { + return PlatformProblemDetailCode("") + } + return o.Code +} + +func (o *PlatformProblemDetail) GetDocumentationURL() *string { + if o == nil { + return nil + } + return o.DocumentationURL +} + +func (o *PlatformProblemDetail) GetRequestID() string { + if o == nil { + return "" + } + return o.RequestID +} + +func (o *PlatformProblemDetail) GetErrors() []PlatformProblemDetailError { + if o == nil { + return nil + } + return o.Errors +} diff --git a/tests/mockserver/internal/sdk/models/components/platformproblemdetailerror.go b/tests/mockserver/internal/sdk/models/components/platformproblemdetailerror.go index 058f5e62..e013d644 100644 --- a/tests/mockserver/internal/sdk/models/components/platformproblemdetailerror.go +++ b/tests/mockserver/internal/sdk/models/components/platformproblemdetailerror.go @@ -2,6 +2,10 @@ package components +import ( + "mockserver/internal/sdk/utils" +) + // PlatformProblemDetailError - Field-level validation problem for a single offending field. type PlatformProblemDetailError struct { // RFC 6901 JSON Pointer to the offending field. @@ -12,6 +16,17 @@ type PlatformProblemDetailError struct { Code *PlatformProblemDetailCode `json:"code,omitempty"` } +func (p PlatformProblemDetailError) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformProblemDetailError) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"pointer", "detail"}); err != nil { + return err + } + return nil +} + func (o *PlatformProblemDetailError) GetPointer() string { if o == nil { return "" diff --git a/tests/mockserver/internal/sdk/models/components/platformskill.go b/tests/mockserver/internal/sdk/models/components/platformskill.go index 8397a899..a507f97f 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskill.go +++ b/tests/mockserver/internal/sdk/models/components/platformskill.go @@ -9,7 +9,7 @@ import ( type PlatformSkill struct { // Glean skill ID. - ID string `json:"id"` + SkillID string `json:"skill_id"` // Human-readable skill name. DisplayName string `json:"display_name"` // Human-readable skill description. @@ -18,7 +18,8 @@ type PlatformSkill struct { LatestVersion int64 `json:"latest_version"` // Latest minor version number for the skill. LatestMinorVersion int64 `json:"latest_minor_version"` - // Current skill status. + // The caller's effective activation. The owner sees the skill's stored status. Another caller sees their personal setting, or DISABLED when they have none. DRAFT is the stored draft state and is not set by update. Effective activation may also reflect workspace governance policy. + // Status PlatformSkillStatus `json:"status"` // Source category for the skill. Origin PlatformSkillOrigin `json:"origin"` @@ -36,17 +37,17 @@ func (p PlatformSkill) MarshalJSON() ([]byte, error) { } func (p *PlatformSkill) UnmarshalJSON(data []byte) error { - if err := utils.UnmarshalJSON(data, &p, "", false, []string{"id", "display_name", "description", "latest_version", "latest_minor_version", "status", "origin", "owner", "created_at", "updated_at"}); err != nil { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"skill_id", "display_name", "description", "latest_version", "latest_minor_version", "status", "origin", "owner", "created_at", "updated_at"}); err != nil { return err } return nil } -func (o *PlatformSkill) GetID() string { +func (o *PlatformSkill) GetSkillID() string { if o == nil { return "" } - return o.ID + return o.SkillID } func (o *PlatformSkill) GetDisplayName() string { diff --git a/tests/mockserver/internal/sdk/models/components/platformskillimportresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillimportresponse.go index 262df2a7..796e0f2e 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillimportresponse.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillimportresponse.go @@ -3,7 +3,8 @@ package components type PlatformSkillImportResponse struct { - // Independently persisted skills in request order. + // Imported skills in request order. The import is atomic: either every source persists or none does. + // Skills []PlatformSkill `json:"skills"` // Platform-generated request ID for support correlation. RequestID string `json:"request_id"` diff --git a/tests/mockserver/internal/sdk/models/components/platformskillorigin.go b/tests/mockserver/internal/sdk/models/components/platformskillorigin.go index e0a00449..1afff274 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillorigin.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillorigin.go @@ -12,6 +12,7 @@ type PlatformSkillOrigin string const ( PlatformSkillOriginCustom PlatformSkillOrigin = "CUSTOM" + PlatformSkillOriginGithub PlatformSkillOrigin = "GITHUB" ) func (e PlatformSkillOrigin) ToPointer() *PlatformSkillOrigin { @@ -24,6 +25,8 @@ func (e *PlatformSkillOrigin) UnmarshalJSON(data []byte) error { } switch v { case "CUSTOM": + fallthrough + case "GITHUB": *e = PlatformSkillOrigin(v) return nil default: diff --git a/tests/mockserver/internal/sdk/models/components/platformskillslistresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillslistresponse.go index 566d5351..55a8d69a 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillslistresponse.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillslistresponse.go @@ -4,7 +4,7 @@ package components type PlatformSkillsListResponse struct { // Skills available to the user. - Skills []PlatformSkill `json:"skills"` + Results []PlatformSkill `json:"results"` // Whether additional results are available. HasMore bool `json:"has_more"` // Cursor for the next page, or null when no more results are available. @@ -13,11 +13,11 @@ type PlatformSkillsListResponse struct { RequestID string `json:"request_id"` } -func (o *PlatformSkillsListResponse) GetSkills() []PlatformSkill { +func (o *PlatformSkillsListResponse) GetResults() []PlatformSkill { if o == nil { return []PlatformSkill{} } - return o.Skills + return o.Results } func (o *PlatformSkillsListResponse) GetHasMore() bool { diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreview.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreview.go index f7a467f1..85b419fd 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreview.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreview.go @@ -2,6 +2,10 @@ package components +import ( + "mockserver/internal/sdk/utils" +) + type PlatformSkillSourcePreview struct { // Skill name parsed from SKILL.md frontmatter. DisplayName string `json:"display_name"` @@ -19,6 +23,17 @@ type PlatformSkillSourcePreview struct { FileTree []string `json:"file_tree"` } +func (p PlatformSkillSourcePreview) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreview) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"display_name", "description", "source_url", "commit_sha", "main_content", "files", "file_tree"}); err != nil { + return err + } + return nil +} + func (o *PlatformSkillSourcePreview) GetDisplayName() string { if o == nil { return "" diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfailure.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfailure.go index 5a6c6fe8..92ed2f8b 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfailure.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfailure.go @@ -2,6 +2,10 @@ package components +import ( + "mockserver/internal/sdk/utils" +) + type PlatformSkillSourcePreviewFailure struct { // Resolved URL for the entry that could not be previewed. SourceURL string `json:"source_url"` @@ -11,6 +15,17 @@ type PlatformSkillSourcePreviewFailure struct { Detail string `json:"detail"` } +func (p PlatformSkillSourcePreviewFailure) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewFailure) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"source_url", "code", "detail"}); err != nil { + return err + } + return nil +} + func (o *PlatformSkillSourcePreviewFailure) GetSourceURL() string { if o == nil { return "" diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfile.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfile.go index 43503cfb..7622555e 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfile.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewfile.go @@ -2,6 +2,10 @@ package components +import ( + "mockserver/internal/sdk/utils" +) + type PlatformSkillSourcePreviewFile struct { // Relative path within the skill bundle. Path string `json:"path"` @@ -9,6 +13,17 @@ type PlatformSkillSourcePreviewFile struct { Content string `json:"content"` } +func (p PlatformSkillSourcePreviewFile) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewFile) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"path", "content"}); err != nil { + return err + } + return nil +} + func (o *PlatformSkillSourcePreviewFile) GetPath() string { if o == nil { return "" diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewrequest.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewrequest.go deleted file mode 100644 index 506e0c09..00000000 --- a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewrequest.go +++ /dev/null @@ -1,39 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -import ( - "mockserver/internal/sdk/utils" -) - -type PlatformSkillSourcePreviewRequest struct { - // GitHub URL for a skill directory, SKILL.md file, or repository to inspect. - SourceURL string `json:"source_url"` - // Whether to stream repository scan progress using server-sent events. - Stream *bool `default:"false" json:"stream"` -} - -func (p PlatformSkillSourcePreviewRequest) MarshalJSON() ([]byte, error) { - return utils.MarshalJSON(p, "", false) -} - -func (p *PlatformSkillSourcePreviewRequest) UnmarshalJSON(data []byte) error { - if err := utils.UnmarshalJSON(data, &p, "", false, []string{"source_url"}); err != nil { - return err - } - return nil -} - -func (o *PlatformSkillSourcePreviewRequest) GetSourceURL() string { - if o == nil { - return "" - } - return o.SourceURL -} - -func (o *PlatformSkillSourcePreviewRequest) GetStream() *bool { - if o == nil { - return nil - } - return o.Stream -} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewresponse.go index 0607598d..597fec46 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewresponse.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewresponse.go @@ -2,6 +2,10 @@ package components +import ( + "mockserver/internal/sdk/utils" +) + type PlatformSkillSourcePreviewResponse struct { // Valid skills discovered at the source URL. Skills []PlatformSkillSourcePreview `json:"skills"` @@ -11,6 +15,17 @@ type PlatformSkillSourcePreviewResponse struct { RequestID string `json:"request_id"` } +func (p PlatformSkillSourcePreviewResponse) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewResponse) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"skills", "failures", "request_id"}); err != nil { + return err + } + return nil +} + func (o *PlatformSkillSourcePreviewResponse) GetSkills() []PlatformSkillSourcePreview { if o == nil { return []PlatformSkillSourcePreview{} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerror.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerror.go new file mode 100644 index 00000000..e1b0e86e --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerror.go @@ -0,0 +1,76 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +// PlatformSkillSourcePreviewStreamErrorType - Event type, also sent as the SSE `event` name. +type PlatformSkillSourcePreviewStreamErrorType string + +const ( + PlatformSkillSourcePreviewStreamErrorTypeError PlatformSkillSourcePreviewStreamErrorType = "ERROR" +) + +func (e PlatformSkillSourcePreviewStreamErrorType) ToPointer() *PlatformSkillSourcePreviewStreamErrorType { + return &e +} +func (e *PlatformSkillSourcePreviewStreamErrorType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "ERROR": + *e = PlatformSkillSourcePreviewStreamErrorType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformSkillSourcePreviewStreamErrorType: %v", v) + } +} + +// PlatformSkillSourcePreviewStreamError - Terminal failure event carrying the failure as a problem detail. Most GitHub authorization failures return HTTP 422 before the stream opens. If authorization fails after the stream opens, `error.code` is `tools_unauthorized` and `authentication_suggestions` is present. +type PlatformSkillSourcePreviewStreamError struct { + // Event type, also sent as the SSE `event` name. + Type PlatformSkillSourcePreviewStreamErrorType `json:"type"` + // Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation. + // + Error PlatformProblemDetail `json:"error"` + // Present only when `error.code` is `tools_unauthorized`. Names the GitHub action pack to authorize, with the same retry flow as the 422 response. + AuthenticationSuggestions []PlatformAuthenticationSuggestion `json:"authentication_suggestions,omitempty"` +} + +func (p PlatformSkillSourcePreviewStreamError) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamError) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "error"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamError) GetType() PlatformSkillSourcePreviewStreamErrorType { + if o == nil { + return PlatformSkillSourcePreviewStreamErrorType("") + } + return o.Type +} + +func (o *PlatformSkillSourcePreviewStreamError) GetError() PlatformProblemDetail { + if o == nil { + return PlatformProblemDetail{} + } + return o.Error +} + +func (o *PlatformSkillSourcePreviewStreamError) GetAuthenticationSuggestions() []PlatformAuthenticationSuggestion { + if o == nil { + return nil + } + return o.AuthenticationSuggestions +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerrorserversentevent.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerrorserversentevent.go new file mode 100644 index 00000000..548ebf7a --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamerrorserversentevent.go @@ -0,0 +1,43 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +type PlatformSkillSourcePreviewStreamErrorServerSentEvent struct { + ID *string `json:"id,omitempty"` + event string `const:"ERROR" json:"event"` + // Terminal failure event carrying the failure as a problem detail. Most GitHub authorization failures return HTTP 422 before the stream opens. If authorization fails after the stream opens, `error.code` is `tools_unauthorized` and `authentication_suggestions` is present. + Data PlatformSkillSourcePreviewStreamError `json:"data"` +} + +func (p PlatformSkillSourcePreviewStreamErrorServerSentEvent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamErrorServerSentEvent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"event", "data"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamErrorServerSentEvent) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +func (o *PlatformSkillSourcePreviewStreamErrorServerSentEvent) GetEvent() string { + return "ERROR" +} + +func (o *PlatformSkillSourcePreviewStreamErrorServerSentEvent) GetData() PlatformSkillSourcePreviewStreamError { + if o == nil { + return PlatformSkillSourcePreviewStreamError{} + } + return o.Data +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreameventserversentevent.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreameventserversentevent.go new file mode 100644 index 00000000..3451e409 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreameventserversentevent.go @@ -0,0 +1,178 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "errors" + "fmt" + "mockserver/internal/sdk/utils" +) + +type PlatformSkillSourcePreviewStreamEventServerSentEventType string + +const ( + PlatformSkillSourcePreviewStreamEventServerSentEventTypeScan PlatformSkillSourcePreviewStreamEventServerSentEventType = "SCAN" + PlatformSkillSourcePreviewStreamEventServerSentEventTypeProgress PlatformSkillSourcePreviewStreamEventServerSentEventType = "PROGRESS" + PlatformSkillSourcePreviewStreamEventServerSentEventTypeSkill PlatformSkillSourcePreviewStreamEventServerSentEventType = "SKILL" + PlatformSkillSourcePreviewStreamEventServerSentEventTypeResult PlatformSkillSourcePreviewStreamEventServerSentEventType = "RESULT" + PlatformSkillSourcePreviewStreamEventServerSentEventTypeError PlatformSkillSourcePreviewStreamEventServerSentEventType = "ERROR" +) + +// PlatformSkillSourcePreviewStreamEventServerSentEvent - A typed server-sent event. +type PlatformSkillSourcePreviewStreamEventServerSentEvent struct { + PlatformSkillSourcePreviewStreamScanServerSentEvent *PlatformSkillSourcePreviewStreamScanServerSentEvent `queryParam:"inline"` + PlatformSkillSourcePreviewStreamProgressServerSentEvent *PlatformSkillSourcePreviewStreamProgressServerSentEvent `queryParam:"inline"` + PlatformSkillSourcePreviewStreamSkillServerSentEvent *PlatformSkillSourcePreviewStreamSkillServerSentEvent `queryParam:"inline"` + PlatformSkillSourcePreviewStreamResultServerSentEvent *PlatformSkillSourcePreviewStreamResultServerSentEvent `queryParam:"inline"` + PlatformSkillSourcePreviewStreamErrorServerSentEvent *PlatformSkillSourcePreviewStreamErrorServerSentEvent `queryParam:"inline"` + + Type PlatformSkillSourcePreviewStreamEventServerSentEventType +} + +func CreatePlatformSkillSourcePreviewStreamEventServerSentEventScan(scan PlatformSkillSourcePreviewStreamScanServerSentEvent) PlatformSkillSourcePreviewStreamEventServerSentEvent { + typ := PlatformSkillSourcePreviewStreamEventServerSentEventTypeScan + + return PlatformSkillSourcePreviewStreamEventServerSentEvent{ + PlatformSkillSourcePreviewStreamScanServerSentEvent: &scan, + Type: typ, + } +} + +func CreatePlatformSkillSourcePreviewStreamEventServerSentEventProgress(progress PlatformSkillSourcePreviewStreamProgressServerSentEvent) PlatformSkillSourcePreviewStreamEventServerSentEvent { + typ := PlatformSkillSourcePreviewStreamEventServerSentEventTypeProgress + + return PlatformSkillSourcePreviewStreamEventServerSentEvent{ + PlatformSkillSourcePreviewStreamProgressServerSentEvent: &progress, + Type: typ, + } +} + +func CreatePlatformSkillSourcePreviewStreamEventServerSentEventSkill(skill PlatformSkillSourcePreviewStreamSkillServerSentEvent) PlatformSkillSourcePreviewStreamEventServerSentEvent { + typ := PlatformSkillSourcePreviewStreamEventServerSentEventTypeSkill + + return PlatformSkillSourcePreviewStreamEventServerSentEvent{ + PlatformSkillSourcePreviewStreamSkillServerSentEvent: &skill, + Type: typ, + } +} + +func CreatePlatformSkillSourcePreviewStreamEventServerSentEventResult(result PlatformSkillSourcePreviewStreamResultServerSentEvent) PlatformSkillSourcePreviewStreamEventServerSentEvent { + typ := PlatformSkillSourcePreviewStreamEventServerSentEventTypeResult + + return PlatformSkillSourcePreviewStreamEventServerSentEvent{ + PlatformSkillSourcePreviewStreamResultServerSentEvent: &result, + Type: typ, + } +} + +func CreatePlatformSkillSourcePreviewStreamEventServerSentEventError(errorT PlatformSkillSourcePreviewStreamErrorServerSentEvent) PlatformSkillSourcePreviewStreamEventServerSentEvent { + typ := PlatformSkillSourcePreviewStreamEventServerSentEventTypeError + + return PlatformSkillSourcePreviewStreamEventServerSentEvent{ + PlatformSkillSourcePreviewStreamErrorServerSentEvent: &errorT, + Type: typ, + } +} + +func (u *PlatformSkillSourcePreviewStreamEventServerSentEvent) UnmarshalJSON(data []byte) error { + + type discriminator struct { + Event string `json:"event"` + } + + dis := new(discriminator) + if err := json.Unmarshal(data, &dis); err != nil { + return fmt.Errorf("could not unmarshal discriminator: %w", err) + } + + switch dis.Event { + case "SCAN": + platformSkillSourcePreviewStreamScanServerSentEvent := new(PlatformSkillSourcePreviewStreamScanServerSentEvent) + if err := utils.UnmarshalJSON(data, &platformSkillSourcePreviewStreamScanServerSentEvent, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Event == SCAN) type PlatformSkillSourcePreviewStreamScanServerSentEvent within PlatformSkillSourcePreviewStreamEventServerSentEvent: %w", string(data), err) + } + + u.PlatformSkillSourcePreviewStreamScanServerSentEvent = platformSkillSourcePreviewStreamScanServerSentEvent + u.Type = PlatformSkillSourcePreviewStreamEventServerSentEventTypeScan + return nil + case "PROGRESS": + platformSkillSourcePreviewStreamProgressServerSentEvent := new(PlatformSkillSourcePreviewStreamProgressServerSentEvent) + if err := utils.UnmarshalJSON(data, &platformSkillSourcePreviewStreamProgressServerSentEvent, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Event == PROGRESS) type PlatformSkillSourcePreviewStreamProgressServerSentEvent within PlatformSkillSourcePreviewStreamEventServerSentEvent: %w", string(data), err) + } + + u.PlatformSkillSourcePreviewStreamProgressServerSentEvent = platformSkillSourcePreviewStreamProgressServerSentEvent + u.Type = PlatformSkillSourcePreviewStreamEventServerSentEventTypeProgress + return nil + case "SKILL": + platformSkillSourcePreviewStreamSkillServerSentEvent := new(PlatformSkillSourcePreviewStreamSkillServerSentEvent) + if err := utils.UnmarshalJSON(data, &platformSkillSourcePreviewStreamSkillServerSentEvent, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Event == SKILL) type PlatformSkillSourcePreviewStreamSkillServerSentEvent within PlatformSkillSourcePreviewStreamEventServerSentEvent: %w", string(data), err) + } + + u.PlatformSkillSourcePreviewStreamSkillServerSentEvent = platformSkillSourcePreviewStreamSkillServerSentEvent + u.Type = PlatformSkillSourcePreviewStreamEventServerSentEventTypeSkill + return nil + case "RESULT": + platformSkillSourcePreviewStreamResultServerSentEvent := new(PlatformSkillSourcePreviewStreamResultServerSentEvent) + if err := utils.UnmarshalJSON(data, &platformSkillSourcePreviewStreamResultServerSentEvent, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Event == RESULT) type PlatformSkillSourcePreviewStreamResultServerSentEvent within PlatformSkillSourcePreviewStreamEventServerSentEvent: %w", string(data), err) + } + + u.PlatformSkillSourcePreviewStreamResultServerSentEvent = platformSkillSourcePreviewStreamResultServerSentEvent + u.Type = PlatformSkillSourcePreviewStreamEventServerSentEventTypeResult + return nil + case "ERROR": + platformSkillSourcePreviewStreamErrorServerSentEvent := new(PlatformSkillSourcePreviewStreamErrorServerSentEvent) + if err := utils.UnmarshalJSON(data, &platformSkillSourcePreviewStreamErrorServerSentEvent, "", true, nil); err != nil { + return fmt.Errorf("could not unmarshal `%s` into expected (Event == ERROR) type PlatformSkillSourcePreviewStreamErrorServerSentEvent within PlatformSkillSourcePreviewStreamEventServerSentEvent: %w", string(data), err) + } + + u.PlatformSkillSourcePreviewStreamErrorServerSentEvent = platformSkillSourcePreviewStreamErrorServerSentEvent + u.Type = PlatformSkillSourcePreviewStreamEventServerSentEventTypeError + return nil + } + + return fmt.Errorf("could not unmarshal `%s` into any supported union types for PlatformSkillSourcePreviewStreamEventServerSentEvent", string(data)) +} + +func (u PlatformSkillSourcePreviewStreamEventServerSentEvent) MarshalJSON() ([]byte, error) { + if u.PlatformSkillSourcePreviewStreamScanServerSentEvent != nil { + return utils.MarshalJSON(u.PlatformSkillSourcePreviewStreamScanServerSentEvent, "", true) + } + + if u.PlatformSkillSourcePreviewStreamProgressServerSentEvent != nil { + return utils.MarshalJSON(u.PlatformSkillSourcePreviewStreamProgressServerSentEvent, "", true) + } + + if u.PlatformSkillSourcePreviewStreamSkillServerSentEvent != nil { + return utils.MarshalJSON(u.PlatformSkillSourcePreviewStreamSkillServerSentEvent, "", true) + } + + if u.PlatformSkillSourcePreviewStreamResultServerSentEvent != nil { + return utils.MarshalJSON(u.PlatformSkillSourcePreviewStreamResultServerSentEvent, "", true) + } + + if u.PlatformSkillSourcePreviewStreamErrorServerSentEvent != nil { + return utils.MarshalJSON(u.PlatformSkillSourcePreviewStreamErrorServerSentEvent, "", true) + } + + return nil, errors.New("could not marshal union type PlatformSkillSourcePreviewStreamEventServerSentEvent: all fields are null") +} + +func (o PlatformSkillSourcePreviewStreamEventServerSentEvent) GetEventEncoding(event string) (string, error) { + switch event { + case "SCAN": + return "application/json", nil + case "PROGRESS": + return "application/json", nil + case "SKILL": + return "application/json", nil + case "RESULT": + return "application/json", nil + case "ERROR": + return "application/json", nil + } + return "string", nil +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogress.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogress.go new file mode 100644 index 00000000..20885b77 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogress.go @@ -0,0 +1,84 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +// PlatformSkillSourcePreviewStreamProgressType - Event type, also sent as the SSE `event` name. +type PlatformSkillSourcePreviewStreamProgressType string + +const ( + PlatformSkillSourcePreviewStreamProgressTypeProgress PlatformSkillSourcePreviewStreamProgressType = "PROGRESS" +) + +func (e PlatformSkillSourcePreviewStreamProgressType) ToPointer() *PlatformSkillSourcePreviewStreamProgressType { + return &e +} +func (e *PlatformSkillSourcePreviewStreamProgressType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "PROGRESS": + *e = PlatformSkillSourcePreviewStreamProgressType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformSkillSourcePreviewStreamProgressType: %v", v) + } +} + +// PlatformSkillSourcePreviewStreamProgress - One skill finished inspecting; names the skill in progress. +type PlatformSkillSourcePreviewStreamProgress struct { + // Event type, also sent as the SSE `event` name. + Type PlatformSkillSourcePreviewStreamProgressType `json:"type"` + // Number of skills inspected so far. + Completed int64 `json:"completed"` + // Number of skills to inspect. + Total int64 `json:"total"` + // Path of the skill being inspected. + CurrentSkill string `json:"current_skill"` +} + +func (p PlatformSkillSourcePreviewStreamProgress) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamProgress) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "completed", "total", "current_skill"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamProgress) GetType() PlatformSkillSourcePreviewStreamProgressType { + if o == nil { + return PlatformSkillSourcePreviewStreamProgressType("") + } + return o.Type +} + +func (o *PlatformSkillSourcePreviewStreamProgress) GetCompleted() int64 { + if o == nil { + return 0 + } + return o.Completed +} + +func (o *PlatformSkillSourcePreviewStreamProgress) GetTotal() int64 { + if o == nil { + return 0 + } + return o.Total +} + +func (o *PlatformSkillSourcePreviewStreamProgress) GetCurrentSkill() string { + if o == nil { + return "" + } + return o.CurrentSkill +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogressserversentevent.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogressserversentevent.go new file mode 100644 index 00000000..76ee67dd --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamprogressserversentevent.go @@ -0,0 +1,43 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +type PlatformSkillSourcePreviewStreamProgressServerSentEvent struct { + ID *string `json:"id,omitempty"` + event string `const:"PROGRESS" json:"event"` + // One skill finished inspecting; names the skill in progress. + Data PlatformSkillSourcePreviewStreamProgress `json:"data"` +} + +func (p PlatformSkillSourcePreviewStreamProgressServerSentEvent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamProgressServerSentEvent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"event", "data"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamProgressServerSentEvent) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +func (o *PlatformSkillSourcePreviewStreamProgressServerSentEvent) GetEvent() string { + return "PROGRESS" +} + +func (o *PlatformSkillSourcePreviewStreamProgressServerSentEvent) GetData() PlatformSkillSourcePreviewStreamProgress { + if o == nil { + return PlatformSkillSourcePreviewStreamProgress{} + } + return o.Data +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresult.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresult.go new file mode 100644 index 00000000..b3070c67 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresult.go @@ -0,0 +1,65 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +// PlatformSkillSourcePreviewStreamResultType - Event type, also sent as the SSE `event` name. +type PlatformSkillSourcePreviewStreamResultType string + +const ( + PlatformSkillSourcePreviewStreamResultTypeResult PlatformSkillSourcePreviewStreamResultType = "RESULT" +) + +func (e PlatformSkillSourcePreviewStreamResultType) ToPointer() *PlatformSkillSourcePreviewStreamResultType { + return &e +} +func (e *PlatformSkillSourcePreviewStreamResultType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "RESULT": + *e = PlatformSkillSourcePreviewStreamResultType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformSkillSourcePreviewStreamResultType: %v", v) + } +} + +// PlatformSkillSourcePreviewStreamResult - Terminal success event carrying the fully assembled preview. +type PlatformSkillSourcePreviewStreamResult struct { + // Event type, also sent as the SSE `event` name. + Type PlatformSkillSourcePreviewStreamResultType `json:"type"` + Response PlatformSkillSourcePreviewResponse `json:"response"` +} + +func (p PlatformSkillSourcePreviewStreamResult) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamResult) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "response"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamResult) GetType() PlatformSkillSourcePreviewStreamResultType { + if o == nil { + return PlatformSkillSourcePreviewStreamResultType("") + } + return o.Type +} + +func (o *PlatformSkillSourcePreviewStreamResult) GetResponse() PlatformSkillSourcePreviewResponse { + if o == nil { + return PlatformSkillSourcePreviewResponse{} + } + return o.Response +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresultserversentevent.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresultserversentevent.go new file mode 100644 index 00000000..9320bc5f --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamresultserversentevent.go @@ -0,0 +1,43 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +type PlatformSkillSourcePreviewStreamResultServerSentEvent struct { + ID *string `json:"id,omitempty"` + event string `const:"RESULT" json:"event"` + // Terminal success event carrying the fully assembled preview. + Data PlatformSkillSourcePreviewStreamResult `json:"data"` +} + +func (p PlatformSkillSourcePreviewStreamResultServerSentEvent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamResultServerSentEvent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"event", "data"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamResultServerSentEvent) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +func (o *PlatformSkillSourcePreviewStreamResultServerSentEvent) GetEvent() string { + return "RESULT" +} + +func (o *PlatformSkillSourcePreviewStreamResultServerSentEvent) GetData() PlatformSkillSourcePreviewStreamResult { + if o == nil { + return PlatformSkillSourcePreviewStreamResult{} + } + return o.Data +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscan.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscan.go new file mode 100644 index 00000000..118e1273 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscan.go @@ -0,0 +1,75 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +// PlatformSkillSourcePreviewStreamScanType - Event type, also sent as the SSE `event` name. +type PlatformSkillSourcePreviewStreamScanType string + +const ( + PlatformSkillSourcePreviewStreamScanTypeScan PlatformSkillSourcePreviewStreamScanType = "SCAN" +) + +func (e PlatformSkillSourcePreviewStreamScanType) ToPointer() *PlatformSkillSourcePreviewStreamScanType { + return &e +} +func (e *PlatformSkillSourcePreviewStreamScanType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "SCAN": + *e = PlatformSkillSourcePreviewStreamScanType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformSkillSourcePreviewStreamScanType: %v", v) + } +} + +// PlatformSkillSourcePreviewStreamScan - Repository scan started; names every skill path found. +type PlatformSkillSourcePreviewStreamScan struct { + // Event type, also sent as the SSE `event` name. + Type PlatformSkillSourcePreviewStreamScanType `json:"type"` + // Number of skill paths found in the scan. + Total int64 `json:"total"` + // Skill paths found in the scan. + SkillPaths []string `json:"skill_paths"` +} + +func (p PlatformSkillSourcePreviewStreamScan) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamScan) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "total", "skill_paths"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamScan) GetType() PlatformSkillSourcePreviewStreamScanType { + if o == nil { + return PlatformSkillSourcePreviewStreamScanType("") + } + return o.Type +} + +func (o *PlatformSkillSourcePreviewStreamScan) GetTotal() int64 { + if o == nil { + return 0 + } + return o.Total +} + +func (o *PlatformSkillSourcePreviewStreamScan) GetSkillPaths() []string { + if o == nil { + return []string{} + } + return o.SkillPaths +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscanserversentevent.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscanserversentevent.go new file mode 100644 index 00000000..f1b62054 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamscanserversentevent.go @@ -0,0 +1,43 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +type PlatformSkillSourcePreviewStreamScanServerSentEvent struct { + ID *string `json:"id,omitempty"` + event string `const:"SCAN" json:"event"` + // Repository scan started; names every skill path found. + Data PlatformSkillSourcePreviewStreamScan `json:"data"` +} + +func (p PlatformSkillSourcePreviewStreamScanServerSentEvent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamScanServerSentEvent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"event", "data"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamScanServerSentEvent) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +func (o *PlatformSkillSourcePreviewStreamScanServerSentEvent) GetEvent() string { + return "SCAN" +} + +func (o *PlatformSkillSourcePreviewStreamScanServerSentEvent) GetData() PlatformSkillSourcePreviewStreamScan { + if o == nil { + return PlatformSkillSourcePreviewStreamScan{} + } + return o.Data +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskill.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskill.go new file mode 100644 index 00000000..2be741fc --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskill.go @@ -0,0 +1,65 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "mockserver/internal/sdk/utils" +) + +// PlatformSkillSourcePreviewStreamSkillType - Event type, also sent as the SSE `event` name. +type PlatformSkillSourcePreviewStreamSkillType string + +const ( + PlatformSkillSourcePreviewStreamSkillTypeSkill PlatformSkillSourcePreviewStreamSkillType = "SKILL" +) + +func (e PlatformSkillSourcePreviewStreamSkillType) ToPointer() *PlatformSkillSourcePreviewStreamSkillType { + return &e +} +func (e *PlatformSkillSourcePreviewStreamSkillType) UnmarshalJSON(data []byte) error { + var v string + if err := json.Unmarshal(data, &v); err != nil { + return err + } + switch v { + case "SKILL": + *e = PlatformSkillSourcePreviewStreamSkillType(v) + return nil + default: + return fmt.Errorf("invalid value for PlatformSkillSourcePreviewStreamSkillType: %v", v) + } +} + +// PlatformSkillSourcePreviewStreamSkill - One skill previewed; carries the previewed skill. +type PlatformSkillSourcePreviewStreamSkill struct { + // Event type, also sent as the SSE `event` name. + Type PlatformSkillSourcePreviewStreamSkillType `json:"type"` + Skill PlatformSkillSourcePreview `json:"skill"` +} + +func (p PlatformSkillSourcePreviewStreamSkill) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamSkill) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"type", "skill"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamSkill) GetType() PlatformSkillSourcePreviewStreamSkillType { + if o == nil { + return PlatformSkillSourcePreviewStreamSkillType("") + } + return o.Type +} + +func (o *PlatformSkillSourcePreviewStreamSkill) GetSkill() PlatformSkillSourcePreview { + if o == nil { + return PlatformSkillSourcePreview{} + } + return o.Skill +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskillserversentevent.go b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskillserversentevent.go new file mode 100644 index 00000000..7b53e037 --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/platformskillsourcepreviewstreamskillserversentevent.go @@ -0,0 +1,43 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "mockserver/internal/sdk/utils" +) + +type PlatformSkillSourcePreviewStreamSkillServerSentEvent struct { + ID *string `json:"id,omitempty"` + event string `const:"SKILL" json:"event"` + // One skill previewed; carries the previewed skill. + Data PlatformSkillSourcePreviewStreamSkill `json:"data"` +} + +func (p PlatformSkillSourcePreviewStreamSkillServerSentEvent) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillSourcePreviewStreamSkillServerSentEvent) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"event", "data"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillSourcePreviewStreamSkillServerSentEvent) GetID() *string { + if o == nil { + return nil + } + return o.ID +} + +func (o *PlatformSkillSourcePreviewStreamSkillServerSentEvent) GetEvent() string { + return "SKILL" +} + +func (o *PlatformSkillSourcePreviewStreamSkillServerSentEvent) GetData() PlatformSkillSourcePreviewStreamSkill { + if o == nil { + return PlatformSkillSourcePreviewStreamSkill{} + } + return o.Data +} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillstatus.go b/tests/mockserver/internal/sdk/models/components/platformskillstatus.go index a218b760..d47da9c0 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillstatus.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillstatus.go @@ -7,7 +7,7 @@ import ( "fmt" ) -// PlatformSkillStatus - Current skill status. +// PlatformSkillStatus - The caller's effective activation. The owner sees the skill's stored status. Another caller sees their personal setting, or DISABLED when they have none. DRAFT is the stored draft state and is not set by update. Effective activation may also reflect workspace governance policy. type PlatformSkillStatus string const ( diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsyncresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillsyncresponse.go index 773dec5b..cd8c8278 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillsyncresponse.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillsyncresponse.go @@ -3,23 +3,14 @@ package components type PlatformSkillSyncResponse struct { - // Synchronization status after a successful refresh. - SyncStatus PlatformSkillSyncResultStatus `json:"sync_status"` // Git commit SHA now associated with the skill. CommitSha string `json:"commit_sha"` // Whether this request created a new skill version. - Updated bool `json:"updated"` + IsUpdated bool `json:"is_updated"` // Platform-generated request ID for support correlation. RequestID string `json:"request_id"` } -func (o *PlatformSkillSyncResponse) GetSyncStatus() PlatformSkillSyncResultStatus { - if o == nil { - return PlatformSkillSyncResultStatus("") - } - return o.SyncStatus -} - func (o *PlatformSkillSyncResponse) GetCommitSha() string { if o == nil { return "" @@ -27,11 +18,11 @@ func (o *PlatformSkillSyncResponse) GetCommitSha() string { return o.CommitSha } -func (o *PlatformSkillSyncResponse) GetUpdated() bool { +func (o *PlatformSkillSyncResponse) GetIsUpdated() bool { if o == nil { return false } - return o.Updated + return o.IsUpdated } func (o *PlatformSkillSyncResponse) GetRequestID() string { diff --git a/tests/mockserver/internal/sdk/models/components/platformskillsyncresultstatus.go b/tests/mockserver/internal/sdk/models/components/platformskillsyncresultstatus.go deleted file mode 100644 index 93f6e9ed..00000000 --- a/tests/mockserver/internal/sdk/models/components/platformskillsyncresultstatus.go +++ /dev/null @@ -1,32 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -import ( - "encoding/json" - "fmt" -) - -// PlatformSkillSyncResultStatus - Synchronization status after a successful refresh. -type PlatformSkillSyncResultStatus string - -const ( - PlatformSkillSyncResultStatusUpToDate PlatformSkillSyncResultStatus = "UP_TO_DATE" -) - -func (e PlatformSkillSyncResultStatus) ToPointer() *PlatformSkillSyncResultStatus { - return &e -} -func (e *PlatformSkillSyncResultStatus) UnmarshalJSON(data []byte) error { - var v string - if err := json.Unmarshal(data, &v); err != nil { - return err - } - switch v { - case "UP_TO_DATE": - *e = PlatformSkillSyncResultStatus(v) - return nil - default: - return fmt.Errorf("invalid value for PlatformSkillSyncResultStatus: %v", v) - } -} diff --git a/tests/mockserver/internal/sdk/models/components/platformskillupdaterequest.go b/tests/mockserver/internal/sdk/models/components/platformskillupdaterequest.go index 16b5b625..1b120482 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillupdaterequest.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillupdaterequest.go @@ -3,7 +3,8 @@ package components type PlatformSkillUpdateRequest struct { - // New status for the skill. + // Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting. + // Status PlatformSkillUpdateStatus `json:"status"` } diff --git a/tests/mockserver/internal/sdk/models/components/platformskillupdatestatus.go b/tests/mockserver/internal/sdk/models/components/platformskillupdatestatus.go index d40a5b9f..46eaa67f 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillupdatestatus.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillupdatestatus.go @@ -7,7 +7,7 @@ import ( "fmt" ) -// PlatformSkillUpdateStatus - New status for the skill. +// PlatformSkillUpdateStatus - Activation to apply for the authenticated caller. For the owner, this updates the skill's stored status. For any other caller, it updates only that caller's setting. type PlatformSkillUpdateStatus string const ( diff --git a/tests/mockserver/internal/sdk/models/components/platformskillversionslistresponse.go b/tests/mockserver/internal/sdk/models/components/platformskillversionslistresponse.go index e6eac47b..cc6af7a3 100644 --- a/tests/mockserver/internal/sdk/models/components/platformskillversionslistresponse.go +++ b/tests/mockserver/internal/sdk/models/components/platformskillversionslistresponse.go @@ -4,7 +4,7 @@ package components type PlatformSkillVersionsListResponse struct { // Versions available for the skill. - Versions []PlatformSkillVersion `json:"versions"` + Results []PlatformSkillVersion `json:"results"` // Whether additional results are available. HasMore bool `json:"has_more"` // Cursor for the next page, or null when no more results are available. @@ -13,11 +13,11 @@ type PlatformSkillVersionsListResponse struct { RequestID string `json:"request_id"` } -func (o *PlatformSkillVersionsListResponse) GetVersions() []PlatformSkillVersion { +func (o *PlatformSkillVersionsListResponse) GetResults() []PlatformSkillVersion { if o == nil { return []PlatformSkillVersion{} } - return o.Versions + return o.Results } func (o *PlatformSkillVersionsListResponse) GetHasMore() bool { diff --git a/tests/mockserver/internal/sdk/models/components/ugcactionunion.go b/tests/mockserver/internal/sdk/models/components/ugcactionunion.go new file mode 100644 index 00000000..6b38790d --- /dev/null +++ b/tests/mockserver/internal/sdk/models/components/ugcactionunion.go @@ -0,0 +1,73 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "errors" + "fmt" + "mockserver/internal/sdk/utils" +) + +type UgcAction struct { + Create UgcType `json:"create"` +} + +func (u UgcAction) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(u, "", false) +} + +func (u *UgcAction) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &u, "", false, []string{"create"}); err != nil { + return err + } + return nil +} + +func (o *UgcAction) GetCreate() UgcType { + if o == nil { + return UgcType("") + } + return o.Create +} + +type UgcActionUnionType string + +const ( + UgcActionUnionTypeUgcAction UgcActionUnionType = "UgcAction" +) + +// UgcActionUnion - An action to perform on user-generated content. This may be accompanied by `text` on the ChatMessageFragment, which acts as the display name content of the pill. +type UgcActionUnion struct { + UgcAction *UgcAction `queryParam:"inline"` + + Type UgcActionUnionType +} + +func CreateUgcActionUnionUgcAction(ugcAction UgcAction) UgcActionUnion { + typ := UgcActionUnionTypeUgcAction + + return UgcActionUnion{ + UgcAction: &ugcAction, + Type: typ, + } +} + +func (u *UgcActionUnion) UnmarshalJSON(data []byte) error { + + var ugcAction UgcAction = UgcAction{} + if err := utils.UnmarshalJSON(data, &ugcAction, "", true, nil); err == nil { + u.UgcAction = &ugcAction + u.Type = UgcActionUnionTypeUgcAction + return nil + } + + return fmt.Errorf("could not unmarshal `%s` into any supported union types for UgcActionUnion", string(data)) +} + +func (u UgcActionUnion) MarshalJSON() ([]byte, error) { + if u.UgcAction != nil { + return utils.MarshalJSON(u.UgcAction, "", true) + } + + return nil, errors.New("could not marshal union type UgcActionUnion: all fields are null") +} diff --git a/tests/mockserver/internal/sdk/models/components/ugctype.go b/tests/mockserver/internal/sdk/models/components/ugctype.go index 3d7ab4b4..069786db 100644 --- a/tests/mockserver/internal/sdk/models/components/ugctype.go +++ b/tests/mockserver/internal/sdk/models/components/ugctype.go @@ -30,6 +30,7 @@ const ( UgcTypeSpreadsheetType UgcType = "SPREADSHEET_TYPE" UgcTypeInlineHTMLType UgcType = "INLINE_HTML_TYPE" UgcTypePodcastType UgcType = "PODCAST_TYPE" + UgcTypeVideoType UgcType = "VIDEO_TYPE" UgcTypeWorkflowsType UgcType = "WORKFLOWS_TYPE" ) @@ -82,6 +83,8 @@ func (e *UgcType) UnmarshalJSON(data []byte) error { fallthrough case "PODCAST_TYPE": fallthrough + case "VIDEO_TYPE": + fallthrough case "WORKFLOWS_TYPE": *e = UgcType(v) return nil diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillscreate.go b/tests/mockserver/internal/sdk/models/operations/platformskillscreate.go index 7018793f..f5a35851 100644 --- a/tests/mockserver/internal/sdk/models/operations/platformskillscreate.go +++ b/tests/mockserver/internal/sdk/models/operations/platformskillscreate.go @@ -8,7 +8,7 @@ import ( type PlatformSkillsCreateResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` - // Successful response. + // Skill created. PlatformSkillCreateResponse *components.PlatformSkillCreateResponse } diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillscreateversion.go b/tests/mockserver/internal/sdk/models/operations/platformskillscreateversion.go index 554b0438..6a55d73d 100644 --- a/tests/mockserver/internal/sdk/models/operations/platformskillscreateversion.go +++ b/tests/mockserver/internal/sdk/models/operations/platformskillscreateversion.go @@ -28,7 +28,7 @@ func (o *PlatformSkillsCreateVersionRequest) GetBody() components.PlatformSkillV type PlatformSkillsCreateVersionResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` - // Successful response. + // Skill version created. PlatformSkillVersionCreateResponse *components.PlatformSkillVersionCreateResponse } diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillslist.go b/tests/mockserver/internal/sdk/models/operations/platformskillslist.go index 40f74199..2286c481 100644 --- a/tests/mockserver/internal/sdk/models/operations/platformskillslist.go +++ b/tests/mockserver/internal/sdk/models/operations/platformskillslist.go @@ -4,15 +4,27 @@ package operations import ( "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" ) type PlatformSkillsListRequest struct { - // Maximum number of skills to return. - PageSize *int64 `queryParam:"style=form,explode=true,name=page_size"` + // Maximum number of skills to return. Defaults to 20. Maximum is 100. + PageSize *int64 `default:"20" queryParam:"style=form,explode=true,name=page_size"` // Opaque pagination cursor from a previous response. Cursor *string `queryParam:"style=form,explode=true,name=cursor"` } +func (p PlatformSkillsListRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillsListRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, nil); err != nil { + return err + } + return nil +} + func (o *PlatformSkillsListRequest) GetPageSize() *int64 { if o == nil { return nil diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillslistversions.go b/tests/mockserver/internal/sdk/models/operations/platformskillslistversions.go index 3853971f..dcea3d13 100644 --- a/tests/mockserver/internal/sdk/models/operations/platformskillslistversions.go +++ b/tests/mockserver/internal/sdk/models/operations/platformskillslistversions.go @@ -4,17 +4,29 @@ package operations import ( "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/utils" ) type PlatformSkillsListVersionsRequest struct { // Glean skill ID. SkillID string `pathParam:"style=simple,explode=false,name=skill_id"` - // Maximum number of versions to return. - PageSize *int64 `queryParam:"style=form,explode=true,name=page_size"` + // Maximum number of versions to return. Defaults to 20. Maximum is 100. + PageSize *int64 `default:"20" queryParam:"style=form,explode=true,name=page_size"` // Opaque pagination cursor from a previous response. Cursor *string `queryParam:"style=form,explode=true,name=cursor"` } +func (p PlatformSkillsListVersionsRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillsListVersionsRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"skill_id"}); err != nil { + return err + } + return nil +} + func (o *PlatformSkillsListVersionsRequest) GetSkillID() string { if o == nil { return "" diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillspreviewsource.go b/tests/mockserver/internal/sdk/models/operations/platformskillspreviewsource.go index a32c6102..a189b4a3 100644 --- a/tests/mockserver/internal/sdk/models/operations/platformskillspreviewsource.go +++ b/tests/mockserver/internal/sdk/models/operations/platformskillspreviewsource.go @@ -4,14 +4,42 @@ package operations import ( "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/utils" ) +type PlatformSkillsPreviewSourceRequest struct { + // GitHub URL for a skill directory, SKILL.md file, or repository to inspect. + SourceURL string `json:"source_url"` + stream *bool `const:"false" json:"stream"` +} + +func (p PlatformSkillsPreviewSourceRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillsPreviewSourceRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"source_url"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillsPreviewSourceRequest) GetSourceURL() string { + if o == nil { + return "" + } + return o.SourceURL +} + +func (o *PlatformSkillsPreviewSourceRequest) GetStream() *bool { + return types.Bool(false) +} + type PlatformSkillsPreviewSourceResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // Successful response. PlatformSkillSourcePreviewResponse *components.PlatformSkillSourcePreviewResponse - // Successful response. - Res *string } func (o *PlatformSkillsPreviewSourceResponse) GetHTTPMeta() components.HTTPMetadata { @@ -27,10 +55,3 @@ func (o *PlatformSkillsPreviewSourceResponse) GetPlatformSkillSourcePreviewRespo } return o.PlatformSkillSourcePreviewResponse } - -func (o *PlatformSkillsPreviewSourceResponse) GetRes() *string { - if o == nil { - return nil - } - return o.Res -} diff --git a/tests/mockserver/internal/sdk/models/operations/platformskillspreviewsourcestream.go b/tests/mockserver/internal/sdk/models/operations/platformskillspreviewsourcestream.go new file mode 100644 index 00000000..f89eab8b --- /dev/null +++ b/tests/mockserver/internal/sdk/models/operations/platformskillspreviewsourcestream.go @@ -0,0 +1,58 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "mockserver/internal/sdk/models/components" + "mockserver/internal/sdk/types" + "mockserver/internal/sdk/types/stream" + "mockserver/internal/sdk/utils" +) + +type PlatformSkillsPreviewSourceStreamRequest struct { + // GitHub URL for a skill directory, SKILL.md file, or repository to inspect. + SourceURL string `json:"source_url"` + stream *bool `const:"true" json:"stream"` +} + +func (p PlatformSkillsPreviewSourceStreamRequest) MarshalJSON() ([]byte, error) { + return utils.MarshalJSON(p, "", false) +} + +func (p *PlatformSkillsPreviewSourceStreamRequest) UnmarshalJSON(data []byte) error { + if err := utils.UnmarshalJSON(data, &p, "", false, []string{"source_url"}); err != nil { + return err + } + return nil +} + +func (o *PlatformSkillsPreviewSourceStreamRequest) GetSourceURL() string { + if o == nil { + return "" + } + return o.SourceURL +} + +func (o *PlatformSkillsPreviewSourceStreamRequest) GetStream() *bool { + return types.Bool(true) +} + +type PlatformSkillsPreviewSourceStreamResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformSkillSourcePreviewStreamEventServerSentEvent *stream.EventStream[components.PlatformSkillSourcePreviewStreamEventServerSentEvent] +} + +func (o *PlatformSkillsPreviewSourceStreamResponse) GetHTTPMeta() components.HTTPMetadata { + if o == nil { + return components.HTTPMetadata{} + } + return o.HTTPMeta +} + +func (o *PlatformSkillsPreviewSourceStreamResponse) GetPlatformSkillSourcePreviewStreamEventServerSentEvent() *stream.EventStream[components.PlatformSkillSourcePreviewStreamEventServerSentEvent] { + if o == nil { + return nil + } + return o.PlatformSkillSourcePreviewStreamEventServerSentEvent +} diff --git a/tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go b/tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go index bdf1155c..6d3eff53 100644 --- a/tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go +++ b/tests/mockserver/internal/sdk/optionalnullable/optionalnullable.go @@ -248,3 +248,29 @@ func AsOptionalNullable(v reflect.Value) (OptionalNullableInterface, bool) { } return nil, false } + +var optionalNullableInterfaceType = reflect.TypeOf((*OptionalNullableInterface)(nil)).Elem() + +// IsOptionalNullableType reports whether typ is an OptionalNullable[T] type. +// It is the type-level counterpart to AsOptionalNullable, for reflection-based +// code that only has a reflect.Type (e.g. when deciding how to decode into a +// zero value). +func IsOptionalNullableType(typ reflect.Type) bool { + return typ != nil && + typ.Kind() == reflect.Map && + typ.Key().Kind() == reflect.Bool && + typ.Elem().Kind() == reflect.Ptr && + typ.Implements(optionalNullableInterfaceType) +} + +// FromReflect is the reflection-based counterpart to From: it returns a new +// OptionalNullable value of type typ (which must satisfy IsOptionalNullableType) +// set to the value innerPtr points at. innerPtr must be assignable to typ's +// element type (*T); pass a nil *T to set the value to null. +func FromReflect(typ reflect.Type, innerPtr reflect.Value) reflect.Value { + m := reflect.MakeMapWithSize(typ, 1) + key := reflect.New(typ.Key()).Elem() + key.SetBool(true) + m.SetMapIndex(key, innerPtr) + return m +} diff --git a/tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go b/tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go index 52fb11f9..cfddc167 100644 --- a/tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go +++ b/tests/mockserver/internal/sdk/optionalnullable/optionalnullable_test.go @@ -1857,3 +1857,96 @@ func TestAsOptionalNullable(t *testing.T) { assert.Equal(t, "test", value) }) } + +func TestIsOptionalNullableType(t *testing.T) { + t.Parallel() + tests := []struct { + name string + typ reflect.Type + want bool + }{ + { + name: "OptionalNullable of scalar", + typ: reflect.TypeOf(OptionalNullable[string]{}), + want: true, + }, + { + name: "OptionalNullable of pointer", + typ: reflect.TypeOf(OptionalNullable[*int]{}), + want: true, + }, + { + name: "OptionalNullable of slice", + typ: reflect.TypeOf(OptionalNullable[[]string]{}), + want: true, + }, + { + name: "plain string map", + typ: reflect.TypeOf(map[string]string{}), + want: false, + }, + { + name: "bool-keyed map with non-pointer values", + typ: reflect.TypeOf(map[bool]string{}), + want: false, + }, + { + name: "bool-keyed pointer map without the interface method", + typ: reflect.TypeOf(map[bool]*string{}), + want: false, + }, + { + name: "non-map type", + typ: reflect.TypeOf(""), + want: false, + }, + { + name: "pointer to OptionalNullable", + typ: reflect.TypeOf(&OptionalNullable[string]{}), + want: false, + }, + { + name: "nil type", + typ: nil, + want: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + assert.Equal(t, tt.want, IsOptionalNullableType(tt.typ)) + }) + } +} + +func TestFromReflect(t *testing.T) { + t.Parallel() + typ := reflect.TypeOf(OptionalNullable[string]{}) + + t.Run("with value", func(t *testing.T) { + t.Parallel() + inner := reflect.New(reflect.TypeOf("")) + inner.Elem().SetString("hello") + + got, ok := FromReflect(typ, inner).Interface().(OptionalNullable[string]) + require.True(t, ok) + assert.True(t, got.IsSet()) + assert.False(t, got.IsNull()) + v, set := got.Get() + require.True(t, set) + require.NotNil(t, v) + assert.Equal(t, "hello", *v) + assert.Equal(t, From(ptrFrom("hello")), got) + }) + + t.Run("with nil pointer sets null", func(t *testing.T) { + t.Parallel() + nilPtr := reflect.Zero(typ.Elem()) + + got, ok := FromReflect(typ, nilPtr).Interface().(OptionalNullable[string]) + require.True(t, ok) + assert.True(t, got.IsSet()) + assert.True(t, got.IsNull()) + assert.Equal(t, From[string](nil), got) + }) +} diff --git a/tests/mockserver/internal/sdk/utils/json.go b/tests/mockserver/internal/sdk/utils/json.go index e5aafa7b..6ec0f844 100644 --- a/tests/mockserver/internal/sdk/utils/json.go +++ b/tests/mockserver/internal/sdk/utils/json.go @@ -13,6 +13,7 @@ import ( "time" "unsafe" + "mockserver/internal/sdk/optionalnullable" "mockserver/internal/sdk/types" "github.com/ericlagergren/decimal" @@ -306,6 +307,25 @@ func marshalValue(v interface{}, tag reflect.StructTag) (json.RawMessage, error) return []byte("null"), nil } + // optionalnullable.OptionalNullable[T] must be unwrapped here rather than + // delegated to its own MarshalJSON, so tag-driven wire formats on the field + // (e.g. bigint:"string", decimal:"number") reach the inner value. The + // stored *T is redispatched as-is so pointer-receiver marshalers on T + // stay reachable. + if optionalnullable.IsOptionalNullableType(typ) { + for _, key := range val.MapKeys() { + if key.Bool() { + if inner := val.MapIndex(key); !inner.IsNil() { + if _, innerVal := dereferencePointers(inner.Type(), inner); innerVal.IsValid() { + return marshalValue(inner.Interface(), tag) + } + } + break + } + } + return []byte("null"), nil + } + if implementsJSONMarshaler(v) { return json.Marshal(v) } @@ -410,6 +430,9 @@ func handleDefaultConstValue(tagValue string, val interface{}, tag reflect.Struc } typ := dereferenceTypePointer(reflect.TypeOf(val)) + if optionalnullable.IsOptionalNullableType(typ) { + typ = dereferenceTypePointer(typ.Elem()) + } switch typ { case reflect.TypeOf(time.Time{}): return []byte(fmt.Sprintf(`"%s"`, tagValue)) @@ -511,6 +534,27 @@ func unmarshalValue(value json.RawMessage, v reflect.Value, tag reflect.StructTa return nil } case reflect.Map: + // optionalnullable.OptionalNullable[T] is unwrapped like on the marshal + // side, so tag-driven wire formats reach the inner value. A JSON null + // never gets this far: it is handled at the top of this function, where + // the wrapper's own UnmarshalJSON records the explicit null state. + if optionalnullable.IsOptionalNullableType(typ) { + innerPtr := reflect.New(typ.Elem().Elem()) + + if err := unmarshalValue(value, innerPtr, tag); err != nil { + return err + } + + if v.Kind() == reflect.Ptr { + if v.IsNil() { + v.Set(reflect.New(typ)) + } + v = v.Elem() + } + v.Set(optionalnullable.FromReflect(typ, innerPtr)) + return nil + } + if bytes.Equal(value, []byte("null")) || !isComplexValueType(dereferenceTypePointer(typ.Elem())) { if v.CanAddr() { return json.Unmarshal(value, v.Addr().Interface()) diff --git a/tests/test_entities.py b/tests/test_entities.py index b6c97f06..1dac6d8f 100644 --- a/tests/test_entities.py +++ b/tests/test_entities.py @@ -52,10 +52,11 @@ def test_entities_people(): assert glean is not None res = glean.client.entities.read_people( + fallback_to_authenticated_identity=False, obfuscated_ids=[ "abc123", "abc456", - ] + ], ) assert res is not None diff --git a/tests/test_messages.py b/tests/test_messages.py index 132005ec..dfdc1864 100644 --- a/tests/test_messages.py +++ b/tests/test_messages.py @@ -18,7 +18,7 @@ def test_messages_messages(): res = glean.client.messages.retrieve( id_type=models.IDType.CONVERSATION_ID, id="", - datasource=models.Datasource.FACEBOOKWORKPLACE, + datasource=models.Datasource.SLACKENTGRID, timestamp_millis=558834, ) assert res is not None diff --git a/tests/test_skills.py b/tests/test_skills.py index 63587d5a..1c854370 100644 --- a/tests/test_skills.py +++ b/tests/test_skills.py @@ -34,7 +34,7 @@ def test_skills_platform_skills_list(): ) as glean: assert glean is not None - res = glean.skills.list() + res = glean.skills.list(page_size=20) assert res is not None @@ -115,7 +115,7 @@ def test_skills_platform_skills_list_versions(): ) as glean: assert glean is not None - res = glean.skills.list_versions(skill_id="") + res = glean.skills.list_versions(skill_id="", page_size=20) assert res is not None @@ -176,7 +176,7 @@ def test_skills_platform_skills_preview_source(): assert glean is not None res = glean.skills.preview_source( - source_url="https://github.com/anthropics/skills", stream=False + source_url="https://github.com/anthropics/skills" ) assert res is not None diff --git a/tests/test_summarize.py b/tests/test_summarize.py index cac8e978..8763da58 100644 --- a/tests/test_summarize.py +++ b/tests/test_summarize.py @@ -18,12 +18,11 @@ def test_summarize_summarize(): res = glean.client.documents.summarize( document_specs=[ { - "ugc_type": models.DocumentSpecUgcType1.SHORTCUTS, - "content_id": 602763, + "ugc_type": models.DocumentSpecUgcType1.COLLECTIONS, + "content_id": 993975, }, { - "ugc_type": models.DocumentSpecUgcType1.SHORTCUTS, - "content_id": 602763, + "id": "", }, ] ) From a46231fb8f06f3d6e75e3832a21e512b28ca67b1 Mon Sep 17 00:00:00 2001 From: "speakeasy-github[bot]" <128539517+speakeasy-github[bot]@users.noreply.github.com> Date: Sat, 3 Oct 2026 04:11:41 +0000 Subject: [PATCH 2/2] empty commit to trigger [run-tests] workflow