Skip to main content

ComposioError

Enum ComposioError 

Source
pub enum ComposioError {
Show 41 variants ApiError { status: u16, message: String, code: Option<String>, slug: Option<String>, request_id: Option<String>, suggested_fix: Option<String>, errors: Option<Vec<ErrorDetail>>, }, NetworkError(Error), SerializationError(Error), ValidationError(String), ExecutionError(String), InvalidInput(String), ConfigError(String), FileNotFound(String), InvalidFile(String), UploadFailed(String), DownloadFailed(String), FileTooLarge(String), IoError(Error), InvalidSchema(String), NotFound(String), ToolNotFound { tool_slug: String, }, ConnectedAccountNotFound { account_id: String, }, InvalidConnectedAccount { reason: String, }, MultipleConnectedAccounts { user_id: String, toolkit: String, count: usize, }, NoItemsFound(String), ApiKeyNotProvided, InvalidApiKey(String), InvalidEnum { value: String, enum_name: String, suggestion: String, valid_values: Vec<String>, }, InvalidParams(String), ToolVersionRequired, VersionSelectionError { tool: String, requested: String, locked: String, }, InvalidVersionString(String), LockFileError(String), InvalidLockFile(String), TriggerError(String), WebhookSignatureVerificationError(String), WebhookPayloadError(String), TriggerSubscriptionError(String), InvalidTriggerFilters(String), InvalidModifier(String), ExecuteToolFnNotSet(String), ErrorProcessingToolExecution(String), Timeout(String), ResponseTooLarge { size: usize, max_size: usize, }, UsageError(String), ToolkitError(String),
}
Expand description

Main error type for the Composio SDK

Variants§

§

ApiError

API error returned from Composio backend

Fields

§status: u16

HTTP status code

§message: String

Error message

§code: Option<String>

Error code (optional)

§slug: Option<String>

Error slug identifier (optional)

§request_id: Option<String>

Request ID for debugging (optional)

§suggested_fix: Option<String>

Suggested fix for the error (optional)

§errors: Option<Vec<ErrorDetail>>

Detailed field-level errors (optional)

§

NetworkError(Error)

Network error from HTTP client

§

SerializationError(Error)

JSON serialization error

§

ValidationError(String)

Validation error

§

ExecutionError(String)

Execution error

§

InvalidInput(String)

Invalid input provided by user

§

ConfigError(String)

Configuration error

§

FileNotFound(String)

File not found error

§

InvalidFile(String)

Invalid file error

§

UploadFailed(String)

File upload failed

§

DownloadFailed(String)

File download failed

§

FileTooLarge(String)

File too large error

§

IoError(Error)

I/O error

§

InvalidSchema(String)

Invalid schema error

§

NotFound(String)

Resource not found error

§

ToolNotFound

Tool not found error

Fields

§tool_slug: String

Tool slug that was not found

§

ConnectedAccountNotFound

Connected account not found error

Fields

§account_id: String

Account ID that was not found

§

InvalidConnectedAccount

Invalid connected account error

Fields

§reason: String

Reason for invalidity

§

MultipleConnectedAccounts

Multiple connected accounts found when one was expected

Fields

§user_id: String

User ID

§toolkit: String

Toolkit slug

§count: usize

Number of accounts found

§

NoItemsFound(String)

No items found in collection

§

ApiKeyNotProvided

API key not provided error

§

InvalidApiKey(String)

Invalid API key error

§

InvalidEnum

Invalid enum value with suggestions

Fields

§value: String

The invalid value provided

§enum_name: String

Name of the enum type

§suggestion: String

Suggested correct value (if found)

§valid_values: Vec<String>

List of valid values

§

InvalidParams(String)

Invalid parameters provided

§

ToolVersionRequired

Toolkit version required error

§

VersionSelectionError

Version selection error

Fields

§tool: String

Tool name

§requested: String

Requested version

§locked: String

Locked version

§

InvalidVersionString(String)

Invalid version string

§

LockFileError(String)

Lock file error

§

InvalidLockFile(String)

Invalid lock file

§

TriggerError(String)

Trigger error

§

WebhookSignatureVerificationError(String)

Webhook signature verification failed

§

WebhookPayloadError(String)

Invalid webhook payload

§

TriggerSubscriptionError(String)

Trigger subscription error

§

InvalidTriggerFilters(String)

Invalid trigger filters

§

InvalidModifier(String)

Invalid modifier error

§

ExecuteToolFnNotSet(String)

Tool execution function not set

§

ErrorProcessingToolExecution(String)

Error processing tool execution request

§

Timeout(String)

Request timeout error

§

ResponseTooLarge

Response too large error

Fields

§size: usize

Actual size in bytes

§max_size: usize

Maximum allowed size in bytes

§

UsageError(String)

SDK usage error

§

ToolkitError(String)

Toolkit error

Implementations§

Source§

impl ComposioError

Source

pub async fn from_response(response: Response) -> Self

Create an ApiError from an HTTP response

This method attempts to parse the response body as an ErrorResponse. If parsing fails, it creates a generic ApiError with the status code.

Source

pub fn invalid_enum( value: impl Into<String>, enum_name: impl Into<String>, valid_values: Vec<String>, ) -> Self

Create an InvalidEnum error with suggestions

Uses fuzzy matching to suggest the closest valid value. Similar to Python’s EnumStringNotFound with difflib.

§Example
use composio_sdk::error::ComposioError;

let valid_values = vec!["github".to_string(), "gmail".to_string(), "slack".to_string()];
let error = ComposioError::invalid_enum("gihub", "Toolkit", valid_values);
// Error message: "Invalid value 'gihub' for enum 'Toolkit'. Did you mean 'github'?"
Source

pub fn multiple_connected_accounts( user_id: impl Into<String>, toolkit: impl Into<String>, count: usize, ) -> Self

Create a MultipleConnectedAccounts error

Source

pub fn version_selection_error( tool: impl Into<String>, requested: impl Into<String>, locked: impl Into<String>, ) -> Self

Create a VersionSelectionError

Source

pub fn response_too_large(size: usize, max_size: usize) -> Self

Create a ResponseTooLarge error

Source

pub fn tool_not_found(tool_slug: impl Into<String>) -> Self

Create a ToolNotFound error

Source

pub fn connected_account_not_found(account_id: impl Into<String>) -> Self

Create a ConnectedAccountNotFound error

Source

pub fn format_validation_error(&self) -> String

Format validation error with detailed field information

Provides a developer-friendly error message highlighting:

  • Missing required fields
  • Invalid field values
  • Field-specific error messages

This is particularly useful for debugging API validation errors and improving monitoring/logging output.

§Returns

A formatted string with:

  • Base error message
  • List of missing fields (if any)
  • Detailed field-level errors with parameter names
§Example
use composio_sdk::error::{ComposioError, ErrorDetail};

let error = ComposioError::ApiError {
    status: 400,
    message: "Validation failed".to_string(),
    code: Some("VALIDATION_ERROR".to_string()),
    slug: None,
    request_id: Some("req_123".to_string()),
    suggested_fix: None,
    errors: Some(vec![
        ErrorDetail {
            field: Some("user_id".to_string()),
            message: "Field required".to_string(),
        },
        ErrorDetail {
            field: Some("toolkit".to_string()),
            message: "Invalid toolkit name".to_string(),
        }
    ]),
};
 
let formatted = error.format_validation_error();
println!("{}", formatted);
// Output:
// Validation failed
// - Following fields are missing: ["user_id"]
// - Invalid toolkit name on parameter `toolkit`
Source

pub fn is_retryable(&self) -> bool

Check if this error should be retried

Returns true for transient errors that may succeed on retry:

  • 429 (Rate Limited)
  • 500 (Internal Server Error)
  • 502 (Bad Gateway)
  • 503 (Service Unavailable)
  • 504 (Gateway Timeout)
  • Network errors
  • Timeout errors

Returns false for client errors (4xx except 429) that won’t succeed on retry.

Trait Implementations§

Source§

impl Debug for ComposioError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for ComposioError

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for ComposioError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<Error> for ComposioError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for ComposioError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for ComposioError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more