airweave-sdk 0.8.19__py3-none-any.whl → 0.8.48__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. airweave/__init__.py +51 -3
  2. airweave/collections/client.py +15 -2
  3. airweave/collections/raw_client.py +15 -0
  4. airweave/core/client_wrapper.py +2 -2
  5. airweave/types/__init__.py +53 -3
  6. airweave/types/admin_sync_info.py +4 -3
  7. airweave/types/behavior_config.py +36 -0
  8. airweave/types/body_resync_with_execution_config_admin_resync_sync_id_post.py +28 -0
  9. airweave/types/collection.py +6 -0
  10. airweave/types/collection_update.py +8 -2
  11. airweave/types/create_subscription_request.py +26 -0
  12. airweave/types/cursor_config.py +31 -0
  13. airweave/types/destination_config.py +41 -0
  14. airweave/types/endpoint_out.py +35 -0
  15. airweave/types/endpoint_secret_out.py +19 -0
  16. airweave/types/event_type.py +7 -0
  17. airweave/types/feature_flag.py +8 -1
  18. airweave/types/filter.py +4 -4
  19. airweave/types/handler_config.py +36 -0
  20. airweave/types/message_attempt_out.py +37 -0
  21. airweave/types/message_attempt_trigger_type.py +3 -0
  22. airweave/types/message_out.py +29 -0
  23. airweave/types/message_status.py +3 -0
  24. airweave/types/message_status_text.py +5 -0
  25. airweave/types/patch_subscription_request.py +25 -0
  26. airweave/types/s_3_config_request.py +5 -15
  27. airweave/types/search_request.py +1 -1
  28. airweave/types/source.py +10 -0
  29. airweave/types/subscription_with_attempts_out.py +26 -0
  30. airweave/types/sync.py +2 -0
  31. airweave/types/sync_config.py +34 -0
  32. airweave/types/sync_create.py +2 -0
  33. airweave/types/sync_job.py +3 -1
  34. airweave/types/sync_update.py +2 -0
  35. {airweave_sdk-0.8.19.dist-info → airweave_sdk-0.8.48.dist-info}/METADATA +1 -1
  36. {airweave_sdk-0.8.19.dist-info → airweave_sdk-0.8.48.dist-info}/RECORD +37 -21
  37. airweave/types/sync_execution_config.py +0 -79
  38. {airweave_sdk-0.8.19.dist-info → airweave_sdk-0.8.48.dist-info}/WHEEL +0 -0
@@ -0,0 +1,36 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+
8
+
9
+ class BehaviorConfig(UniversalBaseModel):
10
+ """
11
+ Miscellaneous execution behavior flags.
12
+ """
13
+
14
+ skip_hash_comparison: typing.Optional[bool] = pydantic.Field(default=None)
15
+ """
16
+ Force INSERT for all entities
17
+ """
18
+
19
+ replay_from_arf: typing.Optional[bool] = pydantic.Field(default=None)
20
+ """
21
+ Replay from ARF storage instead of calling source
22
+ """
23
+
24
+ skip_guardrails: typing.Optional[bool] = pydantic.Field(default=None)
25
+ """
26
+ Skip usage guardrails (entity count checks)
27
+ """
28
+
29
+ if IS_PYDANTIC_V2:
30
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
31
+ else:
32
+
33
+ class Config:
34
+ frozen = True
35
+ smart_union = True
36
+ extra = pydantic.Extra.allow
@@ -0,0 +1,28 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .sync_config import SyncConfig
8
+
9
+
10
+ class BodyResyncWithExecutionConfigAdminResyncSyncIdPost(UniversalBaseModel):
11
+ execution_config: typing.Optional[SyncConfig] = pydantic.Field(default=None)
12
+ """
13
+ Optional nested SyncConfig for sync behavior (destinations, handlers, cursor, behavior)
14
+ """
15
+
16
+ tags: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
17
+ """
18
+ Optional tags for filtering and organizing sync jobs (e.g., ['vespa-backfill-01-22-2026', 'manual'])
19
+ """
20
+
21
+ if IS_PYDANTIC_V2:
22
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
23
+ else:
24
+
25
+ class Config:
26
+ frozen = True
27
+ smart_union = True
28
+ extra = pydantic.Extra.allow
@@ -6,6 +6,7 @@ import typing
6
6
  import pydantic
7
7
  from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
8
  from .collection_status import CollectionStatus
9
+ from .sync_config import SyncConfig
9
10
 
10
11
 
11
12
  class Collection(UniversalBaseModel):
@@ -41,6 +42,11 @@ class Collection(UniversalBaseModel):
41
42
  Name of the embedding model used for this collection (e.g., 'text-embedding-3-large', 'text-embedding-3-small'). This ensures queries use the same model as the indexed data.
42
43
  """
43
44
 
45
+ sync_config: typing.Optional[SyncConfig] = pydantic.Field(default=None)
46
+ """
47
+ Default sync configuration for all syncs in this collection. Overridable at sync and job level.
48
+ """
49
+
44
50
  created_at: dt.datetime = pydantic.Field()
45
51
  """
46
52
  Timestamp when the collection was created (ISO 8601 format).
@@ -4,14 +4,15 @@ import typing
4
4
 
5
5
  import pydantic
6
6
  from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .sync_config import SyncConfig
7
8
 
8
9
 
9
10
  class CollectionUpdate(UniversalBaseModel):
10
11
  """
11
12
  Schema for updating an existing collection.
12
13
 
13
- Only the collection's display name can be updated. The readable_id is immutable
14
- to maintain stable API endpoints and references.
14
+ Allows updating the collection's display name and default sync configuration.
15
+ The readable_id is immutable to maintain stable API endpoints and references.
15
16
  """
16
17
 
17
18
  name: typing.Optional[str] = pydantic.Field(default=None)
@@ -19,6 +20,11 @@ class CollectionUpdate(UniversalBaseModel):
19
20
  Updated display name for the collection. Must be between 4 and 64 characters.
20
21
  """
21
22
 
23
+ sync_config: typing.Optional[SyncConfig] = pydantic.Field(default=None)
24
+ """
25
+ Default sync configuration for all syncs in this collection. This provides collection-level defaults that can be overridden at sync or job level.
26
+ """
27
+
22
28
  if IS_PYDANTIC_V2:
23
29
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
24
30
  else:
@@ -0,0 +1,26 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .event_type import EventType
8
+
9
+
10
+ class CreateSubscriptionRequest(UniversalBaseModel):
11
+ """
12
+ Request model for creating a new webhook subscription.
13
+ """
14
+
15
+ url: str
16
+ event_types: typing.List[EventType]
17
+ secret: typing.Optional[str] = None
18
+
19
+ if IS_PYDANTIC_V2:
20
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
21
+ else:
22
+
23
+ class Config:
24
+ frozen = True
25
+ smart_union = True
26
+ extra = pydantic.Extra.allow
@@ -0,0 +1,31 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+
8
+
9
+ class CursorConfig(UniversalBaseModel):
10
+ """
11
+ Controls incremental sync cursor behavior.
12
+ """
13
+
14
+ skip_load: typing.Optional[bool] = pydantic.Field(default=None)
15
+ """
16
+ Don't load cursor (fetch all entities)
17
+ """
18
+
19
+ skip_updates: typing.Optional[bool] = pydantic.Field(default=None)
20
+ """
21
+ Don't persist cursor progress
22
+ """
23
+
24
+ if IS_PYDANTIC_V2:
25
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
26
+ else:
27
+
28
+ class Config:
29
+ frozen = True
30
+ smart_union = True
31
+ extra = pydantic.Extra.allow
@@ -0,0 +1,41 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+
8
+
9
+ class DestinationConfig(UniversalBaseModel):
10
+ """
11
+ Controls where entities are written.
12
+ """
13
+
14
+ skip_qdrant: typing.Optional[bool] = pydantic.Field(default=None)
15
+ """
16
+ Skip writing to native Qdrant
17
+ """
18
+
19
+ skip_vespa: typing.Optional[bool] = pydantic.Field(default=None)
20
+ """
21
+ Skip writing to native Vespa
22
+ """
23
+
24
+ target_destinations: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
25
+ """
26
+ If set, ONLY write to these destination UUIDs
27
+ """
28
+
29
+ exclude_destinations: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
30
+ """
31
+ Skip these destination UUIDs
32
+ """
33
+
34
+ if IS_PYDANTIC_V2:
35
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
36
+ else:
37
+
38
+ class Config:
39
+ frozen = True
40
+ smart_union = True
41
+ extra = pydantic.Extra.allow
@@ -0,0 +1,35 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ import pydantic
7
+ import typing_extensions
8
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
9
+ from ..core.serialization import FieldMetadata
10
+
11
+
12
+ class EndpointOut(UniversalBaseModel):
13
+ channels: typing.Optional[typing.List[str]] = None
14
+ created_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="createdAt")]
15
+ description: str
16
+ disabled: typing.Optional[bool] = None
17
+ filter_types: typing_extensions.Annotated[typing.Optional[typing.List[str]], FieldMetadata(alias="filterTypes")] = (
18
+ None
19
+ )
20
+ id: str
21
+ metadata: typing.Dict[str, str]
22
+ rate_limit: typing_extensions.Annotated[typing.Optional[int], FieldMetadata(alias="rateLimit")] = None
23
+ uid: typing.Optional[str] = None
24
+ updated_at: typing_extensions.Annotated[dt.datetime, FieldMetadata(alias="updatedAt")]
25
+ url: str
26
+ version: int
27
+
28
+ if IS_PYDANTIC_V2:
29
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
30
+ else:
31
+
32
+ class Config:
33
+ frozen = True
34
+ smart_union = True
35
+ extra = pydantic.Extra.allow
@@ -0,0 +1,19 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+
8
+
9
+ class EndpointSecretOut(UniversalBaseModel):
10
+ key: str
11
+
12
+ if IS_PYDANTIC_V2:
13
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
14
+ else:
15
+
16
+ class Config:
17
+ frozen = True
18
+ smart_union = True
19
+ extra = pydantic.Extra.allow
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ EventType = typing.Union[
6
+ typing.Literal["sync.pending", "sync.running", "sync.completed", "sync.failed", "sync.cancelled"], typing.Any
7
+ ]
@@ -3,6 +3,13 @@
3
3
  import typing
4
4
 
5
5
  FeatureFlag = typing.Union[
6
- typing.Literal["s3_destination", "priority_support", "source_rate_limiting", "zephyr_scale", "api_key_admin_sync"],
6
+ typing.Literal[
7
+ "s3_destination",
8
+ "priority_support",
9
+ "source_rate_limiting",
10
+ "zephyr_scale",
11
+ "sharepoint_2019_v2",
12
+ "api_key_admin_sync",
13
+ ],
7
14
  typing.Any,
8
15
  ]
airweave/types/filter.py CHANGED
@@ -42,12 +42,12 @@ class Filter(UniversalBaseModel):
42
42
  from .min_should import MinShould # noqa: E402, F401, I001
43
43
  from .nested import Nested # noqa: E402, F401, I001
44
44
  from .nested_condition import NestedCondition # noqa: E402, F401, I001
45
- from .min_should_conditions_item import MinShouldConditionsItem # noqa: E402, F401, I001
46
- from .must import Must # noqa: E402, F401, I001
47
45
  from .should import Should # noqa: E402, F401, I001
48
- from .filter_must_not_item import FilterMustNotItem # noqa: E402, F401, I001
49
46
  from .filter_must_not import FilterMustNot # noqa: E402, F401, I001
50
- from .filter_must_item import FilterMustItem # noqa: E402, F401, I001
51
47
  from .filter_should_item import FilterShouldItem # noqa: E402, F401, I001
48
+ from .filter_must_not_item import FilterMustNotItem # noqa: E402, F401, I001
49
+ from .min_should_conditions_item import MinShouldConditionsItem # noqa: E402, F401, I001
50
+ from .must import Must # noqa: E402, F401, I001
51
+ from .filter_must_item import FilterMustItem # noqa: E402, F401, I001
52
52
 
53
53
  update_forward_refs(Filter)
@@ -0,0 +1,36 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+
8
+
9
+ class HandlerConfig(UniversalBaseModel):
10
+ """
11
+ Controls which handlers run during sync.
12
+ """
13
+
14
+ enable_vector_handlers: typing.Optional[bool] = pydantic.Field(default=None)
15
+ """
16
+ Enable VectorDBHandler
17
+ """
18
+
19
+ enable_raw_data_handler: typing.Optional[bool] = pydantic.Field(default=None)
20
+ """
21
+ Enable RawDataHandler (ARF)
22
+ """
23
+
24
+ enable_postgres_handler: typing.Optional[bool] = pydantic.Field(default=None)
25
+ """
26
+ Enable EntityPostgresHandler
27
+ """
28
+
29
+ if IS_PYDANTIC_V2:
30
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
31
+ else:
32
+
33
+ class Config:
34
+ frozen = True
35
+ smart_union = True
36
+ extra = pydantic.Extra.allow
@@ -0,0 +1,37 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ import pydantic
7
+ import typing_extensions
8
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
9
+ from ..core.serialization import FieldMetadata
10
+ from .message_attempt_trigger_type import MessageAttemptTriggerType
11
+ from .message_out import MessageOut
12
+ from .message_status import MessageStatus
13
+ from .message_status_text import MessageStatusText
14
+
15
+
16
+ class MessageAttemptOut(UniversalBaseModel):
17
+ endpoint_id: typing_extensions.Annotated[str, FieldMetadata(alias="endpointId")]
18
+ id: str
19
+ msg: typing.Optional[MessageOut] = None
20
+ msg_id: typing_extensions.Annotated[str, FieldMetadata(alias="msgId")]
21
+ response: str
22
+ response_duration_ms: typing_extensions.Annotated[int, FieldMetadata(alias="responseDurationMs")]
23
+ response_status_code: typing_extensions.Annotated[int, FieldMetadata(alias="responseStatusCode")]
24
+ status: MessageStatus
25
+ status_text: typing_extensions.Annotated[MessageStatusText, FieldMetadata(alias="statusText")]
26
+ timestamp: dt.datetime
27
+ trigger_type: typing_extensions.Annotated[MessageAttemptTriggerType, FieldMetadata(alias="triggerType")]
28
+ url: str
29
+
30
+ if IS_PYDANTIC_V2:
31
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
32
+ else:
33
+
34
+ class Config:
35
+ frozen = True
36
+ smart_union = True
37
+ extra = pydantic.Extra.allow
@@ -0,0 +1,3 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ MessageAttemptTriggerType = int
@@ -0,0 +1,29 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ import pydantic
7
+ import typing_extensions
8
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
9
+ from ..core.serialization import FieldMetadata
10
+
11
+
12
+ class MessageOut(UniversalBaseModel):
13
+ channels: typing.Optional[typing.List[str]] = None
14
+ deliver_at: typing_extensions.Annotated[typing.Optional[dt.datetime], FieldMetadata(alias="deliverAt")] = None
15
+ event_id: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="eventId")] = None
16
+ event_type: typing_extensions.Annotated[str, FieldMetadata(alias="eventType")]
17
+ id: str
18
+ payload: typing.Dict[str, typing.Optional[typing.Any]]
19
+ tags: typing.Optional[typing.List[str]] = None
20
+ timestamp: dt.datetime
21
+
22
+ if IS_PYDANTIC_V2:
23
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
24
+ else:
25
+
26
+ class Config:
27
+ frozen = True
28
+ smart_union = True
29
+ extra = pydantic.Extra.allow
@@ -0,0 +1,3 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ MessageStatus = int
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ MessageStatusText = typing.Union[typing.Literal["success", "pending", "fail", "sending"], typing.Any]
@@ -0,0 +1,25 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .event_type import EventType
8
+
9
+
10
+ class PatchSubscriptionRequest(UniversalBaseModel):
11
+ """
12
+ Request model for updating an existing webhook subscription.
13
+ """
14
+
15
+ url: typing.Optional[str] = None
16
+ event_types: typing.Optional[typing.List[EventType]] = None
17
+
18
+ if IS_PYDANTIC_V2:
19
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
20
+ else:
21
+
22
+ class Config:
23
+ frozen = True
24
+ smart_union = True
25
+ extra = pydantic.Extra.allow
@@ -8,17 +8,17 @@ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
8
 
9
9
  class S3ConfigRequest(UniversalBaseModel):
10
10
  """
11
- Request to configure S3 destination.
11
+ Request to configure S3 destination with IAM role.
12
12
  """
13
13
 
14
- aws_access_key_id: str = pydantic.Field()
14
+ role_arn: str = pydantic.Field()
15
15
  """
16
- AWS access key ID
16
+ IAM Role ARN to assume (e.g., arn:aws:iam::123456789012:role/airweave-writer)
17
17
  """
18
18
 
19
- aws_secret_access_key: str = pydantic.Field()
19
+ external_id: str = pydantic.Field()
20
20
  """
21
- AWS secret access key
21
+ External ID for secure cross-account trust policy
22
22
  """
23
23
 
24
24
  bucket_name: str = pydantic.Field()
@@ -36,16 +36,6 @@ class S3ConfigRequest(UniversalBaseModel):
36
36
  AWS region
37
37
  """
38
38
 
39
- endpoint_url: typing.Optional[str] = pydantic.Field(default=None)
40
- """
41
- Custom S3 endpoint
42
- """
43
-
44
- use_ssl: typing.Optional[bool] = pydantic.Field(default=None)
45
- """
46
- Use SSL/TLS
47
- """
48
-
49
39
  if IS_PYDANTIC_V2:
50
40
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
51
41
  else:
@@ -39,7 +39,7 @@ class SearchRequest(UniversalBaseModel):
39
39
 
40
40
  temporal_relevance: typing.Optional[float] = pydantic.Field(default=None)
41
41
  """
42
- Weight recent content higher than older content; 0 = no recency effect, 1 = only recent items matter
42
+ Weight recent content higher than older content; 0 = no recency effect, 1 = only recent items matter. NOTE: This feature is currently under construction and will be ignored.
43
43
  """
44
44
 
45
45
  expand_query: typing.Optional[bool] = pydantic.Field(default=None)
airweave/types/source.py CHANGED
@@ -83,11 +83,21 @@ class Source(UniversalBaseModel):
83
83
  Whether this source's entities have timestamps that enable recency-based ranking. Sources without file-level timestamps (e.g., code repositories) cannot use temporal relevance for search result weighting.
84
84
  """
85
85
 
86
+ supports_access_control: typing.Optional[bool] = pydantic.Field(default=None)
87
+ """
88
+ Whether this source supports document-level access control. Sources with this capability extract ACL information from the source and apply it during search to filter results based on user permissions.
89
+ """
90
+
86
91
  rate_limit_level: typing.Optional[str] = pydantic.Field(default=None)
87
92
  """
88
93
  Rate limiting level for this source: 'org' (organization-wide), 'connection' (per-connection/per-user), or None (no rate limiting).
89
94
  """
90
95
 
96
+ feature_flag: typing.Optional[str] = pydantic.Field(default=None)
97
+ """
98
+ Feature flag required to access this source. If set, only organizations with this feature enabled can see/use this source.
99
+ """
100
+
91
101
  id: str = pydantic.Field()
92
102
  """
93
103
  Unique system identifier for this source type. Generated automatically when the source is registered.
@@ -0,0 +1,26 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .endpoint_out import EndpointOut
8
+ from .message_attempt_out import MessageAttemptOut
9
+
10
+
11
+ class SubscriptionWithAttemptsOut(UniversalBaseModel):
12
+ """
13
+ Response model for a subscription with its message attempts.
14
+ """
15
+
16
+ endpoint: EndpointOut
17
+ message_attempts: typing.List[MessageAttemptOut]
18
+
19
+ if IS_PYDANTIC_V2:
20
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
21
+ else:
22
+
23
+ class Config:
24
+ frozen = True
25
+ smart_union = True
26
+ extra = pydantic.Extra.allow
airweave/types/sync.py CHANGED
@@ -5,6 +5,7 @@ import typing
5
5
 
6
6
  import pydantic
7
7
  from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from .sync_config import SyncConfig
8
9
  from .sync_status import SyncStatus
9
10
 
10
11
 
@@ -22,6 +23,7 @@ class Sync(UniversalBaseModel):
22
23
  temporal_schedule_id: typing.Optional[str] = None
23
24
  sync_type: typing.Optional[str] = None
24
25
  sync_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None
26
+ sync_config: typing.Optional[SyncConfig] = None
25
27
  status: SyncStatus
26
28
  id: str
27
29
  organization_id: str
@@ -0,0 +1,34 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .behavior_config import BehaviorConfig
8
+ from .cursor_config import CursorConfig
9
+ from .destination_config import DestinationConfig
10
+ from .handler_config import HandlerConfig
11
+
12
+
13
+ class SyncConfig(UniversalBaseModel):
14
+ """
15
+ Sync configuration with automatic env var loading.
16
+
17
+ Env vars use double underscore as delimiter:
18
+ SYNC_CONFIG__DESTINATIONS__SKIP_QDRANT=true
19
+ SYNC_CONFIG__HANDLERS__ENABLE_VECTOR_HANDLERS=false
20
+ """
21
+
22
+ destinations: typing.Optional[DestinationConfig] = None
23
+ handlers: typing.Optional[HandlerConfig] = None
24
+ cursor: typing.Optional[CursorConfig] = None
25
+ behavior: typing.Optional[BehaviorConfig] = None
26
+
27
+ if IS_PYDANTIC_V2:
28
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
29
+ else:
30
+
31
+ class Config:
32
+ frozen = True
33
+ smart_union = True
34
+ extra = pydantic.Extra.allow
@@ -5,6 +5,7 @@ import typing
5
5
 
6
6
  import pydantic
7
7
  from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from .sync_config import SyncConfig
8
9
  from .sync_status import SyncStatus
9
10
 
10
11
 
@@ -22,6 +23,7 @@ class SyncCreate(UniversalBaseModel):
22
23
  temporal_schedule_id: typing.Optional[str] = None
23
24
  sync_type: typing.Optional[str] = None
24
25
  sync_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None
26
+ sync_config: typing.Optional[SyncConfig] = None
25
27
  status: typing.Optional[SyncStatus] = None
26
28
  run_immediately: typing.Optional[bool] = None
27
29
 
@@ -5,6 +5,7 @@ import typing
5
5
 
6
6
  import pydantic
7
7
  from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from .sync_config import SyncConfig
8
9
  from .sync_job_status import SyncJobStatus
9
10
 
10
11
 
@@ -27,7 +28,8 @@ class SyncJob(UniversalBaseModel):
27
28
  failed_at: typing.Optional[dt.datetime] = None
28
29
  error: typing.Optional[str] = None
29
30
  access_token: typing.Optional[str] = None
30
- execution_config_json: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None
31
+ sync_config: typing.Optional[SyncConfig] = None
32
+ sync_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None
31
33
  id: str
32
34
  organization_id: str
33
35
  created_by_email: typing.Optional[str] = None
@@ -5,6 +5,7 @@ import typing
5
5
 
6
6
  import pydantic
7
7
  from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+ from .sync_config import SyncConfig
8
9
  from .sync_status import SyncStatus
9
10
 
10
11
 
@@ -17,6 +18,7 @@ class SyncUpdate(UniversalBaseModel):
17
18
  cron_schedule: typing.Optional[str] = None
18
19
  next_scheduled_run: typing.Optional[dt.datetime] = None
19
20
  sync_metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None
21
+ sync_config: typing.Optional[SyncConfig] = None
20
22
  status: typing.Optional[SyncStatus] = None
21
23
  temporal_schedule_id: typing.Optional[str] = None
22
24
  sync_type: typing.Optional[str] = None