Python Client SDK Generated by Speakeasy.
Project description
pipeshub-sdk
pipeshub-sdk is the official python client library for integrating Pipeshub into your product and internal tools
Summary
PipesHub API: Unified API documentation for PipesHub services.
PipesHub is an enterprise-grade platform providing:
- User authentication and management
- Document storage and version control
- Knowledge base management
- Enterprise search and conversational AI
- Third-party integrations via connectors
- System configuration management
- Crawling job scheduling
- Email services
Authentication
Most endpoints require JWT Bearer token authentication. Some internal endpoints use scoped tokens for service-to-service communication.
Base URLs
All endpoints use the /api/v1 prefix unless otherwise noted.
Table of Contents
SDK Installation
[!NOTE] Python version upgrade policy
Once a Python version reaches its official end of life date, a 3-month grace period is provided for users to upgrade. Following this grace period, the minimum python version supported in the SDK will be updated.
The SDK can be installed with uv, pip, or poetry package managers.
uv
uv is a fast Python package installer and resolver, designed as a drop-in replacement for pip and pip-tools. It's recommended for its speed and modern Python tooling capabilities.
uv add pipeshub-sdk
PIP
PIP is the default package installer for Python, enabling easy installation and management of packages from PyPI via the command line.
pip install pipeshub-sdk
Poetry
Poetry is a modern tool that simplifies dependency management and package publishing by using a single pyproject.toml file to handle project metadata and dependencies.
poetry add pipeshub-sdk
Shell and script usage with uv
You can use this SDK in a Python shell with uv and the uvx command that comes with it like so:
uvx --from pipeshub-sdk python
It's also possible to write a standalone Python script without needing to set up a whole project like so:
#!/usr/bin/env -S uv run --script
# /// script
# requires-python = ">=3.10"
# dependencies = [
# "pipeshub-sdk",
# ]
# ///
from pipeshub_sdk import Pipeshub
sdk = Pipeshub(
# SDK arguments
)
# Rest of script here...
Once that is saved to a file, you can run it with uv run script.py where
script.py can be replaced with the actual file name.
IDE Support
PyCharm
Generally, the SDK will work well with most IDEs out of the box. However, when using PyCharm, you can enjoy much better integration with Pydantic by installing an additional plugin.
SDK Example Usage
Example
# Synchronous Example
from pipeshub_sdk import Pipeshub
with Pipeshub() as pipeshub:
res = pipeshub.user_account.init_auth(email="user@example.com")
# Handle response
print(res)
The same SDK client can also be used to make asynchronous requests by importing asyncio.
# Asynchronous Example
import asyncio
from pipeshub_sdk import Pipeshub
async def main():
async with Pipeshub() as pipeshub:
res = await pipeshub.user_account.init_auth_async(email="user@example.com")
# Handle response
print(res)
asyncio.run(main())
Authentication
Per-Client Security Schemes
This SDK supports the following security schemes globally:
| Name | Type | Scheme | Environment Variable |
|---|---|---|---|
bearer_auth |
http | HTTP Bearer | PIPESHUB_BEARER_AUTH |
oauth2 |
oauth2 | OAuth2 token | PIPESHUB_OAUTH2 |
You can set the security parameters through the security optional parameter when initializing the SDK client instance. The selected scheme will be used by default to authenticate with the API for all operations that support it. For example:
import os
from pipeshub_sdk import Pipeshub, models
with Pipeshub(
security=models.Security(
bearer_auth=os.getenv("PIPESHUB_BEARER_AUTH", ""),
),
) as pipeshub:
res = pipeshub.user_account.init_auth(email="user@example.com")
# Handle response
print(res)
Per-Operation Security Schemes
Some operations in this SDK require the security scheme to be specified at the request level. For example:
import os
from pipeshub_sdk import Pipeshub, models
with Pipeshub() as pipeshub:
res = pipeshub.user_account.reset_password_with_token(security=models.ResetPasswordWithTokenSecurity(
scoped_token=os.getenv("PIPESHUB_SCOPED_TOKEN", ""),
), password="H9GEHoL829GXj06")
# Handle response
print(res)
Available Resources and Operations
Available methods
AgentConversations
- list_agent_conversations - List agent conversations
- create_agent_conversation - Create agent conversation
- stream_agent_conversation - Create agent conversation with streaming
- get_agent_conversation - Get agent conversation
- delete_agent_conversation - Delete agent conversation
- add_agent_message - Add message to agent conversation
- stream_agent_message - Add message with streaming
- regenerate_agent_answer - Regenerate agent response
AgentTemplates
- list_agent_templates - List agent templates
- create_agent_template - Create agent template
- get_agent_template - Get agent template
- update_agent_template - Update agent template
- delete_agent_template - Delete agent template
Agents
- list_agents - List agents
- create_agent - Create agent
- list_agent_tools - List available tools
- get_agent - Get agent
- update_agent - Update agent
- delete_agent - Delete agent
- get_agent_permissions - Get agent permissions
- update_agent_permissions - Update agent permissions
- share_agent - Share agent
- unshare_agent - Unshare an agent
AIModelsProviders
- get_models_by_type - Get models by type
- get_available_models_by_type - Get available models for selection
- add_ai_model_provider - Add new AI model provider
- update_ai_model_provider - Update AI model provider
- delete_ai_model_provider - Delete AI model provider
- set_default_ai_model - Set default AI model
AuthenticationConfiguration
- set_azure_ad_auth_config - Configure Azure AD authentication
- get_azure_ad_auth_config - Get Azure AD configuration
- set_microsoft_auth_config - Configure Microsoft authentication
- get_microsoft_auth_config - Get Microsoft authentication configuration
- set_google_auth_config - Configure Google authentication
- get_google_auth_config - Get Google authentication configuration
- set_sso_auth_config - Configure SAML SSO authentication
- get_sso_auth_config - Get SAML SSO configuration
- set_o_auth_config - Configure generic OAuth provider
- get_generic_o_auth_config - Get generic OAuth configuration
ConfigurationManager
get_atlassian_oauth_config- Get Atlassian OAuth config :warning: Deprecatedset_atlassian_oauth_config- Set Atlassian OAuth config :warning: Deprecatedget_one_drive_credentials- Get OneDrive credentials :warning: Deprecatedset_one_drive_credentials- Set OneDrive credentials :warning: Deprecatedget_share_point_credentials- Get SharePoint credentials :warning: Deprecatedset_share_point_credentials- Set SharePoint credentials :warning: Deprecatedget_google_workspace_credentials- Get Google Workspace credentials :warning: Deprecatedcreate_google_workspace_credentials- Upload Google Workspace credentials :warning: Deprecatedget_google_workspace_oauth_config- Get Google Workspace OAuth config :warning: Deprecatedset_google_workspace_oauth_config- Set Google Workspace OAuth config :warning: Deprecated- get_slack_bot_configs - Get Slack bot configurations
- create_slack_bot_config - Create Slack bot configuration
- update_slack_bot_config - Update Slack bot configuration
- delete_slack_bot_config - Delete Slack bot configuration
set_metrics_collection_push_interval- Set metrics push interval :warning: Deprecatedset_metrics_collection_remote_server- Set metrics remote server URL :warning: Deprecatedget_ai_models_config- Get AI models configuration :warning: Deprecatedcreate_ai_models_config- Create AI models configuration :warning: Deprecatedget_ai_models_providers- Get AI model providers :warning: Deprecated
Connector
- reindex_record - Reindex single record
- reindex_record_group - Reindex record group
- resync_connector - Resync connector
- get_connector_stats - Get connector statistics
ConnectorConfiguration
- get_connector_config - Get connector configuration
- update_connector_config - Update connector configuration
- update_connector_auth_config - Update authentication configuration
- update_connector_filters_sync_config - Update filters and sync configuration
ConnectorControl
- toggle_connector - Toggle connector sync or agent
ConnectorFilters
- get_connector_filters - Get filter options
- save_connector_filters - Save filter selections
- get_filter_field_options - Get dynamic filter options
ConnectorInstances
- list_connector_instances - List connector instances
- create_connector_instance - Create connector instance
- list_active_connectors - List active connector instances
- list_inactive_connectors - List inactive connector instances
- list_configured_connectors - List configured connector instances
- list_active_agent_connectors - List active agent connectors
- get_connector_instance - Get connector instance
- delete_connector_instance - Delete connector instance
- update_connector_name - Update connector instance name
ConnectorOAuth
- get_o_auth_authorization_url - Get OAuth authorization URL
- handle_o_auth_callback - OAuth callback handler
get_token_from_code- Exchange Google authorization code for tokens :warning: Deprecated
ConnectorRegistry
- get_connector_registry - List available connector types
- get_connector_schema - Get connector configuration schema
Conversations
- create_conversation - Create a new AI conversation
- stream_chat - Create conversation with streaming response
- get_all_conversations - List all conversations
- get_archived_conversations - List archived conversations
- get_conversation_by_id - Get conversation by ID
- delete_conversation_by_id - Delete conversation
- add_message - Add message to conversation
- add_message_stream - Add message with streaming response
- share_conversation - Share conversation with users
- update_conversation_title - Update conversation title
- archive_conversation - Archive conversation
- unarchive_conversation - Unarchive conversation
- regenerate_answer - Regenerate AI response
- update_message_feedback - Submit feedback on AI response
unshare_conversation_by_id- Unshare a conversation :warning: Deprecated
CrawlingJobs
- schedule_crawling_job - Schedule a crawling job
- get_crawling_job_status - Get crawling job status
- remove_crawling_job - Remove a crawling job
get_all_crawling_job_status- Get all crawling job statuses :warning: Deprecatedremove_all_crawling_job- Remove all crawling jobs :warning: Deprecatedpause_crawling_job- Pause a crawling job :warning: Deprecatedresume_crawling_job- Resume a crawling job :warning: Deprecatedget_queue_stats- Get queue statistics :warning: Deprecated
DocumentManagement
- download_document - Download document
upload_document- Upload document :warning: Deprecatedcreate_placeholder_document- Create placeholder document :warning: Deprecatedget_document_by_id- Get document by ID :warning: Deprecateddelete_document_by_id- Delete document by ID :warning: Deprecatedupload_next_version_document- Upload next version of document :warning: Deprecatedroll_back_to_previous_version- Roll back to previous version :warning: Deprecatedget_document_buffer- Get document buffer :warning: Deprecatedcreate_document_buffer_multipart- Create/update document buffer :warning: Deprecatedcreate_document_buffer_raw- Create/update document buffer :warning: Deprecatedupload_direct_document- Direct upload document :warning: Deprecateddocument_diff_checker- Check if document is modified :warning: Deprecated
Folders
- create_root_folder - Create root folder
- get_folder_contents - Get folder contents
- update_folder - Update folder
- delete_folder - Delete folder
- get_folder_children - Get folder children (alias for folder contents)
- create_subfolder - Create subfolder
KnowledgeBases
- create_knowledge_base - Create a new knowledge base
- list_knowledge_bases - List all knowledge bases
- get_knowledge_base - Get knowledge base by ID
- update_knowledge_base - Update knowledge base
- delete_knowledge_base - Delete knowledge base
- reindex_failed_records - Reindex failed records for connector
move_record- Move record to another location :warning: Deprecated- get_knowledge_hub_root_nodes - Get knowledge hub root nodes
- get_knowledge_hub_child_nodes - Get knowledge hub child nodes
MetricsCollection
- get_metrics_collection - Get metrics collection configuration
- toggle_metrics_collection - Enable or disable metrics collection
OAuth
- exchange_o_auth_code - Exchange OAuth authorization code for tokens
OAuthApps
- list_o_auth_apps - List OAuth apps
- create_o_auth_app - Create OAuth app
- list_o_auth_scopes - List available scopes
- get_o_auth_app - Get OAuth app details
- update_o_auth_app - Update OAuth app
- delete_o_auth_app - Delete OAuth app
- regenerate_o_auth_app_secret - Regenerate client secret
- suspend_o_auth_app - Suspend OAuth app
- activate_o_auth_app - Activate suspended OAuth app
- list_o_auth_app_tokens - List app tokens
- revoke_all_o_auth_app_tokens - Revoke all app tokens
OAuthConfiguration
- list_toolset_o_auth_configs - List OAuth configs by toolset type
- update_toolset_o_auth_config - Update OAuth config
- delete_toolset_o_auth_config - Delete OAuth config
- get_o_auth_registry - List OAuth-capable connector types
- get_o_auth_connector_type - Get OAuth connector type details
- list_o_auth_configs - List OAuth configurations
- list_o_auth_configs_by_type - List OAuth configs for connector type
- create_o_auth_config - Create OAuth configuration
- get_o_auth_config - Get OAuth configuration
- update_o_auth_config - Update OAuth configuration
- delete_o_auth_config - Delete OAuth configuration
OAuthProvider
- oauth_authorize - Initiate OAuth authorization flow
- oauth_authorize_consent - Submit authorization consent
- oauth_token - Exchange authorization code for tokens
- oauth_revoke - Revoke an access or refresh token
- oauth_introspect - Introspect a token
OpenIDConnect
- oauth_user_info - Get authenticated user information
- openid_configuration - OpenID Connect Discovery
- jwks - JSON Web Key Set
OrganizationAuthConfig
- get_auth_methods - Get organization authentication methods
- update_auth_method - Update organization authentication methods
set_up_auth_config- Set up auth configuration :warning: Deprecated
Organizations
- check_org_exists - Check if organization exists
- create_organization - Create organization
- get_current_organization - Get current organization
- update_organization - Update organization
- delete_organization - Delete organization
- upload_organization_logo - Upload organization logo
- get_organization_logo - Get organization logo
- delete_organization_logo - Delete organization logo
- get_onboarding_status - Get onboarding status
- update_onboarding_status - Update onboarding status
Permissions
- create_kb_permission - Grant permissions
- list_kb_permissions - List permissions
- update_kb_permissions - Update permissions
- delete_kb_permissions - Remove permissions
PlatformSettings
- set_platform_settings - Update platform settings
- get_platform_settings - Get platform settings
- get_available_feature_flags - Get available feature flags
- set_custom_system_prompt - Update custom system prompt
- get_custom_system_prompt - Get custom system prompt
PublicURLs
- set_frontend_public_url - Set frontend public URL
- get_frontend_public_url - Get frontend public URL
- set_connector_public_url - Set connector public URL
- get_connector_public_url - Get connector public URL
Records
- get_all_records - Get all records across knowledge bases
- get_kb_records - Get records for a knowledge base
- get_kb_children - Get KB children (alias for records)
- get_record_by_id - Get record by ID
- update_record - Update record
- delete_record - Delete record
- stream_record_buffer - Stream record content
Saml
- sign_in_via_saml - Initiate SAML sign-in flow
saml_sign_in_callback- SAML sign-in callback :warning: Deprecated
SemanticSearch
- search - Perform semantic search
- search_history - Get search history
- delete_all_search_history - Clear all search history
get_search_by_id- Get search by ID :warning: Deprecateddelete_search_by_id- Delete search by ID :warning: Deprecatedshare_search- Share a search :warning: Deprecatedunshare_search- Unshare a search :warning: Deprecatedarchive_search- Archive a search :warning: Deprecatedunarchive_search- Unarchive a search :warning: Deprecated
SMTPConfiguration
- create_smtp_config - Create or update SMTP configuration
- get_smtp_config - Get SMTP configuration
StorageConfiguration
- get_storage_config - Get current storage configuration
Teams
- create_team - Create a team
- list_teams - List teams
- get_team_by_id - Get team by ID
- update_team - Update team
- delete_team - Delete team
- get_user_teams - Get current user's teams
get_team_users- Get users in team :warning: Deprecatedadd_users_to_team- Add users to team :warning: Deprecatedremove_user_from_team- Remove user from team :warning: Deprecatedupdate_team_users_permissions- Update team users permissions :warning: Deprecatedget_user_created_teams- Get user created teams :warning: Deprecated
ToolsetConfiguration
- get_toolset_config - Get toolset configuration
save_toolset_config- Save toolset configuration :warning: Deprecated- update_toolset_config - Update toolset configuration
- delete_toolset_config - Delete toolset configuration
ToolsetInstances
- create_toolset - Create toolset instance
- list_configured_toolsets - List configured toolsets
- check_toolset_status - Check toolset status
- reauthenticate_toolset - Reauthenticate toolset
- get_my_toolsets - List my toolsets with auth status
- get_toolset_instances - List toolset instances
- create_toolset_instance - Create toolset instance
- get_toolset_instance - Get toolset instance
- update_toolset_instance - Update toolset instance
- delete_toolset_instance - Delete toolset instance
- authenticate_toolset_instance - Authenticate toolset instance
- remove_toolset_credentials - Remove toolset credentials
- reauthenticate_toolset_instance - Mark instance for reauthentication
- get_toolset_instance_status - Get instance authentication status
ToolsetOAuth
- get_toolset_o_auth_url - Get OAuth authorization URL
- handle_toolset_o_auth_callback - Handle OAuth callback
- get_instance_o_auth_authorization_url - Get OAuth authorization URL for instance
ToolsetRegistry
- list_toolset_registry - List available toolsets
- get_toolset_schema - Get toolset schema
Upload
- upload_records_to_kb - Upload files to knowledge base
- upload_records_to_folder - Upload files to folder
- get_upload_limits - Get upload limits
UserAccount
- init_auth - Initialize authentication session
- authenticate - Authenticate user with credentials
- generate_login_otp - Generate and send OTP for login
- forgot_password - Request password reset email
- reset_password_with_token - Reset password with email token
- refresh_token - Refresh access token
- logout - Logout current session
- reset_password - Reset password
UserGroups
- create_user_group - Create user group
- get_all_user_groups - Get all user groups
- get_user_group_by_id - Get user group by ID
- update_user_group - Update user group
- delete_user_group - Delete user group
- add_users_to_group - Add users to group
- remove_users_from_group - Remove users from group
- get_groups_for_user - Get groups for a user
get_users_in_group- Get users in group :warning: Deprecatedget_group_statistics- Get group statistics :warning: Deprecated
Users
- get_all_users - Get all users
- create_user - Create a new user
- get_user_by_id - Get user by ID
- update_user - Update user
- delete_user - Delete user
- get_user_email_by_id - Get user email by ID
update_email- Update user email :warning: Deprecated- upload_user_display_picture - Upload display picture
- get_user_display_picture - Get display picture
- remove_user_display_picture - Remove display picture
- bulk_invite_users - Bulk invite users
- resend_user_invite - Resend user invite
- list_users_graph - List users (paginated with graph data)
- unblock_user - Unblock a user in organization
- get_all_users_with_groups - Get all users with groups
get_users_by_ids- Get users by IDs :warning: Deprecatedupdate_full_name- Update user full name :warning: Deprecatedupdate_first_name- Update user first name :warning: Deprecatedupdate_last_name- Update user last name :warning: Deprecatedupdate_designation- Update user designation :warning: Deprecatedadmin_check- Check if user is admin :warning: Deprecatedget_user_teams_via_users- Get user teams :warning: Deprecated
Server-sent event streaming
Server-sent events are used to stream content from certain
operations. These operations will expose the stream as Generator that
can be consumed using a simple for loop. The loop will
terminate when the server no longer has any events to send and closes the
underlying connection.
The stream is also a Context Manager and can be used with the with statement and will close the
underlying connection when the context is exited.
import os
from pipeshub_sdk import Pipeshub, models
with Pipeshub(
security=models.Security(
bearer_auth=os.getenv("PIPESHUB_BEARER_AUTH", ""),
),
) as pipeshub:
res = pipeshub.conversations.stream_chat(query="What are the key findings from our Q4 financial report?", record_ids=[
"507f1f77bcf86cd799439011",
"507f1f77bcf86cd799439012",
], model_key="gpt-4-turbo", model_name="GPT-4 Turbo", chat_mode="balanced")
with res as event_stream:
for event in event_stream:
# handle event
print(event, flush=True)
File uploads
Certain SDK methods accept file objects as part of a request body or multi-part request. It is possible and typically recommended to upload files as a stream rather than reading the entire contents into memory. This avoids excessive memory consumption and potentially crashing with out-of-memory errors when working with very large files. The following example demonstrates how to attach a file stream to a request.
[!TIP]
For endpoints that handle file uploads bytes arrays can also be used. However, using streams is recommended for large files.
import os
from pipeshub_sdk import Pipeshub, models
with Pipeshub(
security=models.Security(
bearer_auth=os.getenv("PIPESHUB_BEARER_AUTH", ""),
),
) as pipeshub:
res = pipeshub.users.upload_user_display_picture(file={
"file_name": "example.file",
"content": open("example.file", "rb"),
})
# Handle response
print(res)
Retries
Some of the endpoints in this SDK support retries. If you use the SDK without any configuration, it will fall back to the default retry strategy provided by the API. However, the default retry strategy can be overridden on a per-operation basis, or across the entire SDK.
To change the default retry strategy for a single API call, simply provide a RetryConfig object to the call:
from pipeshub_sdk import Pipeshub
from pipeshub_sdk.utils import BackoffStrategy, RetryConfig
with Pipeshub() as pipeshub:
res = pipeshub.user_account.init_auth(email="user@example.com",
RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False))
# Handle response
print(res)
If you'd like to override the default retry strategy for all operations that support retries, you can use the retry_config optional parameter when initializing the SDK:
from pipeshub_sdk import Pipeshub
from pipeshub_sdk.utils import BackoffStrategy, RetryConfig
with Pipeshub(
retry_config=RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False),
) as pipeshub:
res = pipeshub.user_account.init_auth(email="user@example.com")
# Handle response
print(res)
Error Handling
PipeshubError is the base class for all HTTP error responses. It has the following properties:
| Property | Type | Description |
|---|---|---|
err.message |
str |
Error message |
err.status_code |
int |
HTTP response status code eg 404 |
err.headers |
httpx.Headers |
HTTP response headers |
err.body |
str |
HTTP body. Can be empty string if no body is returned. |
err.raw_response |
httpx.Response |
Raw HTTP response |
err.data |
Optional. Some errors may contain structured data. See Error Classes. |
Example
from pipeshub_sdk import Pipeshub, errors
with Pipeshub() as pipeshub:
res = None
try:
res = pipeshub.user_account.init_auth(email="user@example.com")
# Handle response
print(res)
except errors.PipeshubError as e:
# The base class for HTTP error responses
print(e.message)
print(e.status_code)
print(e.body)
print(e.headers)
print(e.raw_response)
# Depending on the method different errors may be thrown
if isinstance(e, errors.AuthError):
print(e.data.error) # Optional[str]
print(e.data.message) # Optional[str]
print(e.data.code) # Optional[str]
print(e.data.status_code) # Optional[int]
Error Classes
Primary error:
PipeshubError: The base class for HTTP error responses.
Less common errors (10)
Network errors:
httpx.RequestError: Base class for request errors.httpx.ConnectError: HTTP client was unable to make a request to a server.httpx.TimeoutException: HTTP request timed out.
Inherit from PipeshubError:
AuthError: Authentication error response with details for debugging and user feedback.
Common Error Codes:
INVALID_CREDENTIALS- Wrong password or OTPACCOUNT_BLOCKED- Account locked after 5 failed attemptsSESSION_EXPIRED- Session token has expiredOTP_EXPIRED- OTP code has expired (10 min validity)USER_NOT_FOUND- Email not registeredINVALID_TOKEN- JWT token is invalid or malformedMETHOD_NOT_ALLOWED- Auth method not enabled for org
OAuthErrorResponse: OAuth 2.0 Error Response (RFC 6749 Section 5.2). Standard error format for OAuth endpoints. Applicable to 5 of 291 methods.*ResetPasswordBadRequestError: Invalid current password or weak new password. Status code400. Applicable to 1 of 291 methods.*SamlSignInCallbackBadRequestError: Invalid SAML response. Status code400. Applicable to 1 of 291 methods.*UnauthorizedError: SAML authentication failed. Status code401. Applicable to 1 of 291 methods.*ResponseValidationError: Type mismatch between the response data and the expected Pydantic model. Provides access to the Pydantic validation error via thecauseattribute.
* Check the method documentation to see if the error is applicable.
Server Selection
Server Variables
The default server https://{instance_url}/api/v1 contains variables and is set to https://https://app.pipeshub.com/api/v1 by default. To override default values, the following parameters are available when initializing the SDK client instance:
| Variable | Parameter | Default | Description |
|---|---|---|---|
instance_url |
instance_url: str |
"https://app.pipeshub.com" |
Base server URL (without /api/v1) |
Example
from pipeshub_sdk import Pipeshub
with Pipeshub(
server_idx=0,
instance_url="https://app.pipeshub.com",
) as pipeshub:
res = pipeshub.user_account.init_auth(email="user@example.com")
# Handle response
print(res)
Override Server URL Per-Client
The default server can be overridden globally by passing a URL to the server_url: str optional parameter when initializing the SDK client instance. For example:
from pipeshub_sdk import Pipeshub
with Pipeshub(
server_url="https://https://app.pipeshub.com/api/v1",
) as pipeshub:
res = pipeshub.user_account.init_auth(email="user@example.com")
# Handle response
print(res)
Override Server URL Per-Operation
The server URL can also be overridden on a per-operation basis, provided a server list was specified for the operation. For example:
from pipeshub_sdk import Pipeshub
with Pipeshub() as pipeshub:
res = pipeshub.open_id_connect.openid_configuration(server_url="")
# Handle response
print(res)
Custom HTTP Client
The Python SDK makes API calls using the httpx HTTP library. In order to provide a convenient way to configure timeouts, cookies, proxies, custom headers, and other low-level configuration, you can initialize the SDK client with your own HTTP client instance.
Depending on whether you are using the sync or async version of the SDK, you can pass an instance of HttpClient or AsyncHttpClient respectively, which are Protocol's ensuring that the client has the necessary methods to make API calls.
This allows you to wrap the client with your own custom logic, such as adding custom headers, logging, or error handling, or you can just pass an instance of httpx.Client or httpx.AsyncClient directly.
For example, you could specify a header for every request that this sdk makes as follows:
from pipeshub_sdk import Pipeshub
import httpx
http_client = httpx.Client(headers={"x-custom-header": "someValue"})
s = Pipeshub(client=http_client)
or you could wrap the client with your own custom logic:
from pipeshub_sdk import Pipeshub
from pipeshub_sdk.httpclient import AsyncHttpClient
import httpx
class CustomClient(AsyncHttpClient):
client: AsyncHttpClient
def __init__(self, client: AsyncHttpClient):
self.client = client
async def send(
self,
request: httpx.Request,
*,
stream: bool = False,
auth: Union[
httpx._types.AuthTypes, httpx._client.UseClientDefault, None
] = httpx.USE_CLIENT_DEFAULT,
follow_redirects: Union[
bool, httpx._client.UseClientDefault
] = httpx.USE_CLIENT_DEFAULT,
) -> httpx.Response:
request.headers["Client-Level-Header"] = "added by client"
return await self.client.send(
request, stream=stream, auth=auth, follow_redirects=follow_redirects
)
def build_request(
self,
method: str,
url: httpx._types.URLTypes,
*,
content: Optional[httpx._types.RequestContent] = None,
data: Optional[httpx._types.RequestData] = None,
files: Optional[httpx._types.RequestFiles] = None,
json: Optional[Any] = None,
params: Optional[httpx._types.QueryParamTypes] = None,
headers: Optional[httpx._types.HeaderTypes] = None,
cookies: Optional[httpx._types.CookieTypes] = None,
timeout: Union[
httpx._types.TimeoutTypes, httpx._client.UseClientDefault
] = httpx.USE_CLIENT_DEFAULT,
extensions: Optional[httpx._types.RequestExtensions] = None,
) -> httpx.Request:
return self.client.build_request(
method,
url,
content=content,
data=data,
files=files,
json=json,
params=params,
headers=headers,
cookies=cookies,
timeout=timeout,
extensions=extensions,
)
s = Pipeshub(async_client=CustomClient(httpx.AsyncClient()))
Resource Management
The Pipeshub class implements the context manager protocol and registers a finalizer function to close the underlying sync and async HTTPX clients it uses under the hood. This will close HTTP connections, release memory and free up other resources held by the SDK. In short-lived Python programs and notebooks that make a few SDK method calls, resource management may not be a concern. However, in longer-lived programs, it is beneficial to create a single SDK instance via a context manager and reuse it across the application.
from pipeshub_sdk import Pipeshub
def main():
with Pipeshub() as pipeshub:
# Rest of application here...
# Or when using async:
async def amain():
async with Pipeshub() as pipeshub:
# Rest of application here...
Debugging
You can setup your SDK to emit debug logs for SDK requests and responses.
You can pass your own logger class directly into your SDK.
from pipeshub_sdk import Pipeshub
import logging
logging.basicConfig(level=logging.DEBUG)
s = Pipeshub(debug_logger=logging.getLogger("pipeshub_sdk"))
You can also enable a default debug logger by setting an environment variable PIPESHUB_DEBUG to true.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pipeshub_sdk-1.0.0.tar.gz.
File metadata
- Download URL: pipeshub_sdk-1.0.0.tar.gz
- Upload date:
- Size: 299.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
259a36c94ff3168a63d8ebb5f42d7ef53497008e45cd73bef5894ff41c58c40b
|
|
| MD5 |
37eb32514ba6a86e0d44c760d0156a84
|
|
| BLAKE2b-256 |
af1d8c7da04604f950928ff516e2b22ff7dc514c2d7da4ded084db48423f8872
|
File details
Details for the file pipeshub_sdk-1.0.0-py3-none-any.whl.
File metadata
- Download URL: pipeshub_sdk-1.0.0-py3-none-any.whl
- Upload date:
- Size: 570.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c576d53cf19ac6917a23144840c795fca5b7597b4c67e7abb04e056d7a8c0c15
|
|
| MD5 |
8fb317078b4b10be0d792d785b9bcbe5
|
|
| BLAKE2b-256 |
4c2f5202171c4d4b834160020beea19d669fa54b62c59def257dd2748fef233b
|