{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-changelog/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Synqly Release Notes 2026-07-24","siteUrl":"https://docs.synqly.com","lang":"en-US","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"release-notes---new-features--bug-fixes","__idx":0},"children":["Release Notes - New Features & Bug Fixes"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"️-edr-endpoint-detection--response","__idx":1},"children":["🛡️ EDR (Endpoint Detection & Response)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["✨ Enhancement"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Add time filter support for alerts and threats across EDR providers, including CrowdStrike, Microsoft Defender, Malwarebytes, ESET, Sophos, SentinelOne, Tanium, and Trellix."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["🐛 Bug Fix"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Remove unsupported ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["gt"]},"/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["gte"]},"/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["lt"]},"/",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["lte"]}," operators from string filters on Microsoft Defender ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["QueryEdrEvents"]},"."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Remove incorrect Tanium EDR ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["computerName"]}," → ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["metadata.tenant_uid"]}," mapping from alerts and threats."]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"-identity-management","__idx":2},"children":["👤 Identity Management"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["✨ Enhancement"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Include non-interactive Microsoft Entra ID sign-ins in Query Audit Log, with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["logon_type"]}," mapping and filtering for Interactive and Non-Interactive events."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Improve Microsoft Entra ID premium license error handling so licensing issues are not reported as authentication failures."]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["🐛 Bug Fix"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Retry transient Google Workspace Reports API 401 responses."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Fix Workday HTTP client usage for token refresh, tracing, and error handling."]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"-vulnerability-management","__idx":3},"children":["🔍 Vulnerability Management"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["🐛 Bug Fix"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Fix Qualys QDS parameter handling on retry after provider error 1901."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Improve Tenable API client retry behavior for rate-limited POST requests."]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"-ticketing","__idx":4},"children":["🎫 Ticketing"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["🐛 Bug Fix"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Correct ServiceNow ticketing field error messages for issue type, summary, and priority."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"-siem--sink","__idx":5},"children":["📊 SIEM & Sink"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["🐛 Bug Fix"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Stop emitting unnecessary Problem messages for Generic HTTP Sink array response handling."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"️-core","__idx":6},"children":["⚙️ Core"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["✨ Enhancement"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add OAuth 2.0 client credentials authentication support for ServiceNow integrations."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Allow ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["*"]}," wildcards in integration point mapping templates so mappings can apply across providers."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add configurable Azure Key Vault URL support for government cloud KMS deployments."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Improve OAuth error handling and logging for gateway timeout and bad gateway responses."]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["🐛 Bug Fix"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Map provider config schema and serialization failures to server errors instead of client configuration errors."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"-sdk-releases","__idx":7},"children":["📚 SDK Releases"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Please note that 2.x SDK versions are now released. 2.x and later SDK versions now include meta function support for all operations and much improved memory utilization (Python import times substantially reduced)."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Some customers may need to implement some minor migration changes to support the 2.x SDK versions (see below). Older SDK's are still supported."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Latest Versions"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Released Synqly SDK versions: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1.0.163"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1.0.164"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1.0.165"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1.0.166"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2.0.1"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2.0.2"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2.0.3"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2.0.4"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2.0.5"]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"-synqly-embedded","__idx":8},"children":["🚢 Synqly Embedded"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Latest Release: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["v0.1.144"]}]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Service Image Tag"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["embedded-2026.07.24"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Service Image Tag (NO FIPS)"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["embedded-2026.07.24-no-fips"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Release Date"]},": July 24, 2026"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"sdk-2x-migration-guides","__idx":9},"children":["SDK 2.x Migration Guides"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"golang-sdk","__idx":10},"children":["Golang SDK"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"migrating-your-go-integration-to-the-meta--enabled-synqly-sdk","__idx":11},"children":["Migrating your Go integration to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["meta"]},"-enabled Synqly SDK"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This Synqly SDK release adds the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["meta"]}," query parameter (Synqly ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://docs.synqly.com/api-reference/meta-functions"},"children":["meta"," ","functions"]},") to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["every"]}," ","engine endpoint, so meta functions work uniformly across the API."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Go cannot express optional positional arguments, so adding ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["meta"]}," is a breaking"," ","signature change on the affected endpoints. The good news: ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["the Go compiler"," ","flags every call site that needs updating"]}," — there are no silent behavior"," ","changes, so a build-fix-rebuild loop reliably gets you to a clean state."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["There are two change shapes. Adopting ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["meta"]}," itself is always optional."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"shape-1--endpoints-that-gained-a-request-argument","__idx":12},"children":["Shape 1 — endpoints that gained a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request"]}," argument"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Endpoints that previously took ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["no request object"]}," (reads, single-resource"," ","gets, and action endpoints) now take a positional"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request *engine.<Op>Request"]},". Pass ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["nil"]}," when you aren't using meta:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"go","header":{"controls":{"copy":{}}},"source":"// before\nep, err := client.Edr.GetEndpoint(ctx, id)\n// after\nep, err := client.Edr.GetEndpoint(ctx, id, nil)\n\n// opting in to meta:\nm := \"count\"\nep, err := client.Edr.GetEndpoint(ctx, id, &engine.GetEndpointRequest{Meta: []*string{&m}})\n","lang":"go"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This affects read/get/query/action endpoints across the connectors — for"," ","example ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Edr.GetEndpoint"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EndpointManagement.GetDevice"]},","," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Identity.GetGroup"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EnableUser"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DisableUser"]},","," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Notifications.GetMessage"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ClearMessage"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Ticketing.GetTicket"]}," /"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ListComments"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DeleteComment"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Vulnerabilities.GetScanStatus"]},","," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Storage.DeleteFile"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Assets.GetLabels"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["QueryAlerts"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Custom.Delete"]},"."," ","The compiler reports each one as \"not enough arguments\"; insert ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["nil"]}," (before any"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["option.RequestOption"]}," arguments)."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"shape-2--createupdatepost-endpoints-body-moves-under-body","__idx":13},"children":["Shape 2 — create/update/post endpoints: body moves under ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".Body"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Endpoints that took a request ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["body"]}," (or a list/map body) now take a request"," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["wrapper"]}," that carries ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["meta"]}," alongside the body under a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".Body"]}," field. The"," ","wire format is unchanged — only the Go construction changes:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"go","header":{"controls":{"copy":{}}},"source":"// before\nclient.Ticketing.CreateTicket(ctx, &engine.CreateTicketRequest{Name: \"Bug\", ...})\n// after\nclient.Ticketing.CreateTicket(ctx, &engine.CreateTicketRequestInput{\n    Body: &engine.CreateTicketRequest{Name: \"Bug\", ...},\n})\n\n// list/map bodies wrap the same way:\nclient.Siem.PostEvents(ctx, events)\n//  ->\nclient.Siem.PostEvents(ctx, &engine.PostSiemEventRequest{Body: events})\n","lang":"go"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"affected-endpoints-and-their-new-request-type","__idx":14},"children":["Affected endpoints and their new request type"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Connector"},"children":["Connector"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Method"},"children":["Method"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"New request type ( .Body holds the old argument)"},"children":["New request type (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".Body"]}," holds the old argument)"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["assets"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateAsset"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateDeviceRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["assets"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateDevices"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateDevicesRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["assets"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateSoftware"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateSoftwareInventoryRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["assets"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["UpdateDeviceProperties"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BulkUpdateDevicePropertiesRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["edr"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateIocs"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateIocsRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["edr"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateThreatNote"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateThreatNoteRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["edr"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ExecuteCommand"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ExecuteCommandRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["edr"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NetworkQuarantine"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NetworkQuarantineRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["endpointmanagement"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RemediateDevice"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RemediationRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["notifications"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateMessage"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateNotificationRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ticketing"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateTicket"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateTicketRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ticketing"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateAttachment"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateAttachmentRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ticketing"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateComment"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateCommentRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ticketing"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateNote"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateNoteRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ticketing"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PatchTicket"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PatchTicketRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ticketing"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PatchNote"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PatchNoteRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["siem"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PatchInvestigation"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PatchInvestigationRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["siem"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostEvents"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostSiemEventRequest"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sink"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostEvents"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostSinkEventRequest"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["custom"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Patch"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PatchCustomRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["custom"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Post"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostCustomRequest"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["custom"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostBatch"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostBatchCustomRequest"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vulnerabilities"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateAsset"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateAssetRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vulnerabilities"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateFindings"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateFindingsRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vulnerabilities"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["UpdateAsset"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["UpdateAssetRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vulnerabilities"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["UpdateFinding"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["UpdateFindingRequestInput"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vulnerabilities"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["UploadScan"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["UploadScanRequestInput"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In every case, wrap the value you used to pass in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["&engine.<NewType>{Body: <old value>}"]},"."," ","To opt into meta, set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Meta: []*string{...}"]}," on the wrapper. Note"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vulnerabilities.CreateAsset"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vulnerabilities.UpdateAsset"]}," share the"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateAssetRequest"]}," body but use ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["different"]}," wrappers (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateAssetRequestInput"]}," ","vs ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["UpdateAssetRequestInput"]},"); ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["assets.CreateAsset"]}," is distinct again"," ","(",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CreateDeviceRequestInput"]},")."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"recommended-migration-steps","__idx":15},"children":["Recommended migration steps"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Upgrade the SDK and build."]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["go build ./..."]}," (and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["go vet"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["go test"]}," to"," ","include test files) flags every affected call site precisely."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Apply the two patterns above"]}," to each flagged site — insert ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["nil"]}," for"," ","Shape 1, wrap the body for Shape 2 — and rebuild until green."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Optional — use a coding agent."]}," Hand it this guide plus your repository and"," ","have it apply the changes, using your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["go build"]}," / tests as the completeness"," ","gate. The compiler catching every site makes this reliable."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We deliberately do not ship an automated codemod: a pattern-matching script"," ","mis-fires on identically-named methods (e.g. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["slices.Delete"]},", other clients'"," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PostEvents"]},") and misses requests built into variables, whereas the compiler —"," ","or a compiler-guided coding agent — handles every case correctly."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"python-sdk","__idx":16},"children":["Python SDK"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"migrating-your-python-integration-to-the-meta--enabled-synqly-sdk","__idx":17},"children":["Migrating your Python integration to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["meta"]},"-enabled Synqly SDK"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This Synqly SDK release adds the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["meta"]}," query parameter (Synqly ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://docs.synqly.com/api-reference/meta-functions"},"children":["meta"," ","functions"]},") to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["every"]}," ","engine endpoint, so meta functions work uniformly across the API."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For the typed Python SDK this is ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["additive almost everywhere"]},". A small set of"," ","create/update operations have a breaking signature change. This guide is the"," ","complete list of what changed and how to update."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide covers the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["typed Python SDK"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["synqly"]},"). If you use the"," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["typeless"]}," SDK (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["synqly-typeless"]},"), no changes are required — meta is added"," ","as an optional keyword argument and nothing else changes."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"scope-at-a-glance","__idx":18},"children":["Scope at a glance"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["No change needed"]}," for the vast majority of endpoints — reads, queries,"," ","single-resource gets, actions, and the JSON-patch endpoints. They gain an"," ","optional ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["meta="]}," keyword argument you can ignore or adopt."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["No change needed"]}," if you already call create/update endpoints with"," ","flattened keyword arguments, or by spreading a request object's fields"," ","(",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["client.ticketing.create_ticket(**my_request.dict())"]},")."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Breaking"]}," only for the create/update operations listed below, and only if"," ","you pass a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["request object"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request=SomeRequest(...)"]},")."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If your integration only reads data, upgrading is a no-op."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"the-breaking-change-request-objects-become-keyword-arguments","__idx":19},"children":["The breaking change: request objects become keyword arguments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Adding ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["meta"]}," changed these requests so the body is passed as ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["flattened"," ","keyword arguments"]}," instead of a request object:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","header":{"controls":{"copy":{}}},"source":"# BEFORE\nclient.ticketing.create_ticket(request=CreateTicketRequest(name=\"Bug\", summary=\"x\"))\n\n# AFTER — body fields become direct keyword arguments (plus an optional meta=)\nclient.ticketing.create_ticket(name=\"Bug\", summary=\"x\")\nclient.ticketing.create_ticket(name=\"Bug\", summary=\"x\", meta=[\"count\"])\n","lang":"python"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["To migrate:"]}," drop the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request=SomeRequest(...)"]}," wrapper and pass its fields"," ","directly as keyword arguments. Equivalently, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request=SomeRequest(**fields)"]}," ","becomes ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["**fields"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"affected-operations","__idx":20},"children":["Affected operations"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Connector"},"children":["Connector"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Operations"},"children":["Operations"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ticketing"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["create_ticket"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["create_attachment"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["create_comment"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["create_note"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vulnerabilities"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["create_asset"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["update_asset"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["create_findings"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["update_finding"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["edr"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["create_iocs"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["network_quarantine"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["assets"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["create_asset"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["notifications"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["create_message"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The JSON-patch operations (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["patch_ticket"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["patch_note"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["patch_investigation"]},")"," ","keep their ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request="]}," parameter and are ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["not"]}," affected."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"call-styles-that-already-work-no-change","__idx":21},"children":["Call styles that already work (no change)"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","header":{"controls":{"copy":{}}},"source":"# flattened keyword arguments — already correct\nclient.ticketing.create_ticket(name=\"Bug\", summary=\"x\")\n# spreading a request object's fields\nclient.ticketing.create_ticket(**my_ticket.dict())\n# list-body / JSON-patch endpoints keep request=\nclient.siem.post_events(request=[event])\nclient.ticketing.patch_ticket(ticket_id, request=[{\"op\": \"replace\", ...}])\n","lang":"python"},"children":[]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"recommended-migration-steps-1","__idx":22},"children":["Recommended migration steps"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Upgrade the SDK"]}," and run your test suite and type checker (mypy / pyright)."," ","Each breaking call surfaces as a clear type error pointing at the exact line;"," ","there are no silent behavior changes."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Update the flagged calls"]}," using the pattern above — at most the handful of"," ","operations in the table, most projects use only a few."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Optional — use a coding agent."]}," Because the change is a uniform, well-"," ","scoped flatten on a known operation list, you can hand this guide and your"," ","repository to a coding assistant and have it apply the changes, using your"," ","test/type-check run as the completeness gate."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Adopting ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["meta"]}," itself is always optional — every affected call also accepts an"," ","optional ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["meta="]}," argument when you want to invoke meta functions."]}]},"headings":[{"value":"Release Notes - New Features & Bug Fixes","id":"release-notes---new-features--bug-fixes","depth":1},{"value":"🛡️ EDR (Endpoint Detection & Response)","id":"️-edr-endpoint-detection--response","depth":1},{"value":"👤 Identity Management","id":"-identity-management","depth":2},{"value":"🔍 Vulnerability Management","id":"-vulnerability-management","depth":1},{"value":"🎫 Ticketing","id":"-ticketing","depth":1},{"value":"📊 SIEM & Sink","id":"-siem--sink","depth":1},{"value":"⚙️ Core","id":"️-core","depth":1},{"value":"📚 SDK Releases","id":"-sdk-releases","depth":1},{"value":"🚢 Synqly Embedded","id":"-synqly-embedded","depth":1},{"value":"SDK 2.x Migration Guides","id":"sdk-2x-migration-guides","depth":1},{"value":"Golang SDK","id":"golang-sdk","depth":2},{"value":"Migrating your Go integration to the meta -enabled Synqly SDK","id":"migrating-your-go-integration-to-the-meta--enabled-synqly-sdk","depth":1},{"value":"Shape 1 — endpoints that gained a request argument","id":"shape-1--endpoints-that-gained-a-request-argument","depth":2},{"value":"Shape 2 — create/update/post endpoints: body moves under .Body","id":"shape-2--createupdatepost-endpoints-body-moves-under-body","depth":2},{"value":"Affected endpoints and their new request type","id":"affected-endpoints-and-their-new-request-type","depth":3},{"value":"Recommended migration steps","id":"recommended-migration-steps","depth":2},{"value":"Python SDK","id":"python-sdk","depth":2},{"value":"Migrating your Python integration to the meta -enabled Synqly SDK","id":"migrating-your-python-integration-to-the-meta--enabled-synqly-sdk","depth":1},{"value":"Scope at a glance","id":"scope-at-a-glance","depth":4},{"value":"The breaking change: request objects become keyword arguments","id":"the-breaking-change-request-objects-become-keyword-arguments","depth":4},{"value":"Affected operations","id":"affected-operations","depth":3},{"value":"Call styles that already work (no change)","id":"call-styles-that-already-work-no-change","depth":4},{"value":"Recommended migration steps","id":"recommended-migration-steps-1","depth":4}],"frontmatter":{"seo":{"title":"Synqly Release Notes 2026-07-24"},"slug":"changelog/2026-07-24"},"lastModified":"2026-07-28T21:49:23.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/changelog/2026-07-24","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}