
Security News
Django Joins curl in Pushing Back on AI Slop Security Reports
Django has updated its security policies to reject AI-generated vulnerability reports that include fabricated or unverifiable content.
API Client extension for validate and transform requests / responses using pydantic.
pip install api-client-pydantic
The following decorators have been provided to validate request data and converting json straight to pydantic class.
from apiclient_pydantic import serialize, serialize_all_methods
# serialize request and response data
@serialize(config: Optional[ConfigDict] = None, validate_return: bool = True, response: Optional[Type[BaseModel]] = None)
# wraps all local methods of a class with a decorator 'serialize'.
@serialize_all_methods(config: Optional[ConfigDict] = None)
Usage:
Define the schema for your api in pydantic classes.
from pydantic import BaseModel, Field
class Account(BaseModel):
account_number: int = Field(alias='accountNumber')
sort_code: int = Field(alias='sortCode')
date_opened: datetime = Field(alias='dateOpened')
Add the @serialize
decorator to the api client method to transform the response
directly into your defined schema.
@serialize(response=List[Account])
def get_accounts():
...
# or
@serialize
def get_accounts() -> List[Account]:
...
Add the @serialize
decorator to the api client method to translate the incoming kwargs
into the required dict or instance for the endpoint:
from apiclient_pydantic import ModelDumped
@serialize
def create_account(data: AccountHolder):
# data will be AccountHolder instance
...
create_account(data={'last_name' : 'Smith','first_name' : 'John'})
# data will be a AccountHolder(last_name="Smith", first_name="John")
@serialize
def create_account(data: ModelDumped[AccountHolder]):
# data will be exactly a dict
...
create_account(data={'last_name' : 'Smith','first_name' : 'John'})
# data will be a dict {"last_name": "Smith", "first_name": "John"}
For more convenient use, you can wrap all APIClient methods with @serialize_all_methods
.
from apiclient import APIClient
from apiclient_pydantic import serialize_all_methods
from typing import List
from .models import Account, AccountHolder
@serialize_all_methods
class MyApiClient(APIClient):
def decorated_func(self, data: Account) -> Account:
...
def decorated_func_holder(self, data: AccountHolder) -> List[Account]:
...
This code generator creates a ApiClient app from an openapi file.
FAQs
API Client extension for validate and transform requests / responses using pydantic.
We found that api-client-pydantic demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Django has updated its security policies to reject AI-generated vulnerability reports that include fabricated or unverifiable content.
Security News
ECMAScript 2025 introduces Iterator Helpers, Set methods, JSON modules, and more in its latest spec update approved by Ecma in June 2025.
Security News
A new Node.js homepage button linking to paid support for EOL versions has sparked a heated discussion among contributors and the wider community.