Skip to main content

amocrm-sdk

PyPI Docs

Python SDK for the AmoCRM REST API.

Features

  • OAuth2 с auto-refresh токенов по 401
  • Гибкое хранилище токенов — любой класс с save() / load() (Django ORM, Redis, etc.)
  • DjangoTokenStorage из коробки
  • Глобальный менеджер (exchange_code / get_client) для Django/Flask
  • Typed DTO models — никаких сырых словарей
  • Leads (сделки): list, get, create, update, update_one, create_complex; get() подгружает контакты по умолчанию
  • Contacts (контакты): list, get, create, update, update_one
  • Companies (компании): list, get, create, update, update_one
  • Pipelines (воронки): list, get, create, update, delete + statuses CRUD
  • Tasks (задачи): list, get, create, update, update_one
  • Лимит 50 элементов за batch-запрос (create/update) — для всех ресурсов
  • Custom fields support
  • Авто-пагинация — list() без page автоматически обходит все страницы и возвращает Iterator[T]
  • Кастомные DTO — configure_dto() позволяет подменить базовые классы своими подклассами

Installation

uv add amocrm-sdk
# or
pip install amocrm-sdk

Quick Start

OAuth2 setup

from amocrm import OAuthConfig
from amocrm.auth import DjangoTokenStorage
from amocrm.manager import exchange_code, get_client

oauth = OAuthConfig(
    client_id="...",
    client_secret="...",
    redirect_uri="https://yourapp.com/oauth/callback",
    storage=DjangoTokenStorage(AmoCRMToken.objects.get(id=1)),
)

# Первый запуск — обменять код авторизации на токены
exchange_code(subdomain="your-company", code=auth_code, oauth=oauth)

# Последующие запуски — токены загружаются из storage автоматически
client = get_client(subdomain="your-company", oauth=oauth)

Кастомное хранилище токенов

# Пример с Redis
class RedisTokenStorage:
    def save(self, access_token: str, refresh_token: str) -> None:
        redis.set("amo:access", access_token)
        redis.set("amo:refresh", refresh_token)

    def load(self) -> tuple[str, str]:
        return redis.get("amo:access"), redis.get("amo:refresh")

Типичный порядок работы

from amocrm import OAuthConfig, Lead, Contact, Company
from amocrm.auth import DjangoTokenStorage
from amocrm.manager import exchange_code, get_client

oauth = OAuthConfig(
    client_id="...",
    client_secret="...",
    redirect_uri="https://yourapp.com/oauth/callback",
    storage=DjangoTokenStorage(AmoCRMToken.objects.get(id=1)),
)

# 1. Обмен кода авторизации на токены (OAuth callback)
exchange_code(subdomain="your-company", code=auth_code, oauth=oauth)
client = get_client(subdomain="your-company", oauth=oauth)

# 2. Создание сделки с контактом и компанией (create_complex)
lead = Lead(
    name="Новая сделка",
    price=100000,
    contacts=[Contact(name="Иван Иванов")],
    company=Company(name="ООО Ромашка"),
)
created = client.leads.create_complex([lead])
lead_id = created[0].id

# 3. Получение лида с контактом и компанией (get подгружает contacts по умолчанию)
lead = client.leads.get(lead_id)
contact = lead.contacts[0]  # Contact
company = lead.company      # Company

# 4. Обновление контакта
contact.name = "Иван Петров"
client.contacts.update_one(contact)

# 5. Обновление компании
company.name = "ООО Лютик"
client.companies.update_one(company)

Пагинация

Методы list() у всех ресурсов поддерживают два режима:

Вызов Поведение Возвращает
client.leads.list() Авто-пагинация — обходит все страницы Iterator[Lead]
client.leads.list(page=2) Одна конкретная страница list[Lead]

По умолчанию авто-пагинация запрашивает по 50 элементов на страницу. Для кастомного размера: client.leads.list(limit=250).

Кодогенератор (Codegen)

Генерирует типизированные подклассы DTO с named-свойствами для кастомных полей AmoCRM. Имена свойств автоматически транслитерируются из кириллицы в латиницу.

from amocrm import OAuthConfig, DjangoTokenStorage
from amocrm.codegen import generate_custom_fields_dto

oauth = OAuthConfig(client_id="...", client_secret="...", redirect_uri="...",
                    storage=DjangoTokenStorage(django_obj))
generate_custom_fields_dto("mycompany", oauth, output_file="src/amocrm/models/my_models.py")

Подключение кастомных DTO

После кодогенерации подключите свои классы к клиенту через configure_dto() — все методы get, list, create, update начнут возвращать экземпляры вашего подкласса:

from amocrm.models.my_models import MyLead, MyContact, MyCompany

client = get_client(subdomain="mycompany", oauth=oauth)
client.configure_dto(leads=MyLead, contacts=MyContact, companies=MyCompany)

lead = client.leads.get(123)  # → MyLead
lead.inn  # → str | None  (геттер из MyLead)

lead.inn = "new_inn"  # записывает в custom_fields_values
client.leads.update([lead])  # сохраняет изменения в AmoCRM

for lead in client.leads.list():
    print(lead.istochnik_trafika)  # → str | None

Подробнее — в документации.

Links

TODO

Metadata

Release files for amocrm-sdk 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for amocrm-sdk 0.4.0
File Size Uploaded
amocrm_sdk-0.4.0.tar.gz 8.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for amocrm-sdk 0.4.0
File Interpreter ABI Platform
amocrm_sdk-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 8.5 MB

Release files / amocrm_sdk-0.4.0.tar.gz

Download URL amocrm_sdk-0.4.0.tar.gz
Size 8.5 MB
Tags Source
SHA-256 checksum
How to use checksums
8d1c08e9fda89641e47824b03373447c6089c67ad85674e8b0475895478beca7
BLAKE2b-256 checksum
How to use checksums
3d5a735f4ef556c146063f9ebc0abfa6daad3db8429c4a809991c6c8d7396965
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 17, 2026.

Transparency log

Release files / amocrm_sdk-0.4.0-py3-none-any.whl

Download URL amocrm_sdk-0.4.0-py3-none-any.whl
Size 33.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
adfdd8801b3b74b116732b31cb569ece40a4241c111d07602489dec56b659959
BLAKE2b-256 checksum
How to use checksums
396b6e2504cd1001e5fed161af9f6a08b7aaa5d822a9a96c7f2124b6f42b9462
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 17, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page