ApiConnection Model

class smarter.apps.connection.models.ApiConnection(*args, **kwargs)[source]

Bases: ConnectionBase

Stores API connection configuration.

This model defines the connection details for a remote API, including authentication method, base URL, credentials, timeout, and proxy settings. It provides methods for testing the API and proxy connections, and for validating the configuration.

ApiConnection is a concrete subclass of ConnectionBase and is referenced by PluginDataApi to provide the connection. It supports a variety of authentication methods (none, basic, token, OAuth), as well as proxy configuration for secure and flexible integration with external APIs.

This model is responsible for:
  • Managing API credentials and secrets using the Secret model.

  • Constructing connection strings and request headers for different authentication schemes.

  • Providing methods for testing connectivity to the API and proxy endpoints.

  • Supporting timeout and proxy configuration for robust and secure API access.

  • Integrating with the Smarter plugin system to enable dynamic, authenticated API requests.

Typical use cases include plugins that need to retrieve or send data to external REST APIs, integrate with third-party services, or expose organizational APIs to the Smarter LLM platform.

See also:

  • ConnectionBase

  • PluginDataApi

  • smarter.apps.account.models.Secret

Parameters:
  • id (Unknown) – Primary key: ID

  • created_at (Unknown) – Created at

  • updated_at (Unknown) – Updated at

  • name (Unknown) – Name. Name in camelCase, e.g., ‘apiKey’, no special characters.

  • description (Unknown) – Description. A brief description of this resource. Be verbose, but not too verbose.

  • version (Unknown) – Version. Semantic version in the format MAJOR.MINOR.PATCH, e.g., ‘1.0.0’.

  • annotations (Unknown) – Annotations. Key-value pairs for annotating this resource.

  • kind (Unknown) – Kind. The kind of connection. Example: ‘SQL’, ‘API’.

  • base_url (Unknown) – Base url. The root domain of the API. Example: ‘https://api.example.com’.

  • auth_method (Unknown) – Auth method. The authentication method to use. Example: ‘Basic Auth’, ‘Token Auth’.

  • timeout (Unknown) – Timeout. The timeout for the API request in seconds. Default is 30 seconds.

  • proxy_protocol (Unknown) – Proxy protocol. The protocol to use for the proxy connection.

  • proxy_host (Unknown) – Proxy host

  • proxy_port (Unknown) – Proxy port

  • proxy_username (Unknown) – Proxy username

Relationship fields:

Parameters:
  • user_profile (Unknown) – User profile (related name: connectionbase)

  • tags (Unknown) – Tags. Tags for categorizing and organizing this resource. (related name: connectionbase)

  • connectionbase_ptr (Unknown) – Primary key: Connectionbase ptr (related name: apiconnection)

  • api_key (Unknown) – Api key. The API key for authentication, if required. (related name: api_connections_api_key)

  • proxy_password (Unknown) – Proxy password. The proxy password for authentication, if required. (related name: api_connections_proxy_password)

  • tagged_items (Unknown) – Tagged items (related name: +)

Reverse relationships:

Parameters:
  • plugin_data_api_connection (Unknown) – All plugin data api connection of this API Connection (related name of connection)

  • vector_databases (Unknown) – All vector databases of this API Connection (related name of connection)

AUTH_METHOD_CHOICES = [('none', 'None'), ('basic', 'Basic Auth'), ('token', 'Token Auth'), ('oauth', 'OAuth')]
CONNECTION_KIND_CHOICES = [('SqlConnection', 'SqlConnection'), ('ApiConnection', 'ApiConnection')]
exception DoesNotExist

Bases: DoesNotExist

__init__(*args, **kwargs)
add_note(object, /)

Exception.add_note(note) – add a note to the exception

args
silent_variable_failure = True
with_traceback(object, /)

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.

HASH_FLOOR = 1000000
HASH_PREFIX = 'r'
HASH_SUFFIX = 'x'
exception MultipleObjectsReturned

Bases: MultipleObjectsReturned

__init__(*args, **kwargs)
add_note(object, /)

Exception.add_note(note) – add a note to the exception

args
with_traceback(object, /)

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.

exception NotUpdated

Bases: NotUpdated

__init__(*args, **kwargs)
add_note(object, /)

Exception.add_note(note) – add a note to the exception

args
with_traceback(object, /)

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.

PROXY_PROTOCOL_CHOICES = [('http', 'HTTP'), ('https', 'HTTPS'), ('socks', 'SOCKS')]
__init__(*args, **kwargs)
async adelete(using=None, keep_parents=False)
property amnesty_urls: list[str]

Returns a list of URLs that are exempt from certain checks.

Returns:

List of URL path strings that are exempt.

Return type:

list[str]

annotations

JSONField

Annotations. Key-value pairs for annotating this resource.

Type:

Type

api_key

ForeignKey to Secret

Api key. The API key for authentication, if required. (related name: api_connections_api_key)

Type:

Type

api_key_id

Internal field, use api_key instead.

apiconnection

Reverse OneToOneField from ApiConnection

The API Connection of this connection base (related name of connectionbase_ptr)

Type:

Type

async arefresh_from_db(using=None, fields=None, from_queryset=None)
async asave(*, force_insert=False, force_update=False, using=None, update_fields=None)
auth_method

CharField

Auth method. The authentication method to use. Example: ‘Basic Auth’, ‘Token Auth’.

Choices:

  • none

  • basic

  • token

  • oauth

Type:

Type

base_url

URLField

Base url. The root domain of the API. Example: ‘https://api.example.com’.

Type:

Type

bool_environment_variable(var_name, default=False)

Retrieves a boolean value from an environment variable.

This method checks the specified environment variable and returns its value as a boolean. It recognizes common truthy values such as “true”, “1”, “yes”, and “on”. If the variable is not set or cannot be interpreted as a boolean, it returns the provided default value.

Parameters:
  • var_name (str) – The name of the environment variable to check.

  • default (bool) – The default boolean value to return if the environment variable is not set or invalid.

Returns:

The boolean value of the environment variable or the default.

Return type:

bool

cache_expiration = 60
classmethod check(**kwargs)
clean()

Hook for doing any extra model-wide validation after clean() has been called on every field by self.clean_fields. Any ValidationError raised by this method will not be associated with a particular field; it will have a special-case association with the field defined by NON_FIELD_ERRORS.

clean_fields(exclude=None)

Clean all fields and raise a ValidationError containing a dict of all validation errors if any occur.

clone(new_name=None, new_version=None, user_profile=None)

Create a clone of this instance with a new name, version, and/or user profile.

Parameters:
  • new_name (Optional[str]) – The name for the cloned instance. If not provided, the original name will be suffixed with “ (clone)”.

  • new_version (Optional[str]) – The version for the cloned instance. If not provided, the original version will be used.

  • user_profile (Optional[UserProfile]) – The user profile for the cloned instance. If not provided, the original user profile will be used.

Returns:

A new instance of MetaDataWithOwnershipModel that is a clone of this instance with the specified changes.

Return type:

MetaDataWithOwnershipModel

property connection_string: str

Return the connection string.

connectionbase_ptr

OneToOneField to ConnectionBase

Primary key: Connectionbase ptr (related name: apiconnection)

Type:

Type

connectionbase_ptr_id

Internal field, use connectionbase_ptr instead.

created_at

DateTimeField

Created at

Timestamp indicating when the model instance was created.

This field is automatically set to the current date and time when the instance is first created. It is indexed in the database for efficient querying.

Type:

Type

data_to_dict(data)

Converts data to a dictionary, handling different types of input.

This method accepts either a dictionary or a string. If a string is provided, it will attempt to parse it as JSON first, and if that fails, as YAML. If parsing fails or the data type is unsupported, a SmarterValueError is raised.

Parameters:

data (Union[dict, str]) – The data to convert, either a dict or a JSON/YAML string.

Returns:

The data as a dictionary.

Return type:

dict

Raises:

SmarterValueError – If the data cannot be converted to a dictionary.

date_error_message(lookup_type, field_name, unique_for)
delete(using=None, keep_parents=False)
description

TextField

Description. A brief description of this resource. Be verbose, but not too verbose.

Type:

Type

deserves_amnesty(slug)

Determines if a given URL deserves amnesty based on the amnesty URLs list.

This excuses certain endpoints (like health checks) from select middleware checks.

Parameters:

slug (str) – The URL path to check.

Returns:

True if the URL deserves amnesty, False otherwise.

Return type:

bool

dict_is_contained_in(dict1, dict2)

Checks if one dictionary is contained within another.

This method determines if all key-value pairs in dict1 are present in dict2.

Parameters:
  • dict1 (dict) – The dictionary to check for containment.

  • dict2 (dict) – The dictionary to check against for containment.

Returns:

True if dict1 is contained in dict2, False otherwise.

Return type:

bool

dict_is_subset(small, big)

Checks if one dictionary is a subset of another.

This method determines if all key-value pairs in the small dictionary are present in the big dictionary. It returns True if the small dictionary is a subset of the big dictionary, and False otherwise.

Parameters:
  • small (dict) – The dictionary to check as a subset.

  • big (dict) – The dictionary to check against as a superset.

Returns:

True if the small dictionary is a subset of the big dictionary, False otherwise.

Return type:

bool

property elapsed_updated: int | None

Calculate the absolute time difference in seconds between a given datetime and the model’s updated_at timestamp.

This property is useful for determining how much time has elapsed since the model instance was last updated, or for comparing the updated_at field to any arbitrary datetime.

Parameters:

  • dt (datetime, optional): The reference datetime to compare against updated_at. - If dt is not provided, the current time is used. - Both naive and timezone-aware datetime objects are supported; the method will handle conversions as needed.

Returns:

  • int or None: The absolute difference in seconds between updated_at and dt. Returns None if updated_at is not set.

Example Usage:

obj = MyModel.objects.get(pk=1)
# Time since last update
seconds = obj.elapsed_updated
print(f"Seconds since last update: {seconds}")

# Compare to a specific datetime
import datetime
dt = datetime.datetime(2025, 12, 1, 12, 0, 0)
diff = obj.elapsed_updated(dt)
print(f"Seconds between updated_at and 2025-12-01 12:00:00: {diff}")

Note

  • Handles both naive and aware datetime objects, converting as necessary to ensure accurate calculation.

  • If updated_at is not set (e.g., the object has not been saved), returns None.

Attention

  • If dt is provided and is not a datetime.datetime instance, a TypeError will be raised.

  • Always ensure that updated_at is set before relying on this property for calculations.

execute_query(endpoint, params=None, limit=None)[source]

Execute the API query and return the results.

This method constructs the full URL by combining the base URL and the endpoint, and sends a GET request to the API with the provided parameters.

Parameters:
  • endpoint (str) – The API endpoint to query.

  • params (Optional[dict]) – A dictionary of parameters to include in the API request.

  • limit (Optional[int]) – The maximum number of rows to return from the API response.

Return type:

Union[dict[str, Any], list[Any], bool]

Returns:

The API response as a JSON object or False if the request fails.

classmethod find_hash(value)

Finds and returns the first substring in the given value that matches.

the hashed ID format.

Parameters:

value (str) – The string to search for a hashed ID.

Returns:

The first matching hashed ID if found, otherwise None.

Return type:

Optional[str]

property formatted_class_name: str

Returns the class name formatted for logging.

Returns:

The formatted class name as a string.

Return type:

str

formatted_json(json_obj)

Formats a JSON object as a pretty-printed string with ANSI color codes for logging.

Parameters:

json_obj (Union[dict, list]) – The JSON object (dict or list) to format.

Returns:

A string representation of the JSON object with ANSI color codes.

Return type:

str

property formatted_state_not_ready: str

Returns the not-ready state formatted for logging.

Returns:

The formatted not-ready state as a string.

Return type:

str

property formatted_state_ready: str

Returns the readiness state formatted for logging.

Returns:

The formatted readiness state as a string.

Return type:

str

formatted_text(text, color_code='\\x1b[1;31m')

Formats text with ANSI color codes for logging.

Parameters:
  • text (str) – The text to format.

  • color_code (str) – The ANSI color code to apply.

Returns:

The formatted text with ANSI color codes.

Return type:

str

formatted_text_blue(text)

Formats text in bold dark blue for logging.

Parameters:

text (str) – The text to format.

Returns:

The formatted text in bold dark blue.

Return type:

str

formatted_text_green(text)

Formats text in bright green for logging.

Parameters:

text (str) – The text to format.

Returns:

The formatted text in bright green.

Return type:

str

formatted_text_red(text)

Formats text in dark red for logging.

Parameters:

text (str) – The text to format.

Returns:

The formatted text in dark red.

Return type:

str

classmethod from_db(db, field_names, values)
full_clean(exclude=None, validate_unique=True, validate_constraints=True)

Call clean_fields(), clean(), validate_unique(), and validate_constraints() on the model. Raise a ValidationError for any errors that occur.

generate_fernet_encryption_key()

Generates a Fernet encryption key.

This method creates a new Fernet encryption key, which can be used for secure encryption and decryption of data. The generated key is returned as a URL-safe base64-encoded string.

Returns:

A new Fernet encryption key.

Return type:

str

get_auth_method_display(*, field=<django.db.models.CharField: auth_method>)

Shows the label of the auth_method. See get_FOO_display() for more information.

classmethod get_cached_connections_for_user(user, invalidate=False)

Return a list of all instances of all concrete subclasses of ConnectionBase.

This method retrieves all connection objects (such as SqlConnection and ApiConnection) associated with the user’s account, across all concrete subclasses of ConnectionBase. It is useful for enumerating all available connections for a given user, regardless of connection type.

Parameters:

user (User) – The user whose connections should be retrieved.

Returns:

A list of all connection instances for the user’s account.

Return type:

list[ConnectionBase]

Example:

connections = ConnectionBase.get_cached_connections_for_user(user)
# returns [<SqlConnection ...>, <ApiConnection ...>, ...]

See also:

classmethod get_cached_object(*args, invalidate=False, pk=None, name=None, user=None, user_profile=None, username=None, account=None, session_key=None, taggit=True, **kwargs)

Retrieve a model instance using caching to optimize performance.

Examples of retrieval patterns:

# By primary key
instance = MyModel.get_cached_object(pk=123)

# By name and user profile
instance = MyModel.get_cached_object(name="Resource Name", user_profile=user_profile)

# By name and account
instance = MyModel.get_cached_object(name="Resource Name", account=account)
Parameters:
  • pk (Optional[int]) – The primary key of the model instance to retrieve.

  • name (Optional[str]) – The name of the model instance to retrieve.

  • user (Optional[User]) – The user associated with the model instance.

  • user_profile (Optional[UserProfile]) – The user profile associated with the model instance.

  • account (Optional[Account]) – The account associated with the model instance.

  • invalidate (Optional[bool]) – Whether to invalidate the cache for this retrieval.

Returns:

The model instance if found, otherwise raises DoesNotExist.

Return type:

Model

classmethod get_cached_objects(invalidate=False, user_profile=None, taggit=True, **kwargs)

Retrieve a list of MetaDataWithOwnershipModel instances associated with a user profile using caching.

Example usage:

# Retrieve MetaDataWithOwnershipModel instances for a user profile with caching
models = MetaDataWithOwnershipModel.get_cached_objects(my_user_profile, invalidate=invalidate)
Parameters:
  • invalidate (Optional[bool]) – Whether to invalidate the cache for this retrieval.

  • user_profile (Optional[UserProfile]) – The user profile for which to retrieve MetaDataWithOwnershipModel instances.

Returns:

A queryset of MetaDataWithOwnershipModel instances associated with the user profile.

Return type:

QuerySet

get_connection_string(masked=True)[source]

Return the connection string.

Return type:

str

get_constraints()
get_deferred_fields()

Return a set containing names of deferred fields for this instance.

get_kind_display(*, field=<django.db.models.CharField: kind>)

Shows the label of the kind. See get_FOO_display() for more information.

classmethod get_object_by_locator(locator)

Retrieves an object based on its record locator.

Example:

obj = MyModel.objects.create()
print(obj.id)  # e.g., 123
locator = obj.record_locator # e.g., "mymodel-rc2x"

retrieved_obj = MyModel.get_object_by_locator(locator)
print(type(retrieved_obj))  # Should be <class 'MyModel'>
print(retrieved_obj)  # Should be the same as obj
Parameters:

locator (str) – The record locator string to decode and search for.

Returns:

The model instance if found, otherwise None.

Return type:

Optional[TimestampedModel]

get_proxy_protocol_display(*, field=<django.db.models.CharField: proxy_protocol>)

Shows the label of the proxy_protocol. See get_FOO_display() for more information.

get_readonly_csv_file(file_path)

Retrieves a read-only file object for a CSV file.

This method opens the specified CSV file in read-only mode and returns a file object that can be used to read its contents. It ensures that the file is not modified during the reading process.

Parameters:

file_path (str) – The path to the CSV file to open.

Returns:

A read-only file object for the specified CSV file.

Return type:

file

get_readonly_yaml_file(file_path)

Retrieves a read-only file object for a YAML file.

This method opens the specified YAML file in read-only mode and returns a file object that can be used to read its contents. It ensures that the file is not modified during the reading process.

Parameters:

file_path (str) – The path to the YAML file to open.

Returns:

A read-only file object for the specified YAML file.

Return type:

file

classmethod hash_regex()

Returns a regex pattern that matches the hashed ID format for this model anywhere in a string.

The hashed ID format is defined by the HASH_PREFIX and HASH_SUFFIX class attributes, with a base64-encoded string in between. This regex can be used to validate or extract hashed IDs from strings, including when embedded in URLs.

Returns:

A regex pattern for matching hashed IDs.

Return type:

Pattern

property hashed_id: str

Returns a URL-friendly hashed version of the object’s ID for use in URLs and other.

contexts where an obscured, non-identifying, non-sequential identifier is preferred.

Encoding scheme: 1. Take the object’s ID and add a large constant (HASH_FLOOR) to ensure it’s not easily guessable. 2. Convert the resulting number to a string and encode it using URL-safe base64 encoding. 3. Remove any padding characters from the encoded string. 4. Add a prefix and suffix to the encoded string to create a recognizable format.

Example:

obj = MyModel.objects.create()
print(obj.id)  # e.g., 123
print(obj.hashed_id)  # e.g., "rc2x"
Returns:

Hashed ID string (URL-safe, no padding)

Return type:

str

property health_check_urls: list[str]

Returns a list of URL paths that are considered health check endpoints.

Returns:

List of health check URL path strings.

Return type:

list[str]

id

BigAutoField

Primary key: ID

Type:

Type

classmethod id_from_hashed_id(hashed_id)

Decodes a hashed ID back to the original object ID.

decoding scheme: 1. Validate that the hashed ID starts with the expected prefix and ends with the expected suffix. 2. Remove the prefix and suffix to isolate the base64-encoded string. 3. Add padding if necessary to make the length of the encoded string a multiple of 4. 4. Decode the base64 string to get the original number as a string. 5. Convert the decoded string to an integer and subtract the HASH_FLOOR to get the original ID.

Example:

my_record = MyModel.objects.create()
print(my_record.id)  # e.g., 123
hashed_id = my_record.hashed_id  # e.g., "rc2x"

original_id = MyModel.id_from_hashed_id(hashed_id)
print(original_id)  # Should print the original ID (e.g., 123)
Parameters:

hashed_id (str) – The hashed ID string to decode (URL-safe, no padding).

Returns:

The original object ID if decoding is successful, otherwise None.

Return type:

Optional[int]

kind

CharField

Kind. The kind of connection. Example: ‘SQL’, ‘API’.

Choices:

  • SqlConnection

  • ApiConnection

Type:

Type

property manifest_url: str

Returns the URL to the plugin’s manifest.

Adds the manifest kind as a slug to the base manifest URL defined in the parent class. For example, if the base manifest URL is “/plugins/{hashed_id}” and the manifest kind is “api_connection”, the resulting manifest URL would be “/plugins/{hashed_id}/api-connection/”.

Example:

self.rfc1034_compliant_kind  # 'api-connection'
self.rfc1034_compliant_name  # 'smarter-test-api'
self.manifest_url  # 'http://localhost:9357/connection/connections/api-connection/smarter-test-api/'
mask_string(string='', mask_char='*', mask_length=4, string_length=8)

Masks a string for secure logging.

This utility function masks all but the last unmasked_chars characters of the input string, replacing them with asterisks. It is useful for logging sensitive information like API keys or passwords.

Parameters:
  • string (Optional[str]) – The string to be masked.

  • mask_char (str) – The character used for masking.

  • mask_length (int) – The number of characters to mask.

  • string_length (int) – The length of the string to consider for masking.

Returns:

The masked string.

Return type:

str

name

CharField

Name. Name in camelCase, e.g., ‘apiKey’, no special characters.

Type:

Type

objects: MetaDataWithOwnershipModelManager = <smarter.apps.account.models.metadata_with_ownership.MetaDataWithOwnershipModelManager object>
property pk
plugin_data_api_connection

Reverse ForeignKey from PluginDataApi

All plugin data api connection of this API Connection (related name of connection)

Type:

Type

prepare_database_save(field)
proxy_host

CharField

Proxy host

Type:

Type

proxy_password

ForeignKey to Secret

Proxy password. The proxy password for authentication, if required. (related name: api_connections_proxy_password)

Type:

Type

proxy_password_id

Internal field, use proxy_password instead.

proxy_port

IntegerField

Proxy port

Type:

Type

proxy_protocol

CharField

Proxy protocol. The protocol to use for the proxy connection.

Choices:

  • http

  • https

  • socks

Type:

Type

proxy_username

CharField

Proxy username

Type:

Type

property ready: bool

Indicates whether the object is ready for use.

This is a placeholder that should be overridden in subclasses.

Returns:

True if ready, False otherwise.

Return type:

bool

property record_locator: str

Returns a short, URL-friendly record locator derived from the object’s ID.

Example:

obj = MyModel.objects.create(name="Example")
print(obj.id)  # e.g., 123
print(obj.record_locator)  # e.g., "llm_client-rc2x"
Returns:

Record locator string (URL-safe, no padding)

Return type:

str

recursive_sort_dict(data)

Recursively sorts a dictionary by its keys.

This method takes a dictionary and returns a new dictionary with all keys sorted in ascending order. If any values are also dictionaries, they will be sorted recursively as well.

Parameters:

data (dict) – The dictionary to sort.

Returns:

A new dictionary with all keys sorted.

Return type:

dict

refresh_from_db(using=None, fields=None, from_queryset=None)

Reload field values from the database.

By default, the reloading happens from the database this instance was loaded from, or by the read router if this instance wasn’t loaded from any database. The using parameter will override the default.

Fields can be used to specify which fields to reload. The fields should be an iterable of field attnames. If fields is None, then all non-deferred fields are reloaded.

When accessing deferred fields of an instance, the deferred loading of the field will call this method.

rename(new_name)

Rename the model instance with a new name.

Parameters:

new_name (str) – The new name for the instance.

Returns:

The updated instance of MetaDataModel with the new name.

Return type:

MetaDataModel

property rfc1034_compliant_name: str | None

Returns a URL-friendly name for the llm_client.

This property returns an RFC 1034-compliant name for the llm_client, suitable for use in URLs and DNS labels.

Example:

self.name = 'Example LLMClient 1'
self.rfc1034_compliant_name  # 'example-llm_client-1'
Returns:

The RFC 1034-compliant name, or None if self.name is not set.

Return type:

Optional[str]

rfc1034_compliant_str(name)

Converts a string to an RFC 1034 compliant format.

This method takes a string and converts it to a format that complies with RFC 1034, which is commonly used for domain names. It replaces invalid characters with hyphens and ensures the resulting string is lowercase.

Parameters:

name (str) – The string to convert to RFC 1034 compliant format.

Returns:

The converted string in RFC 1034 compliant format.

Return type:

str

rfc1034_compliant_to_snake(name)

Converts an RFC 1034 compliant string to snake_case.

This method takes a string in RFC 1034 compliant format and converts it to snake_case. It replaces hyphens with underscores and ensures the resulting string is lowercase.

Parameters:

name (str) – The RFC 1034 compliant string to convert.

Returns:

The converted string in snake_case.

Return type:

str

save(*args, **kwargs)[source]

Override the save method to validate the field dicts.

save_base(raw=False, force_insert=False, force_update=False, using=None, update_fields=None)

Handle the parts of saving which should be done only once per save, yet need to be done in raw saves, too. This includes some sanity checks and signal sending.

The ‘raw’ argument is telling save_base not to save any parent models and not to do any changes to the values before save. This is used by fixture loading.

serializable_value(field_name)

Return the value of the field name for this instance. If the field is a foreign key, return the id value instead of the object. If there’s no Field object with this name on the model, return the model attribute’s value.

Used to serialize a field’s value (in the serializer, or form output, for example). Normally, you would just access the attribute directly and not use this method.

smarter_build_absolute_uri(request)

Attempts to get the absolute URI from a request object.

This utility function tries to retrieve the request URL from any valid child class of django.http.HttpRequest. It is especially useful in unit tests or scenarios where the request object may not implement build_absolute_uri().

Parameters:

request (HttpRequest) – The request object.

Returns:

The absolute request URL.

Return type:

Optional[str]

Raises:

SmarterValueError – If the URI cannot be built from the request.

sorted_dict(data)

Returns a new dictionary with keys sorted.

Parameters:

data (dict) – The dictionary to sort.

Returns:

A new dictionary with sorted keys.

Return type:

dict

sqlconnection

Reverse OneToOneField from SqlConnection

The SQL Connection of this connection base (related name of connectionbase_ptr)

Type:

Type

tagged_items

Reverse GenericRelation from ApiConnection

All + of this tagged item (related name of tagged_items)

Type:

Type

tags = <taggit.managers._TaggableManager object>
property tags_list: list[str]

Return the tags as a list of strings.

We assume that @cached_property is more efficient at fetch than @cache_results, all things considered equal, which provides a marginal boost to instances. Meanwhile, the @cache_results is persisted to the Django cache, and thus outlives this instance. Thus, best of both worlds.

Returns:

List of tag names.

Return type:

list[str]

test_connection()[source]

Test the API connection by making a simple GET request to the root domain.

Return type:

bool

test_proxy()[source]
Return type:

bool

timeout

IntegerField

Timeout. The timeout for the API request in seconds. Default is 30 seconds.

Type:

Type

to_camel_case(data, convert_values=False)

Converts a snake_case string to camelCase.

This method takes a string in snake_case format and converts it to camelCase. It is useful for standardizing naming conventions across different formats.

Parameters:
  • data (Union[str, dict[str, object], list[object], object]) – The snake_case string to convert.

  • convert_values (bool) – Whether to convert the values of dictionaries and lists recursively.

Returns:

The converted string in camelCase.

Return type:

Any

to_json()

Serialize the model instance to a JSON-compatible dictionary.

This method uses the custom SmarterJSONEncoder to ensure that all fields, including timestamps and any complex data types, are properly serialized.

Returns:

A dictionary representation of the model instance suitable for JSON serialization.

Return type:

dict[str, Any]

to_snake_case(data, convert_values=False)

Converts a camelCase or PascalCase string to snake_case.

This method takes a string in camelCase or PascalCase format and converts it to snake_case. It is useful for standardizing naming conventions across different formats.

Parameters:
  • data (Union[str, dict[str, object], list[object], object]) – The camelCase or PascalCase string to convert.

  • convert_values (bool) – Whether to convert the values of dictionaries and lists recursively.

Returns:

The converted string in snake_case.

Return type:

Any

property unformatted_class_name: str

Returns the raw class name without formatting.

Returns:

The unformatted class name as a string.

Return type:

str

This is useful for logging or serialization where the plain class name is needed.

unique_error_message(model_class, unique_check)
updated_at

DateTimeField

Updated at

Timestamp indicating when the model instance was last updated.

This field is automatically updated to the current date and time whenever the instance is saved. It is indexed in the database for efficient querying.

Type:

Type

user_profile

ForeignKey to UserProfile

User profile (related name: connectionbase)

Type:

Type

user_profile_id

Internal field, use user_profile instead.

validate()[source]

Validate the API connection.

Return type:

bool

validate_constraints(exclude=None)
validate_unique(exclude=None)

Check unique constraints on the model and raise ValidationError if any failed.

vector_databases

Reverse ForeignKey from VectorestoreMeta

All vector databases of this API Connection (related name of connection)

Type:

Type

version

CharField

Version. Semantic version in the format MAJOR.MINOR.PATCH, e.g., ‘1.0.0’.

Type:

Type