Manager API Reference¶
API documentation for the AirtableManager class.
AirtableManager¶
Unified manager for all Airtable operations.
Constructor¶
| Parameter | Type | Description |
|---|---|---|
config |
AirtableConfig |
Airtable configuration |
Example¶
from pydantic_airtable import AirtableManager, AirtableConfig
config = AirtableConfig(
access_token="pat_xxx",
base_id="appXXX"
)
manager = AirtableManager(config)
Record Operations¶
get_records¶
Get records from a table.
def get_records(
self,
table_name: Optional[str] = None,
base_id: Optional[str] = None,
**params
) -> Dict[str, Any]
Parameters:
- table_name: Table name (uses config default if None)
- base_id: Base ID (uses config default if None)
- **params: Airtable API parameters
- filterByFormula: Filter formula
- maxRecords: Maximum records
- sort: Sort configuration
- fields: Fields to return
- view: View name
Returns: API response with records list
Example:
response = manager.get_records("Users")
for record in response['records']:
print(record['fields']['name'])
# With parameters
response = manager.get_records(
"Tasks",
filterByFormula="{status} = 'Active'",
maxRecords=10,
sort=[{"field": "created_time", "direction": "desc"}]
)
create_record¶
Create a new record.
def create_record(
self,
fields: Dict[str, Any],
table_name: Optional[str] = None,
base_id: Optional[str] = None
) -> Dict[str, Any]
Parameters:
- fields: Field values
- table_name: Table name
- base_id: Base ID
Returns: Created record data
Example:
record = manager.create_record(
{"name": "Alice", "email": "alice@example.com"},
"Users"
)
print(record['id'])
get_record¶
Get a specific record by ID.
def get_record(
self,
record_id: str,
table_name: Optional[str] = None,
base_id: Optional[str] = None
) -> Dict[str, Any]
Parameters:
- record_id: Airtable record ID
- table_name: Table name
- base_id: Base ID
Returns: Record data
Example:
update_record¶
Update an existing record.
def update_record(
self,
record_id: str,
fields: Dict[str, Any],
table_name: Optional[str] = None,
base_id: Optional[str] = None
) -> Dict[str, Any]
Parameters:
- record_id: Record ID to update
- fields: Field values to update
- table_name: Table name
- base_id: Base ID
Returns: Updated record data
Example:
delete_record¶
Delete a record.
def delete_record(
self,
record_id: str,
table_name: Optional[str] = None,
base_id: Optional[str] = None
) -> Dict[str, Any]
Parameters:
- record_id: Record ID to delete
- table_name: Table name
- base_id: Base ID
Returns: Deletion confirmation
Example:
Table Operations¶
create_table¶
Create a new table.
def create_table(
self,
name: str,
fields: List[Dict[str, Any]],
base_id: Optional[str] = None
) -> Dict[str, Any]
Parameters:
- name: Table name
- fields: List of field definitions
- base_id: Base ID
Returns: Created table information
Example:
table = manager.create_table("Users", [
{"name": "Name", "type": "singleLineText"},
{"name": "Email", "type": "email"},
{
"name": "Status",
"type": "singleSelect",
"options": {
"choices": [
{"name": "Active"},
{"name": "Inactive"}
]
}
}
])
print(table['id'])
get_table_schema¶
Get schema for a table.
Parameters:
- table_name: Table name
- base_id: Base ID
Returns: Table schema with fields
Raises: APIError if table not found
Example:
schema = manager.get_table_schema("Users")
for field in schema['fields']:
print(f"{field['name']}: {field['type']}")
update_table¶
Update table properties.
def update_table(
self,
table_id: str,
updates: Dict[str, Any],
base_id: Optional[str] = None
) -> Dict[str, Any]
Parameters:
- table_id: Table ID
- updates: Update data
- base_id: Base ID
Returns: Updated table information
delete_table¶
Delete a table.
Parameters:
- table_id: Table ID
- base_id: Base ID
Returns: Deletion confirmation
Base Operations¶
list_bases¶
List all accessible bases.
Returns: List of base information
Example:
get_base_schema¶
Get schema for a base.
Parameters:
- base_id: Base ID (uses config default if None)
Returns: Base schema with tables
Example:
create_base¶
Create a new base.
Parameters:
- name: Base name
- tables: List of table definitions
Returns: Created base information
Example:
base = manager.create_base("My Project", [
{
"name": "Users",
"fields": [
{"name": "Name", "type": "singleLineText"},
{"name": "Email", "type": "email"}
]
},
{
"name": "Tasks",
"fields": [
{"name": "Title", "type": "singleLineText"}
]
}
])
delete_base¶
Delete a base.
Parameters:
- base_id: Base ID to delete
Returns: Deletion confirmation
Model Integration¶
create_table_from_model¶
Create a table from a Pydantic model.
def create_table_from_model(
self,
model_class: Type,
table_name: Optional[str] = None,
base_id: Optional[str] = None
) -> Dict[str, Any]
Parameters:
- model_class: Pydantic model class
- table_name: Override table name
- base_id: Base ID
Returns: Created table information
Example:
from pydantic import BaseModel
class User(BaseModel):
name: str
email: str
age: int
table = manager.create_table_from_model(User, "Users")
sync_model_to_table¶
Synchronize model schema to existing table.
def sync_model_to_table(
self,
model_class: Type,
table_name: Optional[str] = None,
base_id: Optional[str] = None,
create_missing_fields: bool = True,
update_field_types: bool = False
) -> Dict[str, Any]
Parameters:
- model_class: Pydantic model class
- table_name: Table name
- base_id: Base ID
- create_missing_fields: Add missing fields
- update_field_types: Update field types
Returns: Sync results
Example:
result = manager.sync_model_to_table(
User,
"Users",
create_missing_fields=True
)
print(f"Created: {result['fields_created']}")
Usage Examples¶
Full CRUD Example¶
from pydantic_airtable import AirtableManager, AirtableConfig
config = AirtableConfig(
access_token="pat_xxx",
base_id="appXXX"
)
manager = AirtableManager(config)
# Create
record = manager.create_record(
{"name": "Alice", "email": "alice@example.com"},
"Users"
)
record_id = record['id']
# Read
record = manager.get_record(record_id, "Users")
print(record['fields'])
# Update
manager.update_record(
record_id,
{"name": "Alice Smith"},
"Users"
)
# Delete
manager.delete_record(record_id, "Users")
Schema Management¶
# Create table
manager.create_table("Products", [
{"name": "Name", "type": "singleLineText"},
{"name": "Price", "type": "currency", "options": {"precision": 2}},
{"name": "In Stock", "type": "checkbox"}
])
# Get schema
schema = manager.get_table_schema("Products")
# List all tables
base_schema = manager.get_base_schema()
for table in base_schema['tables']:
print(table['name'])