Module airbyte_agent_sdk.connectors.pylon.connector
Pylon connector.
Classes
AccountsQuery(connector: PylonConnector)
: Query class for Accounts entity operations.
Initialize query with connector reference.
Methods
context_store_search(self, query: AccountsSearchQuery, limit: int | None = None, cursor: str | None = None, fields: list[list[str]] | None = None) ‑> airbyte_agent_sdk.connectors.pylon.models.AirbyteSearchResult[AccountsSearchData]
: Search accounts records from Airbyte cache.
This operation searches cached data from Airbyte syncs. Only available in hosted execution mode.
Available filter fields (AccountsSearchFilter):
- id: Unique identifier for the account
- name: Name of the account (customer organization)
- domain: Primary domain associated with the account
- primary_domain: Canonical primary domain for the account
- type_: Classification of the account (e.g. customer, prospect)
- is_disabled: Whether the account has been disabled
- created_at: Timestamp when the account was created, in ISO 8601 format
- latest_customer_activity_time: Timestamp of the most recent activity from this account, in ISO 8601 format
Args: query: Filter and sort conditions. Supports operators like eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or. Example: {"filter": {"eq": {"status": "active"}}} limit: Maximum results to return (default 1000) cursor: Pagination cursor from previous response's meta.cursor fields: Field paths to include in results. Each path is a list of keys for nested access. Example: [["id"], ["user", "name"]] returns id and user.name fields.
Returns: AccountsSearchResult with typed records, pagination metadata, and optional search metadata
Raises: NotImplementedError: If called in local execution mode
create(self, name: str, domains: list[str] | None = None, primary_domain: str | None = None, owner_id: str | None = None, logo_url: str | None = None, tags: list[str] | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.AccountResponse
: Create a new account
Args: name: The name of the account domains: The domains of the account (e.g. stripe.com) primary_domain: Must be in the list of domains. If there are any domains, there must be exactly one primary domain. owner_id: The ID of the owner of the account logo_url: The logo URL of the account. Must be a square .png, .jpg or .jpeg. tags: Tags to associate with the account **kwargs: Additional parameters
Returns: AccountResponse
get(self, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.Account
: Get a single account by ID
Args: id: The ID of the account **kwargs: Additional parameters
Returns: Account
list(self, cursor: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.PylonExecuteResultWithMeta[list[Account], AccountsListResultMeta]
: Get a list of accounts
Args: cursor: Cursor for pagination **kwargs: Additional parameters
Returns: AccountsListResult
update(self, name: str | None = None, domains: list[str] | None = None, primary_domain: str | None = None, owner_id: str | None = None, logo_url: str | None = None, is_disabled: bool | None = None, tags: list[str] | None = None, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.AccountResponse
: Update an existing account by ID
Args: name: The name of the account domains: Domains of the account. Must specify one domain as primary. primary_domain: Must be in the list of domains. If there are any domains, there must be exactly one primary domain. owner_id: The ID of the owner of the account. If empty string is passed in, the owner will be removed. logo_url: Logo URL of the account is_disabled: Whether the account is disabled tags: Tags to associate with the account id: The ID of the account to update **kwargs: Additional parameters
Returns: AccountResponse
ArticlesQuery(connector: PylonConnector)
: Query class for Articles entity operations.
Initialize query with connector reference.
Methods
create(self, title: str, body_html: str, author_user_id: str, kb_id: str, slug: str | None = None, is_published: bool | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.ArticleResponse
: Create a new article in a knowledge base
Args: title: The title of the article body_html: The HTML body of the article author_user_id: The ID of the user attributed as the author slug: The slug of the article is_published: Whether the article should be published kb_id: The ID of the knowledge base **kwargs: Additional parameters
Returns: ArticleResponse
update(self, kb_id: str, article_id: str, title: str | None = None, body_html: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.ArticleResponse
: Update an existing article in a knowledge base
Args: title: The title of the article body_html: The HTML body of the article kb_id: The ID of the knowledge base article_id: The ID of the article to update **kwargs: Additional parameters
Returns: ArticleResponse
CollectionsQuery(connector: PylonConnector)
: Query class for Collections entity operations.
Initialize query with connector reference.
Methods
create(self, title: str, kb_id: str, description: str | None = None, slug: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.CollectionResponse
: Create a new collection in a knowledge base
Args: title: The title of the collection description: The description of the collection slug: The slug of the collection kb_id: The ID of the knowledge base **kwargs: Additional parameters
Returns: CollectionResponse
ContactsQuery(connector: PylonConnector)
: Query class for Contacts entity operations.
Initialize query with connector reference.
Methods
context_store_search(self, query: ContactsSearchQuery, limit: int | None = None, cursor: str | None = None, fields: list[list[str]] | None = None) ‑> airbyte_agent_sdk.connectors.pylon.models.AirbyteSearchResult[ContactsSearchData]
: Search contacts records from Airbyte cache.
This operation searches cached data from Airbyte syncs. Only available in hosted execution mode.
Available filter fields (ContactsSearchFilter):
- id: Unique identifier for the contact
- name: Full name of the contact
- email: Primary email address of the contact
- primary_phone_number: Primary phone number of the contact
- portal_role: Role the contact has in the customer portal
Args: query: Filter and sort conditions. Supports operators like eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or. Example: {"filter": {"eq": {"status": "active"}}} limit: Maximum results to return (default 1000) cursor: Pagination cursor from previous response's meta.cursor fields: Field paths to include in results. Each path is a list of keys for nested access. Example: [["id"], ["user", "name"]] returns id and user.name fields.
Returns: ContactsSearchResult with typed records, pagination metadata, and optional search metadata
Raises: NotImplementedError: If called in local execution mode
create(self, name: str, email: str | None = None, account_id: str | None = None, avatar_url: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.ContactResponse
: Create a new contact
Args: name: The name of the contact email: The email address of the contact account_id: The ID of the account to associate this contact with avatar_url: The URL of the contact's avatar **kwargs: Additional parameters
Returns: ContactResponse
get(self, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.Contact
: Get a single contact by ID
Args: id: The ID of the contact **kwargs: Additional parameters
Returns: Contact
list(self, cursor: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.PylonExecuteResultWithMeta[list[Contact], ContactsListResultMeta]
: Get a list of contacts
Args: cursor: Cursor for pagination **kwargs: Additional parameters
Returns: ContactsListResult
update(self, name: str | None = None, email: str | None = None, account_id: str | None = None, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.ContactResponse
: Update an existing contact by ID
Args: name: The name of the contact email: The email address of the contact account_id: The ID of the account to associate this contact with id: The ID of the contact to update **kwargs: Additional parameters
Returns: ContactResponse
CustomFieldsQuery(connector: PylonConnector)
: Query class for CustomFields entity operations.
Initialize query with connector reference.
Methods
context_store_search(self, query: CustomFieldsSearchQuery, limit: int | None = None, cursor: str | None = None, fields: list[list[str]] | None = None) ‑> airbyte_agent_sdk.connectors.pylon.models.AirbyteSearchResult[CustomFieldsSearchData]
: Search custom_fields records from Airbyte cache.
This operation searches cached data from Airbyte syncs. Only available in hosted execution mode.
Available filter fields (CustomFieldsSearchFilter):
- id: Unique identifier for the custom field
- label: Display label of the custom field
- slug: URL-safe identifier for the custom field
- type_: Data type of the custom field (e.g. text, select)
- object_type: Type of object this custom field applies to (e.g. issue, account)
- is_read_only: Whether the custom field is read-only
- created_at: Timestamp when the custom field was created, in ISO 8601 format
Args: query: Filter and sort conditions. Supports operators like eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or. Example: {"filter": {"eq": {"status": "active"}}} limit: Maximum results to return (default 1000) cursor: Pagination cursor from previous response's meta.cursor fields: Field paths to include in results. Each path is a list of keys for nested access. Example: [["id"], ["user", "name"]] returns id and user.name fields.
Returns: CustomFieldsSearchResult with typed records, pagination metadata, and optional search metadata
Raises: NotImplementedError: If called in local execution mode
get(self, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.CustomField
: Get a custom field by its ID
Args: id: The ID of the custom field **kwargs: Additional parameters
Returns: CustomField
list(self, object_type: str, cursor: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.PylonExecuteResultWithMeta[list[CustomField], CustomFieldsListResultMeta]
: Get all custom fields for a given object type
Args: object_type: The object type of the custom fields. Can be "account", "issue", or "contact". cursor: Cursor for pagination **kwargs: Additional parameters
Returns: CustomFieldsListResult
IssueAssignmentsQuery(connector: PylonConnector)
: Query class for IssueAssignments entity operations.
Initialize query with connector reference.
Methods
update(self, assignee_id: str | None = None, team_id: str | None = None, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.IssueResponse
: Assign an issue to a user or team, or remove the current assignment.
Args: assignee_id: The ID of the user to assign the issue to. Pass an empty string to unassign. team_id: The ID of the team to assign the issue to. Pass an empty string to remove team assignment. id: The ID of the issue to assign **kwargs: Additional parameters
Returns: IssueResponse
IssueNotesQuery(connector: PylonConnector)
: Query class for IssueNotes entity operations.
Initialize query with connector reference.
Methods
create(self, body_html: str, thread_id: str | None = None, message_id: str | None = None, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.IssueNoteResponse
: Create an internal note on an issue
Args: body_html: The HTML content of the note thread_id: The ID of the thread to add the note to message_id: The ID of the message to add the note to id: The ID of the issue to add a note to **kwargs: Additional parameters
Returns: IssueNoteResponse
IssueRepliesQuery(connector: PylonConnector)
: Query class for IssueReplies entity operations.
Initialize query with connector reference.
Methods
create(self, body_html: str, message_id: str, user_id: str | None = None, contact_id: str | None = None, attachment_urls: list[str] | None = None, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.IssueReplyResponse
: Sends a customer-facing reply on an issue, visible to the requester.
Args: body_html: The body of the reply message in HTML message_id: The ID of the message to reply to user_id: Optional user ID to post the message as. Only one of user_id or contact_id can be provided. contact_id: Optional contact ID to post the message as. Only one of user_id or contact_id can be provided. attachment_urls: An array of attachment URLs to attach to this reply id: The ID of the issue to reply to **kwargs: Additional parameters
Returns: IssueReplyResponse
IssueStatusesQuery(connector: PylonConnector)
: Query class for IssueStatuses entity operations.
Initialize query with connector reference.
Methods
update(self, state: str, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.IssueResponse
: Transition an issue to a new status (new, waiting_on_you, waiting_on_customer, on_hold, closed, or a custom status slug).
Args: state: The target state for the issue (new, waiting_on_you, waiting_on_customer, on_hold, closed, or a custom status slug) id: The ID of the issue to update status for **kwargs: Additional parameters
Returns: IssueResponse
IssueThreadsQuery(connector: PylonConnector)
: Query class for IssueThreads entity operations.
Initialize query with connector reference.
Methods
create(self, name: str | None = None, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.IssueThreadResponse
: Create a new thread on an issue
Args: name: The name of the thread id: The ID of the issue to create a thread on **kwargs: Additional parameters
Returns: IssueThreadResponse
IssuesQuery(connector: PylonConnector)
: Query class for Issues entity operations.
Initialize query with connector reference.
Methods
context_store_search(self, query: IssuesSearchQuery, limit: int | None = None, cursor: str | None = None, fields: list[list[str]] | None = None) ‑> airbyte_agent_sdk.connectors.pylon.models.AirbyteSearchResult[IssuesSearchData]
: Search issues records from Airbyte cache.
This operation searches cached data from Airbyte syncs. Only available in hosted execution mode.
Available filter fields (IssuesSearchFilter):
- id: Unique identifier for the issue
- title: Title of the issue
- state: Current state of the issue (e.g. new, in_progress, closed)
- source: Channel the issue originated from (e.g. email, slack)
- type_: Type classification of the issue
- number: Human-readable issue number within the workspace
- created_at: Timestamp when the issue was created, in ISO 8601 format
- latest_message_time: Timestamp of the most recent message on the issue, in ISO 8601 format
- resolution_time: Timestamp when the issue was resolved, in ISO 8601 format
- snoozed_until_time: Timestamp the issue is snoozed until, in ISO 8601 format
- customer_portal_visible: Whether the issue is visible in the customer portal
Args: query: Filter and sort conditions. Supports operators like eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or. Example: {"filter": {"eq": {"status": "active"}}} limit: Maximum results to return (default 1000) cursor: Pagination cursor from previous response's meta.cursor fields: Field paths to include in results. Each path is a list of keys for nested access. Example: [["id"], ["user", "name"]] returns id and user.name fields.
Returns: IssuesSearchResult with typed records, pagination metadata, and optional search metadata
Raises: NotImplementedError: If called in local execution mode
create(self, title: str, body_html: str, priority: str | None = None, requester_email: str | None = None, requester_name: str | None = None, account_id: str | None = None, assignee_id: str | None = None, team_id: str | None = None, tags: list[str] | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.IssueResponse
: Create a new issue
Args: title: The title of the issue body_html: The HTML content of the body of the issue priority: The priority of the issue (urgent, high, medium, low) requester_email: The email of the requester requester_name: The full name of the requester account_id: The account that this issue belongs to assignee_id: The user the issue should be assigned to team_id: The ID of the team this issue should be assigned to tags: Tags to associate with the issue **kwargs: Additional parameters
Returns: IssueResponse
delete(self, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.DeleteIssueResponse
: Permanently deletes an issue by ID. This action cannot be undone.
Args: id: The ID of the issue to delete **kwargs: Additional parameters
Returns: DeleteIssueResponse
get(self, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.Issue
: Get a single issue by ID
Args: id: The ID of the issue **kwargs: Additional parameters
Returns: Issue
list(self, start_time: str, end_time: str, cursor: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.PylonExecuteResultWithMeta[list[Issue], IssuesListResultMeta]
: Get a list of issues within a time range
Args: start_time: The start time (RFC3339) of the time range to get issues for. end_time: The end time (RFC3339) of the time range to get issues for. cursor: Cursor for pagination **kwargs: Additional parameters
Returns: IssuesListResult
update(self, state: str | None = None, assignee_id: str | None = None, team_id: str | None = None, account_id: str | None = None, tags: list[str] | None = None, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.IssueResponse
: Update an existing issue by ID
Args: state: The state of the issue (open, snoozed, closed) assignee_id: The user the issue should be assigned to team_id: The ID of the team this issue should be assigned to account_id: The account that this issue belongs to tags: Tags to associate with the issue id: The ID of the issue to update **kwargs: Additional parameters
Returns: IssueResponse
MeQuery(connector: PylonConnector)
: Query class for Me entity operations.
Initialize query with connector reference.
Methods
get(self, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.User
: Get the currently authenticated user
Returns: User
MessagesQuery(connector: PylonConnector)
: Query class for Messages entity operations.
Initialize query with connector reference.
Methods
context_store_search(self, query: MessagesSearchQuery, limit: int | None = None, cursor: str | None = None, fields: list[list[str]] | None = None) ‑> airbyte_agent_sdk.connectors.pylon.models.AirbyteSearchResult[MessagesSearchData]
: Search messages records from Airbyte cache.
This operation searches cached data from Airbyte syncs. Only available in hosted execution mode.
Available filter fields (MessagesSearchFilter):
- id: Unique identifier for the message
- timestamp: Timestamp the message was posted, in ISO 8601 format
- is_private: Whether the message is an internal note (not visible to the customer)
- source: Channel the message was sent through (e.g. email, slack)
- thread_id: Identifier of the thread this message belongs to
Args: query: Filter and sort conditions. Supports operators like eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or. Example: {"filter": {"eq": {"status": "active"}}} limit: Maximum results to return (default 1000) cursor: Pagination cursor from previous response's meta.cursor fields: Field paths to include in results. Each path is a list of keys for nested access. Example: [["id"], ["user", "name"]] returns id and user.name fields.
Returns: MessagesSearchResult with typed records, pagination metadata, and optional search metadata
Raises: NotImplementedError: If called in local execution mode
list(self, id: str | None = None, cursor: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.PylonExecuteResultWithMeta[list[Message], MessagesListResultMeta]
: Returns all messages on an issue (customer-facing replies and internal notes)
Args: id: The ID of the issue to fetch messages for cursor: Cursor for pagination **kwargs: Additional parameters
Returns: MessagesListResult
MilestonesQuery(connector: PylonConnector)
: Query class for Milestones entity operations.
Initialize query with connector reference.
Methods
create(self, name: str, project_id: str, due_date: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.MilestoneResponse
: Create a new milestone
Args: name: The name of the milestone project_id: The project ID for the milestone due_date: The due date of the milestone (RFC3339) **kwargs: Additional parameters
Returns: MilestoneResponse
update(self, name: str | None = None, due_date: str | None = None, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.MilestoneResponse
: Update an existing milestone by ID
Args: name: The name of the milestone due_date: The due date of the milestone (RFC3339) id: The ID of the milestone to update **kwargs: Additional parameters
Returns: MilestoneResponse
ProjectsQuery(connector: PylonConnector)
: Query class for Projects entity operations.
Initialize query with connector reference.
Methods
create(self, name: str, account_id: str, description_html: str | None = None, start_date: str | None = None, end_date: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.ProjectResponse
: Create a new project
Args: name: The name of the project account_id: The account ID for the project description_html: The HTML description of the project start_date: The start date of the project (RFC3339) end_date: The end date of the project (RFC3339) **kwargs: Additional parameters
Returns: ProjectResponse
update(self, name: str | None = None, description_html: str | None = None, is_archived: bool | None = None, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.ProjectResponse
: Update an existing project by ID
Args: name: The name of the project description_html: The HTML description of the project is_archived: Whether the project is archived id: The ID of the project to update **kwargs: Additional parameters
Returns: ProjectResponse
PylonConnector(auth_config: PylonAuthConfig | AirbyteAuthConfig | BaseModel | None = None, on_token_refresh: Any | None = None)
: Type-safe Pylon API connector.
Auto-generated from OpenAPI specification with full type safety.
Initialize a new pylon connector instance.
Supports both local and hosted execution modes:
- Local mode: Provide connector-specific auth config (e.g., PylonAuthConfig)
- Hosted mode: Provide
AirbyteAuthConfigwith client credentials and eitherconnector_idorworkspace_name
Args: auth_config: Either connector-specific auth config for local mode, or AirbyteAuthConfig for hosted mode on_token_refresh: Optional callback for OAuth2 token refresh persistence. Called with new_tokens dict when tokens are refreshed. Can be sync or async. Example: lambda tokens: save_to_database(tokens) Examples:
Local mode (direct API calls)
connector = PylonConnector(auth_config=PylonAuthConfig(api_token="..."))
Hosted mode with explicit connector_id (no lookup needed)
connector = PylonConnector( auth_config=AirbyteAuthConfig( airbyte_client_id="client_abc123", airbyte_client_secret="secret_xyz789", connector_id="existing-source-uuid" ) )
Hosted mode with lookup by workspace_name
connector = PylonConnector( auth_config=AirbyteAuthConfig( workspace_name="user-123", organization_id="00000000-0000-0000-0000-000000000123", airbyte_client_id="client_abc123", airbyte_client_secret="secret_xyz789" ) )
Class variables
connector_name
: The type of the None singleton.
connector_version
: The type of the None singleton.
sdk_version
: The type of the None singleton.
Static methods
create(*, airbyte_config: AirbyteAuthConfig, auth_config: "'PylonAuthConfig'", name: str | None = None, replication_config: dict[str, Any] | None = None, source_template_id: str | None = None) ‑> airbyte_agent_sdk.connectors.pylon.connector.PylonConnector
: Create a new hosted connector on Airbyte Cloud.
This factory method:
- Creates a source on Airbyte Cloud with the provided credentials
- Returns a connector configured with the new connector_id
Args: airbyte_config: Airbyte hosted auth config with client credentials and workspace_name. Optionally include organization_id for multi-org request routing. auth_config: Typed auth config (same as local mode) name: Optional source name (defaults to connector name + workspace_name) replication_config: Optional replication settings dict. Required for connectors with x-airbyte-replication-config (REPLICATION mode sources). source_template_id: Source template ID. Required when organization has multiple source templates for this connector type.
Returns: A PylonConnector instance configured in hosted mode
Example:
Create a new hosted connector with API key auth
connector = await PylonConnector.create( airbyte_config=AirbyteAuthConfig( workspace_name="my-workspace", organization_id="00000000-0000-0000-0000-000000000123", airbyte_client_id="client_abc", airbyte_client_secret="secret_xyz", ), auth_config=PylonAuthConfig(api_token="..."), )
Use the connector
result = await connector.execute("entity", "list", {})
tool_utils(func: _F | None = None, *, update_docstring: bool = True, max_output_chars: int | None = 100000, framework: FrameworkName | None = None, internal_retries: int = 0, should_internal_retry: Callable[[Exception, tuple[Any, ...], dict[str, Any]], bool] | None = None, exhausted_runtime_failure_message: Callable[[Exception, tuple[Any, ...], dict[str, Any]], str | None] | None = None) ‑> ~_F | Callable[[~_F], ~_F]
: Decorator that adds tool utilities like docstring augmentation and output limits.
Composes :func:airbyte_agent_sdk.translation.translate_exceptions for
runtime wrapping (sync/async branch + output-size check + framework
signal translation + optional internal retry loop), and adds
connector-specific docstring augmentation on top of it.
Usage: @mcp.tool() @PylonConnector.tool_utils async def execute(entity: str, action: str, params: dict): ...
@mcp.tool() @PylonConnector.tool_utils(update_docstring=False, max_output_chars=None) async def execute(entity: str, action: str, params: dict): ...
@mcp.tool() @PylonConnector.tool_utils(framework="pydantic_ai", internal_retries=2) async def execute(entity: str, action: str, params: dict): ...
Args:
update_docstring: When True, append connector capabilities to doc.
max_output_chars: Max serialized output size before raising. Use None to disable.
framework: One of "pydantic_ai" | "langchain" | "openai_agents" | "mcp".
Defaults to None → auto-detect by attempting each framework's canonical
import in order. Explicit always wins.
internal_retries: How many transient runtime failures (429/5xx, network,
timeout) to retry silently before surfacing. Default 0. Forwarded to
:func:airbyte_agent_sdk.translation.translate_exceptions.
should_internal_retry: Optional predicate (error, args, kwargs) -> bool
further restricting which retryable errors are safe for this specific
tool. Forwarded to
:func:airbyte_agent_sdk.translation.translate_exceptions.
exhausted_runtime_failure_message: Optional callback
(error, args, kwargs) -> str | None. Invoked after internal retries
are exhausted OR were skipped via should_internal_retry returning
False. Forwarded to
:func:airbyte_agent_sdk.translation.translate_exceptions.
Instance variables
connector_id: str | None
: Get the connector/source ID (only available in hosted mode).
Returns: The connector ID if in hosted mode, None if in local mode.
Example: connector = await PylonConnector.create(...) print(f"Created connector: {connector.connector_id}")
Methods
check(self) ‑> airbyte_agent_sdk.connectors.pylon.models.PylonCheckResult
: Perform a health check to verify connectivity and credentials.
Executes a lightweight list operation (limit=1) to validate that the connector can communicate with the API and credentials are valid.
Returns: PylonCheckResult with status ("healthy" or "unhealthy") and optional error message
Example: result = await connector.check() if result.status == "healthy": print("Connection verified!") else: print(f"Check failed: {result.error}")
close(self)
: Close the connector and release resources.
entity_schema(self, entity: str) ‑> dict[str, typing.Any] | None
: Get the JSON schema for an entity.
Args: entity: Entity name (e.g., "contacts", "companies")
Returns: JSON schema dict describing the entity structure, or None if not found.
Example: schema = connector.entity_schema("contacts") if schema: print(f"Contact properties: {list(schema.get('properties', {}).keys())}")
execute(self, entity: str, action: "Literal['list', 'create', 'get', 'update', 'delete', 'context_store_search']", params: Mapping[str, Any] | None = None) ‑> Any
: Execute an entity operation with full type safety.
This is the recommended interface for blessed connectors as it:
- Uses the same signature as non-blessed connectors
- Provides full IDE autocomplete for entity/action/params
- Makes migration from generic to blessed connectors seamless
Args: entity: Entity name (e.g., "customers") action: Operation action (e.g., "create", "get", "list") params: Operation parameters (typed based on entity+action)
Returns: Typed response based on the operation
Example: customer = await connector.execute( entity="customers", action="get", params={"id": "cus_123"} )
list_entities(self) ‑> list[dict[str, typing.Any]]
: Get structured data about available entities, actions, and parameters.
Returns a list of entity descriptions with:
- entity_name: Name of the entity (e.g., "contacts", "deals")
- description: Entity description from the first endpoint
- available_actions: List of actions (e.g., ["list", "get", "create"])
- parameters: Dict mapping action -> list of parameter dicts
Example: entities = connector.list_entities() for entity in entities: print(f"{entity['entity_name']}: {entity['available_actions']}")
TagsQuery(connector: PylonConnector)
: Query class for Tags entity operations.
Initialize query with connector reference.
Methods
context_store_search(self, query: TagsSearchQuery, limit: int | None = None, cursor: str | None = None, fields: list[list[str]] | None = None) ‑> airbyte_agent_sdk.connectors.pylon.models.AirbyteSearchResult[TagsSearchData]
: Search tags records from Airbyte cache.
This operation searches cached data from Airbyte syncs. Only available in hosted execution mode.
Available filter fields (TagsSearchFilter):
- id: Unique identifier for the tag
- value: Display value of the tag
- object_type: Type of object this tag applies to (e.g. issue, account)
Args: query: Filter and sort conditions. Supports operators like eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or. Example: {"filter": {"eq": {"status": "active"}}} limit: Maximum results to return (default 1000) cursor: Pagination cursor from previous response's meta.cursor fields: Field paths to include in results. Each path is a list of keys for nested access. Example: [["id"], ["user", "name"]] returns id and user.name fields.
Returns: TagsSearchResult with typed records, pagination metadata, and optional search metadata
Raises: NotImplementedError: If called in local execution mode
create(self, value: str, object_type: str, hex_color: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.TagResponse
: Create a new tag
Args: value: The tag value object_type: The object type (issue, account, contact) hex_color: The hex color code of the tag **kwargs: Additional parameters
Returns: TagResponse
get(self, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.Tag
: Get a tag by its ID
Args: id: The ID of the tag **kwargs: Additional parameters
Returns: Tag
list(self, cursor: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.PylonExecuteResultWithMeta[list[Tag], TagsListResultMeta]
: Get all tags
Args: cursor: Cursor for pagination **kwargs: Additional parameters
Returns: TagsListResult
update(self, value: str | None = None, hex_color: str | None = None, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.TagResponse
: Update an existing tag by ID
Args: value: The tag value hex_color: The hex color code of the tag id: The ID of the tag to update **kwargs: Additional parameters
Returns: TagResponse
TasksQuery(connector: PylonConnector)
: Query class for Tasks entity operations.
Initialize query with connector reference.
Methods
create(self, title: str, body_html: str | None = None, status: str | None = None, assignee_id: str | None = None, project_id: str | None = None, milestone_id: str | None = None, due_date: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.TaskResponse
: Create a new task
Args: title: The title of the task body_html: The body HTML of the task status: The status of the task (not_started, in_progress, completed) assignee_id: The assignee ID for the task project_id: The project ID for the task milestone_id: The milestone ID for the task due_date: The due date for the task (RFC3339) **kwargs: Additional parameters
Returns: TaskResponse
update(self, title: str | None = None, body_html: str | None = None, status: str | None = None, assignee_id: str | None = None, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.TaskResponse
: Update an existing task by ID
Args: title: The title of the task body_html: The body HTML of the task status: The status of the task (not_started, in_progress, completed) assignee_id: The assignee ID for the task id: The ID of the task to update **kwargs: Additional parameters
Returns: TaskResponse
TeamsQuery(connector: PylonConnector)
: Query class for Teams entity operations.
Initialize query with connector reference.
Methods
context_store_search(self, query: TeamsSearchQuery, limit: int | None = None, cursor: str | None = None, fields: list[list[str]] | None = None) ‑> airbyte_agent_sdk.connectors.pylon.models.AirbyteSearchResult[TeamsSearchData]
: Search teams records from Airbyte cache.
This operation searches cached data from Airbyte syncs. Only available in hosted execution mode.
Available filter fields (TeamsSearchFilter):
- id: Unique identifier for the team
- name: Name of the team
Args: query: Filter and sort conditions. Supports operators like eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or. Example: {"filter": {"eq": {"status": "active"}}} limit: Maximum results to return (default 1000) cursor: Pagination cursor from previous response's meta.cursor fields: Field paths to include in results. Each path is a list of keys for nested access. Example: [["id"], ["user", "name"]] returns id and user.name fields.
Returns: TeamsSearchResult with typed records, pagination metadata, and optional search metadata
Raises: NotImplementedError: If called in local execution mode
create(self, name: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.TeamResponse
: Create a new team
Args: name: The name of the team **kwargs: Additional parameters
Returns: TeamResponse
get(self, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.Team
: Get a single team by ID
Args: id: The ID of the team **kwargs: Additional parameters
Returns: Team
list(self, cursor: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.PylonExecuteResultWithMeta[list[Team], TeamsListResultMeta]
: Get a list of teams
Args: cursor: Cursor for pagination **kwargs: Additional parameters
Returns: TeamsListResult
update(self, name: str | None = None, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.TeamResponse
: Update an existing team by ID
Args: name: The name of the team id: The ID of the team to update **kwargs: Additional parameters
Returns: TeamResponse
TicketFormsQuery(connector: PylonConnector)
: Query class for TicketForms entity operations.
Initialize query with connector reference.
Methods
context_store_search(self, query: TicketFormsSearchQuery, limit: int | None = None, cursor: str | None = None, fields: list[list[str]] | None = None) ‑> airbyte_agent_sdk.connectors.pylon.models.AirbyteSearchResult[TicketFormsSearchData]
: Search ticket_forms records from Airbyte cache.
This operation searches cached data from Airbyte syncs. Only available in hosted execution mode.
Available filter fields (TicketFormsSearchFilter):
- id: Unique identifier for the ticket form
- name: Display name of the ticket form
- slug: URL-safe identifier for the ticket form
- is_public: Whether the ticket form is publicly accessible
Args: query: Filter and sort conditions. Supports operators like eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or. Example: {"filter": {"eq": {"status": "active"}}} limit: Maximum results to return (default 1000) cursor: Pagination cursor from previous response's meta.cursor fields: Field paths to include in results. Each path is a list of keys for nested access. Example: [["id"], ["user", "name"]] returns id and user.name fields.
Returns: TicketFormsSearchResult with typed records, pagination metadata, and optional search metadata
Raises: NotImplementedError: If called in local execution mode
list(self, cursor: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.PylonExecuteResultWithMeta[list[TicketForm], TicketFormsListResultMeta]
: Get a list of ticket forms
Args: cursor: Cursor for pagination **kwargs: Additional parameters
Returns: TicketFormsListResult
UserRolesQuery(connector: PylonConnector)
: Query class for UserRoles entity operations.
Initialize query with connector reference.
Methods
context_store_search(self, query: UserRolesSearchQuery, limit: int | None = None, cursor: str | None = None, fields: list[list[str]] | None = None) ‑> airbyte_agent_sdk.connectors.pylon.models.AirbyteSearchResult[UserRolesSearchData]
: Search user_roles records from Airbyte cache.
This operation searches cached data from Airbyte syncs. Only available in hosted execution mode.
Available filter fields (UserRolesSearchFilter):
- id: Unique identifier for the user role
- name: Display name of the user role
- slug: URL-safe identifier for the user role
Args: query: Filter and sort conditions. Supports operators like eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or. Example: {"filter": {"eq": {"status": "active"}}} limit: Maximum results to return (default 1000) cursor: Pagination cursor from previous response's meta.cursor fields: Field paths to include in results. Each path is a list of keys for nested access. Example: [["id"], ["user", "name"]] returns id and user.name fields.
Returns: UserRolesSearchResult with typed records, pagination metadata, and optional search metadata
Raises: NotImplementedError: If called in local execution mode
list(self, cursor: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.PylonExecuteResultWithMeta[list[UserRole], UserRolesListResultMeta]
: Get a list of all user roles
Args: cursor: Cursor for pagination **kwargs: Additional parameters
Returns: UserRolesListResult
UsersQuery(connector: PylonConnector)
: Query class for Users entity operations.
Initialize query with connector reference.
Methods
context_store_search(self, query: UsersSearchQuery, limit: int | None = None, cursor: str | None = None, fields: list[list[str]] | None = None) ‑> airbyte_agent_sdk.connectors.pylon.models.AirbyteSearchResult[UsersSearchData]
: Search users records from Airbyte cache.
This operation searches cached data from Airbyte syncs. Only available in hosted execution mode.
Available filter fields (UsersSearchFilter):
- id: Unique identifier for the user
- name: Full name of the user
- email: Primary email address of the user
- role_id: Identifier of the user's role
- status: Current status of the user (e.g. active, disabled)
Args: query: Filter and sort conditions. Supports operators like eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or. Example: {"filter": {"eq": {"status": "active"}}} limit: Maximum results to return (default 1000) cursor: Pagination cursor from previous response's meta.cursor fields: Field paths to include in results. Each path is a list of keys for nested access. Example: [["id"], ["user", "name"]] returns id and user.name fields.
Returns: UsersSearchResult with typed records, pagination metadata, and optional search metadata
Raises: NotImplementedError: If called in local execution mode
get(self, id: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.User
: Get a single user by ID
Args: id: The ID of the user **kwargs: Additional parameters
Returns: User
list(self, cursor: str | None = None, **kwargs) ‑> airbyte_agent_sdk.connectors.pylon.models.PylonExecuteResultWithMeta[list[User], UsersListResultMeta]
: Get a list of users
Args: cursor: Cursor for pagination **kwargs: Additional parameters
Returns: UsersListResult