From ccd895721f8c3487efb7ec79a5449c5cce70608e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 27 Oct 2026 14:03:35 +0000 Subject: [PATCH 1/2] chore: regenerate API client from latest OpenAPI spec --- internal/api/client.gen.go | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/internal/api/client.gen.go b/internal/api/client.gen.go index b82c1b2..cdcbdd3 100644 --- a/internal/api/client.gen.go +++ b/internal/api/client.gen.go @@ -2385,6 +2385,7 @@ type ElementState struct { OptionsTruncated *bool `json:"optionsTruncated,omitempty"` Pressed *ElementState_Pressed `json:"pressed,omitempty"` Selected *bool `json:"selected,omitempty"` + Sort *string `json:"sort,omitempty"` Value *string `json:"value,omitempty"` ValueDigest *string `json:"valueDigest,omitempty"` ValueTruncated *bool `json:"valueTruncated,omitempty"` @@ -3133,6 +3134,9 @@ type GlobalScrapeRequest struct { // Instructions Additional instructions to use for the scrape. E.g. 'Extract only the title, date and content of the articles.' Instructions *string `json:"instructions,omitempty"` + // LogSession Save browser session logs. False permanently disables saved logs, without disabling metering. + LogSession *bool `json:"log_session,omitempty"` + // MaxDurationMinutes Maximum session lifetime in minutes (absolute maximum, not affected by activity). MaxDurationMinutes *int `json:"max_duration_minutes,omitempty"` @@ -3150,6 +3154,9 @@ type GlobalScrapeRequest struct { // Proxies List of custom proxies to use for the session. If True, the default proxies will be used. Proxies *GlobalScrapeRequest_Proxies `json:"proxies,omitempty"` + // RecordSession Save session replay. False permanently disables saved replay; Live View remains available. + RecordSession *bool `json:"record_session,omitempty"` + // ResponseFormat The response format to use for the scrape. You can use a Pydantic model or a JSON Schema dict (cf. https://docs.pydantic.dev/latest/concepts/json_schema/#generating-json-schema.) ResponseFormat interface{} `json:"response_format"` @@ -4839,7 +4846,9 @@ type SessionResponse struct { // LastAccessedAt Last access time LastAccessedAt FlexibleTime `json:"last_accessed_at"` - LogSession *bool `json:"log_session,omitempty"` + + // LogSession Whether saved browser session logs are enabled. Defaults to true. + LogSession *bool `json:"log_session,omitempty"` // MaxDurationMinutes Session max duration in minutes. Will timeout if now() > creation time + max_duration_minutes MaxDurationMinutes *int `json:"max_duration_minutes,omitempty"` @@ -4850,8 +4859,13 @@ type SessionResponse struct { // NetworkResponseBytes Total byte usage for network responses. NetworkResponseBytes *int `json:"network_response_bytes,omitempty"` + // PlaywrightUrl The WebSocket URL for Playwright's chromium.connect(), when supported by the server. Requires a matching Playwright client version. This is a live browser connection, not a replay URL. + PlaywrightUrl *string `json:"playwright_url,omitempty"` + // Proxies Whether proxies were used for the session. True if any proxy was applied during session creation. - Proxies *bool `json:"proxies,omitempty"` + Proxies *bool `json:"proxies,omitempty"` + + // RecordSession Whether saved session replay is enabled. Defaults to true. RecordSession *bool `json:"record_session,omitempty"` // SessionId The ID of the session (created or existing). Use this ID to interact with the session for the next operation. @@ -7076,6 +7090,14 @@ func (a *SessionResponse) UnmarshalJSON(b []byte) error { delete(object, "network_response_bytes") } + if raw, found := object["playwright_url"]; found { + err = json.Unmarshal(raw, &a.PlaywrightUrl) + if err != nil { + return fmt.Errorf("error reading 'playwright_url': %w", err) + } + delete(object, "playwright_url") + } + if raw, found := object["proxies"]; found { err = json.Unmarshal(raw, &a.Proxies) if err != nil { @@ -7291,6 +7313,13 @@ func (a SessionResponse) MarshalJSON() ([]byte, error) { } } + if a.PlaywrightUrl != nil { + object["playwright_url"], err = json.Marshal(a.PlaywrightUrl) + if err != nil { + return nil, fmt.Errorf("error marshaling 'playwright_url': %w", err) + } + } + if a.Proxies != nil { object["proxies"], err = json.Marshal(a.Proxies) if err != nil { From a4a7b30f549efca5b366cc54dfa5afc10520d450 Mon Sep 17 00:00:00 2001 From: Lucas Giordano Date: Tue, 27 Oct 2026 16:24:12 +0100 Subject: [PATCH 2/2] ci: check generated code against the staging schema again The pinned SDK snapshot was a stopgap until capture controls shipped. Staging now serves them, and the regenerate job builds from staging, so the pin made every regenerated client look out of date. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1112d0d..ccdb53b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,9 +39,6 @@ jobs: run: go build -v ./... - name: Check generated code is up to date - env: - # Use the reviewed SDK schema while capture controls await API release. - NOTTE_API_URL: https://raw.githubusercontent.com/nottelabs/notte/a271724bc3ace49be3ec7d9c4617d87df1aa772d/openapi run: | go install github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen@v2.5.1 ./scripts/generate.sh