Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "2.1.0"
".": "2.2.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 29
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-51ebe668b198157ccb18984017dd2fe35f7675220e8b933b03325b3c459ef2a6.yml
openapi_spec_hash: b3ed94bd6b59d4e32fc2c5aa8187d6b2
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/context-dev/context.dev-ecb277557634e2f0838ea196e2b21f11924f65e133c7977e8c2e1a603b8df466.yml
openapi_spec_hash: 798ce4cb042389a1179bf9af6fc1173d
config_hash: ff35e224e809656528c44163aa41bebd
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
# Changelog

## 2.2.0 (2026-07-10)

Full Changelog: [v2.1.0...v2.2.0](https://github.com/context-dot-dev/context-python-sdk/compare/v2.1.0...v2.2.0)

### Features

* **api:** api update ([d0f20d7](https://github.com/context-dot-dev/context-python-sdk/commit/d0f20d706a262ca3b5fbd904c4d2816e589d7532))
* **api:** api update ([4fb738f](https://github.com/context-dot-dev/context-python-sdk/commit/4fb738fd4527cdeef0448c4d79d31ad513e20e50))

## 2.1.0 (2026-07-08)

Full Changelog: [v2.0.0...v2.1.0](https://github.com/context-dot-dev/context-python-sdk/compare/v2.0.0...v2.1.0)
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "context.dev"
version = "2.1.0"
version = "2.2.0"
description = "The official Python library for the context.dev API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion src/context/dev/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "context.dev"
__version__ = "2.1.0" # x-release-please-version
__version__ = "2.2.0" # x-release-please-version
14 changes: 9 additions & 5 deletions src/context/dev/types/monitor_create_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ class ChangeDetectionMonitorsExactChangeDetection(TypedDict, total=False):

class ChangeDetectionMonitorsSemanticChangeDetection(TypedDict, total=False):
"""
Detect meaning-level changes to the extracted data, ignoring cosmetic or paraphrase-only differences. What is watched is determined by the extract target's `schema` and `instructions`.
Detect meaning-level changes to tracked page content, ignoring cosmetic or paraphrase-only differences. Which changes are meaningful is judged against the extract target's `instructions` (and `schema`, when provided).
"""

type: Required[Literal["semantic"]]
Expand Down Expand Up @@ -128,7 +128,7 @@ class TargetMonitorsSitemapTarget(TypedDict, total=False):
class TargetMonitorsExtractTarget(TypedDict, total=False):
"""Watch the monitor-relevant pages of a site for meaningful changes.

A crawl guided by `schema`/`instructions` selects up to `max_pages` relevant pages to track; each run re-checks exactly those pages, and confirmed content changes are judged against the monitor's instructions. The tracked page set is refreshed by a periodic re-discovery crawl.
A crawl guided by `schema`/`instructions` selects up to `max_pages` relevant pages to track; each run re-checks exactly those pages, and confirmed content changes are judged for relevance against the monitor's `instructions` (and `schema`, when provided). The tracked page set is refreshed by a periodic re-discovery crawl.
"""

instructions: Required[str]
Expand All @@ -153,9 +153,13 @@ class TargetMonitorsExtractTarget(TypedDict, total=False):
schema: Dict[str, object]
"""JSON Schema describing the data you care about.

It guides which pages are selected for tracking and gives the change judge
context on what matters. If omitted, a default summary + key-points schema is
used.
It is used three ways: it guides which pages are selected for tracking, it gives
the change judge extra context on which changes matter (alongside
`instructions`), and it defines the shape of the baseline `data` snapshot on GET
/monitors/{monitor_id} (refreshed at most about once a day). It is not a
response format for changes: change events and webhook payloads always contain
diffs, summaries, and evidence excerpts — never data in this schema's shape. If
omitted, a default summary + key-points schema is used.
"""


Expand Down
14 changes: 9 additions & 5 deletions src/context/dev/types/monitor_create_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class ChangeDetectionMonitorsExactChangeDetection(BaseModel):

class ChangeDetectionMonitorsSemanticChangeDetection(BaseModel):
"""
Detect meaning-level changes to the extracted data, ignoring cosmetic or paraphrase-only differences. What is watched is determined by the extract target's `schema` and `instructions`.
Detect meaning-level changes to tracked page content, ignoring cosmetic or paraphrase-only differences. Which changes are meaningful is judged against the extract target's `instructions` (and `schema`, when provided).
"""

type: Literal["semantic"]
Expand Down Expand Up @@ -107,7 +107,7 @@ class TargetMonitorsSitemapTarget(BaseModel):
class TargetMonitorsExtractTarget(BaseModel):
"""Watch the monitor-relevant pages of a site for meaningful changes.

A crawl guided by `schema`/`instructions` selects up to `max_pages` relevant pages to track; each run re-checks exactly those pages, and confirmed content changes are judged against the monitor's instructions. The tracked page set is refreshed by a periodic re-discovery crawl.
A crawl guided by `schema`/`instructions` selects up to `max_pages` relevant pages to track; each run re-checks exactly those pages, and confirmed content changes are judged for relevance against the monitor's `instructions` (and `schema`, when provided). The tracked page set is refreshed by a periodic re-discovery crawl.
"""

instructions: str
Expand All @@ -132,9 +132,13 @@ class TargetMonitorsExtractTarget(BaseModel):
schema_: Optional[Dict[str, object]] = FieldInfo(alias="schema", default=None)
"""JSON Schema describing the data you care about.

It guides which pages are selected for tracking and gives the change judge
context on what matters. If omitted, a default summary + key-points schema is
used.
It is used three ways: it guides which pages are selected for tracking, it gives
the change judge extra context on which changes matter (alongside
`instructions`), and it defines the shape of the baseline `data` snapshot on GET
/monitors/{monitor_id} (refreshed at most about once a day). It is not a
response format for changes: change events and webhook payloads always contain
diffs, summaries, and evidence excerpts — never data in this schema's shape. If
omitted, a default summary + key-points schema is used.
"""


Expand Down
43 changes: 42 additions & 1 deletion src/context/dev/types/monitor_list_account_runs_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

from .._models import BaseModel

__all__ = ["MonitorListAccountRunsResponse", "Data", "DataError"]
__all__ = ["MonitorListAccountRunsResponse", "Data", "DataError", "DataWebhookDelivery", "DataWebhookDeliveryError"]


class DataError(BaseModel):
Expand All @@ -15,6 +15,40 @@ class DataError(BaseModel):
message: str


class DataWebhookDeliveryError(BaseModel):
code: str

message: str


class DataWebhookDelivery(BaseModel):
"""The webhook delivery attempted for a change detected by this run.

Omitted when no webhook was attempted, including historical runs created before delivery tracking was added.
"""

attempted_at: datetime

error: Optional[DataWebhookDeliveryError] = None

event_id: str
"""Identifier sent in the X-Context-Id header."""

http_status: Optional[int] = None
"""
The endpoint's final HTTP response status, or null when no response was
received.
"""

status: Literal["delivered", "rejected", "failed", "skipped_unsafe_url"]
"""Delivery outcome.

delivered means any 2xx response; rejected means a non-2xx response; failed
means no HTTP response was received; skipped_unsafe_url means the URL failed the
public-endpoint safety check.
"""


class Data(BaseModel):
id: str

Expand Down Expand Up @@ -56,6 +90,13 @@ class Data(BaseModel):

started_at: Optional[datetime] = None

webhook_delivery: Optional[DataWebhookDelivery] = None
"""The webhook delivery attempted for a change detected by this run.

Omitted when no webhook was attempted, including historical runs created before
delivery tracking was added.
"""


class MonitorListAccountRunsResponse(BaseModel):
data: List[Data]
Expand Down
14 changes: 9 additions & 5 deletions src/context/dev/types/monitor_list_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class DataChangeDetectionMonitorsExactChangeDetection(BaseModel):

class DataChangeDetectionMonitorsSemanticChangeDetection(BaseModel):
"""
Detect meaning-level changes to the extracted data, ignoring cosmetic or paraphrase-only differences. What is watched is determined by the extract target's `schema` and `instructions`.
Detect meaning-level changes to tracked page content, ignoring cosmetic or paraphrase-only differences. Which changes are meaningful is judged against the extract target's `instructions` (and `schema`, when provided).
"""

type: Literal["semantic"]
Expand Down Expand Up @@ -108,7 +108,7 @@ class DataTargetMonitorsSitemapTarget(BaseModel):
class DataTargetMonitorsExtractTarget(BaseModel):
"""Watch the monitor-relevant pages of a site for meaningful changes.

A crawl guided by `schema`/`instructions` selects up to `max_pages` relevant pages to track; each run re-checks exactly those pages, and confirmed content changes are judged against the monitor's instructions. The tracked page set is refreshed by a periodic re-discovery crawl.
A crawl guided by `schema`/`instructions` selects up to `max_pages` relevant pages to track; each run re-checks exactly those pages, and confirmed content changes are judged for relevance against the monitor's `instructions` (and `schema`, when provided). The tracked page set is refreshed by a periodic re-discovery crawl.
"""

instructions: str
Expand All @@ -133,9 +133,13 @@ class DataTargetMonitorsExtractTarget(BaseModel):
schema_: Optional[Dict[str, object]] = FieldInfo(alias="schema", default=None)
"""JSON Schema describing the data you care about.

It guides which pages are selected for tracking and gives the change judge
context on what matters. If omitted, a default summary + key-points schema is
used.
It is used three ways: it guides which pages are selected for tracking, it gives
the change judge extra context on which changes matter (alongside
`instructions`), and it defines the shape of the baseline `data` snapshot on GET
/monitors/{monitor_id} (refreshed at most about once a day). It is not a
response format for changes: change events and webhook payloads always contain
diffs, summaries, and evidence excerpts — never data in this schema's shape. If
omitted, a default summary + key-points schema is used.
"""


Expand Down
43 changes: 42 additions & 1 deletion src/context/dev/types/monitor_list_runs_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

from .._models import BaseModel

__all__ = ["MonitorListRunsResponse", "Data", "DataError"]
__all__ = ["MonitorListRunsResponse", "Data", "DataError", "DataWebhookDelivery", "DataWebhookDeliveryError"]


class DataError(BaseModel):
Expand All @@ -15,6 +15,40 @@ class DataError(BaseModel):
message: str


class DataWebhookDeliveryError(BaseModel):
code: str

message: str


class DataWebhookDelivery(BaseModel):
"""The webhook delivery attempted for a change detected by this run.

Omitted when no webhook was attempted, including historical runs created before delivery tracking was added.
"""

attempted_at: datetime

error: Optional[DataWebhookDeliveryError] = None

event_id: str
"""Identifier sent in the X-Context-Id header."""

http_status: Optional[int] = None
"""
The endpoint's final HTTP response status, or null when no response was
received.
"""

status: Literal["delivered", "rejected", "failed", "skipped_unsafe_url"]
"""Delivery outcome.

delivered means any 2xx response; rejected means a non-2xx response; failed
means no HTTP response was received; skipped_unsafe_url means the URL failed the
public-endpoint safety check.
"""


class Data(BaseModel):
id: str

Expand Down Expand Up @@ -56,6 +90,13 @@ class Data(BaseModel):

started_at: Optional[datetime] = None

webhook_delivery: Optional[DataWebhookDelivery] = None
"""The webhook delivery attempted for a change detected by this run.

Omitted when no webhook was attempted, including historical runs created before
delivery tracking was added.
"""


class MonitorListRunsResponse(BaseModel):
data: List[Data]
Expand Down
14 changes: 9 additions & 5 deletions src/context/dev/types/monitor_retrieve_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class ChangeDetectionMonitorsExactChangeDetection(BaseModel):

class ChangeDetectionMonitorsSemanticChangeDetection(BaseModel):
"""
Detect meaning-level changes to the extracted data, ignoring cosmetic or paraphrase-only differences. What is watched is determined by the extract target's `schema` and `instructions`.
Detect meaning-level changes to tracked page content, ignoring cosmetic or paraphrase-only differences. Which changes are meaningful is judged against the extract target's `instructions` (and `schema`, when provided).
"""

type: Literal["semantic"]
Expand Down Expand Up @@ -107,7 +107,7 @@ class TargetMonitorsSitemapTarget(BaseModel):
class TargetMonitorsExtractTarget(BaseModel):
"""Watch the monitor-relevant pages of a site for meaningful changes.

A crawl guided by `schema`/`instructions` selects up to `max_pages` relevant pages to track; each run re-checks exactly those pages, and confirmed content changes are judged against the monitor's instructions. The tracked page set is refreshed by a periodic re-discovery crawl.
A crawl guided by `schema`/`instructions` selects up to `max_pages` relevant pages to track; each run re-checks exactly those pages, and confirmed content changes are judged for relevance against the monitor's `instructions` (and `schema`, when provided). The tracked page set is refreshed by a periodic re-discovery crawl.
"""

instructions: str
Expand All @@ -132,9 +132,13 @@ class TargetMonitorsExtractTarget(BaseModel):
schema_: Optional[Dict[str, object]] = FieldInfo(alias="schema", default=None)
"""JSON Schema describing the data you care about.

It guides which pages are selected for tracking and gives the change judge
context on what matters. If omitted, a default summary + key-points schema is
used.
It is used three ways: it guides which pages are selected for tracking, it gives
the change judge extra context on which changes matter (alongside
`instructions`), and it defines the shape of the baseline `data` snapshot on GET
/monitors/{monitor_id} (refreshed at most about once a day). It is not a
response format for changes: change events and webhook payloads always contain
diffs, summaries, and evidence excerpts — never data in this schema's shape. If
omitted, a default summary + key-points schema is used.
"""


Expand Down
14 changes: 9 additions & 5 deletions src/context/dev/types/monitor_update_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class ChangeDetectionMonitorsExactChangeDetection(TypedDict, total=False):

class ChangeDetectionMonitorsSemanticChangeDetection(TypedDict, total=False):
"""
Detect meaning-level changes to the extracted data, ignoring cosmetic or paraphrase-only differences. What is watched is determined by the extract target's `schema` and `instructions`.
Detect meaning-level changes to tracked page content, ignoring cosmetic or paraphrase-only differences. Which changes are meaningful is judged against the extract target's `instructions` (and `schema`, when provided).
"""

type: Required[Literal["semantic"]]
Expand Down Expand Up @@ -124,7 +124,7 @@ class TargetMonitorsSitemapTarget(TypedDict, total=False):
class TargetMonitorsExtractTarget(TypedDict, total=False):
"""Watch the monitor-relevant pages of a site for meaningful changes.

A crawl guided by `schema`/`instructions` selects up to `max_pages` relevant pages to track; each run re-checks exactly those pages, and confirmed content changes are judged against the monitor's instructions. The tracked page set is refreshed by a periodic re-discovery crawl.
A crawl guided by `schema`/`instructions` selects up to `max_pages` relevant pages to track; each run re-checks exactly those pages, and confirmed content changes are judged for relevance against the monitor's `instructions` (and `schema`, when provided). The tracked page set is refreshed by a periodic re-discovery crawl.
"""

instructions: Required[str]
Expand All @@ -149,9 +149,13 @@ class TargetMonitorsExtractTarget(TypedDict, total=False):
schema: Dict[str, object]
"""JSON Schema describing the data you care about.

It guides which pages are selected for tracking and gives the change judge
context on what matters. If omitted, a default summary + key-points schema is
used.
It is used three ways: it guides which pages are selected for tracking, it gives
the change judge extra context on which changes matter (alongside
`instructions`), and it defines the shape of the baseline `data` snapshot on GET
/monitors/{monitor_id} (refreshed at most about once a day). It is not a
response format for changes: change events and webhook payloads always contain
diffs, summaries, and evidence excerpts — never data in this schema's shape. If
omitted, a default summary + key-points schema is used.
"""


Expand Down
14 changes: 9 additions & 5 deletions src/context/dev/types/monitor_update_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class ChangeDetectionMonitorsExactChangeDetection(BaseModel):

class ChangeDetectionMonitorsSemanticChangeDetection(BaseModel):
"""
Detect meaning-level changes to the extracted data, ignoring cosmetic or paraphrase-only differences. What is watched is determined by the extract target's `schema` and `instructions`.
Detect meaning-level changes to tracked page content, ignoring cosmetic or paraphrase-only differences. Which changes are meaningful is judged against the extract target's `instructions` (and `schema`, when provided).
"""

type: Literal["semantic"]
Expand Down Expand Up @@ -107,7 +107,7 @@ class TargetMonitorsSitemapTarget(BaseModel):
class TargetMonitorsExtractTarget(BaseModel):
"""Watch the monitor-relevant pages of a site for meaningful changes.

A crawl guided by `schema`/`instructions` selects up to `max_pages` relevant pages to track; each run re-checks exactly those pages, and confirmed content changes are judged against the monitor's instructions. The tracked page set is refreshed by a periodic re-discovery crawl.
A crawl guided by `schema`/`instructions` selects up to `max_pages` relevant pages to track; each run re-checks exactly those pages, and confirmed content changes are judged for relevance against the monitor's `instructions` (and `schema`, when provided). The tracked page set is refreshed by a periodic re-discovery crawl.
"""

instructions: str
Expand All @@ -132,9 +132,13 @@ class TargetMonitorsExtractTarget(BaseModel):
schema_: Optional[Dict[str, object]] = FieldInfo(alias="schema", default=None)
"""JSON Schema describing the data you care about.

It guides which pages are selected for tracking and gives the change judge
context on what matters. If omitted, a default summary + key-points schema is
used.
It is used three ways: it guides which pages are selected for tracking, it gives
the change judge extra context on which changes matter (alongside
`instructions`), and it defines the shape of the baseline `data` snapshot on GET
/monitors/{monitor_id} (refreshed at most about once a day). It is not a
response format for changes: change events and webhook payloads always contain
diffs, summaries, and evidence excerpts — never data in this schema's shape. If
omitted, a default summary + key-points schema is used.
"""


Expand Down
Loading