From 0a84206d5426a034f71e4c3d6403eab36f9f789e Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Sat, 3 Oct 2026 03:41:13 +0000 Subject: [PATCH 1/2] =?UTF-8?q?##=20Go=20SDK=20Changes:=20*=20`Glean.Skill?= =?UTF-8?q?s.Create()`:=20=20=20*=20=20`response`=20**Changed**=20(Breakin?= =?UTF-8?q?g=20=E2=9A=A0=EF=B8=8F)=20=20=20*=20=20`error.status[409]`=20**?= =?UTF-8?q?Added**=20*=20`Glean.Skills.List()`:=20=20=20*=20=20`request.Pa?= =?UTF-8?q?geSize`=20**Changed**=20=20=20*=20=20`response`=20**Changed**?= =?UTF-8?q?=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*=20`Glean.Skills.Import()?= =?UTF-8?q?`:=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.PreviewSource()`:=20=20=20*=20=20`reque?= =?UTF-8?q?st.Request.Stream`=20**Changed**=20=20=20*=20=20`response.statu?= =?UTF-8?q?s[200].content[text/event-stream`=20**Removed**=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.Update()`:=20=20`response.Skill`=20**Ch?= =?UTF-8?q?anged**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*=20`Glean.Skills.R?= =?UTF-8?q?etrieve()`:=20=20`response.Skill`=20**Changed**=20(Breaking=20?= =?UTF-8?q?=E2=9A=A0=EF=B8=8F)=20*=20`Glean.Skills.Sync()`:=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=20*=20=20`error`=20**Changed**=20(Breaking=20=E2=9A=A0?= =?UTF-8?q?=EF=B8=8F)=20*=20`Glean.Skills.CreateVersion()`:=20=20`response?= =?UTF-8?q?`=20**Changed**=20(Breaking=20=E2=9A=A0=EF=B8=8F)=20*=20`Glean.?= =?UTF-8?q?Skills.ListVersions()`:=20=20=20*=20=20`request.PageSize`=20**C?= =?UTF-8?q?hanged**=20=20=20*=20=20`response`=20**Changed**=20(Breaking=20?= =?UTF-8?q?=E2=9A=A0=EF=B8=8F)=20*=20`Glean.Client.Announcements.Create()`?= =?UTF-8?q?:=20=20=20*=20=20`request.CreateAnnouncementRequest.Body.Struct?= =?UTF-8?q?uredList[].Document.Metadata.Author`=20**Changed**=20=20=20*=20?= =?UTF-8?q?=20`response.Body.StructuredList[].Document.Metadata.Author`=20?= =?UTF-8?q?**Changed**=20*=20`Glean.Client.Announcements.Update()`:=20=20?= =?UTF-8?q?=20*=20=20`request.UpdateAnnouncementRequest.Body.StructuredLis?= =?UTF-8?q?t[].Document.Metadata.Author`=20**Changed**=20=20=20*=20=20`res?= =?UTF-8?q?ponse.Body.StructuredList[].Document.Metadata.Author`=20**Chang?= =?UTF-8?q?ed**=20*=20`Glean.Client.Answers.Create()`:=20=20=20*=20=20`req?= =?UTF-8?q?uest.CreateAnswerRequest.Data.AddedRoles[].Person`=20**Changed*?= =?UTF-8?q?*=20=20=20*=20=20`response.AddedRoles[].Person`=20**Changed**?= =?UTF-8?q?=20*=20`Glean.Client.Answers.Update()`:=20=20=20*=20=20`request?= =?UTF-8?q?.EditAnswerRequest.AddedRoles[].Person`=20**Changed**=20=20=20*?= =?UTF-8?q?=20=20`response.AddedRoles[].Person`=20**Changed**=20*=20`Glean?= =?UTF-8?q?.Client.Answers.Retrieve()`:=20=20`response.AnswerResult.Answer?= =?UTF-8?q?.AddedRoles[].Person`=20**Changed**=20*=20`Glean.Client.Answers?= =?UTF-8?q?.List()`:=20=20`response.AnswerResults[].Answer.AddedRoles[].Pe?= =?UTF-8?q?rson`=20**Changed**=20*=20`Glean.Client.Chat.Create()`:=20=20?= =?UTF-8?q?=20*=20=20`request.ChatRequest.Messages[].Citations[].SourceDoc?= =?UTF-8?q?ument.Metadata.Author`=20**Changed**=20=20=20*=20=20`response.M?= =?UTF-8?q?essages[].Citations[].SourceDocument.Metadata.Author`=20**Chang?= =?UTF-8?q?ed**=20*=20`Glean.Client.Chat.Retrieve()`:=20=20=20*=20=20`resp?= =?UTF-8?q?onse.ChatResult.Chat.CreatedBy`=20**Changed**=20=20=20*=20=20`e?= =?UTF-8?q?rror.CreatedBy`=20**Changed**=20*=20`Glean.Client.Chat.List()`:?= =?UTF-8?q?=20=20`response.ChatResults[].Chat.CreatedBy`=20**Changed**=20*?= =?UTF-8?q?=20`Glean.Client.Chat.CreateStream()`:=20=20=20*=20=20`request.?= =?UTF-8?q?ChatRequest.Messages[].Citations[].SourceDocument.Metadata.Auth?= =?UTF-8?q?or`=20**Changed**=20*=20`Glean.Client.Agents.Create()`:=20=20`r?= =?UTF-8?q?esponse.Workflow.Author`=20**Changed**=20*=20`Glean.Client.Agen?= =?UTF-8?q?ts.Import()`:=20=20`response.WorkflowResult.Workflow.Author`=20?= =?UTF-8?q?**Changed**=20*=20`Glean.Client.Collections.AddItems()`:=20=20`?= =?UTF-8?q?response.Collection.AddedRoles[].Person`=20**Changed**=20*=20`G?= =?UTF-8?q?lean.Client.Collections.Create()`:=20=20=20*=20=20`request.Crea?= =?UTF-8?q?teCollectionRequest.AddedRoles[].Person`=20**Changed**=20=20=20?= =?UTF-8?q?*=20=20`response.union(class=20(0)).Collection.AddedRoles[].Per?= =?UTF-8?q?son`=20**Changed**=20*=20`Glean.Client.Collections.DeleteItem()?= =?UTF-8?q?`:=20=20`response.Collection.AddedRoles[].Person`=20**Changed**?= =?UTF-8?q?=20*=20`Glean.Client.Collections.Update()`:=20=20=20*=20=20`req?= =?UTF-8?q?uest.EditCollectionRequest.AddedRoles[].Person`=20**Changed**?= =?UTF-8?q?=20=20=20*=20=20`response.AddedRoles[].Person`=20**Changed**=20?= =?UTF-8?q?*=20`Glean.Client.Collections.UpdateItem()`:=20=20`response.Col?= =?UTF-8?q?lection.AddedRoles[].Person`=20**Changed**=20*=20`Glean.Client.?= =?UTF-8?q?Collections.Retrieve()`:=20=20`response.Collection.AddedRoles[]?= =?UTF-8?q?.Person`=20**Changed**=20*=20`Glean.Client.Collections.List()`:?= =?UTF-8?q?=20=20`response.Collections[].AddedRoles[].Person`=20**Changed*?= =?UTF-8?q?*=20*=20`Glean.Client.Documents.Retrieve()`:=20=20`response.Doc?= =?UTF-8?q?uments.Map.union(Document).Metadata.Author`=20?= =?UTF-8?q?**Changed**=20*=20`Glean.Client.Documents.RetrieveByFacets()`:?= =?UTF-8?q?=20=20`response.Documents[].Metadata.Author`=20**Changed**=20*?= =?UTF-8?q?=20`Glean.Client.Insights.Retrieve()`:=20=20=20*=20=20`request.?= =?UTF-8?q?InsightsRequest.McpBreakdownRequest`=20**Changed**=20=20=20*=20?= =?UTF-8?q?=20`response`=20**Changed**=20*=20`Glean.Client.Messages.Retrie?= =?UTF-8?q?ve()`:=20=20`response.SearchResponse.Results[].StructuredResult?= =?UTF-8?q?s[].Document.Metadata`=20**Changed**=20*=20`Glean.Client.Pins.U?= =?UTF-8?q?pdate()`:=20=20`response.Attribution`=20**Changed**=20*=20`Glea?= =?UTF-8?q?n.Client.Pins.Retrieve()`:=20=20`response.Pin.Attribution`=20**?= =?UTF-8?q?Changed**=20*=20`Glean.Client.Pins.List()`:=20=20`response.Pins?= =?UTF-8?q?[].Attribution`=20**Changed**=20*=20`Glean.Client.Pins.Create()?= =?UTF-8?q?`:=20=20`response.Attribution`=20**Changed**=20*=20`Glean.Clien?= =?UTF-8?q?t.Search.QueryAsAdmin()`:=20=20=20*=20=20`request.SearchRequest?= =?UTF-8?q?.SourceDocument.Metadata.Author`=20**Changed**=20=20=20*=20=20`?= =?UTF-8?q?response.Results[].StructuredResults[].Document.Metadata`=20**C?= =?UTF-8?q?hanged**=20*=20`Glean.Client.Search.Autocomplete()`:=20=20`resp?= =?UTF-8?q?onse.Results[]`=20**Changed**=20*=20`Glean.Client.Search.Retrie?= =?UTF-8?q?veFeed()`:=20=20=20*=20=20`request.FeedRequest.Categories[]`=20?= =?UTF-8?q?**Changed**=20=20=20*=20=20`response.Results[]`=20**Changed**?= =?UTF-8?q?=20*=20`Glean.Client.Search.Recommendations()`:=20=20=20*=20=20?= =?UTF-8?q?`request.RecommendationsRequest.SourceDocument.Metadata.Author`?= =?UTF-8?q?=20**Changed**=20=20=20*=20=20`response.Results[].StructuredRes?= =?UTF-8?q?ults[].Document.Metadata`=20**Changed**=20*=20`Glean.Client.Sea?= =?UTF-8?q?rch.Query()`:=20=20=20*=20=20`request.SearchRequest.SourceDocum?= =?UTF-8?q?ent.Metadata.Author`=20**Changed**=20=20=20*=20=20`response.Res?= =?UTF-8?q?ults[].StructuredResults[].Document.Metadata`=20**Changed**=20*?= =?UTF-8?q?=20`Glean.Client.Entities.List()`:=20=20`response.Results[]`=20?= =?UTF-8?q?**Changed**=20*=20`Glean.Client.Entities.ReadPeople()`:=20=20?= =?UTF-8?q?=20*=20=20`request.PeopleRequest.FallbackToAuthenticatedIdentit?= =?UTF-8?q?y`=20**Added**=20=20=20*=20=20`response.Results[]`=20**Changed*?= =?UTF-8?q?*=20*=20`Glean.Client.Shortcuts.Create()`:=20=20=20*=20=20`requ?= =?UTF-8?q?est.CreateShortcutRequest.Data.AddedRoles[].Person`=20**Changed?= =?UTF-8?q?**=20=20=20*=20=20`response.Shortcut.AddedRoles[].Person`=20**C?= =?UTF-8?q?hanged**=20*=20`Glean.Client.Shortcuts.Retrieve()`:=20=20`respo?= =?UTF-8?q?nse.Shortcut.AddedRoles[].Person`=20**Changed**=20*=20`Glean.Cl?= =?UTF-8?q?ient.Shortcuts.List()`:=20=20`response.Shortcuts[].AddedRoles[]?= =?UTF-8?q?.Person`=20**Changed**=20*=20`Glean.Client.Shortcuts.Update()`:?= =?UTF-8?q?=20=20=20*=20=20`request.UpdateShortcutRequest.AddedRoles[].Per?= =?UTF-8?q?son`=20**Changed**=20=20=20*=20=20`response.Shortcut.AddedRoles?= =?UTF-8?q?[].Person`=20**Changed**=20*=20`Glean.Client.Verification.AddRe?= =?UTF-8?q?minder()`:=20=20`response.Metadata.LastVerifier`=20**Changed**?= =?UTF-8?q?=20*=20`Glean.Client.Verification.List()`:=20=20`response.Docum?= =?UTF-8?q?ents[].Metadata.LastVerifier`=20**Changed**=20*=20`Glean.Client?= =?UTF-8?q?.Verification.Verify()`:=20=20`response.Metadata.LastVerifier`?= =?UTF-8?q?=20**Changed**?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .devcontainer/devcontainer.json | 2 +- .speakeasy/gen.lock | 836 +++++++++++------- .speakeasy/gen.yaml | 4 +- .speakeasy/glean-merged-spec.yaml | 693 ++++++++++++--- .speakeasy/tests.arazzo.yaml | 25 +- .speakeasy/workflow.lock | 12 +- README.md | 1 + RELEASES.md | 12 +- agents.go | 30 +- chat.go | 8 +- clientagents.go | 16 +- clientchat.go | 2 +- clientdatasources.go | 8 +- clientsearch.go | 4 +- collections.go | 6 +- custommetadata.go | 20 +- docs/models/components/artifacttype.md | 28 + .../autocompleterequestresulttype.md | 2 +- docs/models/components/autocompleteresult.md | 27 +- docs/models/components/breakdowntype.md | 3 +- docs/models/components/chatsuggestion.md | 1 + docs/models/components/feedrequestcategory.md | 4 +- docs/models/components/feedresultcategory.md | 4 +- docs/models/components/justificationtype.md | 4 +- .../components/mcpauthmethodbreakdown.md | 11 + .../components/mcpbreakdowninsightsrequest.md | 21 +- .../mcpbreakdowninsightsresponse.md | 3 +- docs/models/components/mcpuserbreakdown.md | 15 +- docs/models/components/peoplerequest.md | 17 +- docs/models/components/person.md | 1 + .../components/platformproblemdetail.md | 18 + docs/models/components/platformskill.md | 26 +- .../components/platformskillimportresponse.md | 8 +- docs/models/components/platformskillorigin.md | 6 +- .../components/platformskillslistresponse.md | 2 +- .../platformskillsourcepreviewstreamerror.md | 12 + ...sourcepreviewstreamerrorserversentevent.md | 10 + ...atformskillsourcepreviewstreamerrortype.md | 20 + ...sourcepreviewstreameventserversentevent.md | 55 ++ ...latformskillsourcepreviewstreamprogress.md | 13 + ...rcepreviewstreamprogressserversentevent.md | 10 + ...ormskillsourcepreviewstreamprogresstype.md | 20 + .../platformskillsourcepreviewstreamresult.md | 11 + ...ourcepreviewstreamresultserversentevent.md | 10 + ...tformskillsourcepreviewstreamresulttype.md | 20 + .../platformskillsourcepreviewstreamscan.md | 12 + ...lsourcepreviewstreamscanserversentevent.md | 10 + ...latformskillsourcepreviewstreamscantype.md | 20 + .../platformskillsourcepreviewstreamskill.md | 11 + ...sourcepreviewstreamskillserversentevent.md | 10 + ...atformskillsourcepreviewstreamskilltype.md | 20 + docs/models/components/platformskillstatus.md | 3 +- .../components/platformskillsyncresponse.md | 11 +- .../platformskillsyncresultstatus.md | 20 - .../components/platformskillupdaterequest.md | 6 +- .../components/platformskillupdatestatus.md | 3 +- .../platformskillversionslistresponse.md | 2 +- docs/models/components/ugcaction.md | 8 + docs/models/components/ugcactionunion.md | 23 + docs/models/components/ugctype.md | 1 + .../platformskillscreateresponse.md | 2 +- .../platformskillscreateversionresponse.md | 2 +- .../operations/platformskillslistrequest.md | 8 +- .../platformskillslistversionsrequest.md | 10 +- .../platformskillspreviewsourcerequest.md} | 4 +- .../platformskillspreviewsourceresponse.md | 3 +- ...latformskillspreviewsourcestreamrequest.md | 9 + ...atformskillspreviewsourcestreamresponse.md | 9 + docs/sdks/skills/README.md | 163 +++- glean.go | 10 +- go.mod | 4 +- go.sum | 4 +- indexingdatasources.go | 4 +- internal/utils/json.go | 46 +- internal/utils/pathparams.go | 26 +- internal/utils/queryparams.go | 54 +- internal/utils/utils.go | 35 + models/apierrors/responsevalidationerror.go | 38 + models/components/artifacttype.go | 30 + models/components/autocompleterequest.go | 6 +- models/components/autocompleteresult.go | 9 + models/components/chatsuggestion.go | 9 + models/components/feedentry.go | 4 +- models/components/feedrequest.go | 6 + models/components/feedresult.go | 4 +- models/components/mcpauthmethodbreakdown.go | 42 + .../components/mcpbreakdowninsightsrequest.go | 12 + .../mcpbreakdowninsightsresponse.go | 8 + models/components/mcpuserbreakdown.go | 9 + models/components/peoplerequest.go | 21 + models/components/person.go | 9 + .../platformauthenticationsuggestion.go | 15 + models/components/platformproblemdetail.go | 94 ++ .../components/platformproblemdetailerror.go | 15 + models/components/platformskill.go | 9 +- .../components/platformskillimportresponse.go | 3 +- models/components/platformskillorigin.go | 26 +- .../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 | 44 + ...sourcepreviewstreameventserversentevent.go | 185 ++++ ...latformskillsourcepreviewstreamprogress.go | 84 ++ ...rcepreviewstreamprogressserversentevent.go | 44 + .../platformskillsourcepreviewstreamresult.go | 65 ++ ...ourcepreviewstreamresultserversentevent.go | 44 + .../platformskillsourcepreviewstreamscan.go | 75 ++ ...lsourcepreviewstreamscanserversentevent.go | 44 + .../platformskillsourcepreviewstreamskill.go | 65 ++ ...sourcepreviewstreamskillserversentevent.go | 44 + models/components/platformskillstatus.go | 2 +- .../components/platformskillsyncresponse.go | 15 +- .../platformskillsyncresultstatus.go | 32 - .../components/platformskillupdaterequest.go | 3 +- .../components/platformskillupdatestatus.go | 2 +- .../platformskillversionslistresponse.go | 6 +- models/components/ugcactionunion.go | 102 +++ 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 | 40 +- .../platformskillspreviewsourcestream.go | 59 ++ optionalnullable/optionalnullable.go | 26 + optionalnullable/optionalnullable_test.go | 93 ++ search.go | 8 +- skills.go | 461 +++++++++- tests/messages_test.go | 2 +- .../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 +- .../handler/pathpostrestapiv1getchat.go | 4 +- .../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/skills_test.go | 13 +- tests/summarize_test.go | 11 +- triggers.go | 40 +- 200 files changed, 5464 insertions(+), 1027 deletions(-) create mode 100644 docs/models/components/artifacttype.md create mode 100644 docs/models/components/mcpauthmethodbreakdown.md create mode 100644 docs/models/components/platformproblemdetail.md create mode 100644 docs/models/components/platformskillsourcepreviewstreamerror.md create mode 100644 docs/models/components/platformskillsourcepreviewstreamerrorserversentevent.md create mode 100644 docs/models/components/platformskillsourcepreviewstreamerrortype.md create mode 100644 docs/models/components/platformskillsourcepreviewstreameventserversentevent.md create mode 100644 docs/models/components/platformskillsourcepreviewstreamprogress.md create mode 100644 docs/models/components/platformskillsourcepreviewstreamprogressserversentevent.md create mode 100644 docs/models/components/platformskillsourcepreviewstreamprogresstype.md create mode 100644 docs/models/components/platformskillsourcepreviewstreamresult.md create mode 100644 docs/models/components/platformskillsourcepreviewstreamresultserversentevent.md create mode 100644 docs/models/components/platformskillsourcepreviewstreamresulttype.md create mode 100644 docs/models/components/platformskillsourcepreviewstreamscan.md create mode 100644 docs/models/components/platformskillsourcepreviewstreamscanserversentevent.md create mode 100644 docs/models/components/platformskillsourcepreviewstreamscantype.md create mode 100644 docs/models/components/platformskillsourcepreviewstreamskill.md create mode 100644 docs/models/components/platformskillsourcepreviewstreamskillserversentevent.md create mode 100644 docs/models/components/platformskillsourcepreviewstreamskilltype.md delete mode 100644 docs/models/components/platformskillsyncresultstatus.md create mode 100644 docs/models/components/ugcaction.md create mode 100644 docs/models/components/ugcactionunion.md rename docs/models/{components/platformskillsourcepreviewrequest.md => operations/platformskillspreviewsourcerequest.md} (88%) create mode 100644 docs/models/operations/platformskillspreviewsourcestreamrequest.md create mode 100644 docs/models/operations/platformskillspreviewsourcestreamresponse.md create mode 100644 models/apierrors/responsevalidationerror.go create mode 100644 models/components/artifacttype.go create mode 100644 models/components/mcpauthmethodbreakdown.go create mode 100644 models/components/platformproblemdetail.go delete mode 100644 models/components/platformskillsourcepreviewrequest.go create mode 100644 models/components/platformskillsourcepreviewstreamerror.go create mode 100644 models/components/platformskillsourcepreviewstreamerrorserversentevent.go create mode 100644 models/components/platformskillsourcepreviewstreameventserversentevent.go create mode 100644 models/components/platformskillsourcepreviewstreamprogress.go create mode 100644 models/components/platformskillsourcepreviewstreamprogressserversentevent.go create mode 100644 models/components/platformskillsourcepreviewstreamresult.go create mode 100644 models/components/platformskillsourcepreviewstreamresultserversentevent.go create mode 100644 models/components/platformskillsourcepreviewstreamscan.go create mode 100644 models/components/platformskillsourcepreviewstreamscanserversentevent.go create mode 100644 models/components/platformskillsourcepreviewstreamskill.go create mode 100644 models/components/platformskillsourcepreviewstreamskillserversentevent.go delete mode 100644 models/components/platformskillsyncresultstatus.go create mode 100644 models/components/ugcactionunion.go create mode 100644 models/operations/platformskillspreviewsourcestream.go 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/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 8f01e56e..b6b0fcdd 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -2,7 +2,7 @@ // README at: https://github.com/devcontainers/templates/tree/main/src/go { "name": "Go", - "image": "mcr.microsoft.com/devcontainers/go:1-1.25-bookworm", + "image": "mcr.microsoft.com/devcontainers/go:1.26-bookworm", // Features to add to the dev container. More info: https://containers.dev/features. // "features": {}, // Use 'forwardPorts' to make a list of ports inside the container available locally. diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index dddabaea..54b3760c 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,18 +1,18 @@ lockVersion: 2.0.0 id: 9d90eb9e-33f8-4170-8944-988f4000aad0 management: - docChecksum: 1974948f3cdb42c18f515f1fb0fea2dd + docChecksum: 0a2b978c36b8b3c4588afdb17899001f docVersion: 0.9.0 - speakeasyVersion: 1.798.0 - generationVersion: 2.938.0 - releaseVersion: 0.15.15 - configChecksum: 2440721a4689a69c2b3ee8dcb9850c77 + speakeasyVersion: 1.800.1 + generationVersion: 2.943.0 + releaseVersion: 0.16.0 + configChecksum: 089547cbeee89d99346a18cd516884a0 repoURL: https://github.com/gleanwork/api-client-go.git installationURL: https://github.com/gleanwork/api-client-go persistentEdits: - generation_id: 863a782d-b3e6-4b93-9bdf-5cb094c9eb27 - pristine_commit_hash: 01e8c05f045a03e91fb1d6a83a36b0c7031de461 - pristine_tree_hash: 75448e033e5b49ab1db1263a7f2652013d0aa043 + generation_id: 51d351d3-1606-4e72-8315-7452bbfffcaa + pristine_commit_hash: fbd487306f4070d3aff25ae7206fcd8704fb9e5d + pristine_tree_hash: 72794ea5a28b454628d6bb0dd2c88f7d460cd3a0 features: go: acceptHeaders: 2.81.2 @@ -20,7 +20,7 @@ features: additionalProperties: 0.1.3 callbacks: 1.0.0 constsAndDefaults: 0.1.14 - core: 3.13.58 + core: 3.14.1 defaultEnabledRetries: 0.2.0 deprecations: 2.81.3 devContainers: 2.90.0 @@ -38,13 +38,13 @@ features: methodServerURLs: 2.82.2 mockServer: 0.1.4 nameOverrides: 2.81.4 - nullables: 0.2.1 + nullables: 0.2.2 responseFormat: 0.1.2 retries: 2.84.5 sdkHooks: 0.3.1 serverEvents: 0.1.10 tests: 0.16.8 - unions: 2.87.10 + unions: 2.87.12 uploadStreams: 0.1.0 trackedFiles: .devcontainer/README.md: @@ -53,8 +53,8 @@ trackedFiles: pristine_git_object: f2f908c9bfbd80e059d24e74cfce9230ead5342a .devcontainer/devcontainer.json: id: b34062a34eb1 - last_write_checksum: sha1:00c39389eee01217e51057762bde7339d9e56114 - pristine_git_object: 8f01e56e2f8476fb2a7c79ec6326b3b0d5be8123 + last_write_checksum: sha1:8a54e16e0b01d791205e6bafa9b912f73b68ab0e + pristine_git_object: b6b0fcdd7f449a84765c3e4e838c05e3885d9472 .devcontainer/setup.sh: id: 5f1dfbfeb8eb last_write_checksum: sha1:dbf95d0b815527f25b02f37a5499d03b85db0c80 @@ -73,8 +73,8 @@ trackedFiles: pristine_git_object: 9c4d301118236a7c81e8b0fffb6e387ed59361c2 agents.go: id: 148cd435d94c - last_write_checksum: sha1:84f6745847f4790b167ddb07e869f88c079b3491 - pristine_git_object: 106f2f98ca9006abd4fa01c5f5a9a3a293091af1 + last_write_checksum: sha1:50c817917566e518131648bcbdc5a756b3a0e601 + pristine_git_object: 904908445ec0dc285592e524dd4aea5f934eed14 announcements.go: id: 5da39fbc3664 last_write_checksum: sha1:40db85bb384db08da04661a1524793d3f827d903 @@ -85,48 +85,48 @@ trackedFiles: pristine_git_object: 10266e6f1bb29d4dc23a062cf812cd8b301e7e9c chat.go: id: 81535ccb3ff5 - last_write_checksum: sha1:6e005735a5d3585ac561279fbf7ffff85fea7adc - pristine_git_object: 13dc9c16103b053ffe211c97f183c4adeea23d5c + last_write_checksum: sha1:959d815a19293863f7b17f8296c53062444a754e + pristine_git_object: 98484c5e613fa8deada8418350267ef1ad1902fe client.go: id: d633516feaf9 last_write_checksum: sha1:0d0791344f96bf5f4ca299c16ff640582fb0c055 pristine_git_object: ac0aef7df4df0713253d8ddc1f2f4cb49c98a4dd clientagents.go: id: 79ea0ac21b88 - last_write_checksum: sha1:d52f92dc7286e70f5050f327c595ab482920ab87 - pristine_git_object: 3b7a2ec81a6b9bcaebbc834dd9177fee1b5f89a6 + last_write_checksum: sha1:97f8b5875656e27c81b7396143210e289d9a1a3c + pristine_git_object: 37e32c7f5212b6a296326592d3bdecd1d5b6e476 clientauthentication.go: id: 366fdcad5033 last_write_checksum: sha1:c9dc5c89ac6b609b5f8937bb7e6dc9ba1d3dfe05 pristine_git_object: c23df5040b91050c92d095e1bcd708a0500996fb clientchat.go: id: 5e9b368de611 - last_write_checksum: sha1:d304be6edc67d1a9c342107ff919ccd34262b21f - pristine_git_object: 54ccfc382724a161ddc8cbfe9ad7bebf4b8cb557 + last_write_checksum: sha1:df24d367594658e1d3251b9c5941fa7606b957ba + pristine_git_object: 60abc43f3b81be5bd79f92afe56de4d169a49a45 clientdatasources.go: id: 7d63c153115e - last_write_checksum: sha1:f05ec2fd34bdab1f1eac5f02726e83c0fcb9eeb1 - pristine_git_object: 7a3addcd8d5a725884b3ae2732819fba28128689 + last_write_checksum: sha1:ac1979a75cad0cd2de784d2c6adf6cf1bc892a43 + pristine_git_object: 3f867680e1fb753e09c733bf98397182bb310c31 clientdocuments.go: id: b58779267e7b last_write_checksum: sha1:9d10a125d8206d78a9798ebc38e804d74c8245e8 pristine_git_object: b2612f507522f9d60677570cdfc4997d4da792f0 clientsearch.go: id: 95e137dde7a8 - last_write_checksum: sha1:f3995555094ddc9fe844a3f1fceff055de9025b9 - pristine_git_object: b47f24e28ba0ded67cd29721486303d2aeafa127 + last_write_checksum: sha1:1c88448ebd91365de81274bd7ccb0385cbeed03a + pristine_git_object: 613d3a5292104b3d1c018821e1fdb1beeb550dde clientshortcuts.go: id: e9e3a2bd0f87 last_write_checksum: sha1:f29f9ec3b4092d96789a46cfa54dab2de792d8cc pristine_git_object: 498897bb2ee582f229a204a37463d14544d89133 collections.go: id: cb16c63710b4 - last_write_checksum: sha1:8400a2bb912ae2d2622de111859e7a40942d454d - pristine_git_object: e998033b53f22dea6f6466444c9770eb3ce9eedf + last_write_checksum: sha1:35dec257ae40a0bc3246403fe1501e0b61fcaaad + pristine_git_object: 6318f722cbf941bb9a245637f7470d259da1e919 custommetadata.go: id: 21c478194b42 - last_write_checksum: sha1:2479b9771b0c58cae8bbecd0896e58b5a938d9d2 - pristine_git_object: 27e8d61b29618a99b44712dcc78b3c24b4b0f84b + last_write_checksum: sha1:02913a07b3d6719798551a79b8bc46db0c703286 + pristine_git_object: 45db1b3a5a94141f2e6bec629a031c19ab0bf102 data.go: id: aefc573bbe5e last_write_checksum: sha1:6dd4509f5402cd37b9efc34d05a88a768a53747c @@ -367,6 +367,10 @@ trackedFiles: id: b189b88d799e last_write_checksum: sha1:33adbce67199ec541a0000dc2076490c90a8d67b pristine_git_object: 171eea51a2bd10abc35a691befdf1e2e3fc9778c + docs/models/components/artifacttype.md: + id: 3bf529b8bd4a + last_write_checksum: sha1:411a8d68b45c4391fe0349a1cd61d668a33ab86f + pristine_git_object: 5dde12a280a3ba57e4a444d1f8dd432d13a150c2 docs/models/components/assistantinsightsresponse.md: id: fe64623e536e last_write_checksum: sha1:5b6637c7ba6320f65fa370b962849adffd8cd934 @@ -429,16 +433,16 @@ trackedFiles: pristine_git_object: 496ca21a6ccdb1296a7aaa780ff7b71c0a78737f docs/models/components/autocompleterequestresulttype.md: id: 70858c4122fa - last_write_checksum: sha1:debb5f4928906b56146504fb150853ab0dc42676 - pristine_git_object: 53d2df9ebb635bfb6c9b4d950d53b754c9be13f3 + last_write_checksum: sha1:f8f103e8bc9c1eae696ccc800150d2cd97af4e4c + pristine_git_object: bc6873d6afc5b5fe40664dd7f8572f969e9ee65d docs/models/components/autocompleteresponse.md: id: 435d18bef335 last_write_checksum: sha1:5d3a9ee143baa0bb3bc57a4a931dbc281a534c98 pristine_git_object: 22ba15faabe53c6a3d5ab94ba0b04b1bde6f7e47 docs/models/components/autocompleteresult.md: id: 6f312e450400 - last_write_checksum: sha1:0d9e6c6c39acaa7d22fdf10d78c92352dfaf0d90 - pristine_git_object: 69732a35c0c9469008f113519920437a6df498ce + last_write_checksum: sha1:1f48491d067611ea4b0d1e01fd7ab8a246f7eed8 + pristine_git_object: a02f58096caf03aa053ad9f357dc279a1d35e0de docs/models/components/autocompleteresultgroup.md: id: f39b36cf540a last_write_checksum: sha1:025a7587e8e5e5292d1dc62044d9c5adda1eea70 @@ -453,8 +457,8 @@ trackedFiles: pristine_git_object: e0f7ef732027f1147329c928de1e4a60bf87be92 docs/models/components/breakdowntype.md: id: d337e06af0b5 - last_write_checksum: sha1:63a1b41013511dfc2e9e9cd8161d36ea7df9f6c8 - pristine_git_object: 31893b0f629db53f0f488f6f4c80315c82ebfebc + last_write_checksum: sha1:08ad55da1e1dc1f7a66e0d6ff178ce2d4f15a790 + pristine_git_object: 3d774a9e297dc542bc5a9ea91f6d23ddfd2d3427 docs/models/components/bulkindexdocumentsrequest.md: id: 57ea12d7199e last_write_checksum: sha1:9c3e2001a490e48ee3452660b77369ee76f01c63 @@ -649,8 +653,8 @@ trackedFiles: pristine_git_object: 346c1b5ad59dcd69797ea3cccca069754e9b2042 docs/models/components/chatsuggestion.md: id: c52f5b771279 - last_write_checksum: sha1:a90c76a599263ad291ec73747693603d2f966f36 - pristine_git_object: 1a604a549a3d2def18b06c292221f6c405caf463 + last_write_checksum: sha1:17b8207957e33c150811f373d46d47f8f998d7fa + pristine_git_object: 3e846dae48e8092328c092d7cd0703fbb0213bf6 docs/models/components/chatzerostatesuggestionoptions.md: id: 3c01a3291509 last_write_checksum: sha1:ff8b2af02fe787e9e121cad351cb94854e584b03 @@ -1413,8 +1417,8 @@ trackedFiles: pristine_git_object: c8e4adbb9259788d825acac24b08c9cd9afca960 docs/models/components/feedrequestcategory.md: id: 801f1c3c64d4 - last_write_checksum: sha1:b8310ae0ac8b9588c4a6228d8bcfc9b490efe9ac - pristine_git_object: d62f5c32b8392a549c4782408b670e509bc07579 + last_write_checksum: sha1:d73b1f71637cd4d2ed37a5797a35feb7dc852add + pristine_git_object: e056242b7e2da8788a4d3a71c6c0e51fc7f1052e docs/models/components/feedrequestoptions.md: id: 76c5e4412304 last_write_checksum: sha1:674915ceaa3b9eec9d9543dc9f0e6a85b394174e @@ -1429,8 +1433,8 @@ trackedFiles: pristine_git_object: 86a3734a33e235d580f920fc6402a48ecfaaf1b4 docs/models/components/feedresultcategory.md: id: 94c0249352b4 - last_write_checksum: sha1:866280540c83d3a32e18a6ec2e1cdef36bb77d65 - pristine_git_object: 9135724ee179218e1cfba360f144c6d3f27dbe77 + last_write_checksum: sha1:cb89815d2b770fbf07fd0db618a5cd63e033da14 + pristine_git_object: 8fa6bf4aff1abde9e99f195a25f06ad897b75afb docs/models/components/fieldscope.md: id: 23caffb85bb7 last_write_checksum: sha1:65cdffa9b7bf28a760c906f49dc7417f37b9e56f @@ -1765,8 +1769,8 @@ trackedFiles: pristine_git_object: 229c8af1dcde17c3b4507889380258a7d2bb939d docs/models/components/justificationtype.md: id: 5a15880767a5 - last_write_checksum: sha1:717cb9ce6a88e15d03dc348ffb006fd2a6e3cd86 - pristine_git_object: 172b7300d9765c00eff62e0885bd168001ee2e62 + last_write_checksum: sha1:dd7ca0a25e7cbcb59845c8f3ef9a7e9ea2449d63 + pristine_git_object: 08abc4f5c9958bd94b32cd88d78f9833bf38da6d docs/models/components/knowledgetype.md: id: cf27a7cefa69 last_write_checksum: sha1:f7294d6350e558a0a626ac41241ccbf0facacf10 @@ -1875,14 +1879,18 @@ trackedFiles: id: e8f82b359fff last_write_checksum: sha1:f046bd0166a302cf840e90ac594bbc055c68ebd4 pristine_git_object: 43f1382c13e781c60c0e4a3f93b04d454a0f1364 + docs/models/components/mcpauthmethodbreakdown.md: + id: 2093df564b95 + last_write_checksum: sha1:5c67b20565cf5564aedf5980754cf696c8715c6e + pristine_git_object: 06322325e4acb75a3dec1d767a61572464b9f48d docs/models/components/mcpbreakdowninsightsrequest.md: id: 55b000918669 - last_write_checksum: sha1:616ec9e930cd5577b29d50e84d1ef6aa1111ca25 - pristine_git_object: fdabe0b538d430c2195e998e3a19d394b5c84a01 + last_write_checksum: sha1:7899af207dc93e922f75054b76c489b32fc005c3 + pristine_git_object: c6753ae89b15986382a5835340755a3afe644897 docs/models/components/mcpbreakdowninsightsresponse.md: id: 0904ea06b356 - last_write_checksum: sha1:265076fe66155dcf7adff2a0afbdd0d9e794e805 - pristine_git_object: e358ff49747ce6952d6bfc2bc9f9cb67460a2b95 + last_write_checksum: sha1:f3ae53cd68584979d041fdb12013f874012b6eb3 + pristine_git_object: dc526f821308c1ad2d472e2c5c59cc1944f471a5 docs/models/components/mcphostapplicationbreakdown.md: id: 1357689d4c2b last_write_checksum: sha1:5a596aaf3d7489de3ba294e8f789483424bf3d81 @@ -1905,8 +1913,8 @@ trackedFiles: pristine_git_object: 300244d416dd28e29ea453572f0b6f1dfa02ba93 docs/models/components/mcpuserbreakdown.md: id: 5acddf4e59b7 - last_write_checksum: sha1:5af62c8bf141253784337c379b898814c41978ff - pristine_git_object: 690987421efe38b5d3f78a699389000de9b091d3 + last_write_checksum: sha1:7767b4b532ae2fa300c4421ba2c0ece14d4bbc9b + pristine_git_object: f539c11b354596efe485a8b90bf69dff37a63ddd docs/models/components/meeting.md: id: 40604b996772 last_write_checksum: sha1:1146372010096c9731bd23e2e470f00607e1f276 @@ -1973,8 +1981,8 @@ trackedFiles: pristine_git_object: 4555c0106ca95de3c4ff40e7d2ec703506c30450 docs/models/components/peoplerequest.md: id: b5ccacf2110f - last_write_checksum: sha1:82ddca9c3153d2e5e9f8a5f9bd4ec5b7ce8bb402 - pristine_git_object: cb1dbf3312be1e297f961f3aa8ff78a8d45c789d + last_write_checksum: sha1:ecddaf636d26035186440f4961b9dae198e3a61d + pristine_git_object: 388dfe284148f45c3b763171daaa81bfec679850 docs/models/components/peoplerequestincludefield.md: id: 45f5af675496 last_write_checksum: sha1:655e87f423fb7a40e4426f95422928f6bfeef412 @@ -2001,8 +2009,8 @@ trackedFiles: pristine_git_object: f13f16ee903df8f42f5d09311744390ab4461608 docs/models/components/person.md: id: ad6611e15c39 - last_write_checksum: sha1:82f178a74ea96d4a8e816b8fb84bcd6a3a79eca8 - pristine_git_object: 0ab606b4a4f4d07d63df33ffe6bd1cce87d16c4a + last_write_checksum: sha1:7f92b850e48b31624c55f3c15e4649ad7212e610 + pristine_git_object: 0a4d49251becdb1032c21bb5ebe4b1ebfc099629 docs/models/components/persondistance.md: id: eaef4363d4a8 last_write_checksum: sha1:757d7a4807f12ae343a65816c94feaaabc1323f1 @@ -2399,6 +2407,10 @@ trackedFiles: id: 19605b2bfe1a last_write_checksum: sha1:c2ef1492058ffabdad11a712b04596b7f713b118 pristine_git_object: 863b0d0c55eba6c83bc7f540103117338ce5cd7e + docs/models/components/platformproblemdetail.md: + id: 0b51401d8e94 + last_write_checksum: sha1:592ad7e9d7726f5e13976902249dce723025046d + pristine_git_object: 6abe2e9d428fcad9f8f3338d7c41313dd0472c34 docs/models/components/platformproblemdetailcode.md: id: 95febbc85dd1 last_write_checksum: sha1:5254d1a643cad39a59ad7b9a800a5fcee2247ecc @@ -2425,8 +2437,8 @@ trackedFiles: pristine_git_object: 0ff8503fb558b738e32cd692a189c0cfb3c709a9 docs/models/components/platformskill.md: id: 0085679a1f14 - last_write_checksum: sha1:7fb7ab3d042d0c28c27716010cddc30bc47cb06c - pristine_git_object: 28d865f006c9630eec3d7c10370402b951dcecf6 + last_write_checksum: sha1:882226ad8a92591bd4d28570de94b8b52c1a8376 + pristine_git_object: 719bf05478b6319c8a0eecfbc761acf713b64df7 docs/models/components/platformskillcreaterequest.md: id: ddb3e21de644 last_write_checksum: sha1:9a330b4872483aa78ef1d0fd9c8e243197edb3a8 @@ -2449,16 +2461,16 @@ trackedFiles: pristine_git_object: b703608d20827210eb2e74bc469e63fb081a5cb1 docs/models/components/platformskillimportresponse.md: id: e074ca989028 - last_write_checksum: sha1:2f834c1579480e1dafba6c07f375340fe53713c0 - pristine_git_object: daf058892438857cb456fabc5ad7f47e59073967 + last_write_checksum: sha1:53f0819ab543d874361162d536704dcdf11d03f7 + pristine_git_object: f9a18d7cb3d99f0733e360cfb70d74476058ea65 docs/models/components/platformskillorigin.md: id: 9dc751dc212a - last_write_checksum: sha1:4a1d6ce7afa526d37d4386871f24471c1daff646 - pristine_git_object: 898011b445cbf9ad0e6fb7e66b7b09d4f72fa639 + last_write_checksum: sha1:446d876ff0e6242ccd3e8d23d37dca64c4eb7883 + pristine_git_object: fdd85ffbc1ef0b197d04dced5bacf6ea605c031f docs/models/components/platformskillslistresponse.md: id: 58b27e4bea7e - last_write_checksum: sha1:efe68fd855c2344a01f93d8d103866372a06fc69 - pristine_git_object: 3e7bca2ce6fa6ad499fe7b1b0e52fbdaf1862daf + last_write_checksum: sha1:2936f5f50f5c9da8e67e1c5554b652fdf3e32411 + pristine_git_object: c0326d1b06a89defdefc7ba3b86adc1904f57c46 docs/models/components/platformskillsourcepreview.md: id: 0157ee45b700 last_write_checksum: sha1:49d68fdc68a1c2e11f78e601dd4a1b56e8d451d7 @@ -2475,46 +2487,102 @@ trackedFiles: id: 1b1d78e3ecce last_write_checksum: sha1:e7e3ea7665fc189a42116177b93a408be85a7aa9 pristine_git_object: a239843aa5958128407a75a23f41aeaca17bd0ab - docs/models/components/platformskillsourcepreviewrequest.md: - id: 4c73cb5f6bf5 - last_write_checksum: sha1:b00a7f7341d75b07d4dd5986bb2226fca7ba9fb0 - pristine_git_object: 82b4de685a58f5cfaa48398cb13ece75b31bb23f docs/models/components/platformskillsourcepreviewresponse.md: id: c042e21aa523 last_write_checksum: sha1:ecfe816ea0a78c6acb660da49a65129594c5315e pristine_git_object: df5d3ec567859af197d45c265ae449412044bbeb + docs/models/components/platformskillsourcepreviewstreamerror.md: + id: 42676d2b2434 + last_write_checksum: sha1:eb3104f32d3e514a0502556d9aafe8625fae3e55 + pristine_git_object: 358b64b3ae2f79550b1f7206875870ad77a7c41f + docs/models/components/platformskillsourcepreviewstreamerrorserversentevent.md: + id: ad34dd3e8d88 + last_write_checksum: sha1:a21e08db5e35c6b2599a70853727657715d4607d + pristine_git_object: 5bd3afb84e6e399375416abb28244902587f98f7 + docs/models/components/platformskillsourcepreviewstreamerrortype.md: + id: eebf502485e5 + last_write_checksum: sha1:2b5294d3afc5df895b12315b50552c638ed619e9 + pristine_git_object: 1b7c1a28c4e68fb85884fa12fb94372743528e9b + docs/models/components/platformskillsourcepreviewstreameventserversentevent.md: + id: 119c754e806c + last_write_checksum: sha1:2b969c77cf1377f034b91f6dd55e7f2a3a9f4278 + pristine_git_object: 84211ceb1f7c80d5b70d6138168944e512b00b85 + docs/models/components/platformskillsourcepreviewstreamprogress.md: + id: 19f96ab1cfbe + last_write_checksum: sha1:7e56d28d1c88c40656c283f863024922ceb225f0 + pristine_git_object: 9645740b97de80c481bd54803eeb5042b473ca01 + docs/models/components/platformskillsourcepreviewstreamprogressserversentevent.md: + id: b4bf752c5de3 + last_write_checksum: sha1:88f929cc46601a94fba0c77f19bfd21c11cc8883 + pristine_git_object: 5a53a49f53bc5ab9286c4cdf989b4fc69f8135c5 + docs/models/components/platformskillsourcepreviewstreamprogresstype.md: + id: 4c7eb838000c + last_write_checksum: sha1:b932c25d124804a3ea9482a7c4ddad3341976f1a + pristine_git_object: e195fa1b55889d384302463f7026f2216a20d382 + docs/models/components/platformskillsourcepreviewstreamresult.md: + id: bb9badf857ae + last_write_checksum: sha1:87b681c5f437aacebf6910be6d11d69e9f048e9d + pristine_git_object: 0a03ce492d25296ee1771a033fb20e23123176fd + docs/models/components/platformskillsourcepreviewstreamresultserversentevent.md: + id: 7e0e11fc3ccb + last_write_checksum: sha1:298e663ff2db8b87588e1a2be0626d8a4b9440b5 + pristine_git_object: 50bb15b0e699e20cffac86e14590d20aa8a84e2d + docs/models/components/platformskillsourcepreviewstreamresulttype.md: + id: ec77aa38333a + last_write_checksum: sha1:d2d8f1ad5a2f96fc0b3f53400949f1ade4710531 + pristine_git_object: a297cea8a3810b0e55d9e5a1d134470622608e25 + docs/models/components/platformskillsourcepreviewstreamscan.md: + id: 605762c4b642 + last_write_checksum: sha1:b4cc5dd62cf8d9ec235be1a2dc3d6bd53dd93079 + pristine_git_object: 3c3788092b41aa9ee1b8e09b2e65ab2bc50f5e23 + docs/models/components/platformskillsourcepreviewstreamscanserversentevent.md: + id: c4be5a2d682f + last_write_checksum: sha1:6d357f5b4c21b848c19ced3b9d8ad47d203e1028 + pristine_git_object: 7f66c53567e7ebaaded4154fb8180a1c54a5e0ae + docs/models/components/platformskillsourcepreviewstreamscantype.md: + id: 63a04d1ceb85 + last_write_checksum: sha1:4b630bb1db54fa8b73b44c22834d04947efeb3c8 + pristine_git_object: 15283bdb24a050317f58539e3e3fd07b0d0a5607 + docs/models/components/platformskillsourcepreviewstreamskill.md: + id: 0884aa6aab67 + last_write_checksum: sha1:b22195bb4595a88a75e2463a01cd04087000fc0c + pristine_git_object: 9b24cfd8cabb89a383184dbbd3d4fbaad3e5b4d5 + docs/models/components/platformskillsourcepreviewstreamskillserversentevent.md: + id: f227de4a4d16 + last_write_checksum: sha1:fb6e3cbd6cc7e526ca5db6b7e996b0a1a0e6024d + pristine_git_object: 4f339a69ddf0b92ab717ca598721d5ff50765be8 + docs/models/components/platformskillsourcepreviewstreamskilltype.md: + id: d61a370e08b5 + last_write_checksum: sha1:3bde9494b86ca6643e6d38791740d69279caa732 + pristine_git_object: b7f067beedf0960d88d8b3c834459701377158a0 docs/models/components/platformskillsourceprovenance.md: id: 29fe97f47f93 last_write_checksum: sha1:175c6ef974cbfe66b806e810db5c69060bf432fc pristine_git_object: c9c901dd9f1740f879336b4fd06348d35f5ef0e0 docs/models/components/platformskillstatus.md: id: 3342d36796ac - last_write_checksum: sha1:6d88bc81927adb5900359e8d16ff9550f0c01ca3 - pristine_git_object: 0eb8f54e948b71747e9f9a1a928f91733bdd88eb + last_write_checksum: sha1:79b5b7e4e2690ebc3492131610ce306bf71a7825 + pristine_git_object: f9dbe4f9e40202da72694e585b0ff5030ec450a6 docs/models/components/platformskillsyncresponse.md: id: f2d7897083b1 - last_write_checksum: sha1:f8c3d971326603a261260badd3abd8ebc070b6ef - pristine_git_object: 9232b330287ee8f00b9f261e87902be9b5deb442 - docs/models/components/platformskillsyncresultstatus.md: - id: 8a1567973f36 - last_write_checksum: sha1:ab598e02b1eb9560b2e43bf3f7ea3315ee1e379d - pristine_git_object: 5a3008633163ad94dfa8fb2b7e968f38f86ee40d + last_write_checksum: sha1:c8adf5d6b7dc1f1a8ace643df29cbb42c1512b3f + pristine_git_object: 437b6bfea8ec46d8904e604b429d2f1e93ddfea0 docs/models/components/platformskillsyncstatus.md: id: b4dfbecbfcf6 last_write_checksum: sha1:d444bf3ae45d30a6d3a8d57d0a36281e721542ae pristine_git_object: 0b0a0c1ff41ee9c5e6fa7b1f9f95b9ee0b7b7ed3 docs/models/components/platformskillupdaterequest.md: id: 7c7b69c95f16 - last_write_checksum: sha1:3e7b6314c270eeaf693fcf9517f7fdda0455b04a - pristine_git_object: edaecfb0b6d682726f094b13baad4732d6889ecf + last_write_checksum: sha1:53db343c2490c8b1a4e4d16cbe46be0a29a0bf43 + pristine_git_object: 8de999f052ff171f60409020ecba91253b739d09 docs/models/components/platformskillupdateresponse.md: id: 2c9b32e3f96a last_write_checksum: sha1:51f561de36e0576e12bf7220267f1a89e661474f pristine_git_object: f31b5b2c09ea8c18c1d5c0a70b0826488df9ecb0 docs/models/components/platformskillupdatestatus.md: id: dae697abc652 - last_write_checksum: sha1:622ad2f7eaa61647334e9baecd4d5f72fc7cdb5c - pristine_git_object: cbdb8c0f1e75bf9e938f303441310552dae1aa44 + last_write_checksum: sha1:1541122f9f6b476a2091d1659706afcd93926110 + pristine_git_object: a7a748f643c4093c57726d6fcbf5e80fd31c6f76 docs/models/components/platformskillvalidationfile.md: id: 745acf6f2b41 last_write_checksum: sha1:fdc4f6a2de0f05e46aefffaf48c9f83d489207d7 @@ -2557,8 +2625,8 @@ trackedFiles: pristine_git_object: 2c692372184fb774077f7d1584526e4fcf69072b docs/models/components/platformskillversionslistresponse.md: id: 4eb8de7042ef - last_write_checksum: sha1:09a853ddfbe93e1aa6047798eeaa352612b7f949 - pristine_git_object: 61d161e208e4d3e2b9e6bbf11eb014ae999768b1 + last_write_checksum: sha1:a59d577e7e15aecd9568e75480e6b9eda01273d4 + pristine_git_object: 6fcd4a1031f00ed1a9337da386e9df9e22d6664a docs/models/components/platformtimerange.md: id: d2e589bb488c last_write_checksum: sha1:61236d3fb6f05a246d0a61150bf2456c18cfd7f5 @@ -3167,10 +3235,18 @@ trackedFiles: id: d7d247803f24 last_write_checksum: sha1:7317bf7af5e8a7ed81e06438a35bb8e0af502075 pristine_git_object: ff0c9ab42bb2060ffa4b4baa6b29d2136f97dd18 + docs/models/components/ugcaction.md: + id: 5efe4c5eda95 + last_write_checksum: sha1:ec317586872a5a089471a3477b315dd61ae3c5b3 + pristine_git_object: d164f4a4a1591563ef94f8a22128a1cda7fd9627 + docs/models/components/ugcactionunion.md: + id: 5e9c519d736c + last_write_checksum: sha1:130ce89a95b5382e4459f4d986104e1a56c84cc7 + pristine_git_object: f92a4abf2dee0172d59234c97dc5853dc07d5bd6 docs/models/components/ugctype.md: id: 40fa5e032f80 - last_write_checksum: sha1:52143e3d7b9986cef444ad5de17b28132519cd0d - pristine_git_object: 39f2a4caee66e5f8dec67d2a6c5ad93b275b4341 + last_write_checksum: sha1:129ce1e7a73d983f3708f53a5d269e70c3f96b3b + pristine_git_object: e6a412615c124476f78c9deebb2d9d4bb6d19804 docs/models/components/uiconfig.md: id: 755fbd873311 last_write_checksum: sha1:682048883ac81a43f5ff7becd6906e1146dfa46a @@ -4097,16 +4173,16 @@ trackedFiles: pristine_git_object: 21e5257f602e50b2b4d2c12aef290053c0600e55 docs/models/operations/platformskillscreateresponse.md: id: bf1b7b9f64ea - last_write_checksum: sha1:b01e512975a20371f0bb60bd95f23c9c0ef5fac3 - pristine_git_object: 62190721df56ad8aa890593ea1870439a657a560 + last_write_checksum: sha1:5a0216e515fa98093e06e778b19ceeaf6950d9f5 + pristine_git_object: d5995939434dedd4a5b72596a3bbfb9e735d4882 docs/models/operations/platformskillscreateversionrequest.md: id: "2144541424e6" last_write_checksum: sha1:e2c003a8318a039d1900537f760b4cf4dbdf165d pristine_git_object: f5ed2f451899cbb440093b9520626953a1b8fa0b docs/models/operations/platformskillscreateversionresponse.md: id: 58d67937d543 - last_write_checksum: sha1:57be4ba2cd1daa29114c423941a16145384e933a - pristine_git_object: 195a037d2af597bcd05004c3fb10f0f573b821e6 + last_write_checksum: sha1:06bb0f295c9135a7eeb4b54144a045c34d34409e + pristine_git_object: 4d18bcf935380c2b8ebd05d2085087b9b6e98c1e docs/models/operations/platformskillsdeleterequest.md: id: 76e6cf7f760a last_write_checksum: sha1:295a510245347164dc3dbeea35079521d397755d @@ -4153,24 +4229,36 @@ trackedFiles: pristine_git_object: 747cdc55f805337bd8340cddd3c82c334cd9e4d5 docs/models/operations/platformskillslistrequest.md: id: 2e304cbf2212 - last_write_checksum: sha1:90c7ee33379213fe5e88db31513945f25da76034 - pristine_git_object: 7727a9476f5a848f051ec94e9629e984e49d2563 + last_write_checksum: sha1:28d1d13763dc1c20342d96aa8debeb283fb4a62b + pristine_git_object: c434c3d828bffb4d5f6cd15eeabe67ce6112a788 docs/models/operations/platformskillslistresponse.md: id: b0b541d98b59 last_write_checksum: sha1:a332cc22fae23106c991d0a9fcad6455043c6667 pristine_git_object: e33cf96998184b7b5eea817d71c91bae30fa4e20 docs/models/operations/platformskillslistversionsrequest.md: id: 6445143da2e1 - last_write_checksum: sha1:c37867c4088b887b4abbe7d60190ca5f7311eba6 - pristine_git_object: 8e737ceb84332ff0c339dd6d8027fa9fea65074b + last_write_checksum: sha1:b92062d3673b1af1b5014ed926143f8d4959bc50 + pristine_git_object: 0333f7b3c3724c75f06c15346408bbf9af3948b5 docs/models/operations/platformskillslistversionsresponse.md: id: 223cbdeb38ca last_write_checksum: sha1:9b6070ad502283662243290db1c40e7d45aa20c5 pristine_git_object: ad004913277f0369aa47529dd1724f9773626937 + docs/models/operations/platformskillspreviewsourcerequest.md: + id: 3f53db81bb8f + last_write_checksum: sha1:fcc8582f0e9264dbeb532cd64eb76697631563f1 + pristine_git_object: f1c3a64d6334b073976f9d347ee607f03f5404e2 docs/models/operations/platformskillspreviewsourceresponse.md: id: bde357631ee1 - last_write_checksum: sha1:7f51c363322b9d83e78aa7522d200e5d37961262 - pristine_git_object: e118b628520de0a5790cab2aefdaa28d8e07f8a1 + last_write_checksum: sha1:65d0d546023f6470755eedf4c6d7f984732e11c5 + pristine_git_object: e1c724c138175c0aee78e59212b8a12348b88838 + docs/models/operations/platformskillspreviewsourcestreamrequest.md: + id: 97df43ea6902 + last_write_checksum: sha1:ffd528b2db97da6c5331818183a87cd9b8914118 + pristine_git_object: e210c58c0deeaae64a60bbd045138d65d301c1aa + docs/models/operations/platformskillspreviewsourcestreamresponse.md: + id: 4e207b161cf8 + last_write_checksum: sha1:290c0efd2f8f31e064038d833c470d24474424a5 + pristine_git_object: e568ffc61df9924a97ef3129ac1c5027fa183b19 docs/models/operations/platformskillssyncrequest.md: id: 4bb36bc4c65f last_write_checksum: sha1:88ffdaf45d999d4bd03043e3b5d153d645724017 @@ -4693,8 +4781,8 @@ trackedFiles: pristine_git_object: 8e0bde063d13aee310007ef6fe06429250c3ca9c docs/sdks/skills/README.md: id: 3a14a5c90791 - last_write_checksum: sha1:ff4119f4b24cf1991d7d4e958015c261df9644bd - pristine_git_object: accc75127dfdf02e5a5d6700d0537efe4fe2830a + last_write_checksum: sha1:477affddf8a80a7d82a5477d63649a85bd0a5150 + pristine_git_object: 4aeff116ab1fe3e671db194945e6836cad3a063a docs/sdks/tools/README.md: id: 044286549bac last_write_checksum: sha1:a8e527fcecf1c5e4aa40492d811a7bcb3e955276 @@ -4725,12 +4813,12 @@ trackedFiles: pristine_git_object: a3cb3e5448f3fdcfad77ed2a4ba47ae848d5cd5d glean.go: id: f5ed099b8e85 - last_write_checksum: sha1:3038c00dfed9cf6af92ad1c55fd9284071ec4b96 - pristine_git_object: 1de99baf2233c86ac3de18fa504f4abff0f198f5 + last_write_checksum: sha1:04272453aa37722ef97cc3cc024090813e777d4d + pristine_git_object: 0a2425f79f8d46b9c2e9fba74bfcc175c19e6bb5 go.mod: id: c47645c391ad - last_write_checksum: sha1:cf65a2c96e303858d4cf70e07d4c44d3f1c1db38 - pristine_git_object: 3a9e7d2e6bc213ab6877a03050d65e2a25693a52 + last_write_checksum: sha1:bf6599f85ef2316af5a85c6b52c664d173ff531f + pristine_git_object: a57e6a6dd99258990cc1bc2297301b766152ecd9 governance.go: id: 7386e0073ab6 last_write_checksum: sha1:9e5b222b4f00b410080e41a473c8672047545a41 @@ -4749,8 +4837,8 @@ trackedFiles: pristine_git_object: e527bac45070946dfbec01fd843f71a744eb0cf8 indexingdatasources.go: id: ce0d6b0e3978 - last_write_checksum: sha1:7773061729e2f3fad8432e1ccc468e9e66a1f45b - pristine_git_object: 7ad5e303318c06554c2057660af1b1be535c46b7 + last_write_checksum: sha1:4ede7d5b97d9bcf543b5f81e182829868b7519d7 + pristine_git_object: 36d60a73400b3f064284922d46176d3de719a27c indexingdocuments.go: id: 7d5a0edb352e last_write_checksum: sha1:8ef2c0c0f2bc70ddcbff8823563959c5d3b5b877 @@ -4789,16 +4877,16 @@ trackedFiles: pristine_git_object: 7129254595e4d28801d80ba9bd5130ca93000f14 internal/utils/json.go: id: ad03e3c502d8 - last_write_checksum: sha1:379ff991d6c13070a7f4c35c71122e2b326bbcd1 - pristine_git_object: 2cfbfc87c6c831f18ceee0e055b02779b421b0a3 + last_write_checksum: sha1:95f40405d4e5ab3d0a98b6a2149188723b43fb23 + pristine_git_object: 5a5f79f03e5bc1decab9225a672adefdb244d019 internal/utils/pathparams.go: id: 1f3e0c30fd90 - last_write_checksum: sha1:c262b1cbbc4a17e868e6b1cdc8b260d88f73469e - pristine_git_object: 6575730b3898a7a155c4ece62596c338232f48ff + last_write_checksum: sha1:b425085e46faaea9b6a497bd4971760d71ec3f59 + pristine_git_object: c5f0a88ff6f2ddaf352aee73aa0dfae743e3bf70 internal/utils/queryparams.go: id: e7f604e65a58 - last_write_checksum: sha1:b5d18e32d4298570a62f9ec7489961cae1ce6d1e - pristine_git_object: acf0d0c4002497c9adcb5b524b88c4602a763f50 + last_write_checksum: sha1:2def4d629062dadc5a4b135f107a105b552310e4 + pristine_git_object: f0eaed6d2dcdcb5d5e5a0c99957d325adf2bc35b internal/utils/requestbody.go: id: 22445ec1c044 last_write_checksum: sha1:43f6d1e83dcdb62450bbdc2931d4619b54145801 @@ -4821,8 +4909,8 @@ trackedFiles: pristine_git_object: d7d4c8a141f997cdac886c1f41805cc8cabcb210 internal/utils/utils.go: id: 1133b2a27019 - last_write_checksum: sha1:ffa6bc91d8d0dbc25415899da2ba4f13feb14a24 - pristine_git_object: ff6145f09159ac108478493d6887177bcacd7d63 + last_write_checksum: sha1:e02fe1474f4e2fa459cde1fc96053f452b70db83 + pristine_git_object: 9954c24b7dc08d4af1ba310b1bcade2bfa36ca35 messages.go: id: 141893e2db0f last_write_checksum: sha1:ffb243ea0c08f82cc3ac09a5b612b7fe6a2078a0 @@ -4859,6 +4947,10 @@ trackedFiles: id: 6f45a7fcf493 last_write_checksum: sha1:44128cb0e41caabdf38821f07ef9a2a425b91b25 pristine_git_object: 837c36aec3959d5680461184d304f52b3e50a8a2 + models/apierrors/responsevalidationerror.go: + id: 8e1f4cac7910 + last_write_checksum: sha1:593de5fc935fb91206142dfeca06887a84e8a507 + pristine_git_object: ac8ea557ff2316911d1311df421841bbc917e289 models/apierrors/unauthorizedagenttoolserror.go: id: 6648948f3476 last_write_checksum: sha1:cb1d93becb34766f24f8e186742c952a05f3fc08 @@ -5007,6 +5099,10 @@ trackedFiles: id: 895786e6312f last_write_checksum: sha1:f354eb72dc501a73ddbf202753507b9a7a69f8bb pristine_git_object: 6de90ccb0174c6acf79e645fc2999ef1dfedf073 + models/components/artifacttype.go: + id: 9bf73914a52e + last_write_checksum: sha1:cb2f9753bafa6b38bf13230207ebe295349b2291 + pristine_git_object: 75f7d8cc6bfd0967f23b4ae8875a9984803d153e models/components/assistantinsightsresponse.go: id: 4db8c2baf79f last_write_checksum: sha1:41a52ea81861007440c87dadbd9d0d16d329802e @@ -5045,16 +5141,16 @@ trackedFiles: pristine_git_object: 6dc7d053daf1f2c3d2f4bcb42d3f86687ecc47b9 models/components/autocompleterequest.go: id: 5f4ca07897fd - last_write_checksum: sha1:6cbcb24fd53665681d1f1d58c564e37201afd183 - pristine_git_object: 0df3d8492379b1e0dc4cbd4bcc53d114e5871ccc + last_write_checksum: sha1:d16632cc7ff4a318d7f378b9c4cae1340920232e + pristine_git_object: 0f3a445625a4b0a5305c7c9de055c001daff5ad6 models/components/autocompleteresponse.go: id: d04e4003baab last_write_checksum: sha1:480b514994b18c60b1ddf75c0fdfa63fe95b6583 pristine_git_object: ad53bcc6aa2f76baeb3d913c6ad36f7f7b5d686f models/components/autocompleteresult.go: id: 95cd41d209d3 - last_write_checksum: sha1:dad622140d266f538ab11d1fa89dc380e69c6c27 - pristine_git_object: 09ce29ab7c4b57fcefb088e88f6878f268f0ae32 + last_write_checksum: sha1:b894a4246c03e7682cb21a48c1b7c380512cf656 + pristine_git_object: 7c5fb00213b05c33d20c9078c2d2d27101f60cfc models/components/autocompleteresultgroup.go: id: e6259ebe8b6a last_write_checksum: sha1:36ca0d61e94db7d0385fe635433afaa770c76049 @@ -5209,8 +5305,8 @@ trackedFiles: pristine_git_object: 56236b563d4d60ed13e447134c10cd450364c76e models/components/chatsuggestion.go: id: e8fcde3c93f9 - last_write_checksum: sha1:af002ba74dfbbbeb7543e3847ab5eaa590bb623d - pristine_git_object: be2e3fa0af6962549383ba7bd90d6a944a06ceca + last_write_checksum: sha1:b372d1bdd3388754e4062fae7a3cfbf1f213ff11 + pristine_git_object: e53d080126571234aa2d0761c3ae9ccd570769bc models/components/chatzerostatesuggestionoptions.go: id: 71c187430867 last_write_checksum: sha1:15a8248291bda9975775168a5d6254e73dd6e6b5 @@ -5813,12 +5909,12 @@ trackedFiles: pristine_git_object: 220dbff76d0d3d12e6bdcb05787a6df030124ca5 models/components/feedentry.go: id: 2826af1aa01a - last_write_checksum: sha1:1333e4c4f56b8613298657ec14ada1f04eea8fbc - pristine_git_object: 41628c63744d4832553d5f0f7db8e1eac3324a2d + last_write_checksum: sha1:0c99393421c7744ac6d3bd9e4e841f368e8df7e0 + pristine_git_object: 6a7b63a80d35df0283a37b0eb3bad1a1ab55a98c models/components/feedrequest.go: id: 9f0a682fc981 - last_write_checksum: sha1:c59ecc919a3f4f7408e446dfca09fd08e5d545e4 - pristine_git_object: 2b2692b2670501facc6b3e91a72b24d8e6967b6b + last_write_checksum: sha1:8ef06e7e4596ed359fbb8a6746a60f9bce56fefd + pristine_git_object: a65ec7adc426e3e181707acd527fdacd6e50602c models/components/feedrequestoptions.go: id: a56c104c989d last_write_checksum: sha1:7f238a9abb079c78202b1a9f65c87b82420f63ec @@ -5829,8 +5925,8 @@ trackedFiles: pristine_git_object: 60cb4b19cbb9bd29e37128e3110b2bf0a8f80d30 models/components/feedresult.go: id: f017ac6e3ac3 - last_write_checksum: sha1:4304735a71fa98d003b6bfe1a742d0a617f0a65f - pristine_git_object: 55ef73935786dc6cb8dbde4393a3c6168f2be96f + last_write_checksum: sha1:2e94dbb3a9f41d928eb160b16a267fb6992c0a84 + pristine_git_object: bea0964778a330c429d8cba487c3ad0ef4aa4240 models/components/followupaction.go: id: aba266d23418 last_write_checksum: sha1:0a17407e6beba30680e5c38151e426a5ce7aab76 @@ -6163,14 +6259,18 @@ trackedFiles: id: 8ed77f93526d last_write_checksum: sha1:db66836ca5b218c47fe4e3a1e6e429aa30f07cb6 pristine_git_object: 72801fc939c3480816995758d9e1a15a2027e2f7 + models/components/mcpauthmethodbreakdown.go: + id: fda5587238ad + last_write_checksum: sha1:fe64abb9a620f2746d26c71002fa4f13f32e90d0 + pristine_git_object: 14fc1293a34eb4401c5cadbfb179128caa121ffd models/components/mcpbreakdowninsightsrequest.go: id: 373979462ad7 - last_write_checksum: sha1:5dbc0f47e05d31017c2cfe5c1784e29551d07629 - pristine_git_object: 5de573410c4f6e7732f32951acd519744c01b612 + last_write_checksum: sha1:58d77f8b3794e929f56c9910047e239e05e6a04c + pristine_git_object: 9c69ffc3692b3715c3b50ef256a461c9b6c37b37 models/components/mcpbreakdowninsightsresponse.go: id: 2b0551a3abdf - last_write_checksum: sha1:6a64c47dc9fb81bd8baab553ad00f40b656031ac - pristine_git_object: 527ef1ff96327ae4ccaee8f370836b5a2abce468 + last_write_checksum: sha1:b89e928fe263ede53b05871adad4ea360f34f3dd + pristine_git_object: ca0b7cfca9524c614a6f597d55c07155601454b3 models/components/mcphostapplicationbreakdown.go: id: 65dc909eb1b0 last_write_checksum: sha1:018420d0ab3bf8b29ef403b6ff4690c9ae8bdacb @@ -6193,8 +6293,8 @@ trackedFiles: pristine_git_object: 967092f5eff4537cc3b6861daf71bb95f6adf400 models/components/mcpuserbreakdown.go: id: bff9b9613ee4 - last_write_checksum: sha1:eaef41f16379514711c85babf11281e43b1a1ec5 - pristine_git_object: 46007d3009446477b99f71045967384fbe6fd1ed + last_write_checksum: sha1:cb053e09a60f38278c51a3b355ac8cf6a6c34d0e + pristine_git_object: 09473ca2d2ac7b4b942dec2fa7dc2513f31c15fa models/components/meeting.go: id: 2cd4590b4f60 last_write_checksum: sha1:1030dafde1a5a19baa206aa6ec8d371462fc4ea3 @@ -6233,8 +6333,8 @@ trackedFiles: pristine_git_object: 1432e9ddd5212e0f1142ae4ceefbf7e75c7e5805 models/components/peoplerequest.go: id: 18fc9d00290a - last_write_checksum: sha1:9f29a29890c284872525f650ecc9336bc81f464e - pristine_git_object: 29563b0272e6fe671c171acebf0553963f132e1c + last_write_checksum: sha1:3629a8dc0a43fe083d1d5ed48673af6b8e0f3ee7 + pristine_git_object: 5cdb83ff23c086e9109b863c40a36a0131bc211e models/components/peopleresponse.go: id: aa47bf8bf634 last_write_checksum: sha1:57fe565512be6d34ba9dd191d5c94e6aee38de98 @@ -6257,8 +6357,8 @@ trackedFiles: pristine_git_object: ac313f3d5cd45ab0b329afd1c2b3bef0695132ca models/components/person.go: id: d37db066e443 - last_write_checksum: sha1:85d0f36b61a34b0d7cbc79d37d4555be6e175218 - pristine_git_object: f3bbdfef5cdc09b6b1fe5760aa535ae957c12e06 + last_write_checksum: sha1:7bb91d0ccde1233c635cb53b396e7cfe6af9c18d + pristine_git_object: 1c289fb9de3be5d2fcb9e9bb22c608736bce5c1a models/components/persondistance.go: id: 31b6febb26ba last_write_checksum: sha1:937796813d8ef15ffb3f74aa4c0d86c9c14d4819 @@ -6369,8 +6469,8 @@ trackedFiles: pristine_git_object: ecc7c391d140d225d8b35ad28d732b32e8111d4b models/components/platformauthenticationsuggestion.go: id: bfa0746be529 - last_write_checksum: sha1:4060265af69d9a4320363a0f2bc2eb39b4497edd - pristine_git_object: c514d914cde6043b43188e78df27207d99ccd40a + last_write_checksum: sha1:f1372c57c7246c5688e132aaba3817fa3f7bf7fa + pristine_git_object: 5e4864399845ea4f9e97ab9acadd513a2e4123ea models/components/platformchatcitationannotation.go: id: af62f8b4d2cd last_write_checksum: sha1:33885642b25188c764b253e6c0e1ffc6498402da @@ -6539,14 +6639,18 @@ trackedFiles: id: ec628b2a76cf last_write_checksum: sha1:21e70a0691f86a2fb5c2da935b178073337e48f9 pristine_git_object: 384812a562150ed2b9a0b030a12079141fedaf63 + models/components/platformproblemdetail.go: + id: d47a323478cb + last_write_checksum: sha1:193b0ccde718aefac8b65d3bd1e297033664dd36 + pristine_git_object: e83a3c6f2b4a26b6a17f53e06aacda0bf5d50bf2 models/components/platformproblemdetailcode.go: id: 62e66628d640 last_write_checksum: sha1:d11b0f0a4a0b214f3a1123e64c3bccd0b0559e1e pristine_git_object: 67b362521299860fd94bc0716f049ac225678001 models/components/platformproblemdetailerror.go: id: 57aeed7d00cf - last_write_checksum: sha1:7e5863ddd17acbb3a7b5e2eb26c4d2ee5c5900fe - pristine_git_object: fbc08dd219966c94e343f34cde500aa0e5fc6b4a + last_write_checksum: sha1:cdad2a0d957b158684d3fa9aebef1ad9bcd635b0 + pristine_git_object: eee245cf31700bec49703b89c2851d469491e0d5 models/components/platformresult.go: id: 31e890222655 last_write_checksum: sha1:6f6e18c0b02de653ff8169136087619ed52453c4 @@ -6565,8 +6669,8 @@ trackedFiles: pristine_git_object: b3e35c034c6e4b97d19cf487c4dc9c8ff64a35a5 models/components/platformskill.go: id: 3b83f267399a - last_write_checksum: sha1:79813bab4f800c69ff646440bf159bcb313b9b3c - pristine_git_object: b4dec8678af8499f7ce23c432d876009539cb543 + last_write_checksum: sha1:0d283719f4f5cb6df50960a7afaf219e8f9a092c + pristine_git_object: 89c68010249421a954a4ce19b7fcf31d5e795d40 models/components/platformskillcreaterequest.go: id: 9b5c59f6ab87 last_write_checksum: sha1:788db9793419f4f8f3c1f4c76eafff2fd9a33d17 @@ -6585,72 +6689,108 @@ trackedFiles: pristine_git_object: 0f76fd72762dbae33b1968dc8ffff73ac2ffb010 models/components/platformskillimportresponse.go: id: "239682919114" - last_write_checksum: sha1:ae4148c7005a038b121fecba78bdc0400371f75b - pristine_git_object: 671b54d63d36e71d05caf5db8dab2e5029f0ef2d + last_write_checksum: sha1:413558e413198db244d4bc32b95dcaf590f84dde + pristine_git_object: c8597c11b3f0c88fc378a98caf84b1b70b29c366 models/components/platformskillorigin.go: id: fa87164c0c39 - last_write_checksum: sha1:4bbd57b85b9318d5fa9ea3ca97e26cab34e689fd - pristine_git_object: e0a004498154f0b4285d2d29dde3d0e27b163bb6 + last_write_checksum: sha1:89e056c840c3e7783ada16e4a552663ddb4499d1 + pristine_git_object: ffd12c2188927eaa14a47d3c56a2c8b9f5bf2c7b models/components/platformskillslistresponse.go: id: de5ae3de61d7 - last_write_checksum: sha1:dead111d978716b3e7a49db1188239a31cda405c - pristine_git_object: 3fd760ac8fe6d0c187c619c3a58126d447498329 + last_write_checksum: sha1:2cbcafd4c349ae339e8bbcd856ba36e974cb26f1 + pristine_git_object: 6b4a2b020172b057d7a868835ba3fa6c7698bb85 models/components/platformskillsourcepreview.go: id: 7fa3d3a81420 - last_write_checksum: sha1:d50eccfec0b42725b54c4f864c34038cbb90c460 - pristine_git_object: 8463a42456f560b992c689b2d618cf0009efeb49 + last_write_checksum: sha1:694700b2f77a202db81ac059bec834ab069d97a6 + pristine_git_object: 7b71cb9a1ef801055276237edd86e7281c4ee698 models/components/platformskillsourcepreviewfailure.go: id: 0eae783174fa - last_write_checksum: sha1:f825e02732f8ec6a38189137959b95520a310b49 - pristine_git_object: b03d2cfae1e313edb6ba3ef1e46ad42170ef40e8 + last_write_checksum: sha1:6479d4a559fda49b12e4fac2f6efec87bc2c1764 + pristine_git_object: e1189cf0f98fde39686913bc8e94f174e6433f27 models/components/platformskillsourcepreviewfailurecode.go: id: 40d38b623ed5 last_write_checksum: sha1:06d9906bd9833370f74c692d406432358f9bfcdf pristine_git_object: 919a49672bf3ca836c9c7b95ac4a83844f3d9797 models/components/platformskillsourcepreviewfile.go: id: 0eb6c2c4e29f - last_write_checksum: sha1:9c59c99f0b454a45f1f6ce055c81d002ea008f38 - pristine_git_object: e35b404708f386ba175f673c3b7a3ed08a48d166 - models/components/platformskillsourcepreviewrequest.go: - id: be365cd753e4 - last_write_checksum: sha1:d2f33bf434ff6a52925d8e6c45aa8ce514e951d6 - pristine_git_object: 83cd4df40161e0319ca072c77d780c7ad257ac82 + last_write_checksum: sha1:894df5c5d0f05f5cbc204f6821e8b2df22265729 + pristine_git_object: f5783a5bf695c34a96c9866a1dcd55eb994c214d models/components/platformskillsourcepreviewresponse.go: id: a418561df86b - last_write_checksum: sha1:937cbd434300c8358fc908b2a445e413fc14090e - pristine_git_object: 767146376bc12e21f358c7167f565bd4a0160149 + last_write_checksum: sha1:1f76708ff3359a0930a0822ebdb389cbf3b3e4bf + pristine_git_object: 12bed05eae82f811cafe2616d30a24d76336ff2a + models/components/platformskillsourcepreviewstreamerror.go: + id: 81e06ff21ca4 + last_write_checksum: sha1:c665b33ba77182ddb54c84e22f08daa319c791a6 + pristine_git_object: aa7b557be8f485750bf27676126e3730519b4c0a + models/components/platformskillsourcepreviewstreamerrorserversentevent.go: + id: 51d0f99a864e + last_write_checksum: sha1:0c19ab15c34c91b1f1cba635a9c87455e8638758 + pristine_git_object: bb6fbd7cfaf63e976bc86edb3af16b1c50ac354c + models/components/platformskillsourcepreviewstreameventserversentevent.go: + id: fed7fac010aa + last_write_checksum: sha1:fa6aa13540039125530a8ad67b6eb13ebf06ae98 + pristine_git_object: e465b2b0a45532af9276c12419f4a19e53a31ce4 + models/components/platformskillsourcepreviewstreamprogress.go: + id: 03ceb55a9c1f + last_write_checksum: sha1:3a6669f42b7976c4208a9b8295c5b387e96d85fe + pristine_git_object: d5c7d0f888aa5bd27a0a2d9eb9eef31c6aa6f82c + models/components/platformskillsourcepreviewstreamprogressserversentevent.go: + id: 8ef9db76b631 + last_write_checksum: sha1:4ccbfdd5180f9ee11a903c17f8535c67b8122b52 + pristine_git_object: 64698333d90dee2c594fc5ce20c59d781568bac5 + models/components/platformskillsourcepreviewstreamresult.go: + id: 78be79487f6a + last_write_checksum: sha1:8f6c0c984a9dfd6e653b6e76b56c313ef97b7912 + pristine_git_object: 5bc24c5b9f9f43931a02badb4b03d6220d2469e4 + models/components/platformskillsourcepreviewstreamresultserversentevent.go: + id: d9cd8cd3645b + last_write_checksum: sha1:90592690d5ec0ba8775d8b047d335463fa7bc1b6 + pristine_git_object: ed88ae4bb3c5d4ed33e06abba6acdfc68ad9a195 + models/components/platformskillsourcepreviewstreamscan.go: + id: a31819f78c61 + last_write_checksum: sha1:91ea6bd5619302e654e76ee1470a367736988535 + pristine_git_object: 3429ab118c279e172dabc701904c841c666ac681 + models/components/platformskillsourcepreviewstreamscanserversentevent.go: + id: 87c2c99e69c3 + last_write_checksum: sha1:5817f9c71d6328c59586346b5ebc77b8818e3e96 + pristine_git_object: da5b7a99068a839cc3bb652cfbf7eaf33f3a0396 + models/components/platformskillsourcepreviewstreamskill.go: + id: 1b8d83d1debd + last_write_checksum: sha1:25b670ddb2186d7e275afef498592c6cc540317c + pristine_git_object: 36ff161a33a02af5f777b6a5893f065ddb59cc7b + models/components/platformskillsourcepreviewstreamskillserversentevent.go: + id: 88d6c0035761 + last_write_checksum: sha1:b849ac900c197cc0b32c460c20e540dedbfa14b1 + pristine_git_object: 1869beb136549ac2a7070e96cbc00aa4163f7ec2 models/components/platformskillsourceprovenance.go: id: 7e47a9ae686a last_write_checksum: sha1:23ea2ee6399d336e99984816805d3fe491be50d6 pristine_git_object: 650f7afe9af9948f61446c01d5168ec4f4901c16 models/components/platformskillstatus.go: id: 1fa7daee9a52 - last_write_checksum: sha1:3f5a7d9dbd27108b2788a8a660a3b357b8e1c7b7 - pristine_git_object: 78b9bc62466fa3d55d1a6a01ad621ff7e3f71740 + last_write_checksum: sha1:d032f5cb8cd19522fe005fd301224e1885e3181b + pristine_git_object: 7001ecc5a17960e814172ada6b266506f1727101 models/components/platformskillsyncresponse.go: id: beba515c324a - last_write_checksum: sha1:dba56400762b3e99e2190e77666065035aea9d6a - pristine_git_object: 9d808a47a60c1764feed7fd8c463068d7df3b399 - models/components/platformskillsyncresultstatus.go: - id: 4c9bca9be253 - last_write_checksum: sha1:eacc4c992746eb655ba515541ad13e83fd6bfeb5 - pristine_git_object: 93f6e9eda63a8156c768b4f69c52638311bcb103 + last_write_checksum: sha1:2c3d8e8b07268996df2e23c7155a7254016d20b6 + pristine_git_object: bb829293db924a92dd619c2f914685d1d8a25f62 models/components/platformskillsyncstatus.go: id: b58f34432b9f last_write_checksum: sha1:890f2323825ded5cf09da513d5f8d31c0e2d1472 pristine_git_object: 5396a955fc1e5c467149a7536f6b5dedc1797627 models/components/platformskillupdaterequest.go: id: 5ea65f5b8313 - last_write_checksum: sha1:a6bf213c4c6d734770bdf4e3efe99ed2005d25b3 - pristine_git_object: 013275ed39b6aa26386ff4ed1eac8c6c204cd2c2 + last_write_checksum: sha1:8874d2f6080c46ccfb3fd8c4e19e91e3032037db + pristine_git_object: 04958fd0f5627038240b8b21c5165f6b835bb87d models/components/platformskillupdateresponse.go: id: 934cedbcd9e5 last_write_checksum: sha1:87a011ff5909a37d460787f49753820f3db0aa31 pristine_git_object: 54eefc658bbcb29d7a3275c73972d76a2f0694a9 models/components/platformskillupdatestatus.go: id: c4dbc5c04928 - last_write_checksum: sha1:b430910b34dda5f1fa8b12d36ad9d40681664464 - pristine_git_object: d40a5b9ff289b22e47722564782e863c1ad983db + last_write_checksum: sha1:c2f69717c45cc61406a2fdf501b9d26319d0e9b7 + pristine_git_object: 46eaa67fe4be82e0ff7ea6b1cf67d3483ec5ec62 models/components/platformskillvalidationfile.go: id: 7c6c1ae247b1 last_write_checksum: sha1:56480a4db65e043a1baaf33aaf4a320a68deb8be @@ -6685,8 +6825,8 @@ trackedFiles: pristine_git_object: 32cc89e9544ba6eab6a25e677450ad9dd4299077 models/components/platformskillversionslistresponse.go: id: 8534ed9736fe - last_write_checksum: sha1:0278661aed691b38135c7e726a0d8c55adaf57e9 - pristine_git_object: c1cf8b4588415ac67264976a0dfe0646421f2985 + last_write_checksum: sha1:74c183ca7814897d5c849bce802cc0df94cd81f9 + pristine_git_object: 204cf73bf2c3320d3f2770d723ad61f5d1f1127c models/components/platformtimerange.go: id: f0d79b3ada90 last_write_checksum: sha1:736cbfaac97901328f8d421406492a94be6ce71c @@ -7179,10 +7319,14 @@ trackedFiles: id: 392b80f68042 last_write_checksum: sha1:344a3b312745fff98c9beff3d7e67c0e0d7766cd pristine_git_object: 0b72dbe21d5033f1d76ddd60472f10449375c421 + models/components/ugcactionunion.go: + id: 781aec308be8 + last_write_checksum: sha1:af7d210a5d920bc62212ec5f22c4eaa4fb65abde + pristine_git_object: a99a95cd58d664ae4cf5ecb52d29c224c20f1c31 models/components/ugctype.go: id: 98a0543d6066 - last_write_checksum: sha1:01514c9151f0188187673ff44919e501bf94bc5e - pristine_git_object: b680fd1d17062e952196471625e7d5fe559059a4 + last_write_checksum: sha1:1db0f81803a0d6694c167fdf0be582743208702e + pristine_git_object: 463e74068d15e54dc3e15d808c0a7869a20b0e91 models/components/unauthorizeddatasourceinstance.go: id: 172020c59199 last_write_checksum: sha1:208f3d9f66716905af4149eb8fa81efc975b5212 @@ -7701,12 +7845,12 @@ trackedFiles: pristine_git_object: d9eeebfd126aceae7d101ffe54e37b933ce26734 models/operations/platformskillscreate.go: id: f77385f2dc06 - last_write_checksum: sha1:849cce014b754418a6f33672fc76f7fa596fa1d4 - pristine_git_object: 6cf756c5dd1fb9ac19784610cbe470d84a042051 + last_write_checksum: sha1:6493be85e3cc669f4dbcd4b9b67a422ad97f5a3c + pristine_git_object: 41da4beef176dce94b25d4e177c9cb2636841b0d models/operations/platformskillscreateversion.go: id: adc3b9a1564a - last_write_checksum: sha1:60fce13ea26919721bc20922878c449aa4898e95 - pristine_git_object: bd71f141680a1bd67039f5a23c91388859b96bdf + last_write_checksum: sha1:500276e105d44fd71c0d93f1e067536bee09c97d + pristine_git_object: 2318855d39de2e577306535ab88474e421af4161 models/operations/platformskillsdelete.go: id: f8e451fe3448 last_write_checksum: sha1:0fe6150861dac980b8816dab2333c2802155230d @@ -7733,16 +7877,20 @@ trackedFiles: pristine_git_object: ca24bdc3876b84f4029e7cce6204cfe24c7986bd models/operations/platformskillslist.go: id: c7324bad43ea - last_write_checksum: sha1:f95f57643e407c5d86d16e9e330fee0bf9ad2613 - pristine_git_object: b004ed194f507b7d723dce51adccc90a35e41009 + last_write_checksum: sha1:08c08b4afb996961ef1bada522888a8af7d47691 + pristine_git_object: 31b1d0d63c67556dae454927de04c29c4025b1ec models/operations/platformskillslistversions.go: id: 73b1b0fe860c - last_write_checksum: sha1:a28e2b361a72f303446fd698e69a420c6691c93e - pristine_git_object: 47c088f16dd96598736b84256714c4003514129f + last_write_checksum: sha1:3175a6e7436cd91b0e34c14444922e6a5565d9b5 + pristine_git_object: 5333515b67f1fd535debcf894bd6ddb15e4e74b7 models/operations/platformskillspreviewsource.go: id: 70ae1e31caa1 - last_write_checksum: sha1:6a76be46652db370fece9876dfc06fd08805f8c3 - pristine_git_object: f59815a30756ce7352d2a7ab7997f31ab87918ea + last_write_checksum: sha1:b3697a2abb5800bfb03f16343c25e5185a3a389e + pristine_git_object: 2aac93f1f6d95d6974e4db6a3e881438498624f3 + models/operations/platformskillspreviewsourcestream.go: + id: 39e7cc071031 + last_write_checksum: sha1:66c20b949677c2dde09e19e76dd374092358b5e2 + pristine_git_object: b63d0b4a5384be15170f09233c0259ea3ad6e825 models/operations/platformskillssync.go: id: a8137dbe6277 last_write_checksum: sha1:0ceb708e94c7e3d2dd2a98dd7fe293ae4a145e8c @@ -8017,12 +8165,12 @@ trackedFiles: pristine_git_object: 014a3a358b52db10c0767e202310740b3890867f optionalnullable/optionalnullable.go: id: ce60f259ead3 - last_write_checksum: sha1:d6aff1a420c31e025ea21d46cf056e305ae76fe8 - pristine_git_object: c6739be0619b6726565e0f11855ffe44b0e5607e + last_write_checksum: sha1:b828c94c45116e632925027e4e2c211e971e04e2 + pristine_git_object: 51c78bcc4f55abb8f64c89a7b70db62335f16e47 optionalnullable/optionalnullable_test.go: id: ad67101ebca3 - last_write_checksum: sha1:9b3752c65a93a51001e8e9275a6d1494c44103c8 - pristine_git_object: 50aa468688c05e04abd6c94a941d3b525e697ffa + last_write_checksum: sha1:d3991667754ed67db803aeab4a6239f6f9a1be37 + pristine_git_object: 786206153d8252101a56c2ab1b661466bb8b5b7c people.go: id: 7ce8ac6ba500 last_write_checksum: sha1:01dc7cec19f71a9ce0e06f7b50ce816c815892db @@ -8049,12 +8197,12 @@ trackedFiles: pristine_git_object: 767002c7898128324d8741ce9c534bd466492169 search.go: id: 4c057402d2bf - last_write_checksum: sha1:a747715a66b9241da6366928f46bf2c966c999eb - pristine_git_object: a281aa1c42f70997fe9511ac685477d8b8b7e8d1 + last_write_checksum: sha1:8087f580ce622f341afcc69760a1f28f2a3180ce + pristine_git_object: 7afd8e41bebc64076aac14198ad677a8e5511c9a skills.go: id: 65ecddcd9ce6 - last_write_checksum: sha1:f3813a84ad043208a4131c82b4de9b179720c53c - pristine_git_object: 9fb40cbb6341513ea1b9044ae2177b68c7b9dc9b + last_write_checksum: sha1:022012e2d7f4c7557e0f1cbf8317334bb4355e97 + pristine_git_object: ebb12085af7f037218d1ec4388e9c7d5b1255e33 tests/activities_test.go: id: 93b3ec0f226c last_write_checksum: sha1:d8e9f9a0d877a8e7d4277c174581d44633e1b8ec @@ -8165,8 +8313,8 @@ trackedFiles: pristine_git_object: 6d9cbca42012c2760de3ecaf4f569c53d32197da tests/messages_test.go: id: 3433c956b7a3 - last_write_checksum: sha1:63e7b1c9a68b43467855286635a88cb166b2bc79 - pristine_git_object: febdc0e8a34b769bfc6dcfe3a9e33053b2267433 + last_write_checksum: sha1:352ecfa3a01795bbe7fad9b0202c4ccaa02448c3 + pristine_git_object: 64ef64fe1c0ccbc223987d87ddddf3d6e2de7799 tests/mockserver/.gitignore: id: 7705eb663274 last_write_checksum: sha1:228e1b05712a973948fd771323a2140a3b355ff4 @@ -8249,20 +8397,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 @@ -8349,8 +8497,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 @@ -8501,24 +8649,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 @@ -8593,8 +8741,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:2f9468a50936c4cb0fb2101d97c1425cb36ba2d4 @@ -8665,8 +8813,8 @@ trackedFiles: pristine_git_object: abb763ddc8504b28c0cb6fdf8d25237d46e21bab tests/mockserver/internal/handler/pathpostrestapiv1getchat.go: id: a0ec7bafa599 - last_write_checksum: sha1:2267292ba8173cf8df70ddbc6ac02ff3439cb879 - pristine_git_object: 8740195860b6c08e036caae19aab8e7374350960 + last_write_checksum: sha1:b48e2313407814ee4f8ed181b8e5299a84960c44 + pristine_git_object: 96d4127e0455272a9842e2d1954e5fcefa3278cc tests/mockserver/internal/handler/pathpostrestapiv1getchatapplication.go: id: 7d101c69d4bc last_write_checksum: sha1:7b81898137fdb3a89b4dcfa318b9b5b92e8860c0 @@ -8967,6 +9115,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 @@ -9005,16 +9157,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 @@ -9169,8 +9321,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 @@ -9773,12 +9925,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 @@ -9789,8 +9941,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 @@ -10123,14 +10275,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 @@ -10153,8 +10309,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 @@ -10193,8 +10349,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 @@ -10217,8 +10373,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 @@ -10329,8 +10485,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 @@ -10499,14 +10655,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 @@ -10525,8 +10685,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 @@ -10545,72 +10705,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 @@ -10645,8 +10841,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 @@ -11139,10 +11335,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 @@ -11657,12 +11857,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 @@ -11689,16 +11889,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 @@ -12005,12 +12209,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 @@ -12041,8 +12245,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 @@ -12113,12 +12317,12 @@ trackedFiles: pristine_git_object: f09483f9b4d73647deb30aadab0f926d765b6d29 tests/skills_test.go: id: 67834dec1608 - last_write_checksum: sha1:5a39e8c236db7c1ffb5b816be0e905fe364f0803 - pristine_git_object: f6ef683531884725f5107c32848516513f87e494 + last_write_checksum: sha1:95a0d19191c20fa63b07502e289eeb2ed7f46224 + pristine_git_object: c529bd5691588e889a10e46bb1cd477a80cb3703 tests/summarize_test.go: id: 1b63b0a16e69 - last_write_checksum: sha1:6da9f736fef20def1b16946fe93d02a1c5cb94ec - pristine_git_object: 4bfe1645d67bb70c7dc680bf793b2c4d9ae38d2f + last_write_checksum: sha1:b583f1dbd4730147478e1ba0c8df48a5458dd806 + pristine_git_object: f7541551ea298e050b64210689cb51972be52877 tests/testclient.go: id: 78d36c6e169c last_write_checksum: sha1:507c44e437934fbff8d295201c1327e18bd00df8 @@ -12145,8 +12349,8 @@ trackedFiles: pristine_git_object: 3fb011b1743b2414a2a36f089b08911992f7b175 triggers.go: id: a8ba6bfddb94 - last_write_checksum: sha1:f8d3e4d0b6150a143f23c73e38af234bdd49129c - pristine_git_object: 47baed43da10584f08cf09951909fe2ad4893167 + last_write_checksum: sha1:99a839e4d5ae4baafaf889b3c04dfef6209df432 + pristine_git_object: bbb06a42911bdef5d9247b383e6d561798ed9346 types/bigint.go: id: 6f911e1a03c3 last_write_checksum: sha1:49b004005d0461fb04b846eca062b070b0360b31 @@ -12577,7 +12781,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", "searchProviderInfo": {"name": "Google", "searchLinkUrlTemplate": "https://www.google.com/search?q={query}&hl=en"}, "label": "Mortimer's PRs", "datasource": "github", "requestOptions": {"datasourceFilter": "JIRA", "datasourcesFilter": ["JIRA"], "queryOverridesFacetFilters": true, "facetFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "facetFilterSets": [{"filters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}]}, {"filters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}]}, {"filters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}]}], "facetBucketSize": 550797, "authTokens": [{"accessToken": "123abc", "datasource": "gmail", "scope": "email profile https://www.googleapis.com/auth/gmail.readonly", "tokenType": "Bearer", "authUser": "1"}]}, "ranges": [{"startIndex": 499613, "document": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "customFields": [{"label": "", "values": [{}, {}, {}], "displayable": true}, {"label": "", "values": [{}, {}, {}], "displayable": true}], "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "owner": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "mentionedPeople": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "components": ["Backend", "Networking"], "status": "[\"Done\"]", "pins": [{"audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "documentId": "", "attribution": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}}, {"audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "documentId": "", "attribution": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}}], "assignedTo": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "collections": [{"name": "", "description": "wisely obediently vainly obnoxiously phew near", "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "VIEWER"}], "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 973495, "creator": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "items": [{"collectionId": 323983, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}]}, "itemType": "TEXT"}, {"collectionId": 323983, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}]}, "itemType": "TEXT"}, {"collectionId": 323983, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}]}, "itemType": "TEXT"}]}, {"name": "", "description": "wisely obediently vainly obnoxiously phew near", "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "VIEWER"}], "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 973495, "creator": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "items": [{"collectionId": 323983, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}]}, "itemType": "TEXT"}, {"collectionId": 323983, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}]}, "itemType": "TEXT"}, {"collectionId": 323983, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}]}, "itemType": "TEXT"}]}], "interactions": {"reacts": [{"reactors": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}, {"reactors": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}, {"reactors": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}], "shares": [{"numDaysAgo": 123511, "sharer": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}}]}, "verification": {"state": "DEPRECATED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "remindAt": 167888}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "remindAt": 507767}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "shortcuts": [{"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}}], "customData": {"someCustomField": {}}, "contactPerson": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}}}}, {"startIndex": 499613, "document": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "customFields": [{"label": "", "values": [{}, {}, {}], "displayable": true}, {"label": "", "values": [{}, {}, {}], "displayable": true}], "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "owner": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "mentionedPeople": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "components": ["Backend", "Networking"], "status": "[\"Done\"]", "pins": [{"audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "documentId": "", "attribution": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}}, {"audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "documentId": "", "attribution": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}}], "assignedTo": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "collections": [{"name": "", "description": "wisely obediently vainly obnoxiously phew near", "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "VIEWER"}], "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 973495, "creator": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "items": [{"collectionId": 323983, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}]}, "itemType": "TEXT"}, {"collectionId": 323983, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}]}, "itemType": "TEXT"}, {"collectionId": 323983, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}]}, "itemType": "TEXT"}]}, {"name": "", "description": "wisely obediently vainly obnoxiously phew near", "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "VIEWER"}], "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 973495, "creator": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "items": [{"collectionId": 323983, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}]}, "itemType": "TEXT"}, {"collectionId": 323983, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}]}, "itemType": "TEXT"}, {"collectionId": 323983, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}]}, "itemType": "TEXT"}]}], "interactions": {"reacts": [{"reactors": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}, {"reactors": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}, {"reactors": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}], "shares": [{"numDaysAgo": 123511, "sharer": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}}]}, "verification": {"state": "DEPRECATED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "remindAt": 167888}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "remindAt": 507767}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "shortcuts": [{"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}}], "customData": {"someCustomField": {}}, "contactPerson": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}}}}, {"startIndex": 499613, "document": {"metadata": {"datasource": "datasource", "objectType": "Feature Request", "container": "container", "parentId": "JIRA_EN-1337", "mimeType": "mimeType", "documentId": "documentId", "createTime": "2000-01-23T04:56:07.000Z", "updateTime": "2000-01-23T04:56:07.000Z", "author": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "customFields": [{"label": "", "values": [{}, {}, {}], "displayable": true}, {"label": "", "values": [{}, {}, {}], "displayable": true}], "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "owner": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "mentionedPeople": [{"name": "George Clooney", "obfuscatedId": "abc123"}], "components": ["Backend", "Networking"], "status": "[\"Done\"]", "pins": [{"audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "documentId": "", "attribution": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}}, {"audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "documentId": "", "attribution": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}}], "assignedTo": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "collections": [{"name": "", "description": "wisely obediently vainly obnoxiously phew near", "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "VIEWER"}], "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 973495, "creator": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "items": [{"collectionId": 323983, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}]}, "itemType": "TEXT"}, {"collectionId": 323983, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}]}, "itemType": "TEXT"}, {"collectionId": 323983, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}]}, "itemType": "TEXT"}]}, {"name": "", "description": "wisely obediently vainly obnoxiously phew near", "addedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}], "removedRoles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "VIEWER"}], "audienceFilters": [{"fieldName": "type", "values": [{"value": "Spreadsheet", "relationType": "EQUALS"}, {"value": "Presentation", "relationType": "EQUALS"}]}], "id": 973495, "creator": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "items": [{"collectionId": 323983, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}]}, "itemType": "TEXT"}, {"collectionId": 323983, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}]}, "itemType": "TEXT"}, {"collectionId": 323983, "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "shortcut": {"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "roles": [{"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}, {"person": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "role": "ANSWER_MODERATOR"}]}, "itemType": "TEXT"}]}], "interactions": {"reacts": [{"reactors": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}, {"reactors": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}, {"reactors": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}], "shares": [{"numDaysAgo": 123511, "sharer": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}}]}, "verification": {"state": "DEPRECATED", "metadata": {"lastVerifier": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "reminders": [{"assignee": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "remindAt": 167888}], "lastReminder": {"assignee": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "requestor": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "remindAt": 507767}, "candidateVerifiers": [{"name": "George Clooney", "obfuscatedId": "abc123"}]}}, "shortcuts": [{"inputAlias": "", "createdBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}, "updatedBy": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}}], "customData": {"someCustomField": {}}, "contactPerson": {"name": "George Clooney", "obfuscatedId": "abc123", "metadata": {"type": "FULL_TIME", "title": "Actor", "department": "Movies", "email": "george@example.com", "location": "Hollywood, CA", "phone": "6505551234", "photoUrl": "https://example.com/george.jpg", "startDate": "2000-01-23", "datasourceProfile": [{"datasource": "github", "handle": ""}, {"datasource": "github", "handle": ""}], "inviteInfo": {"invites": [{}, {}, {}]}, "badges": [{"key": "deployment_name_new_hire", "displayName": "New hire", "iconConfig": {"color": "#343CED", "key": "person_icon", "iconType": "GLYPH", "name": "user"}}]}}}}}], "inputDetails": {"hasCopyPaste": true}}, "results": [{"title": "title", "url": "https://example.com/foo/bar", "nativeAppUrl": "slack://foo/bar", "snippets": [{"mimeType": "mimeType", "snippet": "snippet"}]}]}]} @@ -13209,11 +13413,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": @@ -13236,7 +13445,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": @@ -13267,14 +13476,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": @@ -13343,6 +13556,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: @@ -13355,6 +13572,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: @@ -13364,7 +13583,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": @@ -13386,11 +13605,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: @@ -13597,6 +13818,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-29T16:18:24+01:00" @@ -13798,7 +14030,7 @@ generatedTests: platform-agents-get-run: "2026-09-23T18:30:44Z" platform-agents-cancel-run: "2026-09-23T18:30:44Z" platform-agents-create-run-responses: "2026-09-23T18:30:44Z" -releaseNotes: "## Go SDK Changes:\n* `Glean.Agents.CreateRun()`: \n * `request.PlatformAgentRunCreateRequest.ExecutionMode` **Added**\n * `response.status[201]` **Added** (Breaking ⚠️)\n* `Glean.Agents.GetRun()`: **Added**\n* `Glean.Agents.CancelRun()`: **Added**\n* `Glean.Agents.RespondToRun()`: **Added**\n* `Glean.Chat.Create()`: \n * `request.Request.Text` **Added**\n * `response.Output[].Content[].StructuredOutput` **Added**\n* `Glean.Client.Search.RetrieveFeed()`: \n * `request.FeedRequest.Categories[]` **Changed**\n * `response.Results[]` **Changed**\n" +releaseNotes: "## Go SDK Changes:\n* `Glean.Skills.Create()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error.status[409]` **Added**\n* `Glean.Skills.List()`: \n * `request.PageSize` **Changed**\n * `response` **Changed** (Breaking ⚠️)\n* `Glean.Skills.Import()`: \n * `response` **Changed** (Breaking ⚠️)\n * `error.status[422]` **Added**\n* `Glean.Skills.PreviewSource()`: \n * `request.Request.Stream` **Changed**\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.CreateVersion()`: `response` **Changed** (Breaking ⚠️)\n* `Glean.Skills.ListVersions()`: \n * `request.PageSize` **Changed**\n * `response` **Changed** (Breaking ⚠️)\n* `Glean.Client.Announcements.Create()`: \n * `request.CreateAnnouncementRequest.Body.StructuredList[].Document.Metadata.Author` **Changed**\n * `response.Body.StructuredList[].Document.Metadata.Author` **Changed**\n* `Glean.Client.Announcements.Update()`: \n * `request.UpdateAnnouncementRequest.Body.StructuredList[].Document.Metadata.Author` **Changed**\n * `response.Body.StructuredList[].Document.Metadata.Author` **Changed**\n* `Glean.Client.Answers.Create()`: \n * `request.CreateAnswerRequest.Data.AddedRoles[].Person` **Changed**\n * `response.AddedRoles[].Person` **Changed**\n* `Glean.Client.Answers.Update()`: \n * `request.EditAnswerRequest.AddedRoles[].Person` **Changed**\n * `response.AddedRoles[].Person` **Changed**\n* `Glean.Client.Answers.Retrieve()`: `response.AnswerResult.Answer.AddedRoles[].Person` **Changed**\n* `Glean.Client.Answers.List()`: `response.AnswerResults[].Answer.AddedRoles[].Person` **Changed**\n* `Glean.Client.Chat.Create()`: \n * `request.ChatRequest.Messages[].Citations[].SourceDocument.Metadata.Author` **Changed**\n * `response.Messages[].Citations[].SourceDocument.Metadata.Author` **Changed**\n* `Glean.Client.Chat.Retrieve()`: \n * `response.ChatResult.Chat.CreatedBy` **Changed**\n * `error.CreatedBy` **Changed**\n* `Glean.Client.Chat.List()`: `response.ChatResults[].Chat.CreatedBy` **Changed**\n* `Glean.Client.Chat.CreateStream()`: \n * `request.ChatRequest.Messages[].Citations[].SourceDocument.Metadata.Author` **Changed**\n* `Glean.Client.Agents.Create()`: `response.Workflow.Author` **Changed**\n* `Glean.Client.Agents.Import()`: `response.WorkflowResult.Workflow.Author` **Changed**\n* `Glean.Client.Collections.AddItems()`: `response.Collection.AddedRoles[].Person` **Changed**\n* `Glean.Client.Collections.Create()`: \n * `request.CreateCollectionRequest.AddedRoles[].Person` **Changed**\n * `response.union(class (0)).Collection.AddedRoles[].Person` **Changed**\n* `Glean.Client.Collections.DeleteItem()`: `response.Collection.AddedRoles[].Person` **Changed**\n* `Glean.Client.Collections.Update()`: \n * `request.EditCollectionRequest.AddedRoles[].Person` **Changed**\n * `response.AddedRoles[].Person` **Changed**\n* `Glean.Client.Collections.UpdateItem()`: `response.Collection.AddedRoles[].Person` **Changed**\n* `Glean.Client.Collections.Retrieve()`: `response.Collection.AddedRoles[].Person` **Changed**\n* `Glean.Client.Collections.List()`: `response.Collections[].AddedRoles[].Person` **Changed**\n* `Glean.Client.Documents.Retrieve()`: `response.Documents.Map.union(Document).Metadata.Author` **Changed**\n* `Glean.Client.Documents.RetrieveByFacets()`: `response.Documents[].Metadata.Author` **Changed**\n* `Glean.Client.Insights.Retrieve()`: \n * `request.InsightsRequest.McpBreakdownRequest` **Changed**\n * `response` **Changed**\n* `Glean.Client.Messages.Retrieve()`: `response.SearchResponse.Results[].StructuredResults[].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.QueryAsAdmin()`: \n * `request.SearchRequest.SourceDocument.Metadata.Author` **Changed**\n * `response.Results[].StructuredResults[].Document.Metadata` **Changed**\n* `Glean.Client.Search.Autocomplete()`: `response.Results[]` **Changed**\n* `Glean.Client.Search.RetrieveFeed()`: \n * `request.FeedRequest.Categories[]` **Changed**\n * `response.Results[]` **Changed**\n* `Glean.Client.Search.Recommendations()`: \n * `request.RecommendationsRequest.SourceDocument.Metadata.Author` **Changed**\n * `response.Results[].StructuredResults[].Document.Metadata` **Changed**\n* `Glean.Client.Search.Query()`: \n * `request.SearchRequest.SourceDocument.Metadata.Author` **Changed**\n * `response.Results[].StructuredResults[].Document.Metadata` **Changed**\n* `Glean.Client.Entities.List()`: `response.Results[]` **Changed**\n* `Glean.Client.Entities.ReadPeople()`: \n * `request.PeopleRequest.FallbackToAuthenticatedIdentity` **Added**\n * `response.Results[]` **Changed**\n* `Glean.Client.Shortcuts.Create()`: \n * `request.CreateShortcutRequest.Data.AddedRoles[].Person` **Changed**\n * `response.Shortcut.AddedRoles[].Person` **Changed**\n* `Glean.Client.Shortcuts.Retrieve()`: `response.Shortcut.AddedRoles[].Person` **Changed**\n* `Glean.Client.Shortcuts.List()`: `response.Shortcuts[].AddedRoles[].Person` **Changed**\n* `Glean.Client.Shortcuts.Update()`: \n * `request.UpdateShortcutRequest.AddedRoles[].Person` **Changed**\n * `response.Shortcut.AddedRoles[].Person` **Changed**\n* `Glean.Client.Verification.AddReminder()`: `response.Metadata.LastVerifier` **Changed**\n* `Glean.Client.Verification.List()`: `response.Documents[].Metadata.LastVerifier` **Changed**\n* `Glean.Client.Verification.Verify()`: `response.Metadata.LastVerifier` **Changed**\n" generatedFiles: - .devcontainer/README.md - .devcontainer/devcontainer.json diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 971e188e..b4f68224 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -32,7 +32,7 @@ generation: generateNewTests: true skipResponseBodyAssertions: true go: - version: 0.15.15 + version: 0.16.0 additionalDependencies: {} allowUnknownFieldsInWeakUnions: false baseErrorName: GleanError @@ -41,6 +41,8 @@ go: enableCustomCodeRegions: false enableSkipDeserialization: false envVarPrefix: GLEAN + fixFlags: + encodePathParams: false flattenGlobalSecurity: true forwardCompatibleEnumsByDefault: true forwardCompatibleUnionsByDefault: "false" 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 97a70cd1..5ed89d9d 100644 --- a/.speakeasy/tests.arazzo.yaml +++ b/.speakeasy/tests.arazzo.yaml @@ -164718,11 +164718,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 @@ -164735,8 +164735,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 @@ -164769,7 +164773,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 @@ -164803,7 +164807,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: | @@ -164819,12 +164823,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 @@ -164938,7 +164945,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: | @@ -164981,7 +164988,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 @@ -164998,7 +165005,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 c1f0054a..704e41cc 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 petstore-oas: @@ -17,10 +17,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-go-code-samples - codeSamplesRevisionDigest: sha256:e0b322a1f857ede51de9462d1d1c564b4f177e1469aa2afa4f108a43e395a957 + codeSamplesRevisionDigest: sha256:a08b9233149cca69e71e898dfbd72d1979a1ecae8e76e1b9e38f3c6306b0a230 petstore: source: petstore-oas sourceNamespace: petstore-oas diff --git a/README.md b/README.md index cc918f14..04987679 100644 --- a/README.md +++ b/README.md @@ -491,6 +491,7 @@ For more information on obtaining the appropriate token type, please contact you * [ListVersions](docs/sdks/skills/README.md#listversions) - List skill versions * [RetrieveVersion](docs/sdks/skills/README.md#retrieveversion) - Retrieve skill version * [RetrieveVersionContent](docs/sdks/skills/README.md#retrieveversioncontent) - Download skill version content +* [PreviewSourceStream](docs/sdks/skills/README.md#previewsourcestream) - Preview a GitHub skill source as events ### [Triggers](docs/sdks/triggers/README.md) diff --git a/RELEASES.md b/RELEASES.md index 9359958a..c506c8c6 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1008,4 +1008,14 @@ Based on: ### Generated - [go v0.15.15] . ### Releases -- [Go v0.15.15] https://github.com/gleanwork/api-client-go/releases/tag/v0.15.15 - . \ No newline at end of file +- [Go v0.15.15] https://github.com/gleanwork/api-client-go/releases/tag/v0.15.15 - . + +## 2026-10-03 03:31:02 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.800.1 (2.943.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [go v0.16.0] . +### Releases +- [Go v0.16.0] https://github.com/gleanwork/api-client-go/releases/tag/v0.16.0 - . \ No newline at end of file diff --git a/agents.go b/agents.go index 106f2f98..90490844 100644 --- a/agents.go +++ b/agents.go @@ -242,7 +242,7 @@ func (s *Agents) Search(ctx context.Context, request components.PlatformAgentsSe var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -269,7 +269,7 @@ func (s *Agents) Search(ctx context.Context, request components.PlatformAgentsSe var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -514,7 +514,7 @@ func (s *Agents) Get(ctx context.Context, agentID string, opts ...operations.Opt var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -541,7 +541,7 @@ func (s *Agents) Get(ctx context.Context, agentID string, opts ...operations.Opt var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -791,7 +791,7 @@ func (s *Agents) GetSchemas(ctx context.Context, agentID string, includeTools *b var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -818,7 +818,7 @@ func (s *Agents) GetSchemas(ctx context.Context, agentID string, includeTools *b var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1096,7 +1096,7 @@ func (s *Agents) CreateRun(ctx context.Context, agentID string, platformAgentRun var out apierrors.PlatformUnauthorizedAgentToolsProblemError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1135,7 +1135,7 @@ func (s *Agents) CreateRun(ctx context.Context, agentID string, platformAgentRun var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1162,7 +1162,7 @@ func (s *Agents) CreateRun(ctx context.Context, agentID string, platformAgentRun var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1408,7 +1408,7 @@ func (s *Agents) GetRun(ctx context.Context, agentID string, runID string, opts var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1435,7 +1435,7 @@ func (s *Agents) GetRun(ctx context.Context, agentID string, runID string, opts var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1692,7 +1692,7 @@ func (s *Agents) CancelRun(ctx context.Context, agentID string, platformAgentRun var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1719,7 +1719,7 @@ func (s *Agents) CancelRun(ctx context.Context, agentID string, platformAgentRun var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1976,7 +1976,7 @@ func (s *Agents) RespondToRun(ctx context.Context, agentID string, platformAgent var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -2003,7 +2003,7 @@ func (s *Agents) RespondToRun(ctx context.Context, agentID string, platformAgent var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ diff --git a/chat.go b/chat.go index 13dc9c16..98484c5e 100644 --- a/chat.go +++ b/chat.go @@ -245,7 +245,7 @@ func (s *Chat) Create(ctx context.Context, request operations.PlatformChatCreate var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -272,7 +272,7 @@ func (s *Chat) Create(ctx context.Context, request operations.PlatformChatCreate var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -529,7 +529,7 @@ func (s *Chat) CreateStream(ctx context.Context, request operations.PlatformChat var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -556,7 +556,7 @@ func (s *Chat) CreateStream(ctx context.Context, request operations.PlatformChat var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ diff --git a/clientagents.go b/clientagents.go index 3b7a2ec8..37e32c7f 100644 --- a/clientagents.go +++ b/clientagents.go @@ -466,7 +466,7 @@ func (s *ClientAgents) Retrieve(ctx context.Context, agentID string, locale *str var out apierrors.ErrorResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -702,7 +702,7 @@ func (s *ClientAgents) Update(ctx context.Context, agentID string, editWorkflowR var out apierrors.ErrorResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -955,7 +955,7 @@ func (s *ClientAgents) RetrieveSchemas(ctx context.Context, agentID string, loca var out apierrors.ErrorResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1210,7 +1210,7 @@ func (s *ClientAgents) Import(ctx context.Context, agentID string, importAgentRe var out apierrors.ErrorResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1460,7 +1460,7 @@ func (s *ClientAgents) List(ctx context.Context, request components.SearchAgents var out apierrors.ErrorResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1704,7 +1704,7 @@ func (s *ClientAgents) RunStream(ctx context.Context, request components.AgentRu var out apierrors.ErrorResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1729,7 +1729,7 @@ func (s *ClientAgents) RunStream(ctx context.Context, request components.AgentRu var out apierrors.UnauthorizedAgentToolsError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1975,7 +1975,7 @@ func (s *ClientAgents) Run(ctx context.Context, request components.AgentRunCreat var out apierrors.UnauthorizedAgentToolsError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ diff --git a/clientchat.go b/clientchat.go index 54ccfc38..60abc43f 100644 --- a/clientchat.go +++ b/clientchat.go @@ -887,7 +887,7 @@ func (s *ClientChat) Retrieve(ctx context.Context, getChatRequest components.Get var out apierrors.AccessRequestPermissionDeniedResponseError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ diff --git a/clientdatasources.go b/clientdatasources.go index 7a3addcd..3f867680 100644 --- a/clientdatasources.go +++ b/clientdatasources.go @@ -231,7 +231,7 @@ func (s *ClientDatasources) RetrieveConfiguration(ctx context.Context, datasourc var out apierrors.ErrorResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -481,7 +481,7 @@ func (s *ClientDatasources) UpdateConfiguration(ctx context.Context, datasourceI var out apierrors.ErrorResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -722,7 +722,7 @@ func (s *ClientDatasources) RetrieveCredentialStatus(ctx context.Context, dataso var out apierrors.ErrorResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -972,7 +972,7 @@ func (s *ClientDatasources) RotateCredentials(ctx context.Context, datasourceIns var out apierrors.ErrorResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ diff --git a/clientsearch.go b/clientsearch.go index b47f24e2..613d3a52 100644 --- a/clientsearch.go +++ b/clientsearch.go @@ -241,7 +241,7 @@ func (s *ClientSearch) QueryAsAdmin(ctx context.Context, searchRequest component var out apierrors.GleanDataError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1188,7 +1188,7 @@ func (s *ClientSearch) Query(ctx context.Context, searchRequest components.Searc var out apierrors.GleanDataError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ diff --git a/collections.go b/collections.go index e998033b..6318f722 100644 --- a/collections.go +++ b/collections.go @@ -467,7 +467,7 @@ func (s *Collections) Create(ctx context.Context, createCollectionRequest compon var out apierrors.CollectionError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -701,7 +701,7 @@ func (s *Collections) Delete(ctx context.Context, deleteCollectionRequest compon var out apierrors.CollectionError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1184,7 +1184,7 @@ func (s *Collections) Update(ctx context.Context, editCollectionRequest componen var out apierrors.CollectionError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ diff --git a/custommetadata.go b/custommetadata.go index 27e8d61b..45db1b3a 100644 --- a/custommetadata.go +++ b/custommetadata.go @@ -242,7 +242,7 @@ func (s *CustomMetadata) Upsert(ctx context.Context, docID string, groupName str var out apierrors.ErrorInfoResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -267,7 +267,7 @@ func (s *CustomMetadata) Upsert(ctx context.Context, docID string, groupName str var out apierrors.ErrorInfoResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -510,7 +510,7 @@ func (s *CustomMetadata) Delete(ctx context.Context, docID string, groupName str var out apierrors.ErrorInfoResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -535,7 +535,7 @@ func (s *CustomMetadata) Delete(ctx context.Context, docID string, groupName str var out apierrors.ErrorInfoResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -775,7 +775,7 @@ func (s *CustomMetadata) GetSchema(ctx context.Context, groupName string, opts . var out apierrors.ErrorInfoResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -800,7 +800,7 @@ func (s *CustomMetadata) GetSchema(ctx context.Context, groupName string, opts . var out apierrors.ErrorInfoResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1050,7 +1050,7 @@ func (s *CustomMetadata) UpsertSchema(ctx context.Context, groupName string, cus var out apierrors.ErrorInfoResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1075,7 +1075,7 @@ func (s *CustomMetadata) UpsertSchema(ctx context.Context, groupName string, cus var out apierrors.ErrorInfoResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1317,7 +1317,7 @@ func (s *CustomMetadata) DeleteSchema(ctx context.Context, groupName string, opt var out apierrors.ErrorInfoResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1342,7 +1342,7 @@ func (s *CustomMetadata) DeleteSchema(ctx context.Context, groupName string, opt var out apierrors.ErrorInfoResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ diff --git a/docs/models/components/artifacttype.md b/docs/models/components/artifacttype.md new file mode 100644 index 00000000..5dde12a2 --- /dev/null +++ b/docs/models/components/artifacttype.md @@ -0,0 +1,28 @@ +# ArtifactType + +Type of the Artifact + +## Example Usage + +```go +import ( + "github.com/gleanwork/api-client-go/models/components" +) + +value := components.ArtifactTypePaper + +// Open enum: custom values can be created with a direct type cast +custom := components.ArtifactType("custom_value") +``` + + +## Values + +| Name | Value | +| ---------------------- | ---------------------- | +| `ArtifactTypePaper` | PAPER | +| `ArtifactTypeAgent` | AGENT | +| `ArtifactTypeMessage` | MESSAGE | +| `ArtifactTypeEmail` | EMAIL | +| `ArtifactTypeHTMLCode` | HTML_CODE | +| `ArtifactTypeSlide` | SLIDE | \ No newline at end of file diff --git a/docs/models/components/autocompleterequestresulttype.md b/docs/models/components/autocompleterequestresulttype.md index 53d2df9e..bc6873d6 100644 --- a/docs/models/components/autocompleterequestresulttype.md +++ b/docs/models/components/autocompleterequestresulttype.md @@ -18,12 +18,12 @@ value := components.AutocompleteRequestResultTypeAdditionalDocument | `AutocompleteRequestResultTypeAdditionalDocument` | ADDITIONAL_DOCUMENT | | `AutocompleteRequestResultTypeApp` | APP | | `AutocompleteRequestResultTypeBrowserHistory` | BROWSER_HISTORY | +| `AutocompleteRequestResultTypeChatHistory` | CHAT_HISTORY | | `AutocompleteRequestResultTypeDatasource` | DATASOURCE | | `AutocompleteRequestResultTypeDocument` | DOCUMENT | | `AutocompleteRequestResultTypeEntity` | ENTITY | | `AutocompleteRequestResultTypeGolink` | GOLINK | | `AutocompleteRequestResultTypeHistory` | HISTORY | -| `AutocompleteRequestResultTypeChatHistory` | CHAT_HISTORY | | `AutocompleteRequestResultTypeNewChat` | NEW_CHAT | | `AutocompleteRequestResultTypeOperator` | OPERATOR | | `AutocompleteRequestResultTypeOperatorValue` | OPERATOR_VALUE | diff --git a/docs/models/components/autocompleteresult.md b/docs/models/components/autocompleteresult.md index 69732a35..a02f5809 100644 --- a/docs/models/components/autocompleteresult.md +++ b/docs/models/components/autocompleteresult.md @@ -3,16 +3,17 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | -| `Result` | `string` | :heavy_check_mark: | N/A | | -| `Keywords` | []`string` | :heavy_minus_sign: | A list of all possible keywords for given result. | | -| `ResultType` | [*components.AutocompleteResultResultType](../../models/components/autocompleteresultresulttype.md) | :heavy_minus_sign: | N/A | | -| `Score` | `*float64` | :heavy_minus_sign: | Higher indicates a more confident match. | | -| `OperatorMetadata` | [*components.OperatorMetadata](../../models/components/operatormetadata.md) | :heavy_minus_sign: | N/A | {
"name": "Last Updated",
"operatorType": "DATE",
"scopes": [
{
"datasource": "GDRIVE",
"docType": "Document"
},
{
"datasource": "ZENDESK"
}
]
} | -| `Quicklink` | [*components.Quicklink](../../models/components/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` | [*components.Document](../../models/components/document.md) | :heavy_minus_sign: | N/A | | -| `URL` | `*string` | :heavy_minus_sign: | N/A | | -| `StructuredResult` | [*components.StructuredResult](../../models/components/structuredresult.md) | :heavy_minus_sign: | A single object that can support any object in the work graph. Only a single object will be populated. | | -| `TrackingToken` | `*string` | :heavy_minus_sign: | A token to be passed in /feedback events associated with this autocomplete result. | | -| `Ranges` | [][components.TextRange](../../models/components/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` | `string` | :heavy_check_mark: | N/A | | +| `Keywords` | []`string` | :heavy_minus_sign: | A list of all possible keywords for given result. | | +| `ResultType` | [*components.AutocompleteResultResultType](../../models/components/autocompleteresultresulttype.md) | :heavy_minus_sign: | N/A | | +| `Score` | `*float64` | :heavy_minus_sign: | Higher indicates a more confident match. | | +| `OperatorMetadata` | [*components.OperatorMetadata](../../models/components/operatormetadata.md) | :heavy_minus_sign: | N/A | {
"name": "Last Updated",
"operatorType": "DATE",
"scopes": [
{
"datasource": "GDRIVE",
"docType": "Document"
},
{
"datasource": "ZENDESK"
}
]
} | +| `Quicklink` | [*components.Quicklink](../../models/components/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` | [*components.Document](../../models/components/document.md) | :heavy_minus_sign: | N/A | | +| `URL` | `*string` | :heavy_minus_sign: | N/A | | +| `StructuredResult` | [*components.StructuredResult](../../models/components/structuredresult.md) | :heavy_minus_sign: | A single object that can support any object in the work graph. Only a single object will be populated. | | +| `UgcAction` | [*components.UgcActionUnion](../../models/components/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. | | +| `TrackingToken` | `*string` | :heavy_minus_sign: | A token to be passed in /feedback events associated with this autocomplete result. | | +| `Ranges` | [][components.TextRange](../../models/components/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/components/breakdowntype.md b/docs/models/components/breakdowntype.md index 31893b0f..3d774a9e 100644 --- a/docs/models/components/breakdowntype.md +++ b/docs/models/components/breakdowntype.md @@ -20,4 +20,5 @@ value := components.BreakdownTypeUsers | `BreakdownTypeUsers` | USERS | | `BreakdownTypeHostApplications` | HOST_APPLICATIONS | | `BreakdownTypeTools` | TOOLS | -| `BreakdownTypeServers` | SERVERS | \ No newline at end of file +| `BreakdownTypeServers` | SERVERS | +| `BreakdownTypeAuthMethods` | AUTH_METHODS | \ No newline at end of file diff --git a/docs/models/components/chatsuggestion.md b/docs/models/components/chatsuggestion.md index 1a604a54..3e846dae 100644 --- a/docs/models/components/chatsuggestion.md +++ b/docs/models/components/chatsuggestion.md @@ -8,4 +8,5 @@ | `Query` | `*string` | :heavy_minus_sign: | The actionable chat query to run when the user selects this suggestion. | | `Cta` | `*string` | :heavy_minus_sign: | Button text to show for the suggestion action. | | `Feature` | `*string` | :heavy_minus_sign: | Targeted Glean Chat feature for the suggestion. | +| `ArtifactType` | [*components.ArtifactType](../../models/components/artifacttype.md) | :heavy_minus_sign: | Type of the Artifact | | `SourceDocumentIds` | []`string` | :heavy_minus_sign: | Document IDs that grounded the suggestion. | \ No newline at end of file diff --git a/docs/models/components/feedrequestcategory.md b/docs/models/components/feedrequestcategory.md index d62f5c32..e056242b 100644 --- a/docs/models/components/feedrequestcategory.md +++ b/docs/models/components/feedrequestcategory.md @@ -68,4 +68,6 @@ value := components.FeedRequestCategoryDocumentSuggestion | `FeedRequestCategoryChatToArtifact` | CHAT_TO_ARTIFACT | | `FeedRequestCategoryShareArtifact` | SHARE_ARTIFACT | | `FeedRequestCategoryCreateAgent` | CREATE_AGENT | -| `FeedRequestCategoryManagerInvite` | MANAGER_INVITE | \ No newline at end of file +| `FeedRequestCategoryManagerInvite` | MANAGER_INVITE | +| `FeedRequestCategoryOnboardingAuthorization` | ONBOARDING_AUTHORIZATION | +| `FeedRequestCategoryChatReminder` | CHAT_REMINDER | \ No newline at end of file diff --git a/docs/models/components/feedresultcategory.md b/docs/models/components/feedresultcategory.md index 9135724e..8fa6bf4a 100644 --- a/docs/models/components/feedresultcategory.md +++ b/docs/models/components/feedresultcategory.md @@ -73,4 +73,6 @@ custom := components.FeedResultCategory("custom_value") | `FeedResultCategoryChatToArtifact` | CHAT_TO_ARTIFACT | | `FeedResultCategoryShareArtifact` | SHARE_ARTIFACT | | `FeedResultCategoryCreateAgent` | CREATE_AGENT | -| `FeedResultCategoryManagerInvite` | MANAGER_INVITE | \ No newline at end of file +| `FeedResultCategoryManagerInvite` | MANAGER_INVITE | +| `FeedResultCategoryOnboardingAuthorization` | ONBOARDING_AUTHORIZATION | +| `FeedResultCategoryChatReminder` | CHAT_REMINDER | \ No newline at end of file diff --git a/docs/models/components/justificationtype.md b/docs/models/components/justificationtype.md index 172b7300..08abc4f5 100644 --- a/docs/models/components/justificationtype.md +++ b/docs/models/components/justificationtype.md @@ -87,4 +87,6 @@ custom := components.JustificationType("custom_value") | `JustificationTypeChatToArtifact` | CHAT_TO_ARTIFACT | | `JustificationTypeShareArtifact` | SHARE_ARTIFACT | | `JustificationTypeCreateAgent` | CREATE_AGENT | -| `JustificationTypeManagerInvite` | MANAGER_INVITE | \ No newline at end of file +| `JustificationTypeManagerInvite` | MANAGER_INVITE | +| `JustificationTypeOnboardingAuthorization` | ONBOARDING_AUTHORIZATION | +| `JustificationTypeChatReminder` | CHAT_REMINDER | \ No newline at end of file diff --git a/docs/models/components/mcpauthmethodbreakdown.md b/docs/models/components/mcpauthmethodbreakdown.md new file mode 100644 index 00000000..06322325 --- /dev/null +++ b/docs/models/components/mcpauthmethodbreakdown.md @@ -0,0 +1,11 @@ +# McpAuthMethodBreakdown + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `AuthMethod` | `*string` | :heavy_minus_sign: | Authentication method the MCP client presented, for example OAUTH_GLEAN, OAUTH_XAA (Cross App Access), or API_TOKEN. | +| `TotalCalls` | `*int64` | :heavy_minus_sign: | Total number of MCP calls for this authentication method in the specified time period. | +| `ActiveUsers` | `*int64` | :heavy_minus_sign: | Total number of active users for this authentication method in the specified time period. | +| `HostApplications` | []`string` | :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/components/mcpbreakdowninsightsrequest.md b/docs/models/components/mcpbreakdowninsightsrequest.md index fdabe0b5..c6753ae8 100644 --- a/docs/models/components/mcpbreakdowninsightsrequest.md +++ b/docs/models/components/mcpbreakdowninsightsrequest.md @@ -3,13 +3,14 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `Departments` | []`string` | :heavy_minus_sign: | Departments for which Insights are requested. | -| `ManagerIds` | []`string` | :heavy_minus_sign: | Manager user IDs whose teams should be filtered for. Empty array means no filtering. | -| `ManagerEmails` | []`string` | :heavy_minus_sign: | Manager emails whose teams should be filtered for. Empty array means no filtering. | -| `DayRange` | [*components.Period](../../models/components/period.md) | :heavy_minus_sign: | N/A | -| `BreakdownType` | [*components.BreakdownType](../../models/components/breakdowntype.md) | :heavy_minus_sign: | Type of breakdown to return. | -| `HostApplications` | []`string` | :heavy_minus_sign: | Host applications to filter by. Empty array means all host applications. | -| `Tools` | []`string` | :heavy_minus_sign: | MCP tools to filter by. Empty array means all tools. | -| `Servers` | []`string` | :heavy_minus_sign: | MCP servers to filter by. Empty array means all servers. | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `Departments` | []`string` | :heavy_minus_sign: | Departments for which Insights are requested. | +| `ManagerIds` | []`string` | :heavy_minus_sign: | Manager user IDs whose teams should be filtered for. Empty array means no filtering. | +| `ManagerEmails` | []`string` | :heavy_minus_sign: | Manager emails whose teams should be filtered for. Empty array means no filtering. | +| `DayRange` | [*components.Period](../../models/components/period.md) | :heavy_minus_sign: | N/A | +| `BreakdownType` | [*components.BreakdownType](../../models/components/breakdowntype.md) | :heavy_minus_sign: | Type of breakdown to return. | +| `HostApplications` | []`string` | :heavy_minus_sign: | Host applications to filter by. Empty array means all host applications. | +| `Tools` | []`string` | :heavy_minus_sign: | MCP tools to filter by. Empty array means all tools. | +| `Servers` | []`string` | :heavy_minus_sign: | MCP servers to filter by. Empty array means all servers. | +| `AuthMethods` | []`string` | :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/components/mcpbreakdowninsightsresponse.md b/docs/models/components/mcpbreakdowninsightsresponse.md index e358ff49..dc526f82 100644 --- a/docs/models/components/mcpbreakdowninsightsresponse.md +++ b/docs/models/components/mcpbreakdowninsightsresponse.md @@ -8,4 +8,5 @@ | `UsersBreakdown` | [][components.McpUserBreakdown](../../models/components/mcpuserbreakdown.md) | :heavy_minus_sign: | N/A | | `HostApplicationsBreakdown` | [][components.McpHostApplicationBreakdown](../../models/components/mcphostapplicationbreakdown.md) | :heavy_minus_sign: | N/A | | `ToolsBreakdown` | [][components.McpToolBreakdown](../../models/components/mcptoolbreakdown.md) | :heavy_minus_sign: | N/A | -| `ServersBreakdown` | [][components.McpServerBreakdown](../../models/components/mcpserverbreakdown.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| `ServersBreakdown` | [][components.McpServerBreakdown](../../models/components/mcpserverbreakdown.md) | :heavy_minus_sign: | N/A | +| `AuthMethodsBreakdown` | [][components.McpAuthMethodBreakdown](../../models/components/mcpauthmethodbreakdown.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mcpuserbreakdown.md b/docs/models/components/mcpuserbreakdown.md index 69098742..f539c11b 100644 --- a/docs/models/components/mcpuserbreakdown.md +++ b/docs/models/components/mcpuserbreakdown.md @@ -3,10 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -| `Person` | [*components.Person](../../models/components/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | -| `TotalCalls` | `*int64` | :heavy_minus_sign: | Total number of MCP calls made by this user in the specified time period. | | -| `HostApplications` | []`string` | :heavy_minus_sign: | Host applications used by this user in the specified time period. | | -| `Tools` | []`string` | :heavy_minus_sign: | MCP tools used by this user in the specified time period. | | -| `Servers` | []`string` | :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` | [*components.Person](../../models/components/person.md) | :heavy_minus_sign: | N/A | {
"name": "George Clooney",
"obfuscatedId": "abc123"
} | +| `TotalCalls` | `*int64` | :heavy_minus_sign: | Total number of MCP calls made by this user in the specified time period. | | +| `HostApplications` | []`string` | :heavy_minus_sign: | Host applications used by this user in the specified time period. | | +| `Tools` | []`string` | :heavy_minus_sign: | MCP tools used by this user in the specified time period. | | +| `Servers` | []`string` | :heavy_minus_sign: | MCP servers used by this user in the specified time period. | | +| `AuthMethods` | []`string` | :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/components/peoplerequest.md b/docs/models/components/peoplerequest.md index cb1dbf33..388dfe28 100644 --- a/docs/models/components/peoplerequest.md +++ b/docs/models/components/peoplerequest.md @@ -3,11 +3,12 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `TimezoneOffset` | `*int64` | :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. | -| `ObfuscatedIds` | []`string` | :heavy_minus_sign: | The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. | -| `EmailIds` | []`string` | :heavy_minus_sign: | The email IDs to retrieve. The result is the deduplicated union of emailIds and obfuscatedIds. | -| `IncludeFields` | [][components.PeopleRequestIncludeField](../../models/components/peoplerequestincludefield.md) | :heavy_minus_sign: | List of PersonMetadata fields to return (that aren't returned by default) | -| `IncludeTypes` | [][components.IncludeType](../../models/components/includetype.md) | :heavy_minus_sign: | The types of people entities to include in the response in addition to those returned by default. | -| `Source` | `*string` | :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 | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `FallbackToAuthenticatedIdentity` | `*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. | +| `TimezoneOffset` | `*int64` | :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. | +| `ObfuscatedIds` | []`string` | :heavy_minus_sign: | The Person IDs to retrieve. If no IDs are requested, the current user's details are returned. | +| `EmailIds` | []`string` | :heavy_minus_sign: | The email IDs to retrieve. The result is the deduplicated union of emailIds and obfuscatedIds. | +| `IncludeFields` | [][components.PeopleRequestIncludeField](../../models/components/peoplerequestincludefield.md) | :heavy_minus_sign: | List of PersonMetadata fields to return (that aren't returned by default) | +| `IncludeTypes` | [][components.IncludeType](../../models/components/includetype.md) | :heavy_minus_sign: | The types of people entities to include in the response in addition to those returned by default. | +| `Source` | `*string` | :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/components/person.md b/docs/models/components/person.md index 0ab606b4..0a4d4925 100644 --- a/docs/models/components/person.md +++ b/docs/models/components/person.md @@ -7,5 +7,6 @@ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `Name` | `string` | :heavy_check_mark: | The display name. | | | `ObfuscatedID` | `string` | :heavy_check_mark: | An opaque identifier that can be used to request metadata for a Person. | | +| `IdentityOnly` | `*bool` | :heavy_minus_sign: | True when this is an authenticated identity fallback rather than a people profile. Directory metadata is unavailable. | | | `RelatedDocuments` | [][components.RelatedDocuments](../../models/components/relateddocuments.md) | :heavy_minus_sign: | A list of documents related to this person. | | | `Metadata` | [*components.PersonMetadata](../../models/components/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/components/platformproblemdetail.md b/docs/models/components/platformproblemdetail.md new file mode 100644 index 00000000..6abe2e9d --- /dev/null +++ b/docs/models/components/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` | `string` | :heavy_check_mark: | URI identifying the error type. | https://developers.glean.com/errors/invalid-cursor | +| `Title` | `string` | :heavy_check_mark: | Short, human-readable summary of the error. | Invalid Pagination Cursor | +| `Status` | `int64` | :heavy_check_mark: | HTTP status code mirrored from the response. | 400 | +| `Detail` | `string` | :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` | [components.PlatformProblemDetailCode](../../models/components/platformproblemdetailcode.md) | :heavy_check_mark: | Stable machine-readable error code. | invalid_cursor | +| `DocumentationURL` | `*string` | :heavy_minus_sign: | Direct URL to documentation for this error code. | https://developers.glean.com/errors/invalid-cursor | +| `RequestID` | `string` | :heavy_check_mark: | Platform-generated request ID for support correlation. | req_7f8a9b0c1d2e | +| `Errors` | [][components.PlatformProblemDetailError](../../models/components/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/components/platformskill.md b/docs/models/components/platformskill.md index 28d865f0..719bf054 100644 --- a/docs/models/components/platformskill.md +++ b/docs/models/components/platformskill.md @@ -3,16 +3,16 @@ ## Fields -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | -| `ID` | `string` | :heavy_check_mark: | Glean skill ID. | -| `DisplayName` | `string` | :heavy_check_mark: | Human-readable skill name. | -| `Description` | `string` | :heavy_check_mark: | Human-readable skill description. | -| `LatestVersion` | `int64` | :heavy_check_mark: | Latest major version number for the skill. | -| `LatestMinorVersion` | `int64` | :heavy_check_mark: | Latest minor version number for the skill. | -| `Status` | [components.PlatformSkillStatus](../../models/components/platformskillstatus.md) | :heavy_check_mark: | Current skill status. | -| `Origin` | [components.PlatformSkillOrigin](../../models/components/platformskillorigin.md) | :heavy_check_mark: | Source category for the skill. | -| `SourceProvenance` | [*components.PlatformSkillSourceProvenance](../../models/components/platformskillsourceprovenance.md) | :heavy_minus_sign: | N/A | -| `Owner` | [components.PlatformPersonReference](../../models/components/platformpersonreference.md) | :heavy_check_mark: | A lightweight reference to a person, used where a payload merely points at someone. | -| `CreatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | Time the skill was created. | -| `UpdatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | Time the skill was last updated. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `SkillID` | `string` | :heavy_check_mark: | Glean skill ID. | +| `DisplayName` | `string` | :heavy_check_mark: | Human-readable skill name. | +| `Description` | `string` | :heavy_check_mark: | Human-readable skill description. | +| `LatestVersion` | `int64` | :heavy_check_mark: | Latest major version number for the skill. | +| `LatestMinorVersion` | `int64` | :heavy_check_mark: | Latest minor version number for the skill. | +| `Status` | [components.PlatformSkillStatus](../../models/components/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` | [components.PlatformSkillOrigin](../../models/components/platformskillorigin.md) | :heavy_check_mark: | Source category for the skill. | +| `SourceProvenance` | [*components.PlatformSkillSourceProvenance](../../models/components/platformskillsourceprovenance.md) | :heavy_minus_sign: | N/A | +| `Owner` | [components.PlatformPersonReference](../../models/components/platformpersonreference.md) | :heavy_check_mark: | A lightweight reference to a person, used where a payload merely points at someone. | +| `CreatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | Time the skill was created. | +| `UpdatedAt` | [time.Time](https://pkg.go.dev/time#Time) | :heavy_check_mark: | Time the skill was last updated. | \ No newline at end of file diff --git a/docs/models/components/platformskillimportresponse.md b/docs/models/components/platformskillimportresponse.md index daf05889..f9a18d7c 100644 --- a/docs/models/components/platformskillimportresponse.md +++ b/docs/models/components/platformskillimportresponse.md @@ -3,7 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | -| `Skills` | [][components.PlatformSkill](../../models/components/platformskill.md) | :heavy_check_mark: | Independently persisted skills in request order. | -| `RequestID` | `string` | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | +| `Skills` | [][components.PlatformSkill](../../models/components/platformskill.md) | :heavy_check_mark: | Imported skills in request order. The import is atomic: either every source persists or none does.
| +| `RequestID` | `string` | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/components/platformskillorigin.md b/docs/models/components/platformskillorigin.md index 898011b4..fdd85ffb 100644 --- a/docs/models/components/platformskillorigin.md +++ b/docs/models/components/platformskillorigin.md @@ -10,6 +10,9 @@ import ( ) value := components.PlatformSkillOriginCustom + +// Open enum: custom values can be created with a direct type cast +custom := components.PlatformSkillOrigin("custom_value") ``` @@ -17,4 +20,5 @@ value := components.PlatformSkillOriginCustom | Name | Value | | --------------------------- | --------------------------- | -| `PlatformSkillOriginCustom` | CUSTOM | \ No newline at end of file +| `PlatformSkillOriginCustom` | CUSTOM | +| `PlatformSkillOriginGithub` | GITHUB | \ No newline at end of file diff --git a/docs/models/components/platformskillslistresponse.md b/docs/models/components/platformskillslistresponse.md index 3e7bca2c..c0326d1b 100644 --- a/docs/models/components/platformskillslistresponse.md +++ b/docs/models/components/platformskillslistresponse.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | -| `Skills` | [][components.PlatformSkill](../../models/components/platformskill.md) | :heavy_check_mark: | Skills available to the user. | +| `Results` | [][components.PlatformSkill](../../models/components/platformskill.md) | :heavy_check_mark: | Skills available to the user. | | `HasMore` | `bool` | :heavy_check_mark: | Whether additional results are available. | | `NextCursor` | `*string` | :heavy_check_mark: | Cursor for the next page, or null when no more results are available. | | `RequestID` | `string` | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/components/platformskillsourcepreviewstreamerror.md b/docs/models/components/platformskillsourcepreviewstreamerror.md new file mode 100644 index 00000000..358b64b3 --- /dev/null +++ b/docs/models/components/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` | [components.PlatformSkillSourcePreviewStreamErrorType](../../models/components/platformskillsourcepreviewstreamerrortype.md) | :heavy_check_mark: | Event type, also sent as the SSE `event` name. | +| `Error` | [components.PlatformProblemDetail](../../models/components/platformproblemdetail.md) | :heavy_check_mark: | Error response following RFC 9457, extended with `code` and `documentation_url` for machine-readable classification and self-service remediation.
| +| `AuthenticationSuggestions` | [][components.PlatformAuthenticationSuggestion](../../models/components/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/components/platformskillsourcepreviewstreamerrorserversentevent.md b/docs/models/components/platformskillsourcepreviewstreamerrorserversentevent.md new file mode 100644 index 00000000..5bd3afb8 --- /dev/null +++ b/docs/models/components/platformskillsourcepreviewstreamerrorserversentevent.md @@ -0,0 +1,10 @@ +# PlatformSkillSourcePreviewStreamErrorServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `ID` | `*string` | :heavy_minus_sign: | N/A | +| `Event` | `string` | :heavy_check_mark: | N/A | +| `Data` | [components.PlatformSkillSourcePreviewStreamError](../../models/components/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/components/platformskillsourcepreviewstreamerrortype.md b/docs/models/components/platformskillsourcepreviewstreamerrortype.md new file mode 100644 index 00000000..1b7c1a28 --- /dev/null +++ b/docs/models/components/platformskillsourcepreviewstreamerrortype.md @@ -0,0 +1,20 @@ +# PlatformSkillSourcePreviewStreamErrorType + +Event type, also sent as the SSE `event` name. + +## Example Usage + +```go +import ( + "github.com/gleanwork/api-client-go/models/components" +) + +value := components.PlatformSkillSourcePreviewStreamErrorTypeError +``` + + +## Values + +| Name | Value | +| ------------------------------------------------ | ------------------------------------------------ | +| `PlatformSkillSourcePreviewStreamErrorTypeError` | ERROR | \ No newline at end of file diff --git a/docs/models/components/platformskillsourcepreviewstreameventserversentevent.md b/docs/models/components/platformskillsourcepreviewstreameventserversentevent.md new file mode 100644 index 00000000..84211ceb --- /dev/null +++ b/docs/models/components/platformskillsourcepreviewstreameventserversentevent.md @@ -0,0 +1,55 @@ +# PlatformSkillSourcePreviewStreamEventServerSentEvent + +A typed server-sent event. + + +## Supported Types + +### PlatformSkillSourcePreviewStreamScanServerSentEvent + +```go +platformSkillSourcePreviewStreamEventServerSentEvent := components.CreatePlatformSkillSourcePreviewStreamEventServerSentEventScan(components.PlatformSkillSourcePreviewStreamScanServerSentEvent{/* values here */}) +``` + +### PlatformSkillSourcePreviewStreamProgressServerSentEvent + +```go +platformSkillSourcePreviewStreamEventServerSentEvent := components.CreatePlatformSkillSourcePreviewStreamEventServerSentEventProgress(components.PlatformSkillSourcePreviewStreamProgressServerSentEvent{/* values here */}) +``` + +### PlatformSkillSourcePreviewStreamSkillServerSentEvent + +```go +platformSkillSourcePreviewStreamEventServerSentEvent := components.CreatePlatformSkillSourcePreviewStreamEventServerSentEventSkill(components.PlatformSkillSourcePreviewStreamSkillServerSentEvent{/* values here */}) +``` + +### PlatformSkillSourcePreviewStreamResultServerSentEvent + +```go +platformSkillSourcePreviewStreamEventServerSentEvent := components.CreatePlatformSkillSourcePreviewStreamEventServerSentEventResult(components.PlatformSkillSourcePreviewStreamResultServerSentEvent{/* values here */}) +``` + +### PlatformSkillSourcePreviewStreamErrorServerSentEvent + +```go +platformSkillSourcePreviewStreamEventServerSentEvent := components.CreatePlatformSkillSourcePreviewStreamEventServerSentEventError(components.PlatformSkillSourcePreviewStreamErrorServerSentEvent{/* values here */}) +``` + +## Union Discrimination + +Use the `Type` field to determine which variant is active, then access the corresponding field: + +```go +switch platformSkillSourcePreviewStreamEventServerSentEvent.Type { + case components.PlatformSkillSourcePreviewStreamEventServerSentEventTypeScan: + // platformSkillSourcePreviewStreamEventServerSentEvent.PlatformSkillSourcePreviewStreamScanServerSentEvent is populated + case components.PlatformSkillSourcePreviewStreamEventServerSentEventTypeProgress: + // platformSkillSourcePreviewStreamEventServerSentEvent.PlatformSkillSourcePreviewStreamProgressServerSentEvent is populated + case components.PlatformSkillSourcePreviewStreamEventServerSentEventTypeSkill: + // platformSkillSourcePreviewStreamEventServerSentEvent.PlatformSkillSourcePreviewStreamSkillServerSentEvent is populated + case components.PlatformSkillSourcePreviewStreamEventServerSentEventTypeResult: + // platformSkillSourcePreviewStreamEventServerSentEvent.PlatformSkillSourcePreviewStreamResultServerSentEvent is populated + case components.PlatformSkillSourcePreviewStreamEventServerSentEventTypeError: + // platformSkillSourcePreviewStreamEventServerSentEvent.PlatformSkillSourcePreviewStreamErrorServerSentEvent is populated +} +``` diff --git a/docs/models/components/platformskillsourcepreviewstreamprogress.md b/docs/models/components/platformskillsourcepreviewstreamprogress.md new file mode 100644 index 00000000..9645740b --- /dev/null +++ b/docs/models/components/platformskillsourcepreviewstreamprogress.md @@ -0,0 +1,13 @@ +# PlatformSkillSourcePreviewStreamProgress + +One skill finished inspecting; names the skill in progress. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `Type` | [components.PlatformSkillSourcePreviewStreamProgressType](../../models/components/platformskillsourcepreviewstreamprogresstype.md) | :heavy_check_mark: | Event type, also sent as the SSE `event` name. | +| `Completed` | `int64` | :heavy_check_mark: | Number of skills inspected so far. | +| `Total` | `int64` | :heavy_check_mark: | Number of skills to inspect. | +| `CurrentSkill` | `string` | :heavy_check_mark: | Path of the skill being inspected. | \ No newline at end of file diff --git a/docs/models/components/platformskillsourcepreviewstreamprogressserversentevent.md b/docs/models/components/platformskillsourcepreviewstreamprogressserversentevent.md new file mode 100644 index 00000000..5a53a49f --- /dev/null +++ b/docs/models/components/platformskillsourcepreviewstreamprogressserversentevent.md @@ -0,0 +1,10 @@ +# PlatformSkillSourcePreviewStreamProgressServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `ID` | `*string` | :heavy_minus_sign: | N/A | +| `Event` | `string` | :heavy_check_mark: | N/A | +| `Data` | [components.PlatformSkillSourcePreviewStreamProgress](../../models/components/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/components/platformskillsourcepreviewstreamprogresstype.md b/docs/models/components/platformskillsourcepreviewstreamprogresstype.md new file mode 100644 index 00000000..e195fa1b --- /dev/null +++ b/docs/models/components/platformskillsourcepreviewstreamprogresstype.md @@ -0,0 +1,20 @@ +# PlatformSkillSourcePreviewStreamProgressType + +Event type, also sent as the SSE `event` name. + +## Example Usage + +```go +import ( + "github.com/gleanwork/api-client-go/models/components" +) + +value := components.PlatformSkillSourcePreviewStreamProgressTypeProgress +``` + + +## Values + +| Name | Value | +| ------------------------------------------------------ | ------------------------------------------------------ | +| `PlatformSkillSourcePreviewStreamProgressTypeProgress` | PROGRESS | \ No newline at end of file diff --git a/docs/models/components/platformskillsourcepreviewstreamresult.md b/docs/models/components/platformskillsourcepreviewstreamresult.md new file mode 100644 index 00000000..0a03ce49 --- /dev/null +++ b/docs/models/components/platformskillsourcepreviewstreamresult.md @@ -0,0 +1,11 @@ +# PlatformSkillSourcePreviewStreamResult + +Terminal success event carrying the fully assembled preview. + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `Type` | [components.PlatformSkillSourcePreviewStreamResultType](../../models/components/platformskillsourcepreviewstreamresulttype.md) | :heavy_check_mark: | Event type, also sent as the SSE `event` name. | +| `Response` | [components.PlatformSkillSourcePreviewResponse](../../models/components/platformskillsourcepreviewresponse.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/components/platformskillsourcepreviewstreamresultserversentevent.md b/docs/models/components/platformskillsourcepreviewstreamresultserversentevent.md new file mode 100644 index 00000000..50bb15b0 --- /dev/null +++ b/docs/models/components/platformskillsourcepreviewstreamresultserversentevent.md @@ -0,0 +1,10 @@ +# PlatformSkillSourcePreviewStreamResultServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `ID` | `*string` | :heavy_minus_sign: | N/A | +| `Event` | `string` | :heavy_check_mark: | N/A | +| `Data` | [components.PlatformSkillSourcePreviewStreamResult](../../models/components/platformskillsourcepreviewstreamresult.md) | :heavy_check_mark: | Terminal success event carrying the fully assembled preview. | \ No newline at end of file diff --git a/docs/models/components/platformskillsourcepreviewstreamresulttype.md b/docs/models/components/platformskillsourcepreviewstreamresulttype.md new file mode 100644 index 00000000..a297cea8 --- /dev/null +++ b/docs/models/components/platformskillsourcepreviewstreamresulttype.md @@ -0,0 +1,20 @@ +# PlatformSkillSourcePreviewStreamResultType + +Event type, also sent as the SSE `event` name. + +## Example Usage + +```go +import ( + "github.com/gleanwork/api-client-go/models/components" +) + +value := components.PlatformSkillSourcePreviewStreamResultTypeResult +``` + + +## Values + +| Name | Value | +| -------------------------------------------------- | -------------------------------------------------- | +| `PlatformSkillSourcePreviewStreamResultTypeResult` | RESULT | \ No newline at end of file diff --git a/docs/models/components/platformskillsourcepreviewstreamscan.md b/docs/models/components/platformskillsourcepreviewstreamscan.md new file mode 100644 index 00000000..3c378809 --- /dev/null +++ b/docs/models/components/platformskillsourcepreviewstreamscan.md @@ -0,0 +1,12 @@ +# PlatformSkillSourcePreviewStreamScan + +Repository scan started; names every skill path found. + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `Type` | [components.PlatformSkillSourcePreviewStreamScanType](../../models/components/platformskillsourcepreviewstreamscantype.md) | :heavy_check_mark: | Event type, also sent as the SSE `event` name. | +| `Total` | `int64` | :heavy_check_mark: | Number of skill paths found in the scan. | +| `SkillPaths` | []`string` | :heavy_check_mark: | Skill paths found in the scan. | \ No newline at end of file diff --git a/docs/models/components/platformskillsourcepreviewstreamscanserversentevent.md b/docs/models/components/platformskillsourcepreviewstreamscanserversentevent.md new file mode 100644 index 00000000..7f66c535 --- /dev/null +++ b/docs/models/components/platformskillsourcepreviewstreamscanserversentevent.md @@ -0,0 +1,10 @@ +# PlatformSkillSourcePreviewStreamScanServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `ID` | `*string` | :heavy_minus_sign: | N/A | +| `Event` | `string` | :heavy_check_mark: | N/A | +| `Data` | [components.PlatformSkillSourcePreviewStreamScan](../../models/components/platformskillsourcepreviewstreamscan.md) | :heavy_check_mark: | Repository scan started; names every skill path found. | \ No newline at end of file diff --git a/docs/models/components/platformskillsourcepreviewstreamscantype.md b/docs/models/components/platformskillsourcepreviewstreamscantype.md new file mode 100644 index 00000000..15283bdb --- /dev/null +++ b/docs/models/components/platformskillsourcepreviewstreamscantype.md @@ -0,0 +1,20 @@ +# PlatformSkillSourcePreviewStreamScanType + +Event type, also sent as the SSE `event` name. + +## Example Usage + +```go +import ( + "github.com/gleanwork/api-client-go/models/components" +) + +value := components.PlatformSkillSourcePreviewStreamScanTypeScan +``` + + +## Values + +| Name | Value | +| ---------------------------------------------- | ---------------------------------------------- | +| `PlatformSkillSourcePreviewStreamScanTypeScan` | SCAN | \ No newline at end of file diff --git a/docs/models/components/platformskillsourcepreviewstreamskill.md b/docs/models/components/platformskillsourcepreviewstreamskill.md new file mode 100644 index 00000000..9b24cfd8 --- /dev/null +++ b/docs/models/components/platformskillsourcepreviewstreamskill.md @@ -0,0 +1,11 @@ +# PlatformSkillSourcePreviewStreamSkill + +One skill previewed; carries the previewed skill. + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `Type` | [components.PlatformSkillSourcePreviewStreamSkillType](../../models/components/platformskillsourcepreviewstreamskilltype.md) | :heavy_check_mark: | Event type, also sent as the SSE `event` name. | +| `Skill` | [components.PlatformSkillSourcePreview](../../models/components/platformskillsourcepreview.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/components/platformskillsourcepreviewstreamskillserversentevent.md b/docs/models/components/platformskillsourcepreviewstreamskillserversentevent.md new file mode 100644 index 00000000..4f339a69 --- /dev/null +++ b/docs/models/components/platformskillsourcepreviewstreamskillserversentevent.md @@ -0,0 +1,10 @@ +# PlatformSkillSourcePreviewStreamSkillServerSentEvent + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `ID` | `*string` | :heavy_minus_sign: | N/A | +| `Event` | `string` | :heavy_check_mark: | N/A | +| `Data` | [components.PlatformSkillSourcePreviewStreamSkill](../../models/components/platformskillsourcepreviewstreamskill.md) | :heavy_check_mark: | One skill previewed; carries the previewed skill. | \ No newline at end of file diff --git a/docs/models/components/platformskillsourcepreviewstreamskilltype.md b/docs/models/components/platformskillsourcepreviewstreamskilltype.md new file mode 100644 index 00000000..b7f067be --- /dev/null +++ b/docs/models/components/platformskillsourcepreviewstreamskilltype.md @@ -0,0 +1,20 @@ +# PlatformSkillSourcePreviewStreamSkillType + +Event type, also sent as the SSE `event` name. + +## Example Usage + +```go +import ( + "github.com/gleanwork/api-client-go/models/components" +) + +value := components.PlatformSkillSourcePreviewStreamSkillTypeSkill +``` + + +## Values + +| Name | Value | +| ------------------------------------------------ | ------------------------------------------------ | +| `PlatformSkillSourcePreviewStreamSkillTypeSkill` | SKILL | \ No newline at end of file diff --git a/docs/models/components/platformskillstatus.md b/docs/models/components/platformskillstatus.md index 0eb8f54e..f9dbe4f9 100644 --- a/docs/models/components/platformskillstatus.md +++ b/docs/models/components/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/components/platformskillsyncresponse.md b/docs/models/components/platformskillsyncresponse.md index 9232b330..437b6bfe 100644 --- a/docs/models/components/platformskillsyncresponse.md +++ b/docs/models/components/platformskillsyncresponse.md @@ -3,9 +3,8 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `SyncStatus` | [components.PlatformSkillSyncResultStatus](../../models/components/platformskillsyncresultstatus.md) | :heavy_check_mark: | Synchronization status after a successful refresh. | -| `CommitSha` | `string` | :heavy_check_mark: | Git commit SHA now associated with the skill. | -| `Updated` | `bool` | :heavy_check_mark: | Whether this request created a new skill version. | -| `RequestID` | `string` | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | +| `CommitSha` | `string` | :heavy_check_mark: | Git commit SHA now associated with the skill. | +| `IsUpdated` | `bool` | :heavy_check_mark: | Whether this request created a new skill version. | +| `RequestID` | `string` | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/components/platformskillsyncresultstatus.md b/docs/models/components/platformskillsyncresultstatus.md deleted file mode 100644 index 5a300863..00000000 --- a/docs/models/components/platformskillsyncresultstatus.md +++ /dev/null @@ -1,20 +0,0 @@ -# PlatformSkillSyncResultStatus - -Synchronization status after a successful refresh. - -## Example Usage - -```go -import ( - "github.com/gleanwork/api-client-go/models/components" -) - -value := components.PlatformSkillSyncResultStatusUpToDate -``` - - -## Values - -| Name | Value | -| --------------------------------------- | --------------------------------------- | -| `PlatformSkillSyncResultStatusUpToDate` | UP_TO_DATE | \ No newline at end of file diff --git a/docs/models/components/platformskillupdaterequest.md b/docs/models/components/platformskillupdaterequest.md index edaecfb0..8de999f0 100644 --- a/docs/models/components/platformskillupdaterequest.md +++ b/docs/models/components/platformskillupdaterequest.md @@ -3,6 +3,6 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `Status` | [components.PlatformSkillUpdateStatus](../../models/components/platformskillupdatestatus.md) | :heavy_check_mark: | New status for the skill. | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `Status` | [components.PlatformSkillUpdateStatus](../../models/components/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/components/platformskillupdatestatus.md b/docs/models/components/platformskillupdatestatus.md index cbdb8c0f..a7a748f6 100644 --- a/docs/models/components/platformskillupdatestatus.md +++ b/docs/models/components/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/components/platformskillversionslistresponse.md b/docs/models/components/platformskillversionslistresponse.md index 61d161e2..6fcd4a10 100644 --- a/docs/models/components/platformskillversionslistresponse.md +++ b/docs/models/components/platformskillversionslistresponse.md @@ -5,7 +5,7 @@ | Field | Type | Required | Description | | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `Versions` | [][components.PlatformSkillVersion](../../models/components/platformskillversion.md) | :heavy_check_mark: | Versions available for the skill. | +| `Results` | [][components.PlatformSkillVersion](../../models/components/platformskillversion.md) | :heavy_check_mark: | Versions available for the skill. | | `HasMore` | `bool` | :heavy_check_mark: | Whether additional results are available. | | `NextCursor` | `*string` | :heavy_check_mark: | Cursor for the next page, or null when no more results are available. | | `RequestID` | `string` | :heavy_check_mark: | Platform-generated request ID for support correlation. | \ No newline at end of file diff --git a/docs/models/components/ugcaction.md b/docs/models/components/ugcaction.md new file mode 100644 index 00000000..d164f4a4 --- /dev/null +++ b/docs/models/components/ugcaction.md @@ -0,0 +1,8 @@ +# UgcAction + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `Create` | [components.UgcType](../../models/components/ugctype.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/components/ugcactionunion.md b/docs/models/components/ugcactionunion.md new file mode 100644 index 00000000..f92a4abf --- /dev/null +++ b/docs/models/components/ugcactionunion.md @@ -0,0 +1,23 @@ +# 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 + +### UgcAction + +```go +ugcActionUnion := components.CreateUgcActionUnionUgcAction(components.UgcAction{/* values here */}) +``` + +## Union Discrimination + +Use the `Type` field to determine which variant is active, then access the corresponding field: + +```go +switch ugcActionUnion.Type { + case components.UgcActionUnionTypeUgcAction: + // ugcActionUnion.UgcAction is populated +} +``` diff --git a/docs/models/components/ugctype.md b/docs/models/components/ugctype.md index 39f2a4ca..e6a41261 100644 --- a/docs/models/components/ugctype.md +++ b/docs/models/components/ugctype.md @@ -38,4 +38,5 @@ custom := components.UgcType("custom_value") | `UgcTypeSpreadsheetType` | SPREADSHEET_TYPE | | `UgcTypeInlineHTMLType` | INLINE_HTML_TYPE | | `UgcTypePodcastType` | PODCAST_TYPE | +| `UgcTypeVideoType` | VIDEO_TYPE | | `UgcTypeWorkflowsType` | WORKFLOWS_TYPE | \ No newline at end of file diff --git a/docs/models/operations/platformskillscreateresponse.md b/docs/models/operations/platformskillscreateresponse.md index 62190721..d5995939 100644 --- a/docs/models/operations/platformskillscreateresponse.md +++ b/docs/models/operations/platformskillscreateresponse.md @@ -6,4 +6,4 @@ | Field | Type | Required | Description | | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | | `HTTPMeta` | [components.HTTPMetadata](../../models/components/httpmetadata.md) | :heavy_check_mark: | N/A | -| `PlatformSkillCreateResponse` | [*components.PlatformSkillCreateResponse](../../models/components/platformskillcreateresponse.md) | :heavy_minus_sign: | Successful response. | \ No newline at end of file +| `PlatformSkillCreateResponse` | [*components.PlatformSkillCreateResponse](../../models/components/platformskillcreateresponse.md) | :heavy_minus_sign: | Skill created. | \ No newline at end of file diff --git a/docs/models/operations/platformskillscreateversionresponse.md b/docs/models/operations/platformskillscreateversionresponse.md index 195a037d..4d18bcf9 100644 --- a/docs/models/operations/platformskillscreateversionresponse.md +++ b/docs/models/operations/platformskillscreateversionresponse.md @@ -6,4 +6,4 @@ | Field | Type | Required | Description | | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | | `HTTPMeta` | [components.HTTPMetadata](../../models/components/httpmetadata.md) | :heavy_check_mark: | N/A | -| `PlatformSkillVersionCreateResponse` | [*components.PlatformSkillVersionCreateResponse](../../models/components/platformskillversioncreateresponse.md) | :heavy_minus_sign: | Successful response. | \ No newline at end of file +| `PlatformSkillVersionCreateResponse` | [*components.PlatformSkillVersionCreateResponse](../../models/components/platformskillversioncreateresponse.md) | :heavy_minus_sign: | Skill version created. | \ No newline at end of file diff --git a/docs/models/operations/platformskillslistrequest.md b/docs/models/operations/platformskillslistrequest.md index 7727a947..c434c3d8 100644 --- a/docs/models/operations/platformskillslistrequest.md +++ b/docs/models/operations/platformskillslistrequest.md @@ -3,7 +3,7 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `PageSize` | `*int64` | :heavy_minus_sign: | Maximum number of skills to return. | -| `Cursor` | `*string` | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `PageSize` | `*int64` | :heavy_minus_sign: | Maximum number of skills to return. Defaults to 20. Maximum is 100. | +| `Cursor` | `*string` | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | \ No newline at end of file diff --git a/docs/models/operations/platformskillslistversionsrequest.md b/docs/models/operations/platformskillslistversionsrequest.md index 8e737ceb..0333f7b3 100644 --- a/docs/models/operations/platformskillslistversionsrequest.md +++ b/docs/models/operations/platformskillslistversionsrequest.md @@ -3,8 +3,8 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -------------------------------------------------- | -| `SkillID` | `string` | :heavy_check_mark: | Glean skill ID. | {skill_id} | -| `PageSize` | `*int64` | :heavy_minus_sign: | Maximum number of versions to return. | | -| `Cursor` | `*string` | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `SkillID` | `string` | :heavy_check_mark: | Glean skill ID. | {skill_id} | +| `PageSize` | `*int64` | :heavy_minus_sign: | Maximum number of versions to return. Defaults to 20. Maximum is 100. | | +| `Cursor` | `*string` | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | | \ No newline at end of file diff --git a/docs/models/components/platformskillsourcepreviewrequest.md b/docs/models/operations/platformskillspreviewsourcerequest.md similarity index 88% rename from docs/models/components/platformskillsourcepreviewrequest.md rename to docs/models/operations/platformskillspreviewsourcerequest.md index 82b4de68..f1c3a64d 100644 --- a/docs/models/components/platformskillsourcepreviewrequest.md +++ b/docs/models/operations/platformskillspreviewsourcerequest.md @@ -1,4 +1,4 @@ -# PlatformSkillSourcePreviewRequest +# PlatformSkillsPreviewSourceRequest ## Fields @@ -6,4 +6,4 @@ | Field | Type | Required | Description | | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | | `SourceURL` | `string` | :heavy_check_mark: | GitHub URL for a skill directory, SKILL.md file, or repository to inspect. | -| `Stream` | `*bool` | :heavy_minus_sign: | Whether to stream repository scan progress using server-sent events. | \ No newline at end of file +| `Stream` | `*bool` | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/platformskillspreviewsourceresponse.md b/docs/models/operations/platformskillspreviewsourceresponse.md index e118b628..e1c724c1 100644 --- a/docs/models/operations/platformskillspreviewsourceresponse.md +++ b/docs/models/operations/platformskillspreviewsourceresponse.md @@ -6,5 +6,4 @@ | Field | Type | Required | Description | | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | | `HTTPMeta` | [components.HTTPMetadata](../../models/components/httpmetadata.md) | :heavy_check_mark: | N/A | -| `PlatformSkillSourcePreviewResponse` | [*components.PlatformSkillSourcePreviewResponse](../../models/components/platformskillsourcepreviewresponse.md) | :heavy_minus_sign: | Successful response. | -| `Res` | `*string` | :heavy_minus_sign: | Successful response. | \ No newline at end of file +| `PlatformSkillSourcePreviewResponse` | [*components.PlatformSkillSourcePreviewResponse](../../models/components/platformskillsourcepreviewresponse.md) | :heavy_minus_sign: | Successful response. | \ No newline at end of file diff --git a/docs/models/operations/platformskillspreviewsourcestreamrequest.md b/docs/models/operations/platformskillspreviewsourcestreamrequest.md new file mode 100644 index 00000000..e210c58c --- /dev/null +++ b/docs/models/operations/platformskillspreviewsourcestreamrequest.md @@ -0,0 +1,9 @@ +# PlatformSkillsPreviewSourceStreamRequest + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `SourceURL` | `string` | :heavy_check_mark: | GitHub URL for a skill directory, SKILL.md file, or repository to inspect. | +| `Stream` | `*bool` | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/platformskillspreviewsourcestreamresponse.md b/docs/models/operations/platformskillspreviewsourcestreamresponse.md new file mode 100644 index 00000000..e568ffc6 --- /dev/null +++ b/docs/models/operations/platformskillspreviewsourcestreamresponse.md @@ -0,0 +1,9 @@ +# PlatformSkillsPreviewSourceStreamResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `HTTPMeta` | [components.HTTPMetadata](../../models/components/httpmetadata.md) | :heavy_check_mark: | N/A | +| `PlatformSkillSourcePreviewStreamEventServerSentEvent` | `*stream.EventStream[components.PlatformSkillSourcePreviewStreamEventServerSentEvent]` | :heavy_minus_sign: | Successful response. | \ No newline at end of file diff --git a/docs/sdks/skills/README.md b/docs/sdks/skills/README.md index accc7512..4aeff116 100644 --- a/docs/sdks/skills/README.md +++ b/docs/sdks/skills/README.md @@ -18,10 +18,11 @@ * [ListVersions](#listversions) - List skill versions * [RetrieveVersion](#retrieveversion) - Retrieve skill version * [RetrieveVersionContent](#retrieveversioncontent) - Download skill version content +* [PreviewSourceStream](#previewsourcestream) - 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 @@ -79,15 +80,15 @@ func main() { ### Errors -| Error Type | Status Code | Content Type | -| ------------------------------------ | ------------------------------------ | ------------------------------------ | -| apierrors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 413, 429 | application/problem+json | -| apierrors.PlatformProblemDetailError | 500, 503 | application/problem+json | -| apierrors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| apierrors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 409, 413, 429 | application/problem+json | +| apierrors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| apierrors.APIError | 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 @@ -110,7 +111,7 @@ func main() { apiclientgo.WithSecurity(os.Getenv("GLEAN_API_TOKEN")), ) - res, err := s.Skills.List(ctx, nil, nil) + res, err := s.Skills.List(ctx, apiclientgo.Pointer[int64](20), nil) if err != nil { log.Fatal(err) } @@ -122,12 +123,12 @@ func main() { ### Parameters -| Parameter | Type | Required | Description | -| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -| `ctx` | [context.Context](https://pkg.go.dev/context#Context) | :heavy_check_mark: | The context to use for the request. | -| `pageSize` | `*int64` | :heavy_minus_sign: | Maximum number of skills to return. | -| `cursor` | `*string` | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | -| `opts` | [][operations.Option](../../models/operations/option.md) | :heavy_minus_sign: | The options for this request. | +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `ctx` | [context.Context](https://pkg.go.dev/context#Context) | :heavy_check_mark: | The context to use for the request. | +| `pageSize` | `*int64` | :heavy_minus_sign: | Maximum number of skills to return. Defaults to 20. Maximum is 100. | +| `cursor` | `*string` | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | +| `opts` | [][operations.Option](../../models/operations/option.md) | :heavy_minus_sign: | The options for this request. | ### Response @@ -195,11 +196,12 @@ func main() { ### Errors -| Error Type | Status Code | Content Type | -| ------------------------------------ | ------------------------------------ | ------------------------------------ | -| apierrors.PlatformProblemDetailError | 400, 401, 403, 408, 409, 413, 429 | application/problem+json | -| apierrors.PlatformProblemDetailError | 500, 503 | application/problem+json | -| apierrors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | +| apierrors.PlatformUnauthorizedAgentToolsProblemError | 422 | application/problem+json | +| apierrors.PlatformProblemDetailError | 400, 401, 403, 408, 409, 413, 429 | application/problem+json | +| apierrors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| apierrors.APIError | 4XX, 5XX | \*/\* | ## Validate @@ -282,7 +284,7 @@ import( "context" "os" apiclientgo "github.com/gleanwork/api-client-go" - "github.com/gleanwork/api-client-go/models/components" + "github.com/gleanwork/api-client-go/models/operations" "log" ) @@ -293,7 +295,7 @@ func main() { apiclientgo.WithSecurity(os.Getenv("GLEAN_API_TOKEN")), ) - res, err := s.Skills.PreviewSource(ctx, components.PlatformSkillSourcePreviewRequest{ + res, err := s.Skills.PreviewSource(ctx, operations.PlatformSkillsPreviewSourceRequest{ SourceURL: "https://github.com/anthropics/skills", }) if err != nil { @@ -307,11 +309,11 @@ func main() { ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `ctx` | [context.Context](https://pkg.go.dev/context#Context) | :heavy_check_mark: | The context to use for the request. | -| `request` | [components.PlatformSkillSourcePreviewRequest](../../models/components/platformskillsourcepreviewrequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `opts` | [][operations.Option](../../models/operations/option.md) | :heavy_minus_sign: | The options for this request. | +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `ctx` | [context.Context](https://pkg.go.dev/context#Context) | :heavy_check_mark: | The context to use for the request. | +| `request` | [operations.PlatformSkillsPreviewSourceRequest](../../models/operations/platformskillspreviewsourcerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `opts` | [][operations.Option](../../models/operations/option.md) | :heavy_minus_sign: | The options for this request. | ### Response @@ -319,15 +321,16 @@ func main() { ### Errors -| Error Type | Status Code | Content Type | -| ------------------------------------ | ------------------------------------ | ------------------------------------ | -| apierrors.PlatformProblemDetailError | 400, 401, 403, 408, 413, 429 | application/problem+json | -| apierrors.PlatformProblemDetailError | 500, 503 | application/problem+json | -| apierrors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | +| apierrors.PlatformUnauthorizedAgentToolsProblemError | 422 | application/problem+json | +| apierrors.PlatformProblemDetailError | 400, 401, 403, 408, 413, 429 | application/problem+json | +| apierrors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| apierrors.APIError | 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 @@ -598,15 +601,16 @@ func main() { ### Errors -| Error Type | Status Code | Content Type | -| -------------------------------------- | -------------------------------------- | -------------------------------------- | -| apierrors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 409, 413, 429 | application/problem+json | -| apierrors.PlatformProblemDetailError | 500, 503 | application/problem+json | -| apierrors.APIError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | +| apierrors.PlatformUnauthorizedAgentToolsProblemError | 422 | application/problem+json | +| apierrors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 409, 429 | application/problem+json | +| apierrors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| apierrors.APIError | 4XX, 5XX | \*/\* | ## CreateVersion -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 @@ -696,7 +700,7 @@ func main() { apiclientgo.WithSecurity(os.Getenv("GLEAN_API_TOKEN")), ) - res, err := s.Skills.ListVersions(ctx, "{skill_id}", nil, nil) + res, err := s.Skills.ListVersions(ctx, "{skill_id}", apiclientgo.Pointer[int64](20), nil) if err != nil { log.Fatal(err) } @@ -708,13 +712,13 @@ func main() { ### Parameters -| Parameter | Type | Required | Description | Example | -| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -| `ctx` | [context.Context](https://pkg.go.dev/context#Context) | :heavy_check_mark: | The context to use for the request. | | -| `skillID` | `string` | :heavy_check_mark: | Glean skill ID. | {skill_id} | -| `pageSize` | `*int64` | :heavy_minus_sign: | Maximum number of versions to return. | | -| `cursor` | `*string` | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | | -| `opts` | [][operations.Option](../../models/operations/option.md) | :heavy_minus_sign: | The options for this request. | | +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | +| `ctx` | [context.Context](https://pkg.go.dev/context#Context) | :heavy_check_mark: | The context to use for the request. | | +| `skillID` | `string` | :heavy_check_mark: | Glean skill ID. | {skill_id} | +| `pageSize` | `*int64` | :heavy_minus_sign: | Maximum number of versions to return. Defaults to 20. Maximum is 100. | | +| `cursor` | `*string` | :heavy_minus_sign: | Opaque pagination cursor from a previous response. | | +| `opts` | [][operations.Option](../../models/operations/option.md) | :heavy_minus_sign: | The options for this request. | | ### Response @@ -838,4 +842,69 @@ func main() { | ------------------------------------ | ------------------------------------ | ------------------------------------ | | apierrors.PlatformProblemDetailError | 400, 401, 403, 404, 408, 429 | application/problem+json | | apierrors.PlatformProblemDetailError | 500, 503 | application/problem+json | -| apierrors.APIError | 4XX, 5XX | \*/\* | \ No newline at end of file +| apierrors.APIError | 4XX, 5XX | \*/\* | + +## PreviewSourceStream + +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 + + +```go +package main + +import( + "context" + "os" + apiclientgo "github.com/gleanwork/api-client-go" + "github.com/gleanwork/api-client-go/models/operations" + "log" +) + +func main() { + ctx := context.Background() + + s := apiclientgo.New( + apiclientgo.WithSecurity(os.Getenv("GLEAN_API_TOKEN")), + ) + + res, err := s.Skills.PreviewSourceStream(ctx, operations.PlatformSkillsPreviewSourceStreamRequest{ + SourceURL: "https://github.com/anthropics/skills", + }) + if err != nil { + log.Fatal(err) + } + if res.PlatformSkillSourcePreviewStreamEventServerSentEvent != nil { + defer res.PlatformSkillSourcePreviewStreamEventServerSentEvent.Close() + + for res.PlatformSkillSourcePreviewStreamEventServerSentEvent.Next() { + event := res.PlatformSkillSourcePreviewStreamEventServerSentEvent.Value() + log.Print(event) + // Handle the event + } + } +} +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `ctx` | [context.Context](https://pkg.go.dev/context#Context) | :heavy_check_mark: | The context to use for the request. | +| `request` | [operations.PlatformSkillsPreviewSourceStreamRequest](../../models/operations/platformskillspreviewsourcestreamrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `opts` | [][operations.Option](../../models/operations/option.md) | :heavy_minus_sign: | The options for this request. | + +### Response + +**[*operations.PlatformSkillsPreviewSourceStreamResponse](../../models/operations/platformskillspreviewsourcestreamresponse.md), error** + +### Errors + +| Error Type | Status Code | Content Type | +| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | +| apierrors.PlatformUnauthorizedAgentToolsProblemError | 422 | application/problem+json | +| apierrors.PlatformProblemDetailError | 400, 401, 403, 408, 413, 429 | application/problem+json | +| apierrors.PlatformProblemDetailError | 500, 503 | application/problem+json | +| apierrors.APIError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/glean.go b/glean.go index 1de99baf..0a2425f7 100644 --- a/glean.go +++ b/glean.go @@ -2,7 +2,7 @@ package apiclientgo -// Generated from OpenAPI doc version 0.9.0 and generator version 2.938.0 +// Generated from OpenAPI doc version 0.9.0 and generator version 2.943.0 import ( "context" @@ -161,11 +161,11 @@ func WithTimeout(timeout time.Duration) SDKOption { // New creates a new instance of the SDK with the provided options func New(opts ...SDKOption) *Glean { sdk := &Glean{ - SDKVersion: "0.15.15", + SDKVersion: "0.16.0", sdkConfiguration: config.SDKConfiguration{ - UserAgent: "speakeasy-sdk/go 0.15.15 2.938.0 0.9.0 github.com/gleanwork/api-client-go", - SDKVersion: "0.15.15", - GenVersion: "2.938.0", + UserAgent: "speakeasy-sdk/go 0.16.0 2.943.0 0.9.0 github.com/gleanwork/api-client-go", + SDKVersion: "0.16.0", + GenVersion: "2.943.0", OpenAPIDocVersion: "0.9.0", ServerList: ServerList, ServerVariables: []map[string]string{ diff --git a/go.mod b/go.mod index 3a9e7d2e..a57e6a6d 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,8 @@ module github.com/gleanwork/api-client-go -go 1.25.10 +go 1.26.8 -require github.com/stretchr/testify v1.8.4 +require github.com/stretchr/testify v1.11.1 require ( github.com/davecgh/go-spew v1.1.1 // indirect diff --git a/go.sum b/go.sum index fa4b6e68..c4c1710c 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/indexingdatasources.go b/indexingdatasources.go index 7ad5e303..36d60a73 100644 --- a/indexingdatasources.go +++ b/indexingdatasources.go @@ -658,7 +658,7 @@ func (s *IndexingDatasources) Submit(ctx context.Context, datasourceInstance str var out apierrors.ErrorInfoResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -683,7 +683,7 @@ func (s *IndexingDatasources) Submit(ctx context.Context, datasourceInstance str var out apierrors.ErrorInfoResponse if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ diff --git a/internal/utils/json.go b/internal/utils/json.go index 2cfbfc87..5a5f79f0 100644 --- a/internal/utils/json.go +++ b/internal/utils/json.go @@ -14,6 +14,7 @@ import ( "time" "unsafe" + "github.com/gleanwork/api-client-go/optionalnullable" "github.com/gleanwork/api-client-go/types" ) @@ -319,7 +320,26 @@ func marshalValue(v interface{}, tag reflect.StructTag) (json.RawMessage, error) return []byte("null"), nil } - // Check if the map implements json.Marshaler (like optionalnullable.OptionalNullable[T]) + // 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 + } + + // Check if the map implements json.Marshaler if marshaler, ok := val.Interface().(json.Marshaler); ok { return marshaler.MarshalJSON() } @@ -419,6 +439,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)) @@ -512,6 +535,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 implementsJSONUnmarshaler(v.Type()) { if v.CanAddr() { return json.Unmarshal(value, v.Addr().Interface()) diff --git a/internal/utils/pathparams.go b/internal/utils/pathparams.go index 6575730b..c5f0a88f 100644 --- a/internal/utils/pathparams.go +++ b/internal/utils/pathparams.go @@ -79,7 +79,7 @@ func populateParsedParameters(pathParams interface{}, globals interface{}, parse // TODO: support other styles switch ppTag.Style { case "simple": - simpleParams := getSimplePathParams(ppTag.ParamName, fieldType.Type, valType, ppTag.Explode) + simpleParams := getSimplePathParams(ppTag.ParamName, fieldType.Type, valType, ppTag.Explode, ppTag.AllowReserved) for k, v := range simpleParams { parsedParameters[k] = v } @@ -90,7 +90,7 @@ func populateParsedParameters(pathParams interface{}, globals interface{}, parse return globalsAlreadyPopulated, nil } -func getSimplePathParams(parentName string, objType reflect.Type, objValue reflect.Value, explode bool) map[string]string { +func getSimplePathParams(parentName string, objType reflect.Type, objValue reflect.Value, explode bool, allowReserved bool) map[string]string { pathParams := make(map[string]string) if isNil(objType, objValue) { @@ -109,7 +109,7 @@ func getSimplePathParams(parentName string, objType reflect.Type, objValue refle } var ppVals []string for i := 0; i < objValue.Len(); i++ { - ppVals = append(ppVals, valToString(objValue.Index(i).Interface())) + ppVals = append(ppVals, escapePathValue(objValue.Index(i).Interface(), allowReserved)) } pathParams[parentName] = strings.Join(ppVals, ",") case reflect.Map: @@ -118,7 +118,7 @@ func getSimplePathParams(parentName string, objType reflect.Type, objValue refle // Serialize the wrapped value using the rules for its own type if value, isSet := nullableValue.GetUntyped(); isSet && value != nil { innerValue := reflect.ValueOf(value) - return getSimplePathParams(parentName, innerValue.Type(), innerValue, explode) + return getSimplePathParams(parentName, innerValue.Type(), innerValue, explode, allowReserved) } // If not set or explicitly null, return nil (skip parameter) return pathParams @@ -131,20 +131,16 @@ func getSimplePathParams(parentName string, objType reflect.Type, objValue refle objMap := objValue.MapRange() for objMap.Next() { if explode { - ppVals = append(ppVals, fmt.Sprintf("%s=%s", objMap.Key().String(), valToString(objMap.Value().Interface()))) + ppVals = append(ppVals, fmt.Sprintf("%s=%s", escapePathValue(objMap.Key().String(), false), escapePathValue(objMap.Value().Interface(), allowReserved))) } else { - ppVals = append(ppVals, fmt.Sprintf("%s,%s", objMap.Key().String(), valToString(objMap.Value().Interface()))) + ppVals = append(ppVals, fmt.Sprintf("%s,%s", escapePathValue(objMap.Key().String(), false), escapePathValue(objMap.Value().Interface(), allowReserved))) } } pathParams[parentName] = strings.Join(ppVals, ",") case reflect.Struct: switch objValue.Interface().(type) { - case time.Time: - pathParams[parentName] = valToString(objValue.Interface()) - case types.Date: - pathParams[parentName] = valToString(objValue.Interface()) - case big.Int: - pathParams[parentName] = valToString(objValue.Interface()) + case time.Time, types.Date, big.Int: + pathParams[parentName] = escapePathValue(objValue.Interface(), allowReserved) default: var ppVals []string for i := 0; i < objType.NumField(); i++ { @@ -170,15 +166,15 @@ func getSimplePathParams(parentName string, objType reflect.Type, objValue refle } if explode { - ppVals = append(ppVals, fmt.Sprintf("%s=%s", ppTag.ParamName, valToString(valType.Interface()))) + ppVals = append(ppVals, fmt.Sprintf("%s=%s", escapePathValue(ppTag.ParamName, false), escapePathValue(valType.Interface(), allowReserved))) } else { - ppVals = append(ppVals, fmt.Sprintf("%s,%s", ppTag.ParamName, valToString(valType.Interface()))) + ppVals = append(ppVals, fmt.Sprintf("%s,%s", escapePathValue(ppTag.ParamName, false), escapePathValue(valType.Interface(), allowReserved))) } } pathParams[parentName] = strings.Join(ppVals, ",") } default: - pathParams[parentName] = valToString(objValue.Interface()) + pathParams[parentName] = escapePathValue(objValue.Interface(), allowReserved) } return pathParams diff --git a/internal/utils/queryparams.go b/internal/utils/queryparams.go index acf0d0c4..f0eaed6d 100644 --- a/internal/utils/queryparams.go +++ b/internal/utils/queryparams.go @@ -10,6 +10,8 @@ import ( "net/http" "net/url" "reflect" + "sort" + "strings" "time" "github.com/gleanwork/api-client-go/optionalnullable" @@ -23,25 +25,58 @@ func PopulateQueryParams(_ context.Context, req *http.Request, queryParams inter } values := url.Values{} + allowReserved := map[string][]bool{} - globalsAlreadyPopulated, err := populateQueryParams(queryParams, globals, values, []string{}, allowEmptyValue) + globalsAlreadyPopulated, err := populateQueryParams(queryParams, globals, values, []string{}, allowEmptyValue, allowReserved) if err != nil { return err } if globals != nil { - _, err = populateQueryParams(globals, nil, values, globalsAlreadyPopulated, allowEmptyValue) + _, err = populateQueryParams(globals, nil, values, globalsAlreadyPopulated, allowEmptyValue, allowReserved) if err != nil { return err } } - req.URL.RawQuery = values.Encode() + req.URL.RawQuery = encodeQueryValues(values, allowReserved) return nil } -func populateQueryParams(queryParams interface{}, globals interface{}, values url.Values, skipFields []string, allowEmptyValue map[string]struct{}) ([]string, error) { +func encodeQueryValues(values url.Values, allowReserved map[string][]bool) string { + keys := make([]string, 0, len(values)) + for k := range values { + keys = append(keys, k) + } + sort.Strings(keys) + + var buf strings.Builder + for _, k := range keys { + keyEscaped := url.QueryEscape(k) + for i, v := range values[k] { + if buf.Len() > 0 { + buf.WriteByte('&') + } + buf.WriteString(keyEscaped) + buf.WriteByte('=') + reserved := i < len(allowReserved[k]) && allowReserved[k][i] + if reserved { + buf.WriteString(escapeExceptReserved(v)) + } else { + buf.WriteString(url.QueryEscape(v)) + } + } + } + return buf.String() +} + +func addQueryValue(values url.Values, allowReserved map[string][]bool, key, value string, reserved bool) { + values.Add(key, value) + allowReserved[key] = append(allowReserved[key], reserved) +} + +func populateQueryParams(queryParams interface{}, globals interface{}, values url.Values, skipFields []string, allowEmptyValue map[string]struct{}, allowReserved map[string][]bool) ([]string, error) { queryParamsVal := reflect.ValueOf(queryParams) if queryParamsVal.Kind() == reflect.Pointer && queryParamsVal.IsNil() { return nil, nil @@ -69,7 +104,7 @@ func populateQueryParams(queryParams interface{}, globals interface{}, values ur constValue := parseConstTag(fieldType) if constValue != nil { - values.Add(qpTag.ParamName, *constValue) + addQueryValue(values, allowReserved, qpTag.ParamName, *constValue, qpTag.AllowReserved) continue } @@ -89,7 +124,7 @@ func populateQueryParams(queryParams interface{}, globals interface{}, values ur return nil, err } for k, v := range vals { - values.Add(k, v) + addQueryValue(values, allowReserved, k, v, qpTag.AllowReserved) } } else { switch qpTag.Style { @@ -97,21 +132,21 @@ func populateQueryParams(queryParams interface{}, globals interface{}, values ur vals := populateDeepObjectParams(qpTag, fieldType.Type, valType) for k, v := range vals { for _, vv := range v { - values.Add(k, vv) + addQueryValue(values, allowReserved, k, vv, qpTag.AllowReserved) } } case "form": vals := populateFormParams(qpTag, fieldType.Type, valType, ",", defaultValue, allowEmptyValue) for k, v := range vals { for _, vv := range v { - values.Add(k, vv) + addQueryValue(values, allowReserved, k, vv, qpTag.AllowReserved) } } case "pipeDelimited": vals := populateFormParams(qpTag, fieldType.Type, valType, "|", defaultValue, allowEmptyValue) for k, v := range vals { for _, vv := range v { - values.Add(k, vv) + addQueryValue(values, allowReserved, k, vv, qpTag.AllowReserved) } } default: @@ -295,6 +330,7 @@ type paramTag struct { Explode bool ParamName string Serialization string + AllowReserved bool // Inline is a special case for union/oneOf. When a wrapper struct type is // used, each union/oneOf value field should be inlined (e.g. not appended diff --git a/internal/utils/utils.go b/internal/utils/utils.go index ff6145f0..9954c24b 100644 --- a/internal/utils/utils.go +++ b/internal/utils/utils.go @@ -224,12 +224,47 @@ func parseParamTag(tagKey string, field reflect.StructField, defaultStyle string tag.ParamName = v case "serialization": tag.Serialization = v + case "allowReserved": + tag.AllowReserved = v == "true" } } return tag } +func escapePathValue(val interface{}, allowReserved bool) string { + return valToString(val) +} + +func escapeExceptReserved(s string) string { + return percentEncode(s, reservedQueryChars) +} + +// `#` terminates both the path and the query, and `?` terminates the path. +const ( + reservedPathChars = ":/[]@!$&'()*+,;=" + reservedQueryChars = ":/?[]@!$&'()*+,;=" +) + +func percentEncode(s string, reservedChars string) string { + const upperhex = "0123456789ABCDEF" + var buf strings.Builder + for i := 0; i < len(s); i++ { + c := s[i] + switch { + case c >= 'A' && c <= 'Z', c >= 'a' && c <= 'z', c >= '0' && c <= '9', + c == '-', c == '.', c == '_', c == '~', + strings.IndexByte(reservedChars, c) >= 0: + buf.WriteByte(c) + default: + buf.WriteByte('%') + buf.WriteByte(upperhex[c>>4]) + buf.WriteByte(upperhex[c&15]) + } + } + return buf.String() +} + func valToString(val interface{}) string { switch v := val.(type) { case time.Time: diff --git a/models/apierrors/responsevalidationerror.go b/models/apierrors/responsevalidationerror.go new file mode 100644 index 00000000..ac8ea557 --- /dev/null +++ b/models/apierrors/responsevalidationerror.go @@ -0,0 +1,38 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package apierrors + +import ( + "net/http" +) + +type ResponseValidationError struct { + Message string + StatusCode int + Body string + RawResponse *http.Response + Cause error +} + +var _ error = &ResponseValidationError{} + +func NewResponseValidationError(message string, statusCode int, body string, httpRes *http.Response, cause error) *ResponseValidationError { + return &ResponseValidationError{ + Message: message, + StatusCode: statusCode, + Body: body, + RawResponse: httpRes, + Cause: cause, + } +} + +func (e *ResponseValidationError) Error() string { + if e.Cause == nil { + return e.Message + } + return e.Cause.Error() +} + +func (e *ResponseValidationError) Unwrap() error { + return e.Cause +} diff --git a/models/components/artifacttype.go b/models/components/artifacttype.go new file mode 100644 index 00000000..75f7d8cc --- /dev/null +++ b/models/components/artifacttype.go @@ -0,0 +1,30 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +// 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 +} + +// IsExact returns true if the value matches a known enum value, false otherwise. +func (e *ArtifactType) IsExact() bool { + if e != nil { + switch *e { + case "PAPER", "AGENT", "MESSAGE", "EMAIL", "HTML_CODE", "SLIDE": + return true + } + } + return false +} diff --git a/models/components/autocompleterequest.go b/models/components/autocompleterequest.go index 0df3d849..0f3a4456 100644 --- a/models/components/autocompleterequest.go +++ b/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/models/components/autocompleteresult.go b/models/components/autocompleteresult.go index 09ce29ab..7c5fb002 100644 --- a/models/components/autocompleteresult.go +++ b/models/components/autocompleteresult.go @@ -50,6 +50,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) @@ -119,6 +121,13 @@ func (a *AutocompleteResult) GetStructuredResult() *StructuredResult { return a.StructuredResult } +func (a *AutocompleteResult) GetUgcAction() *UgcActionUnion { + if a == nil { + return nil + } + return a.UgcAction +} + func (a *AutocompleteResult) GetTrackingToken() *string { if a == nil { return nil diff --git a/models/components/chatsuggestion.go b/models/components/chatsuggestion.go index be2e3fa0..e53d0801 100644 --- a/models/components/chatsuggestion.go +++ b/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 (c *ChatSuggestion) GetFeature() *string { return c.Feature } +func (c *ChatSuggestion) GetArtifactType() *ArtifactType { + if c == nil { + return nil + } + return c.ArtifactType +} + func (c *ChatSuggestion) GetSourceDocumentIds() []string { if c == nil { return nil diff --git a/models/components/feedentry.go b/models/components/feedentry.go index 41628c63..6a7b63a8 100644 --- a/models/components/feedentry.go +++ b/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 { @@ -134,7 +136,7 @@ func (e JustificationType) ToPointer() *JustificationType { func (e *JustificationType) IsExact() bool { if e != nil { switch *e { - case "FREQUENTLY_ACCESSED", "RECENTLY_ACCESSED", "TRENDING_DOCUMENT", "VERIFICATION_REMINDER", "SUGGESTED_DOCUMENT", "EMPTY_STATE_SUGGESTION", "FRECENCY_SCORED", "SERVER_GENERATED", "USE_CASE", "UPDATE_SINCE_LAST_VIEW", "RECENTLY_STARTED", "EVENT", "USER_MENTION", "ANNOUNCEMENT", "EXTERNAL_ANNOUNCEMENT", "POPULARITY_BASED_TRENDING", "COMPANY_RESOURCE", "EVENT_DOCUMENT_FROM_CONTENT", "EVENT_DOCUMENT_FROM_SEARCH", "VISIT_AFFINITY_SCORED", "SUGGESTED_APP", "SUGGESTED_PERSON", "ACTIVITY_HIGHLIGHT", "SAVED_SEARCH", "SUGGESTED_CHANNEL", "PEOPLE_CELEBRATIONS", "SOCIAL_LINK", "ZERO_STATE_CHAT_SUGGESTION", "ZERO_STATE_CHAT_TOOL_SUGGESTION", "ZERO_STATE_PROMPT_TEMPLATE_SUGGESTION", "ZERO_STATE_STATIC_WORKFLOW_SUGGESTION", "ZERO_STATE_AGENT_SUGGESTION", "PERSONALIZED_CHAT_SUGGESTION", "DAILY_DIGEST", "PODCAST", "TASK", "PLAN_MY_DAY", "END_MY_DAY", "STARTER_KIT_EXTENSION", "STARTER_KIT_ORG_CHART", "STARTER_KIT_ADD_DOC", "MEETING_RECAP", "MEETING_ROOM", "MEETING_PREP_AUTOMATION", "ACTIVE_DISCUSSION", "MID_DAY_CATCH_UP", "QUERY_SUGGESTION", "COWORK_CUJ_PROMO", "CARD_STACK_PROMO", "WEEKLY_MEETINGS", "FOLLOW_UP", "MILESTONE_TIMELINE_CHECK", "PROJECT_DISCUSSION_DIGEST", "PROJECT_FOCUS_BLOCK", "PROJECT_NEXT_STEP", "DEMO_CARD", "RESOLVE_MEETING_CONFLICT", "FINDING_MEETING_ROOM", "OOO_PLANNER", "OOO_CATCH_UP", "ADMIN_HEALTH_CENTER", "KNOWLEDGE_GAP", "ARTIFACT_CREATION", "EDIT_DOC", "CHAT_TO_ARTIFACT", "SHARE_ARTIFACT", "CREATE_AGENT", "MANAGER_INVITE": + case "FREQUENTLY_ACCESSED", "RECENTLY_ACCESSED", "TRENDING_DOCUMENT", "VERIFICATION_REMINDER", "SUGGESTED_DOCUMENT", "EMPTY_STATE_SUGGESTION", "FRECENCY_SCORED", "SERVER_GENERATED", "USE_CASE", "UPDATE_SINCE_LAST_VIEW", "RECENTLY_STARTED", "EVENT", "USER_MENTION", "ANNOUNCEMENT", "EXTERNAL_ANNOUNCEMENT", "POPULARITY_BASED_TRENDING", "COMPANY_RESOURCE", "EVENT_DOCUMENT_FROM_CONTENT", "EVENT_DOCUMENT_FROM_SEARCH", "VISIT_AFFINITY_SCORED", "SUGGESTED_APP", "SUGGESTED_PERSON", "ACTIVITY_HIGHLIGHT", "SAVED_SEARCH", "SUGGESTED_CHANNEL", "PEOPLE_CELEBRATIONS", "SOCIAL_LINK", "ZERO_STATE_CHAT_SUGGESTION", "ZERO_STATE_CHAT_TOOL_SUGGESTION", "ZERO_STATE_PROMPT_TEMPLATE_SUGGESTION", "ZERO_STATE_STATIC_WORKFLOW_SUGGESTION", "ZERO_STATE_AGENT_SUGGESTION", "PERSONALIZED_CHAT_SUGGESTION", "DAILY_DIGEST", "PODCAST", "TASK", "PLAN_MY_DAY", "END_MY_DAY", "STARTER_KIT_EXTENSION", "STARTER_KIT_ORG_CHART", "STARTER_KIT_ADD_DOC", "MEETING_RECAP", "MEETING_ROOM", "MEETING_PREP_AUTOMATION", "ACTIVE_DISCUSSION", "MID_DAY_CATCH_UP", "QUERY_SUGGESTION", "COWORK_CUJ_PROMO", "CARD_STACK_PROMO", "WEEKLY_MEETINGS", "FOLLOW_UP", "MILESTONE_TIMELINE_CHECK", "PROJECT_DISCUSSION_DIGEST", "PROJECT_FOCUS_BLOCK", "PROJECT_NEXT_STEP", "DEMO_CARD", "RESOLVE_MEETING_CONFLICT", "FINDING_MEETING_ROOM", "OOO_PLANNER", "OOO_CATCH_UP", "ADMIN_HEALTH_CENTER", "KNOWLEDGE_GAP", "ARTIFACT_CREATION", "EDIT_DOC", "CHAT_TO_ARTIFACT", "SHARE_ARTIFACT", "CREATE_AGENT", "MANAGER_INVITE", "ONBOARDING_AUTHORIZATION", "CHAT_REMINDER": return true } } diff --git a/models/components/feedrequest.go b/models/components/feedrequest.go index 2b2692b2..a65ec7ad 100644 --- a/models/components/feedrequest.go +++ b/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/models/components/feedresult.go b/models/components/feedresult.go index 55ef7393..bea09647 100644 --- a/models/components/feedresult.go +++ b/models/components/feedresult.go @@ -60,6 +60,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 { @@ -70,7 +72,7 @@ func (e FeedResultCategory) ToPointer() *FeedResultCategory { func (e *FeedResultCategory) IsExact() bool { if e != nil { switch *e { - case "DOCUMENT_SUGGESTION", "DOCUMENT_SUGGESTION_SCENARIO", "TRENDING_DOCUMENT", "USE_CASE", "VERIFICATION_REMINDER", "EVENT", "ANNOUNCEMENT", "MENTION", "DATASOURCE_AFFINITY", "RECENT", "COMPANY_RESOURCE", "EXPERIMENTAL", "PEOPLE_CELEBRATIONS", "SOCIAL_LINK", "EXTERNAL_TASKS", "DISPLAYABLE_LIST", "ZERO_STATE_CHAT_SUGGESTION", "ZERO_STATE_CHAT_TOOL_SUGGESTION", "ZERO_STATE_WORKFLOW_CREATED_BY_ME", "ZERO_STATE_WORKFLOW_FAVORITES", "ZERO_STATE_WORKFLOW_POPULAR", "ZERO_STATE_WORKFLOW_RECENT", "ZERO_STATE_WORKFLOW_SUGGESTION", "PERSONALIZED_CHAT_SUGGESTION", "DAILY_DIGEST", "PODCAST", "TASK", "PLAN_MY_DAY", "END_MY_DAY", "STARTER_KIT", "MEETING_PREP_AUTOMATION", "MID_DAY_CATCH_UP", "QUERY_SUGGESTION", "COWORK_CUJ_PROMO", "CARD_STACK_PROMO", "WEEKLY_MEETINGS", "FOLLOW_UP", "MILESTONE_TIMELINE_CHECK", "PROJECT_DISCUSSION_DIGEST", "PROJECT_FOCUS_BLOCK", "PROJECT_NEXT_STEP", "DEMO_CARD", "RESOLVE_MEETING_CONFLICT", "FINDING_MEETING_ROOM", "OOO_PLANNER", "OOO_CATCH_UP", "ADMIN_HEALTH_CENTER", "KNOWLEDGE_GAP", "ARTIFACT_CREATION", "EDIT_DOC", "CHAT_TO_ARTIFACT", "SHARE_ARTIFACT", "CREATE_AGENT", "MANAGER_INVITE": + case "DOCUMENT_SUGGESTION", "DOCUMENT_SUGGESTION_SCENARIO", "TRENDING_DOCUMENT", "USE_CASE", "VERIFICATION_REMINDER", "EVENT", "ANNOUNCEMENT", "MENTION", "DATASOURCE_AFFINITY", "RECENT", "COMPANY_RESOURCE", "EXPERIMENTAL", "PEOPLE_CELEBRATIONS", "SOCIAL_LINK", "EXTERNAL_TASKS", "DISPLAYABLE_LIST", "ZERO_STATE_CHAT_SUGGESTION", "ZERO_STATE_CHAT_TOOL_SUGGESTION", "ZERO_STATE_WORKFLOW_CREATED_BY_ME", "ZERO_STATE_WORKFLOW_FAVORITES", "ZERO_STATE_WORKFLOW_POPULAR", "ZERO_STATE_WORKFLOW_RECENT", "ZERO_STATE_WORKFLOW_SUGGESTION", "PERSONALIZED_CHAT_SUGGESTION", "DAILY_DIGEST", "PODCAST", "TASK", "PLAN_MY_DAY", "END_MY_DAY", "STARTER_KIT", "MEETING_PREP_AUTOMATION", "MID_DAY_CATCH_UP", "QUERY_SUGGESTION", "COWORK_CUJ_PROMO", "CARD_STACK_PROMO", "WEEKLY_MEETINGS", "FOLLOW_UP", "MILESTONE_TIMELINE_CHECK", "PROJECT_DISCUSSION_DIGEST", "PROJECT_FOCUS_BLOCK", "PROJECT_NEXT_STEP", "DEMO_CARD", "RESOLVE_MEETING_CONFLICT", "FINDING_MEETING_ROOM", "OOO_PLANNER", "OOO_CATCH_UP", "ADMIN_HEALTH_CENTER", "KNOWLEDGE_GAP", "ARTIFACT_CREATION", "EDIT_DOC", "CHAT_TO_ARTIFACT", "SHARE_ARTIFACT", "CREATE_AGENT", "MANAGER_INVITE", "ONBOARDING_AUTHORIZATION", "CHAT_REMINDER": return true } } diff --git a/models/components/mcpauthmethodbreakdown.go b/models/components/mcpauthmethodbreakdown.go new file mode 100644 index 00000000..14fc1293 --- /dev/null +++ b/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 (m *McpAuthMethodBreakdown) GetAuthMethod() *string { + if m == nil { + return nil + } + return m.AuthMethod +} + +func (m *McpAuthMethodBreakdown) GetTotalCalls() *int64 { + if m == nil { + return nil + } + return m.TotalCalls +} + +func (m *McpAuthMethodBreakdown) GetActiveUsers() *int64 { + if m == nil { + return nil + } + return m.ActiveUsers +} + +func (m *McpAuthMethodBreakdown) GetHostApplications() []string { + if m == nil { + return nil + } + return m.HostApplications +} diff --git a/models/components/mcpbreakdowninsightsrequest.go b/models/components/mcpbreakdowninsightsrequest.go index 5de57341..9c69ffc3 100644 --- a/models/components/mcpbreakdowninsightsrequest.go +++ b/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 (m *McpBreakdownInsightsRequest) GetDepartments() []string { @@ -113,3 +118,10 @@ func (m *McpBreakdownInsightsRequest) GetServers() []string { } return m.Servers } + +func (m *McpBreakdownInsightsRequest) GetAuthMethods() []string { + if m == nil { + return nil + } + return m.AuthMethods +} diff --git a/models/components/mcpbreakdowninsightsresponse.go b/models/components/mcpbreakdowninsightsresponse.go index 527ef1ff..ca0b7cfc 100644 --- a/models/components/mcpbreakdowninsightsresponse.go +++ b/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 (m *McpBreakdownInsightsResponse) GetUsersBreakdown() []McpUserBreakdown { @@ -36,3 +37,10 @@ func (m *McpBreakdownInsightsResponse) GetServersBreakdown() []McpServerBreakdow } return m.ServersBreakdown } + +func (m *McpBreakdownInsightsResponse) GetAuthMethodsBreakdown() []McpAuthMethodBreakdown { + if m == nil { + return nil + } + return m.AuthMethodsBreakdown +} diff --git a/models/components/mcpuserbreakdown.go b/models/components/mcpuserbreakdown.go index 46007d30..09473ca2 100644 --- a/models/components/mcpuserbreakdown.go +++ b/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 (m *McpUserBreakdown) GetPerson() *Person { @@ -48,3 +50,10 @@ func (m *McpUserBreakdown) GetServers() []string { } return m.Servers } + +func (m *McpUserBreakdown) GetAuthMethods() []string { + if m == nil { + return nil + } + return m.AuthMethods +} diff --git a/models/components/peoplerequest.go b/models/components/peoplerequest.go index 29563b02..5cdb83ff 100644 --- a/models/components/peoplerequest.go +++ b/models/components/peoplerequest.go @@ -5,6 +5,7 @@ package components import ( "encoding/json" "fmt" + "github.com/gleanwork/api-client-go/internal/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 (p *PeopleRequest) GetFallbackToAuthenticatedIdentity() *bool { + if p == nil { + return nil + } + return p.FallbackToAuthenticatedIdentity +} + func (p *PeopleRequest) GetTimezoneOffset() *int64 { if p == nil { return nil diff --git a/models/components/person.go b/models/components/person.go index f3bbdfef..1c289fb9 100644 --- a/models/components/person.go +++ b/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 (p *Person) GetObfuscatedID() string { return p.ObfuscatedID } +func (p *Person) GetIdentityOnly() *bool { + if p == nil { + return nil + } + return p.IdentityOnly +} + func (p *Person) GetRelatedDocuments() []RelatedDocuments { if p == nil { return nil diff --git a/models/components/platformauthenticationsuggestion.go b/models/components/platformauthenticationsuggestion.go index c514d914..5e486439 100644 --- a/models/components/platformauthenticationsuggestion.go +++ b/models/components/platformauthenticationsuggestion.go @@ -2,6 +2,10 @@ package components +import ( + "github.com/gleanwork/api-client-go/internal/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, nil); err != nil { + return err + } + return nil +} + func (p *PlatformAuthenticationSuggestion) GetToolName() *string { if p == nil { return nil diff --git a/models/components/platformproblemdetail.go b/models/components/platformproblemdetail.go new file mode 100644 index 00000000..e83a3c6f --- /dev/null +++ b/models/components/platformproblemdetail.go @@ -0,0 +1,94 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "github.com/gleanwork/api-client-go/internal/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, nil); err != nil { + return err + } + return nil +} + +func (p *PlatformProblemDetail) GetType() string { + if p == nil { + return "" + } + return p.Type +} + +func (p *PlatformProblemDetail) GetTitle() string { + if p == nil { + return "" + } + return p.Title +} + +func (p *PlatformProblemDetail) GetStatus() int64 { + if p == nil { + return 0 + } + return p.Status +} + +func (p *PlatformProblemDetail) GetDetail() string { + if p == nil { + return "" + } + return p.Detail +} + +func (p *PlatformProblemDetail) GetCode() PlatformProblemDetailCode { + if p == nil { + return PlatformProblemDetailCode("") + } + return p.Code +} + +func (p *PlatformProblemDetail) GetDocumentationURL() *string { + if p == nil { + return nil + } + return p.DocumentationURL +} + +func (p *PlatformProblemDetail) GetRequestID() string { + if p == nil { + return "" + } + return p.RequestID +} + +func (p *PlatformProblemDetail) GetErrors() []PlatformProblemDetailError { + if p == nil { + return nil + } + return p.Errors +} diff --git a/models/components/platformproblemdetailerror.go b/models/components/platformproblemdetailerror.go index fbc08dd2..eee245cf 100644 --- a/models/components/platformproblemdetailerror.go +++ b/models/components/platformproblemdetailerror.go @@ -2,6 +2,10 @@ package components +import ( + "github.com/gleanwork/api-client-go/internal/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, nil); err != nil { + return err + } + return nil +} + func (p *PlatformProblemDetailError) GetPointer() string { if p == nil { return "" diff --git a/models/components/platformskill.go b/models/components/platformskill.go index b4dec867..89c68010 100644 --- a/models/components/platformskill.go +++ b/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"` @@ -42,11 +43,11 @@ func (p *PlatformSkill) UnmarshalJSON(data []byte) error { return nil } -func (p *PlatformSkill) GetID() string { +func (p *PlatformSkill) GetSkillID() string { if p == nil { return "" } - return p.ID + return p.SkillID } func (p *PlatformSkill) GetDisplayName() string { diff --git a/models/components/platformskillimportresponse.go b/models/components/platformskillimportresponse.go index 671b54d6..c8597c11 100644 --- a/models/components/platformskillimportresponse.go +++ b/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/models/components/platformskillorigin.go b/models/components/platformskillorigin.go index e0a00449..ffd12c21 100644 --- a/models/components/platformskillorigin.go +++ b/models/components/platformskillorigin.go @@ -2,31 +2,25 @@ package components -import ( - "encoding/json" - "fmt" -) - // PlatformSkillOrigin - Source category for the skill. type PlatformSkillOrigin string const ( PlatformSkillOriginCustom PlatformSkillOrigin = "CUSTOM" + PlatformSkillOriginGithub PlatformSkillOrigin = "GITHUB" ) func (e PlatformSkillOrigin) ToPointer() *PlatformSkillOrigin { return &e } -func (e *PlatformSkillOrigin) UnmarshalJSON(data []byte) error { - var v string - if err := json.Unmarshal(data, &v); err != nil { - return err - } - switch v { - case "CUSTOM": - *e = PlatformSkillOrigin(v) - return nil - default: - return fmt.Errorf("invalid value for PlatformSkillOrigin: %v", v) + +// IsExact returns true if the value matches a known enum value, false otherwise. +func (e *PlatformSkillOrigin) IsExact() bool { + if e != nil { + switch *e { + case "CUSTOM", "GITHUB": + return true + } } + return false } diff --git a/models/components/platformskillslistresponse.go b/models/components/platformskillslistresponse.go index 3fd760ac..6b4a2b02 100644 --- a/models/components/platformskillslistresponse.go +++ b/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 (p *PlatformSkillsListResponse) GetSkills() []PlatformSkill { +func (p *PlatformSkillsListResponse) GetResults() []PlatformSkill { if p == nil { return []PlatformSkill{} } - return p.Skills + return p.Results } func (p *PlatformSkillsListResponse) GetHasMore() bool { diff --git a/models/components/platformskillsourcepreview.go b/models/components/platformskillsourcepreview.go index 8463a424..7b71cb9a 100644 --- a/models/components/platformskillsourcepreview.go +++ b/models/components/platformskillsourcepreview.go @@ -2,6 +2,10 @@ package components +import ( + "github.com/gleanwork/api-client-go/internal/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, nil); err != nil { + return err + } + return nil +} + func (p *PlatformSkillSourcePreview) GetDisplayName() string { if p == nil { return "" diff --git a/models/components/platformskillsourcepreviewfailure.go b/models/components/platformskillsourcepreviewfailure.go index b03d2cfa..e1189cf0 100644 --- a/models/components/platformskillsourcepreviewfailure.go +++ b/models/components/platformskillsourcepreviewfailure.go @@ -2,6 +2,10 @@ package components +import ( + "github.com/gleanwork/api-client-go/internal/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, nil); err != nil { + return err + } + return nil +} + func (p *PlatformSkillSourcePreviewFailure) GetSourceURL() string { if p == nil { return "" diff --git a/models/components/platformskillsourcepreviewfile.go b/models/components/platformskillsourcepreviewfile.go index e35b4047..f5783a5b 100644 --- a/models/components/platformskillsourcepreviewfile.go +++ b/models/components/platformskillsourcepreviewfile.go @@ -2,6 +2,10 @@ package components +import ( + "github.com/gleanwork/api-client-go/internal/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, nil); err != nil { + return err + } + return nil +} + func (p *PlatformSkillSourcePreviewFile) GetPath() string { if p == nil { return "" diff --git a/models/components/platformskillsourcepreviewrequest.go b/models/components/platformskillsourcepreviewrequest.go deleted file mode 100644 index 83cd4df4..00000000 --- a/models/components/platformskillsourcepreviewrequest.go +++ /dev/null @@ -1,39 +0,0 @@ -// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. - -package components - -import ( - "github.com/gleanwork/api-client-go/internal/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, nil); err != nil { - return err - } - return nil -} - -func (p *PlatformSkillSourcePreviewRequest) GetSourceURL() string { - if p == nil { - return "" - } - return p.SourceURL -} - -func (p *PlatformSkillSourcePreviewRequest) GetStream() *bool { - if p == nil { - return nil - } - return p.Stream -} diff --git a/models/components/platformskillsourcepreviewresponse.go b/models/components/platformskillsourcepreviewresponse.go index 76714637..12bed05e 100644 --- a/models/components/platformskillsourcepreviewresponse.go +++ b/models/components/platformskillsourcepreviewresponse.go @@ -2,6 +2,10 @@ package components +import ( + "github.com/gleanwork/api-client-go/internal/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, nil); err != nil { + return err + } + return nil +} + func (p *PlatformSkillSourcePreviewResponse) GetSkills() []PlatformSkillSourcePreview { if p == nil { return []PlatformSkillSourcePreview{} diff --git a/models/components/platformskillsourcepreviewstreamerror.go b/models/components/platformskillsourcepreviewstreamerror.go new file mode 100644 index 00000000..aa7b557b --- /dev/null +++ b/models/components/platformskillsourcepreviewstreamerror.go @@ -0,0 +1,76 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "github.com/gleanwork/api-client-go/internal/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, nil); err != nil { + return err + } + return nil +} + +func (p *PlatformSkillSourcePreviewStreamError) GetType() PlatformSkillSourcePreviewStreamErrorType { + if p == nil { + return PlatformSkillSourcePreviewStreamErrorType("") + } + return p.Type +} + +func (p *PlatformSkillSourcePreviewStreamError) GetError() PlatformProblemDetail { + if p == nil { + return PlatformProblemDetail{} + } + return p.Error +} + +func (p *PlatformSkillSourcePreviewStreamError) GetAuthenticationSuggestions() []PlatformAuthenticationSuggestion { + if p == nil { + return nil + } + return p.AuthenticationSuggestions +} diff --git a/models/components/platformskillsourcepreviewstreamerrorserversentevent.go b/models/components/platformskillsourcepreviewstreamerrorserversentevent.go new file mode 100644 index 00000000..bb6fbd7c --- /dev/null +++ b/models/components/platformskillsourcepreviewstreamerrorserversentevent.go @@ -0,0 +1,44 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "github.com/gleanwork/api-client-go/internal/utils" +) + +type PlatformSkillSourcePreviewStreamErrorServerSentEvent struct { + ID *string `json:"id,omitempty"` + //lint:ignore U1000 accessed via reflection for JSON marshaling + 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, nil); err != nil { + return err + } + return nil +} + +func (p *PlatformSkillSourcePreviewStreamErrorServerSentEvent) GetID() *string { + if p == nil { + return nil + } + return p.ID +} + +func (p *PlatformSkillSourcePreviewStreamErrorServerSentEvent) GetEvent() string { + return "ERROR" +} + +func (p *PlatformSkillSourcePreviewStreamErrorServerSentEvent) GetData() PlatformSkillSourcePreviewStreamError { + if p == nil { + return PlatformSkillSourcePreviewStreamError{} + } + return p.Data +} diff --git a/models/components/platformskillsourcepreviewstreameventserversentevent.go b/models/components/platformskillsourcepreviewstreameventserversentevent.go new file mode 100644 index 00000000..e465b2b0 --- /dev/null +++ b/models/components/platformskillsourcepreviewstreameventserversentevent.go @@ -0,0 +1,185 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "errors" + "fmt" + "github.com/gleanwork/api-client-go/internal/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" union:"member"` + PlatformSkillSourcePreviewStreamProgressServerSentEvent *PlatformSkillSourcePreviewStreamProgressServerSentEvent `queryParam:"inline" union:"member"` + PlatformSkillSourcePreviewStreamSkillServerSentEvent *PlatformSkillSourcePreviewStreamSkillServerSentEvent `queryParam:"inline" union:"member"` + PlatformSkillSourcePreviewStreamResultServerSentEvent *PlatformSkillSourcePreviewStreamResultServerSentEvent `queryParam:"inline" union:"member"` + PlatformSkillSourcePreviewStreamErrorServerSentEvent *PlatformSkillSourcePreviewStreamErrorServerSentEvent `queryParam:"inline" union:"member"` + + 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) (err error) { + previous := *u + *u = PlatformSkillSourcePreviewStreamEventServerSentEvent{} + defer func() { + if err != nil { + *u = previous + } + }() + + 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/models/components/platformskillsourcepreviewstreamprogress.go b/models/components/platformskillsourcepreviewstreamprogress.go new file mode 100644 index 00000000..d5c7d0f8 --- /dev/null +++ b/models/components/platformskillsourcepreviewstreamprogress.go @@ -0,0 +1,84 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "github.com/gleanwork/api-client-go/internal/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, nil); err != nil { + return err + } + return nil +} + +func (p *PlatformSkillSourcePreviewStreamProgress) GetType() PlatformSkillSourcePreviewStreamProgressType { + if p == nil { + return PlatformSkillSourcePreviewStreamProgressType("") + } + return p.Type +} + +func (p *PlatformSkillSourcePreviewStreamProgress) GetCompleted() int64 { + if p == nil { + return 0 + } + return p.Completed +} + +func (p *PlatformSkillSourcePreviewStreamProgress) GetTotal() int64 { + if p == nil { + return 0 + } + return p.Total +} + +func (p *PlatformSkillSourcePreviewStreamProgress) GetCurrentSkill() string { + if p == nil { + return "" + } + return p.CurrentSkill +} diff --git a/models/components/platformskillsourcepreviewstreamprogressserversentevent.go b/models/components/platformskillsourcepreviewstreamprogressserversentevent.go new file mode 100644 index 00000000..64698333 --- /dev/null +++ b/models/components/platformskillsourcepreviewstreamprogressserversentevent.go @@ -0,0 +1,44 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "github.com/gleanwork/api-client-go/internal/utils" +) + +type PlatformSkillSourcePreviewStreamProgressServerSentEvent struct { + ID *string `json:"id,omitempty"` + //lint:ignore U1000 accessed via reflection for JSON marshaling + 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, nil); err != nil { + return err + } + return nil +} + +func (p *PlatformSkillSourcePreviewStreamProgressServerSentEvent) GetID() *string { + if p == nil { + return nil + } + return p.ID +} + +func (p *PlatformSkillSourcePreviewStreamProgressServerSentEvent) GetEvent() string { + return "PROGRESS" +} + +func (p *PlatformSkillSourcePreviewStreamProgressServerSentEvent) GetData() PlatformSkillSourcePreviewStreamProgress { + if p == nil { + return PlatformSkillSourcePreviewStreamProgress{} + } + return p.Data +} diff --git a/models/components/platformskillsourcepreviewstreamresult.go b/models/components/platformskillsourcepreviewstreamresult.go new file mode 100644 index 00000000..5bc24c5b --- /dev/null +++ b/models/components/platformskillsourcepreviewstreamresult.go @@ -0,0 +1,65 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "github.com/gleanwork/api-client-go/internal/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, nil); err != nil { + return err + } + return nil +} + +func (p *PlatformSkillSourcePreviewStreamResult) GetType() PlatformSkillSourcePreviewStreamResultType { + if p == nil { + return PlatformSkillSourcePreviewStreamResultType("") + } + return p.Type +} + +func (p *PlatformSkillSourcePreviewStreamResult) GetResponse() PlatformSkillSourcePreviewResponse { + if p == nil { + return PlatformSkillSourcePreviewResponse{} + } + return p.Response +} diff --git a/models/components/platformskillsourcepreviewstreamresultserversentevent.go b/models/components/platformskillsourcepreviewstreamresultserversentevent.go new file mode 100644 index 00000000..ed88ae4b --- /dev/null +++ b/models/components/platformskillsourcepreviewstreamresultserversentevent.go @@ -0,0 +1,44 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "github.com/gleanwork/api-client-go/internal/utils" +) + +type PlatformSkillSourcePreviewStreamResultServerSentEvent struct { + ID *string `json:"id,omitempty"` + //lint:ignore U1000 accessed via reflection for JSON marshaling + 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, nil); err != nil { + return err + } + return nil +} + +func (p *PlatformSkillSourcePreviewStreamResultServerSentEvent) GetID() *string { + if p == nil { + return nil + } + return p.ID +} + +func (p *PlatformSkillSourcePreviewStreamResultServerSentEvent) GetEvent() string { + return "RESULT" +} + +func (p *PlatformSkillSourcePreviewStreamResultServerSentEvent) GetData() PlatformSkillSourcePreviewStreamResult { + if p == nil { + return PlatformSkillSourcePreviewStreamResult{} + } + return p.Data +} diff --git a/models/components/platformskillsourcepreviewstreamscan.go b/models/components/platformskillsourcepreviewstreamscan.go new file mode 100644 index 00000000..3429ab11 --- /dev/null +++ b/models/components/platformskillsourcepreviewstreamscan.go @@ -0,0 +1,75 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "github.com/gleanwork/api-client-go/internal/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, nil); err != nil { + return err + } + return nil +} + +func (p *PlatformSkillSourcePreviewStreamScan) GetType() PlatformSkillSourcePreviewStreamScanType { + if p == nil { + return PlatformSkillSourcePreviewStreamScanType("") + } + return p.Type +} + +func (p *PlatformSkillSourcePreviewStreamScan) GetTotal() int64 { + if p == nil { + return 0 + } + return p.Total +} + +func (p *PlatformSkillSourcePreviewStreamScan) GetSkillPaths() []string { + if p == nil { + return []string{} + } + return p.SkillPaths +} diff --git a/models/components/platformskillsourcepreviewstreamscanserversentevent.go b/models/components/platformskillsourcepreviewstreamscanserversentevent.go new file mode 100644 index 00000000..da5b7a99 --- /dev/null +++ b/models/components/platformskillsourcepreviewstreamscanserversentevent.go @@ -0,0 +1,44 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "github.com/gleanwork/api-client-go/internal/utils" +) + +type PlatformSkillSourcePreviewStreamScanServerSentEvent struct { + ID *string `json:"id,omitempty"` + //lint:ignore U1000 accessed via reflection for JSON marshaling + 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, nil); err != nil { + return err + } + return nil +} + +func (p *PlatformSkillSourcePreviewStreamScanServerSentEvent) GetID() *string { + if p == nil { + return nil + } + return p.ID +} + +func (p *PlatformSkillSourcePreviewStreamScanServerSentEvent) GetEvent() string { + return "SCAN" +} + +func (p *PlatformSkillSourcePreviewStreamScanServerSentEvent) GetData() PlatformSkillSourcePreviewStreamScan { + if p == nil { + return PlatformSkillSourcePreviewStreamScan{} + } + return p.Data +} diff --git a/models/components/platformskillsourcepreviewstreamskill.go b/models/components/platformskillsourcepreviewstreamskill.go new file mode 100644 index 00000000..36ff161a --- /dev/null +++ b/models/components/platformskillsourcepreviewstreamskill.go @@ -0,0 +1,65 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "encoding/json" + "fmt" + "github.com/gleanwork/api-client-go/internal/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, nil); err != nil { + return err + } + return nil +} + +func (p *PlatformSkillSourcePreviewStreamSkill) GetType() PlatformSkillSourcePreviewStreamSkillType { + if p == nil { + return PlatformSkillSourcePreviewStreamSkillType("") + } + return p.Type +} + +func (p *PlatformSkillSourcePreviewStreamSkill) GetSkill() PlatformSkillSourcePreview { + if p == nil { + return PlatformSkillSourcePreview{} + } + return p.Skill +} diff --git a/models/components/platformskillsourcepreviewstreamskillserversentevent.go b/models/components/platformskillsourcepreviewstreamskillserversentevent.go new file mode 100644 index 00000000..1869beb1 --- /dev/null +++ b/models/components/platformskillsourcepreviewstreamskillserversentevent.go @@ -0,0 +1,44 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "github.com/gleanwork/api-client-go/internal/utils" +) + +type PlatformSkillSourcePreviewStreamSkillServerSentEvent struct { + ID *string `json:"id,omitempty"` + //lint:ignore U1000 accessed via reflection for JSON marshaling + 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, nil); err != nil { + return err + } + return nil +} + +func (p *PlatformSkillSourcePreviewStreamSkillServerSentEvent) GetID() *string { + if p == nil { + return nil + } + return p.ID +} + +func (p *PlatformSkillSourcePreviewStreamSkillServerSentEvent) GetEvent() string { + return "SKILL" +} + +func (p *PlatformSkillSourcePreviewStreamSkillServerSentEvent) GetData() PlatformSkillSourcePreviewStreamSkill { + if p == nil { + return PlatformSkillSourcePreviewStreamSkill{} + } + return p.Data +} diff --git a/models/components/platformskillstatus.go b/models/components/platformskillstatus.go index 78b9bc62..7001ecc5 100644 --- a/models/components/platformskillstatus.go +++ b/models/components/platformskillstatus.go @@ -2,7 +2,7 @@ package components -// 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/models/components/platformskillsyncresponse.go b/models/components/platformskillsyncresponse.go index 9d808a47..bb829293 100644 --- a/models/components/platformskillsyncresponse.go +++ b/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 (p *PlatformSkillSyncResponse) GetSyncStatus() PlatformSkillSyncResultStatus { - if p == nil { - return PlatformSkillSyncResultStatus("") - } - return p.SyncStatus -} - func (p *PlatformSkillSyncResponse) GetCommitSha() string { if p == nil { return "" @@ -27,11 +18,11 @@ func (p *PlatformSkillSyncResponse) GetCommitSha() string { return p.CommitSha } -func (p *PlatformSkillSyncResponse) GetUpdated() bool { +func (p *PlatformSkillSyncResponse) GetIsUpdated() bool { if p == nil { return false } - return p.Updated + return p.IsUpdated } func (p *PlatformSkillSyncResponse) GetRequestID() string { diff --git a/models/components/platformskillsyncresultstatus.go b/models/components/platformskillsyncresultstatus.go deleted file mode 100644 index 93f6e9ed..00000000 --- a/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/models/components/platformskillupdaterequest.go b/models/components/platformskillupdaterequest.go index 013275ed..04958fd0 100644 --- a/models/components/platformskillupdaterequest.go +++ b/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/models/components/platformskillupdatestatus.go b/models/components/platformskillupdatestatus.go index d40a5b9f..46eaa67f 100644 --- a/models/components/platformskillupdatestatus.go +++ b/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/models/components/platformskillversionslistresponse.go b/models/components/platformskillversionslistresponse.go index c1cf8b45..204cf73b 100644 --- a/models/components/platformskillversionslistresponse.go +++ b/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 (p *PlatformSkillVersionsListResponse) GetVersions() []PlatformSkillVersion { +func (p *PlatformSkillVersionsListResponse) GetResults() []PlatformSkillVersion { if p == nil { return []PlatformSkillVersion{} } - return p.Versions + return p.Results } func (p *PlatformSkillVersionsListResponse) GetHasMore() bool { diff --git a/models/components/ugcactionunion.go b/models/components/ugcactionunion.go new file mode 100644 index 00000000..a99a95cd --- /dev/null +++ b/models/components/ugcactionunion.go @@ -0,0 +1,102 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package components + +import ( + "errors" + "fmt" + "github.com/gleanwork/api-client-go/internal/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, nil); err != nil { + return err + } + return nil +} + +func (u *UgcAction) GetCreate() UgcType { + if u == nil { + return UgcType("") + } + return u.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" union:"member"` + + Type UgcActionUnionType +} + +func CreateUgcActionUnionUgcAction(ugcAction UgcAction) UgcActionUnion { + typ := UgcActionUnionTypeUgcAction + + return UgcActionUnion{ + UgcAction: &ugcAction, + Type: typ, + } +} + +func (u *UgcActionUnion) UnmarshalJSON(data []byte) (err error) { + previous := *u + *u = UgcActionUnion{} + defer func() { + if err != nil { + *u = previous + } + }() + + var candidates []utils.UnionCandidate + + // Collect all valid candidates + var ugcAction UgcAction = UgcAction{} + if err := utils.UnmarshalJSON(data, &ugcAction, "", true, nil); err == nil { + candidates = append(candidates, utils.UnionCandidate{ + Type: UgcActionUnionTypeUgcAction, + Value: &ugcAction, + }) + } + + if len(candidates) == 0 { + return fmt.Errorf("could not unmarshal `%s` into any supported union types for UgcActionUnion", string(data)) + } + + // Pick the best candidate using multi-stage filtering + best := utils.PickBestUnionCandidate(candidates, data) + if best == nil { + return fmt.Errorf("could not unmarshal `%s` into any supported union types for UgcActionUnion", string(data)) + } + + // Set the union type and value based on the best candidate + u.Type = best.Type.(UgcActionUnionType) + switch best.Type { + case UgcActionUnionTypeUgcAction: + u.UgcAction = best.Value.(*UgcAction) + 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/models/components/ugctype.go b/models/components/ugctype.go index b680fd1d..463e7406 100644 --- a/models/components/ugctype.go +++ b/models/components/ugctype.go @@ -25,6 +25,7 @@ const ( UgcTypeSpreadsheetType UgcType = "SPREADSHEET_TYPE" UgcTypeInlineHTMLType UgcType = "INLINE_HTML_TYPE" UgcTypePodcastType UgcType = "PODCAST_TYPE" + UgcTypeVideoType UgcType = "VIDEO_TYPE" UgcTypeWorkflowsType UgcType = "WORKFLOWS_TYPE" ) @@ -36,7 +37,7 @@ func (e UgcType) ToPointer() *UgcType { func (e *UgcType) IsExact() bool { if e != nil { switch *e { - case "AGENT_TYPE", "ANNOUNCEMENTS_TYPE", "ANSWERS_TYPE", "CHATS_TYPE", "COLLECTIONS_TYPE", "EMAIL_TYPE", "HTML_CODE_TYPE", "IMAGE_TYPE", "MESSAGE_TYPE", "PAPER_TYPE", "PRISM_VIEWS_TYPE", "PROMPT_TEMPLATES_TYPE", "PINS_TYPE", "SCRIBES_TYPE", "SHORTCUTS_TYPE", "SKILLS_TYPE", "SLIDE_TYPE", "SPREADSHEET_TYPE", "INLINE_HTML_TYPE", "PODCAST_TYPE", "WORKFLOWS_TYPE": + case "AGENT_TYPE", "ANNOUNCEMENTS_TYPE", "ANSWERS_TYPE", "CHATS_TYPE", "COLLECTIONS_TYPE", "EMAIL_TYPE", "HTML_CODE_TYPE", "IMAGE_TYPE", "MESSAGE_TYPE", "PAPER_TYPE", "PRISM_VIEWS_TYPE", "PROMPT_TEMPLATES_TYPE", "PINS_TYPE", "SCRIBES_TYPE", "SHORTCUTS_TYPE", "SKILLS_TYPE", "SLIDE_TYPE", "SPREADSHEET_TYPE", "INLINE_HTML_TYPE", "PODCAST_TYPE", "VIDEO_TYPE", "WORKFLOWS_TYPE": return true } } diff --git a/models/operations/platformskillscreate.go b/models/operations/platformskillscreate.go index 6cf756c5..41da4bee 100644 --- a/models/operations/platformskillscreate.go +++ b/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/models/operations/platformskillscreateversion.go b/models/operations/platformskillscreateversion.go index bd71f141..2318855d 100644 --- a/models/operations/platformskillscreateversion.go +++ b/models/operations/platformskillscreateversion.go @@ -28,7 +28,7 @@ func (p *PlatformSkillsCreateVersionRequest) GetPlatformSkillVersionCreateReques type PlatformSkillsCreateVersionResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` - // Successful response. + // Skill version created. PlatformSkillVersionCreateResponse *components.PlatformSkillVersionCreateResponse } diff --git a/models/operations/platformskillslist.go b/models/operations/platformskillslist.go index b004ed19..31b1d0d6 100644 --- a/models/operations/platformskillslist.go +++ b/models/operations/platformskillslist.go @@ -3,16 +3,28 @@ package operations import ( + "github.com/gleanwork/api-client-go/internal/utils" "github.com/gleanwork/api-client-go/models/components" ) 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 (p *PlatformSkillsListRequest) GetPageSize() *int64 { if p == nil { return nil diff --git a/models/operations/platformskillslistversions.go b/models/operations/platformskillslistversions.go index 47c088f1..5333515b 100644 --- a/models/operations/platformskillslistversions.go +++ b/models/operations/platformskillslistversions.go @@ -3,18 +3,30 @@ package operations import ( + "github.com/gleanwork/api-client-go/internal/utils" "github.com/gleanwork/api-client-go/models/components" ) 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, nil); err != nil { + return err + } + return nil +} + func (p *PlatformSkillsListVersionsRequest) GetSkillID() string { if p == nil { return "" diff --git a/models/operations/platformskillspreviewsource.go b/models/operations/platformskillspreviewsource.go index f59815a3..2aac93f1 100644 --- a/models/operations/platformskillspreviewsource.go +++ b/models/operations/platformskillspreviewsource.go @@ -3,15 +3,44 @@ package operations import ( + "github.com/gleanwork/api-client-go/internal/utils" "github.com/gleanwork/api-client-go/models/components" + "github.com/gleanwork/api-client-go/types" ) +type PlatformSkillsPreviewSourceRequest struct { + // GitHub URL for a skill directory, SKILL.md file, or repository to inspect. + SourceURL string `json:"source_url"` + //lint:ignore U1000 accessed via reflection for JSON marshaling + 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, nil); err != nil { + return err + } + return nil +} + +func (p *PlatformSkillsPreviewSourceRequest) GetSourceURL() string { + if p == nil { + return "" + } + return p.SourceURL +} + +func (p *PlatformSkillsPreviewSourceRequest) GetStream() *bool { + return types.Pointer(false) +} + type PlatformSkillsPreviewSourceResponse struct { HTTPMeta components.HTTPMetadata `json:"-"` // Successful response. PlatformSkillSourcePreviewResponse *components.PlatformSkillSourcePreviewResponse - // Successful response. - Res *string } func (p *PlatformSkillsPreviewSourceResponse) GetHTTPMeta() components.HTTPMetadata { @@ -27,10 +56,3 @@ func (p *PlatformSkillsPreviewSourceResponse) GetPlatformSkillSourcePreviewRespo } return p.PlatformSkillSourcePreviewResponse } - -func (p *PlatformSkillsPreviewSourceResponse) GetRes() *string { - if p == nil { - return nil - } - return p.Res -} diff --git a/models/operations/platformskillspreviewsourcestream.go b/models/operations/platformskillspreviewsourcestream.go new file mode 100644 index 00000000..b63d0b4a --- /dev/null +++ b/models/operations/platformskillspreviewsourcestream.go @@ -0,0 +1,59 @@ +// Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. + +package operations + +import ( + "github.com/gleanwork/api-client-go/internal/utils" + "github.com/gleanwork/api-client-go/models/components" + "github.com/gleanwork/api-client-go/types" + "github.com/gleanwork/api-client-go/types/stream" +) + +type PlatformSkillsPreviewSourceStreamRequest struct { + // GitHub URL for a skill directory, SKILL.md file, or repository to inspect. + SourceURL string `json:"source_url"` + //lint:ignore U1000 accessed via reflection for JSON marshaling + 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, nil); err != nil { + return err + } + return nil +} + +func (p *PlatformSkillsPreviewSourceStreamRequest) GetSourceURL() string { + if p == nil { + return "" + } + return p.SourceURL +} + +func (p *PlatformSkillsPreviewSourceStreamRequest) GetStream() *bool { + return types.Pointer(true) +} + +type PlatformSkillsPreviewSourceStreamResponse struct { + HTTPMeta components.HTTPMetadata `json:"-"` + // Successful response. + PlatformSkillSourcePreviewStreamEventServerSentEvent *stream.EventStream[components.PlatformSkillSourcePreviewStreamEventServerSentEvent] +} + +func (p *PlatformSkillsPreviewSourceStreamResponse) GetHTTPMeta() components.HTTPMetadata { + if p == nil { + return components.HTTPMetadata{} + } + return p.HTTPMeta +} + +func (p *PlatformSkillsPreviewSourceStreamResponse) GetPlatformSkillSourcePreviewStreamEventServerSentEvent() *stream.EventStream[components.PlatformSkillSourcePreviewStreamEventServerSentEvent] { + if p == nil { + return nil + } + return p.PlatformSkillSourcePreviewStreamEventServerSentEvent +} diff --git a/optionalnullable/optionalnullable.go b/optionalnullable/optionalnullable.go index c6739be0..51c78bcc 100644 --- a/optionalnullable/optionalnullable.go +++ b/optionalnullable/optionalnullable.go @@ -231,3 +231,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/optionalnullable/optionalnullable_test.go b/optionalnullable/optionalnullable_test.go index 50aa4686..78620615 100644 --- a/optionalnullable/optionalnullable_test.go +++ b/optionalnullable/optionalnullable_test.go @@ -1911,3 +1911,96 @@ func TestAsOptionalNullable(t *testing.T) { assertEqual(t, "test", value) }) } + +func TestIsOptionalNullableType(t *testing.T) { + 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) { + assertEqual(t, tt.want, IsOptionalNullableType(tt.typ)) + }) + } +} + +func TestFromReflect(t *testing.T) { + typ := reflect.TypeOf(OptionalNullable[string]{}) + + t.Run("with value", func(t *testing.T) { + inner := reflect.New(reflect.TypeOf("")) + inner.Elem().SetString("hello") + + got, ok := FromReflect(typ, inner).Interface().(OptionalNullable[string]) + if !ok { + t.Fatal("expected FromReflect to return an OptionalNullable[string]") + } + assertTrue(t, got.IsSet()) + assertFalse(t, got.IsNull()) + v, set := got.Get() + if !set || v == nil { + t.Fatal("expected a set, non-nil value") + } + assertEqual(t, "hello", *v) + assertEqual(t, From(ptrFrom("hello")), got) + }) + + t.Run("with nil pointer sets null", func(t *testing.T) { + nilPtr := reflect.Zero(typ.Elem()) + + got, ok := FromReflect(typ, nilPtr).Interface().(OptionalNullable[string]) + if !ok { + t.Fatal("expected FromReflect to return an OptionalNullable[string]") + } + assertTrue(t, got.IsSet()) + assertTrue(t, got.IsNull()) + assertEqual(t, From[string](nil), got) + }) +} diff --git a/search.go b/search.go index a281aa1c..7afd8e41 100644 --- a/search.go +++ b/search.go @@ -245,7 +245,7 @@ func (s *Search) Query(ctx context.Context, request components.PlatformSearchReq var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -272,7 +272,7 @@ func (s *Search) Query(ctx context.Context, request components.PlatformSearchReq var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -525,7 +525,7 @@ func (s *Search) ListFilters(ctx context.Context, datasources []string, query *s var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -552,7 +552,7 @@ func (s *Search) ListFilters(ctx context.Context, datasources []string, query *s var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ diff --git a/skills.go b/skills.go index 9fb40cbb..ebb12085 100644 --- a/skills.go +++ b/skills.go @@ -13,6 +13,7 @@ import ( "github.com/gleanwork/api-client-go/models/components" "github.com/gleanwork/api-client-go/models/operations" "github.com/gleanwork/api-client-go/retry" + "github.com/gleanwork/api-client-go/types/stream" "net/http" "net/url" ) @@ -32,7 +33,7 @@ func newSkills(rootSDK *Glean, sdkConfig config.SDKConfiguration, hooks *hooks.H } // 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. func (s *Skills) Create(ctx context.Context, request components.PlatformSkillCreateRequest, opts ...operations.Option) (*operations.PlatformSkillsCreateResponse, error) { o := operations.Options{} supportedOptions := []string{ @@ -199,7 +200,7 @@ func (s *Skills) Create(ctx context.Context, request components.PlatformSkillCre } switch { - case httpRes.StatusCode == 200: + case httpRes.StatusCode == 201: switch { case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`): rawBody, err := utils.ConsumeRawBody(httpRes) @@ -230,6 +231,8 @@ func (s *Skills) Create(ctx context.Context, request components.PlatformSkillCre fallthrough case httpRes.StatusCode == 408: fallthrough + case httpRes.StatusCode == 409: + fallthrough case httpRes.StatusCode == 413: fallthrough case httpRes.StatusCode == 429: @@ -242,7 +245,7 @@ func (s *Skills) Create(ctx context.Context, request components.PlatformSkillCre var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -269,7 +272,7 @@ func (s *Skills) Create(ctx context.Context, request components.PlatformSkillCre var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -309,7 +312,7 @@ func (s *Skills) Create(ctx context.Context, request components.PlatformSkillCre } // 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. func (s *Skills) List(ctx context.Context, pageSize *int64, cursor *string, opts ...operations.Option) (*operations.PlatformSkillsListResponse, error) { request := operations.PlatformSkillsListRequest{ PageSize: pageSize, @@ -519,7 +522,7 @@ func (s *Skills) List(ctx context.Context, pageSize *int64, cursor *string, opts var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -546,7 +549,7 @@ func (s *Skills) List(ctx context.Context, pageSize *int64, cursor *string, opts var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -753,7 +756,7 @@ func (s *Skills) Import(ctx context.Context, request components.PlatformSkillImp } switch { - case httpRes.StatusCode == 200: + case httpRes.StatusCode == 201: switch { case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`): rawBody, err := utils.ConsumeRawBody(httpRes) @@ -774,6 +777,31 @@ func (s *Skills) Import(ctx context.Context, request components.PlatformSkillImp } return nil, apierrors.NewAPIError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes) } + case httpRes.StatusCode == 422: + switch { + case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/problem+json`): + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + + var out apierrors.PlatformUnauthorizedAgentToolsProblemError + if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) + } + + out.HTTPMeta = components.HTTPMetadata{ + Request: req, + Response: httpRes, + } + return nil, &out + default: + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + return nil, apierrors.NewAPIError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes) + } case httpRes.StatusCode == 400: fallthrough case httpRes.StatusCode == 401: @@ -796,7 +824,7 @@ func (s *Skills) Import(ctx context.Context, request components.PlatformSkillImp var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -823,7 +851,7 @@ func (s *Skills) Import(ctx context.Context, request components.PlatformSkillImp var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1073,7 +1101,7 @@ func (s *Skills) Validate(ctx context.Context, request components.PlatformSkillV var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1100,7 +1128,7 @@ func (s *Skills) Validate(ctx context.Context, request components.PlatformSkillV var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1141,12 +1169,11 @@ func (s *Skills) Validate(ctx context.Context, request components.PlatformSkillV // PreviewSource - 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. -func (s *Skills) PreviewSource(ctx context.Context, request components.PlatformSkillSourcePreviewRequest, opts ...operations.Option) (*operations.PlatformSkillsPreviewSourceResponse, error) { +func (s *Skills) PreviewSource(ctx context.Context, request operations.PlatformSkillsPreviewSourceRequest, opts ...operations.Option) (*operations.PlatformSkillsPreviewSourceResponse, error) { o := operations.Options{} supportedOptions := []string{ operations.SupportedOptionRetries, operations.SupportedOptionTimeout, - operations.SupportedOptionAcceptHeaderOverride, } for _, opt := range opts { @@ -1195,12 +1222,7 @@ func (s *Skills) PreviewSource(ctx context.Context, request components.PlatformS if err != nil { return nil, fmt.Errorf("error creating request: %w", err) } - if o.AcceptHeaderOverride != nil { - req.Header.Set("Accept", string(*o.AcceptHeaderOverride)) - } else { - req.Header.Set("Accept", "application/json;q=1, text/event-stream;q=0") - } - + req.Header.Set("Accept", "application/json") req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent) if reqContentType != "" { req.Header.Set("Content-Type", reqContentType) @@ -1327,14 +1349,31 @@ func (s *Skills) PreviewSource(ctx context.Context, request components.PlatformS } res.PlatformSkillSourcePreviewResponse = &out - case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `text/event-stream`): + default: + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + return nil, apierrors.NewAPIError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes) + } + case httpRes.StatusCode == 422: + switch { + case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/problem+json`): rawBody, err := utils.ConsumeRawBody(httpRes) if err != nil { return nil, err } - out := string(rawBody) - res.Res = &out + var out apierrors.PlatformUnauthorizedAgentToolsProblemError + if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) + } + + out.HTTPMeta = components.HTTPMetadata{ + Request: req, + Response: httpRes, + } + return nil, &out default: rawBody, err := utils.ConsumeRawBody(httpRes) if err != nil { @@ -1362,7 +1401,7 @@ func (s *Skills) PreviewSource(ctx context.Context, request components.PlatformS var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1389,7 +1428,7 @@ func (s *Skills) PreviewSource(ctx context.Context, request components.PlatformS var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1429,7 +1468,7 @@ func (s *Skills) PreviewSource(ctx context.Context, request components.PlatformS } // 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. func (s *Skills) Update(ctx context.Context, skillID string, platformSkillUpdateRequest components.PlatformSkillUpdateRequest, opts ...operations.Option) (*operations.PlatformSkillsUpdateResponse, error) { request := operations.PlatformSkillsUpdateRequest{ SkillID: skillID, @@ -1646,7 +1685,7 @@ func (s *Skills) Update(ctx context.Context, skillID string, platformSkillUpdate var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1673,7 +1712,7 @@ func (s *Skills) Update(ctx context.Context, skillID string, platformSkillUpdate var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1899,7 +1938,7 @@ func (s *Skills) Delete(ctx context.Context, skillID string, opts ...operations. var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1926,7 +1965,7 @@ func (s *Skills) Delete(ctx context.Context, skillID string, opts ...operations. var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -2171,7 +2210,7 @@ func (s *Skills) Retrieve(ctx context.Context, skillID string, opts ...operation var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -2198,7 +2237,7 @@ func (s *Skills) Retrieve(ctx context.Context, skillID string, opts ...operation var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -2446,7 +2485,7 @@ func (s *Skills) RetrieveContent(ctx context.Context, skillID string, opts ...op var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -2473,7 +2512,7 @@ func (s *Skills) RetrieveContent(ctx context.Context, skillID string, opts ...op var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -2698,6 +2737,31 @@ func (s *Skills) Sync(ctx context.Context, skillID string, opts ...operations.Op } return nil, apierrors.NewAPIError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes) } + case httpRes.StatusCode == 422: + switch { + case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/problem+json`): + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + + var out apierrors.PlatformUnauthorizedAgentToolsProblemError + if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) + } + + out.HTTPMeta = components.HTTPMetadata{ + Request: req, + Response: httpRes, + } + return nil, &out + default: + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + return nil, apierrors.NewAPIError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes) + } case httpRes.StatusCode == 400: fallthrough case httpRes.StatusCode == 401: @@ -2710,8 +2774,6 @@ func (s *Skills) Sync(ctx context.Context, skillID string, opts ...operations.Op fallthrough case httpRes.StatusCode == 409: fallthrough - case httpRes.StatusCode == 413: - fallthrough case httpRes.StatusCode == 429: switch { case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/problem+json`): @@ -2722,7 +2784,7 @@ func (s *Skills) Sync(ctx context.Context, skillID string, opts ...operations.Op var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -2749,7 +2811,7 @@ func (s *Skills) Sync(ctx context.Context, skillID string, opts ...operations.Op var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -2789,7 +2851,7 @@ func (s *Skills) Sync(ctx context.Context, skillID string, opts ...operations.Op } // CreateVersion - 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. func (s *Skills) CreateVersion(ctx context.Context, skillID string, platformSkillVersionCreateRequest components.PlatformSkillVersionCreateRequest, opts ...operations.Option) (*operations.PlatformSkillsCreateVersionResponse, error) { request := operations.PlatformSkillsCreateVersionRequest{ SkillID: skillID, @@ -2961,7 +3023,7 @@ func (s *Skills) CreateVersion(ctx context.Context, skillID string, platformSkil } switch { - case httpRes.StatusCode == 200: + case httpRes.StatusCode == 201: switch { case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/json`): rawBody, err := utils.ConsumeRawBody(httpRes) @@ -3006,7 +3068,7 @@ func (s *Skills) CreateVersion(ctx context.Context, skillID string, platformSkil var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -3033,7 +3095,7 @@ func (s *Skills) CreateVersion(ctx context.Context, skillID string, platformSkil var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -3284,7 +3346,7 @@ func (s *Skills) ListVersions(ctx context.Context, skillID string, pageSize *int var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -3311,7 +3373,7 @@ func (s *Skills) ListVersions(ctx context.Context, skillID string, pageSize *int var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -3557,7 +3619,7 @@ func (s *Skills) RetrieveVersion(ctx context.Context, skillID string, version in var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -3584,7 +3646,7 @@ func (s *Skills) RetrieveVersion(ctx context.Context, skillID string, version in var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -3833,7 +3895,7 @@ func (s *Skills) RetrieveVersionContent(ctx context.Context, skillID string, ver var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -3860,9 +3922,314 @@ func (s *Skills) RetrieveVersionContent(ctx context.Context, skillID string, ver var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) + } + + out.HTTPMeta = components.HTTPMetadata{ + Request: req, + Response: httpRes, + } + return nil, &out + default: + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + return nil, apierrors.NewAPIError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes) + } + case httpRes.StatusCode >= 400 && httpRes.StatusCode < 500: + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + return nil, apierrors.NewAPIError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes) + case httpRes.StatusCode >= 500 && httpRes.StatusCode < 600: + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + return nil, apierrors.NewAPIError("API error occurred", httpRes.StatusCode, string(rawBody), httpRes) + default: + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + return nil, apierrors.NewAPIError("unknown status code returned", httpRes.StatusCode, string(rawBody), httpRes) + } + + return res, nil + +} + +// PreviewSourceStream - 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. +func (s *Skills) PreviewSourceStream(ctx context.Context, request operations.PlatformSkillsPreviewSourceStreamRequest, opts ...operations.Option) (*operations.PlatformSkillsPreviewSourceStreamResponse, error) { + o := operations.Options{} + supportedOptions := []string{ + operations.SupportedOptionRetries, + operations.SupportedOptionTimeout, + } + + for _, opt := range opts { + if err := opt(&o, supportedOptions...); err != nil { + return nil, fmt.Errorf("error applying option: %w", err) + } + } + + var baseURL string + if o.ServerURL == nil { + baseURL = utils.ReplaceParameters(s.sdkConfiguration.GetServerDetails()) + } else { + baseURL = *o.ServerURL + } + opURL, err := url.JoinPath(baseURL, "/api/skills/sources/preview") + if err != nil { + return nil, fmt.Errorf("error generating URL: %w", err) + } + + hookCtx := hooks.HookContext{ + SDK: s.rootSDK, + SDKConfiguration: s.sdkConfiguration, + BaseURL: baseURL, + Context: ctx, + OperationID: "platform-skills-preview-source-stream", + OAuth2Scopes: nil, + SecuritySource: s.sdkConfiguration.Security, + } + bodyReader, reqContentType, err := utils.SerializeRequestBody(ctx, request, false, false, "Request", "json", `request:"mediaType=application/json"`) + if err != nil { + return nil, err + } + + timeout := o.Timeout + if timeout == nil { + timeout = s.sdkConfiguration.Timeout + } + + var streamCancel context.CancelFunc + + if timeout != nil { + var cancel context.CancelFunc + ctx, cancel = context.WithTimeout(ctx, *timeout) + streamCancel = cancel + defer func() { + if streamCancel != nil { + streamCancel() + } + }() + } + + req, err := http.NewRequestWithContext(ctx, "POST", opURL, bodyReader) + if err != nil { + return nil, fmt.Errorf("error creating request: %w", err) + } + req.Header.Set("Accept", "text/event-stream") + req.Header.Set("User-Agent", s.sdkConfiguration.UserAgent) + if reqContentType != "" { + req.Header.Set("Content-Type", reqContentType) + } + + if err := utils.PopulateSecurity(ctx, req, s.sdkConfiguration.Security); err != nil { + return nil, err + } + + for k, v := range o.SetHeaders { + req.Header.Set(k, v) + } + + globalRetryConfig := s.sdkConfiguration.RetryConfig + retryConfig := o.Retries + if retryConfig == nil { + if globalRetryConfig != nil { + retryConfig = globalRetryConfig + } + } + + var httpRes *http.Response + if retryConfig != nil { + httpRes, err = utils.Retry(ctx, utils.Retries{ + Config: retryConfig, + StatusCodes: []string{ + "429", + "500", + "502", + "503", + "504", + }, + }, func() (*http.Response, error) { + if req.Body != nil && req.Body != http.NoBody && req.GetBody != nil { + copyBody, err := req.GetBody() + + if err != nil { + return nil, err + } + + req.Body = copyBody + } + + req, err = s.hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req) + if err != nil { + if retry.IsPermanentError(err) || retry.IsTemporaryError(err) { + return nil, err + } + + return nil, retry.Permanent(err) + } + + httpRes, err := s.sdkConfiguration.Client.Do(req) + if err != nil || httpRes == nil { + if err != nil { + err = fmt.Errorf("error sending request: %w", err) + } else { + err = fmt.Errorf("error sending request: no response") + } + + _, err = s.hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, nil, err) + } + return httpRes, err + }) + + if err != nil { + return nil, err + } else { + httpRes, err = s.hooks.AfterSuccess(hooks.AfterSuccessContext{HookContext: hookCtx}, httpRes) + if err != nil { + return nil, err + } + } + } else { + req, err = s.hooks.BeforeRequest(hooks.BeforeRequestContext{HookContext: hookCtx}, req) + if err != nil { + return nil, err + } + + httpRes, err = s.sdkConfiguration.Client.Do(req) + if err != nil || httpRes == nil { + if err != nil { + err = fmt.Errorf("error sending request: %w", err) + } else { + err = fmt.Errorf("error sending request: no response") + } + + _, err = s.hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, nil, err) + return nil, err + } else if utils.MatchStatusCodes([]string{"4XX", "5XX"}, httpRes.StatusCode) { + _httpRes, err := s.hooks.AfterError(hooks.AfterErrorContext{HookContext: hookCtx}, httpRes, nil) + if err != nil { + return nil, err + } else if _httpRes != nil { + httpRes = _httpRes + } + } else { + httpRes, err = s.hooks.AfterSuccess(hooks.AfterSuccessContext{HookContext: hookCtx}, httpRes) + if err != nil { + return nil, err + } + } + } + + res := &operations.PlatformSkillsPreviewSourceStreamResponse{ + HTTPMeta: components.HTTPMetadata{ + Request: req, + Response: httpRes, + }, + } + + switch { + case httpRes.StatusCode == 200: + switch { + case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `text/event-stream`): + out := stream.NewEventStream(ctx, httpRes.Body, func(se []byte) (components.PlatformSkillSourcePreviewStreamEventServerSentEvent, error) { + var e components.PlatformSkillSourcePreviewStreamEventServerSentEvent + if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(se), &e, ""); err != nil { + return components.PlatformSkillSourcePreviewStreamEventServerSentEvent{}, err + } + return e, nil + }, "", stream.WithCancel[components.PlatformSkillSourcePreviewStreamEventServerSentEvent](streamCancel)) + streamCancel = nil + res.PlatformSkillSourcePreviewStreamEventServerSentEvent = out + default: + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + return nil, apierrors.NewAPIError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes) + } + case httpRes.StatusCode == 422: + switch { + case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/problem+json`): + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + + var out apierrors.PlatformUnauthorizedAgentToolsProblemError + if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) + } + + out.HTTPMeta = components.HTTPMetadata{ + Request: req, + Response: httpRes, + } + return nil, &out + default: + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + return nil, apierrors.NewAPIError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes) + } + case httpRes.StatusCode == 400: + fallthrough + case httpRes.StatusCode == 401: + fallthrough + case httpRes.StatusCode == 403: + fallthrough + case httpRes.StatusCode == 408: + fallthrough + case httpRes.StatusCode == 413: + fallthrough + case httpRes.StatusCode == 429: + switch { + case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/problem+json`): + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + + var out apierrors.PlatformProblemDetailError + if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) + } + + out.HTTPMeta = components.HTTPMetadata{ + Request: req, + Response: httpRes, + } + return nil, &out + default: + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { + return nil, err + } + return nil, apierrors.NewAPIError(fmt.Sprintf("unknown content-type received: %s", httpRes.Header.Get("Content-Type")), httpRes.StatusCode, string(rawBody), httpRes) + } + case httpRes.StatusCode == 500: + fallthrough + case httpRes.StatusCode == 503: + switch { + case utils.MatchContentType(httpRes.Header.Get("Content-Type"), `application/problem+json`): + rawBody, err := utils.ConsumeRawBody(httpRes) + if err != nil { return nil, err } + var out apierrors.PlatformProblemDetailError + if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) + } + out.HTTPMeta = components.HTTPMetadata{ Request: req, Response: httpRes, diff --git a/tests/messages_test.go b/tests/messages_test.go index febdc0e8..64ef64fe 100644 --- a/tests/messages_test.go +++ b/tests/messages_test.go @@ -27,7 +27,7 @@ func TestMessages_Messages(t *testing.T) { IDType: components.IDTypeConversationID, ID: "", TimestampMillis: apiclientgo.Pointer[int64](558834), - Datasource: components.DatasourceGchat, + Datasource: components.DatasourceFacebookworkplace, }, nil) require.NoError(t, err) assert.Equal(t, 200, res.HTTPMeta.Response.StatusCode) 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/handler/pathpostrestapiv1getchat.go b/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go index 87401958..96d4127e 100644 --- a/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go +++ b/tests/mockserver/internal/handler/pathpostrestapiv1getchat.go @@ -628,8 +628,8 @@ func testGetchatGetchat0(w http.ResponseWriter, req *http.Request) { Roles: []components.UserRoleSpecification{}, SourceDocumentSpec: types.Pointer(components.CreateDocumentSpecUnionDocumentSpec3( components.DocumentSpec3{ - UgcType: components.DocumentSpecUgcType1Shortcuts, - ContentID: 602763, + UgcType: components.DocumentSpecUgcType1Announcements, + ContentID: 848009, }, )), SourceType: components.AnswerSourceTypeAssistant.ToPointer(), 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/skills_test.go b/tests/skills_test.go index f6ef6835..c529bd56 100644 --- a/tests/skills_test.go +++ b/tests/skills_test.go @@ -7,6 +7,7 @@ import ( apiclientgo "github.com/gleanwork/api-client-go" "github.com/gleanwork/api-client-go/internal/utils" "github.com/gleanwork/api-client-go/models/components" + "github.com/gleanwork/api-client-go/models/operations" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "os" @@ -34,7 +35,7 @@ func TestSkills_PlatformSkillsCreate(t *testing.T) { }, }) require.NoError(t, err) - assert.Equal(t, 200, res.HTTPMeta.Response.StatusCode) + assert.Equal(t, 201, res.HTTPMeta.Response.StatusCode) } @@ -49,7 +50,7 @@ func TestSkills_PlatformSkillsList(t *testing.T) { apiclientgo.WithSecurity(utils.GetEnv("GLEAN_API_TOKEN", "value")), ) - res, err := s.Skills.List(ctx, nil, nil) + res, err := s.Skills.List(ctx, apiclientgo.Pointer[int64](20), nil) require.NoError(t, err) assert.Equal(t, 200, res.HTTPMeta.Response.StatusCode) @@ -135,7 +136,7 @@ func TestSkills_PlatformSkillsCreateVersion(t *testing.T) { }, }) require.NoError(t, err) - assert.Equal(t, 200, res.HTTPMeta.Response.StatusCode) + assert.Equal(t, 201, res.HTTPMeta.Response.StatusCode) } @@ -150,7 +151,7 @@ func TestSkills_PlatformSkillsListVersions(t *testing.T) { apiclientgo.WithSecurity(utils.GetEnv("GLEAN_API_TOKEN", "value")), ) - res, err := s.Skills.ListVersions(ctx, "", nil, nil) + res, err := s.Skills.ListVersions(ctx, "", apiclientgo.Pointer[int64](20), nil) require.NoError(t, err) assert.Equal(t, 200, res.HTTPMeta.Response.StatusCode) @@ -207,7 +208,7 @@ func TestSkills_PlatformSkillsImport(t *testing.T) { }, }) require.NoError(t, err) - assert.Equal(t, 200, res.HTTPMeta.Response.StatusCode) + assert.Equal(t, 201, res.HTTPMeta.Response.StatusCode) } @@ -222,7 +223,7 @@ func TestSkills_PlatformSkillsPreviewSource(t *testing.T) { apiclientgo.WithSecurity(utils.GetEnv("GLEAN_API_TOKEN", "value")), ) - res, err := s.Skills.PreviewSource(ctx, components.PlatformSkillSourcePreviewRequest{ + res, err := s.Skills.PreviewSource(ctx, operations.PlatformSkillsPreviewSourceRequest{ SourceURL: "https://github.com/anthropics/skills", }) require.NoError(t, err) diff --git a/tests/summarize_test.go b/tests/summarize_test.go index 4bfe1645..f7541551 100644 --- a/tests/summarize_test.go +++ b/tests/summarize_test.go @@ -25,16 +25,17 @@ func TestSummarize_Summarize(t *testing.T) { res, err := s.Client.Documents.Summarize(ctx, components.SummarizeRequest{ DocumentSpecs: []components.DocumentSpecUnion{ - components.CreateDocumentSpecUnionDocumentSpec1( - components.DocumentSpec1{ - URL: "https://dim-glider.com/", - }, - ), components.CreateDocumentSpecUnionDocumentSpec2( components.DocumentSpec2{ ID: "", }, ), + components.CreateDocumentSpecUnionDocumentSpec3( + components.DocumentSpec3{ + UgcType: components.DocumentSpecUgcType1Answers, + ContentID: 141216, + }, + ), }, }, nil) require.NoError(t, err) diff --git a/triggers.go b/triggers.go index 47baed43..bbb06a42 100644 --- a/triggers.go +++ b/triggers.go @@ -244,7 +244,7 @@ func (s *Triggers) Create(ctx context.Context, request components.PlatformTrigge var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -271,7 +271,7 @@ func (s *Triggers) Create(ctx context.Context, request components.PlatformTrigge var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -519,7 +519,7 @@ func (s *Triggers) List(ctx context.Context, pageSize *int64, cursor *string, op var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -546,7 +546,7 @@ func (s *Triggers) List(ctx context.Context, pageSize *int64, cursor *string, op var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -791,7 +791,7 @@ func (s *Triggers) Get(ctx context.Context, triggerID string, opts ...operations var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -818,7 +818,7 @@ func (s *Triggers) Get(ctx context.Context, triggerID string, opts ...operations var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1073,7 +1073,7 @@ func (s *Triggers) Update(ctx context.Context, triggerID string, platformTrigger var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1100,7 +1100,7 @@ func (s *Triggers) Update(ctx context.Context, triggerID string, platformTrigger var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1326,7 +1326,7 @@ func (s *Triggers) Delete(ctx context.Context, triggerID string, opts ...operati var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1353,7 +1353,7 @@ func (s *Triggers) Delete(ctx context.Context, triggerID string, opts ...operati var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1608,7 +1608,7 @@ func (s *Triggers) SearchEvents(ctx context.Context, triggerID string, platformT var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1635,7 +1635,7 @@ func (s *Triggers) SearchEvents(ctx context.Context, triggerID string, platformT var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1884,7 +1884,7 @@ func (s *Triggers) ListPresets(ctx context.Context, datasource *string, pageSize var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -1911,7 +1911,7 @@ func (s *Triggers) ListPresets(ctx context.Context, datasource *string, pageSize var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -2156,7 +2156,7 @@ func (s *Triggers) GetPreset(ctx context.Context, presetID string, opts ...opera var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -2183,7 +2183,7 @@ func (s *Triggers) GetPreset(ctx context.Context, presetID string, opts ...opera var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -2434,7 +2434,7 @@ func (s *Triggers) ListPresetInputValues(ctx context.Context, presetID string, f var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -2461,7 +2461,7 @@ func (s *Triggers) ListPresetInputValues(ctx context.Context, presetID string, f var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -2716,7 +2716,7 @@ func (s *Triggers) SearchPresetEvents(ctx context.Context, presetID string, plat var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ @@ -2743,7 +2743,7 @@ func (s *Triggers) SearchPresetEvents(ctx context.Context, presetID string, plat var out apierrors.PlatformProblemDetailError if err := utils.UnmarshalJsonFromResponseBody(bytes.NewBuffer(rawBody), &out, ""); err != nil { - return nil, err + return nil, apierrors.NewResponseValidationError("response did not match the declared error schema", httpRes.StatusCode, string(rawBody), httpRes, err) } out.HTTPMeta = components.HTTPMetadata{ From b7a9ba4bf7e2a89464a470a5bd026d3f8a9fc0e2 Mon Sep 17 00:00:00 2001 From: "speakeasy-github[bot]" <128539517+speakeasy-github[bot]@users.noreply.github.com> Date: Sat, 3 Oct 2026 03:41:21 +0000 Subject: [PATCH 2/2] empty commit to trigger [run-tests] workflow