Skip to main content

wrapper for amocrm rest api

Install

Install using pip...

pip install amocrm-api-wrapper

Usage

=======

from amocrm_api import AmoLegacyClient # for login password auth
from amocrm_api import AmoOAuthClient # for oauth
from datetime import datetime

client = AmoLegacyClient('<login>', '<password>', '<crm_url>')
client = AmoOAuthClient('<access_token>', '<refresh_token>', '<crm_url>', '<client_id>', '<client_secret>', '<redirect_uri>')
dt = datetime.datetime.today().strftime("%a, %d %b %Y %H-%m-%d")
date_time = f"{dt} UTC"

# for Legacy client
headers = {
    "IF-MODIFIED-SINCE": f"{date_time}",
    "Content-Type": "application/json",
}

client.update_session_params(headers)

get account info

name type default value
with_amojo_id bool False
with_amojo_rights bool False
with_users_groups bool False
with_task_types bool False
with_version bool False
with_ventity_names bool False
with_datetime_settings bool False
account_info = client.get_account_info()

create leads

name type default value
objects list -
objects = [
    {
        "name": "Сделка для примера 1",
        "created_by": 0,
        "price": 20000,
        "custom_fields_values": [
            {
                "field_id": 294471,
                "values": [
                    {
                        "value": "Наш первый клиент"
                    }
                ]
            }
        ]
    },
    {
        "name": "Сделка для примера 2",
        "price": 10000,
        "_embedded": {
            "tags": [
                {
                    "id": 2719
                }
            ]
        }
    }
]
result = client.create_leads(objects)

update leads

name type default value
objects list -
objects = [
    {
        "id": 54886,
        "pipeline_id": 47521,
        "status_id": 143,
        "date_close": 1589297221,
        "loss_reason_id": 7323,
        "updated_by": 0
    },
    {
        "id": 54884,
        "price": 50000,
        "pipeline_id": 47521,
        "status_id": 525743,
        "_embedded": {
            "tags": None
        }
    }
]
result = client.update_leads(objects)

get lead

name type default value
lead_id int -
lead = client.get_lead(123)

get leads

name type default value
limit int 250
page int 1
with_params Optional[list] None
filters Optional[dict] None
order Optional[dict] None
leads = client.get_leads(limit=10, page=3, filters={'updated_at__from': '<timestamp>', 'updated_at__to': '<timestamp>'})
# for any timestamp fields like created_at, updated_at, closed_at u need to user __ like created_at__from, created_at__to

get unsorted leads

name type default value
limit int 250
page int 1
filter_by_uids Union[str, list, None] None
filter_by_pipeline_id Union[str, list, None] None
filter_by_category Union[str, list, None] None
order_by Optional[dict] None
unsorted_leads = client.get_unsorted_leads(limit=10, page=3, filter_by_pipeline_id=[1, 2310, 8751035])

get unsorted lead by uid

name type default value
uid str -
unsorted_lead = client.get_unsorted_by_uid('ufsigkgdjlk13igmd')

create unsorted lead by sip

name type default value
source_uid str -
source_name str -
metadata dict -
conctact dict -
lead dict -
comapany dict -
pipeline_id Optional[int] None
created_at Optional[int] None
request_id Optional[int] None
unsorted_lead = {
        "request_id": "123",
        "source_name": "ОАО Коспромсервис",
        "source_uid": "a1fee7c0fc436088e64ba2e8822ba2b3",
        "pipeline_id": 2194576,
        "created_at": 1510261200,
        "leads": {
                "name": "Тех обслуживание",
                "price": 5000,
                "custom_fields_values": [
                    {
                        "field_id": 284785,
                        "values": [
                            {
                                "value": "Кастомное поле"
                            }
                        ]
                    }
                ],
                "_embedded": {
                    "tags": [
                        {
                            "id": 263809
                        }
                    ]
                }
            }
        ],
        "contacts":
            {
                "name": "Контакт для примера"
            }
        "companies":
            {
                "name": "ОАО Коспромсервис"
            }
        },
        "metadata": {
            "is_call_event_needed": True,
            "uniq": "a1fe231cc88e64ba2e8822ba2b3ewrw",
            "duration": 54,
            "service_code": "CkAvbEwPam6sad",
            "link": "https://example.com",
            "phone": 79998888888,
            "called_at": 1510261200,
            "from": "onlinePBX"
        }
    }
result = client.create_unsorted_by_sip(**unsorted_lead)

create unsorted lead by form

name type default value
source_uid str -
source_name str -
metadata dict -
conctact dict -
lead dict -
comapany dict -
pipeline_id Optional[int] None
created_at Optional[int] None
request_id Optional[int] None
unsorted_lead = {
        "request_id": "123",
        "source_name": "ОАО Коспромсервис",
        "source_uid": "a1fee7c0fc436088e64ba2e8822ba2b3",
        "pipeline_id": 2194576,
        "created_at": 1590830520,
        "leads": {
            "name": "Тех обслуживание",
            "visitor_uid": "5692210d-58d0-468c-acb2-dce7f93eef87",
            "price": 5000,
            "custom_fields_values": [
                {
                    "field_id": 284785,
                    "values": [
                        {
                            "value": "Дополнительное поле"
                        }
                    ]
                }
            ],
            "_embedded": {
                "tags": [
                    {
                        "name": "Тег для примера"
                    }
                ]
            }
        },
        "contacts":
            {
                "name": 234,
                "first_name": "123213",
                "last_name": 234,
                "custom_fields_values": [
                    {
                        "field_code": "PHONE",
                        "values": [
                            {
                                "value": "+7912321323"
                            }
                        ]
                    }
                ]
            },
        "companies": {
            "name": "ОАО Коспромсервис"
        },
        "metadata": {
            "ip": "123.222.2.22",
            "form_id": "a1fee7c0fc436088e64ba2e8822ba2b3ewrw",
            "form_sent_at": 1590830520,
            "form_name": "Форма заявки для полёта в космос",
            "form_page": "https://example.com",
            "referer": "https://www.google.com/search?&q=elon+musk"
        }
    }
result = client.create_unsorted_by_form(**unsorted_lead)

accept unsorted lead

name type default value
uid str -
user_id int -
status_id int -
result = client.accept_unsorted('jkjsoijg2321kgkdu2', 2310, 4444)

decline unsorted lead

name type default value
uid str -
user_id int -
result = client.decline_unsorted('jkjsoijg2321kgkdu2', 2310,)

link unsorted lead ot another lead

name type default value
uid str -
user_id int -
link dict -
result = client.link_unsorted('jkjsoijg2321kgkdu2', 2310, link={
    "entity_id": 93144801,
    "entity_type": "leads"
})

get summary unsorted leads

name type default value
uid Union[str, list, None] None
created_at__from Optional[str] None
created_at__to Optional[str] None
pipeline_id Union[str, list, None] None
summary_unsorted = client.get_summary_unsorted()

get pipelines

pipelines = client.get_pipelines()

craete pipeline

name type default value
name str -
sort int -
is_main bool -
statuses list -
is_unsorted_on bool False
request_id Optional[str] None
pipeline = {
    "name": "Воронка доп продаж",
    "is_main": False,
    "is_unsorted_on": True,
    "sort": 20,
    "request_id": "123",
    "statuses": [
        {
            "id": 142,
            "name": "Мое название для успешных сделок"
        },
        {
            "name": "Первичный контакт",
            "sort": 10,
            "color": "#fffeb2"
        }
    ]
}
result = client.create_pipeline(**pipeline)

edit pipeline

name type default value
pipeline_id int -
name str -
sort int -
is_main bool -
is_unsorted_on bool False
pipeline = {
    "pipeline_id": 2310,
    "name": "Новое название для воронки",
    "is_main": False,
    "is_unsorted_on": False,
    "sort": 100
}
result = client.edit_pipeline(**pipeline)

delete pipeline

name type default value
pipeline_id int -
result = client.delete_pipeline(2310)

get statuses by pipeline

name type default value
pipeline_id int -
pipeline_statuses = client.get_pipeline_statuses(2310)

get pipeline status

name type default value
pipeline_id int -
status_id int -
pipeline_status = client.get_pipeline_status(2310, 123)

add statuses to pipeline

name type default value
pipeline_id int -
statuses list -
statuses = [
    {
        "name": "Новый этап",
        "sort": 100,
        "color": "#fffeb2"
    },
    {
        "name": "Новый этап 2",
        "sort": 200,
        "color": "#fffeb2"
    }
]
result = client.add_statuses_to_pipeline(2310, statuses)

edit pipeline status

name type default value
pipeline_id int -
status_id int -
name str -
sort int -
color str -
result = client.edit_pipeline_status(2310, 123, 'Новый Этап', sort=500, color="#fffeb2")

delete status from pipeline

name type default value
pipeline_id int -
status_id int -
result = client.delete_status_from_pipeline(2310, 123)

get contacts

name type default value
limit int 250
page int 1
with_params Optional[list] None
filters Optional[dict] None
order Optional[dict] None
contacts = client.get_contacts(limit=10, page=3, filters={'updated_at__from': '<timestamp>', 'updated_at__to': '<timestamp>'})
# for any timestamp fields like created_at, updated_at, closed_at u need to user __ like created_at__from, created_at__to

get contact

name type default value
contact_id int -
contact = client.get_contact(123989)

create contacts

name type default value
contacts list -
conctacts = [
    {
        "first_name": "Петр",
        "last_name": "Смирнов",
        "custom_fields_values": [
            {
                "field_id": 271316,
                "values": [
                    {
                        "value": "Директор"
                    }
                ]
            }
        ]
    },
    {
        "name": "Владимир Смирнов",
        "created_by": 47272
    }
]
result = client.create_contacts(contacts)

update contacts

name type default value
contacts list -
conctacts = [
    {
        "id": 3,
        "first_name": "Иван",
        "last_name": "Иванов",
        "custom_fields_values": [
            {
                "field_id": 66192,
                "field_name": "Телефон",
                "values": [
                    {
                        "value": "79999999999",
                        "enum_code": "WORK"
                    }
                ]
            }
       ]
    }
]
result = client.update_contacts(contacts)

get companies

name type default value
limit int 250
page int 1
with_params Optional[list] None
filters Optional[dict] None
order Optional[dict] None
companies = client.get_companies(limit=10, page=3, filters={'updated_at__from': '<timestamp>', 'updated_at__to': '<timestamp>'})
# for any timestamp fields like created_at, updated_at, closed_at u need to user __ like created_at__from, created_at__to

get company

name type default value
company_id int -
company = client.get_company(9988)

create companies

name type default value
companies list -
companies = [
    {
        "name": "АО Рога и Копыта",
        "custom_fields_values": [
            {
                "field_code": "PHONE",
                "values": [
                    {
                        "value": "+7912322222",
                        "enum_code": "WORK"
                    }
                ]
            }
        ]
    }
]
result = client.create_companies(companies)

update companies

name type default value
companies list -
companies = [
    {
        "id": 11090825,
        "name": "Новое название компании",
        "custom_fields_values": [
            {
                "field_code": "EMAIL",
                "values": [
                    {
                        "value": "test@example.com",
                        "enum_code": "WORK"
                    }
                ]
            }
       ]
    }
]
result = client.update_companies(companies)

get catalogs

name type default value
page int 1
limit int 250
catalogs = client.get_catalogs(page=1, limit=5)

get catalog

name type default value
catalog_id int 1
catalog = client.get_catalog(12319)

create catalogs

name type default value
catalogs list -
catalogs = [
    {
        "name": "Тестовый список",
        "can_add_elements": True,
        "can_link_multiple": False,
        "request_id": "123"
    }
]}
]
result = client.create_catalogs(catalogs)

update catalogs

name type default value
catalogs list -
catalogs = [
    {
        "id": 5787,
        "name": "Новое имя списка",
        "can_add_elements": True,
        "can_link_multiple": False
    }
]
result = client.update_catalogs(catalogs)

get elements from catalog

name type default value
catalogs_id int -
page int 1
limit int 250
filters Optional[dict] None
elements = client.get_catalog_elements(5787, page=3, limit=8)

get element from catalog

name type default value
catalogs_id int -
element_id int -
element = client.get_catalog_element(5787, 2301)

add elements to catalog

name type default value
catalogs_id int -
elements list -
elements = [
    {
        "name": "Новый элемент списка",
        "custom_fields_values": [
            {
                "field_id": 14263,
                "values": [
                    {
                        "value": 1000
                    }
                ]
            }
        ]
    }
]
result = client.add_elements_to_catalog(5787, elements)

update elements in catalog

name type default value
catalogs_id int -
elements list -
elements = [
    {
        "id": 986757,
        "name": "Новое имя элемента"
    },
    {
        "id": 986753,
        "name": "Новое имя элемента 2"
    }
]
result = client.update_elements_in_catalog(5787, elements)

get users

name type default value
page int 1
limit list 250
with_role bool False
with_group bool False
users = client.get_users(page=1, limit=250)

get user

name type default value
user_id int 1
with_role bool False
with_group bool False
user = client.get_user(2222, with_role=True, with_group=True)

get webhooks

name type default value
distansion Optional[str] None
webhooks = client.get_webhooks()

subscribe webhook

name type default value
distansion str -
settings list -
result = client.subscribe_webhook(destination="https://example.test", settings=["add_lead"])

get widgets

name type default value
page int 1
limit int 250
widgets = client.get_widgets(page=3, limit=22)

get widget

name type default value
widget_code str -
widget = client.get_widget('<widget_code>')

install widget

name type default value
widget_code str -
**kwargs str -
example ={
    "login": "example",
    "password": "eXaMp1E",
    "phones": {
        504141: "1039"
    },
    "script_path": "https://example.com/"
}
result = client.install_widget('<widget_code>', **example)

uninstall widget

name type default value
widget_code str -
result = client.uninstall_widget('<widget_code>')

get tasks

name type default value
page int 1
limit int 250
filters Optional[dict] None
order Optional[dict] None
tasks = client.get_tasks(page=1, limit=10, filters={'updated_at__from': '<timestamp>', 'updated_at__to': '<timestamp>'})
# for any timestamp fields like created_at, updated_at, closed_at u need to user __ like created_at__from, created_at__to

get task

name type default value
task_id int -
task = client.get_task(1288)

add tasks

name type default value
tasks list -
tasks = [
    {
        "task_type_id": 1,
        "text": "Встретиться с клиентом Иван Иванов",
        "complete_till": 1588885140,
        "entity_id": 9785993,
        "entity_type": "leads",
        "request_id": "example"
    }
]
result = client.add_tasks(tasks=tasks)

update tasks

name type default value
tasks list -
tasks = [
    {
        "id": 4745251,
        "task_type_id": 2,
        "text": "Новое название для задачи",
        "complete_till": 1588885140
    },
    {
        "id": 4747929,
        "task_type_id": 1,
        "text": "Новое название для задачи 2",
        "complete_till": 1588885140
    }
]
result = client.update_tasks(tasks=tasks)

execution task

name type default value
task_id int -
is_completed bool -
result str -
result = client.execution_task(1288, is_completed=True, result="Удалось связаться с клиентом")

get tasks by entity type (leads|contacts|companies|customers)

name type default value
entity_type str -
page int 1
limit int 250
filters Optional[dict] None
tags = client.get_tags_by_entity_type('leads', page=1, limit=10)

add tasks for entity type (leads|contacts|companies|customers)

name type default value
entity_type str -
tags list -
tags = [
    {
        "name": "Tag 1"
    },
    {
        "name": "Tag 2",
        "request_id": "my_request_id"
    },
    {
        "name": "Tag 3"
    }
]
tags = client.add_tags_for_entity_type('leads', tags=tags)

get custom fields

contacts_cf = client.get_contacts_custom_fields()
leads_cf = client.get_leads_custom_fields()
companies_cf = client.get_companies_custom_fields()
customers_cf = client.get_customers_custom_fields()
customer_segments_cf = client.get_customer_segments_custom_fields()
customer_segments_cf = client.get_customer_segments_custom_fields()
get_catalog_custom_fields = client.get_customer_segments_custom_fields('<catalog_id>')

get custom field

contacts_cf = client.get_contacts_custom_field('<id>')
leads_cf = client.get_leads_custom_field('<id>')
companies_cf = client.get_companies_custom_field('<id>')
customers_cf = client.get_customers_custom_field('<id>')
customer_segments_cf = client.get_customer_segments_custom_field('<id>')
get_catalog_custom_fields = client.get_catalog_custom_field('<catalog_id>', '<id>')

create custom field

contacts_cf = client.create_contacts_custom_field(['<cf>'])
leads_cf = client.create_leads_custom_field(['<cf>'])
companies_cf = client.create_companies_custom_field(['<cf>'])
customers_cf = client.create_customers_custom_field(['<cf>'])
customer_segments_cf = client.create_customer_segments_custom_field(['<cf>'])
get_catalog_custom_fields = client.create_catalog_custom_field('<catalog_id>', ['<cf>'])

update custom field

contacts_cf = client.update_contacts_custom_field(['<cf>'])
leads_cf = client.update_leads_custom_field(['<cf>'])
companies_cf = client.update_companies_custom_field(['<cf>'])
customers_cf = client.update_customers_custom_field(['<cf>'])
customer_segments_cf = client.update_customer_segments_custom_field(['<cf>'])
get_catalog_custom_fields = client.update_catalog_custom_field('<catalog_id>', ['<cf>'])

changelog

  • 0.0.18 - add filter_ids get_leads and _get_entities method
  • 0.0.12 - add entity notes methods, rename updatecustomers_segments_custom_fields -> update_customers_segments_custom_fields

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

amocrm_api_wrapper-0.0.20.tar.gz (34.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

amocrm_api_wrapper-0.0.20-py3-none-any.whl (26.3 kB view details)

Uploaded Python 3

File details

Details for the file amocrm_api_wrapper-0.0.20.tar.gz.

File metadata

  • Download URL: amocrm_api_wrapper-0.0.20.tar.gz
  • Upload date:
  • Size: 34.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for amocrm_api_wrapper-0.0.20.tar.gz
Algorithm Hash digest
SHA256 eac3fc5dba24b97e2c6e1685d631a4be809aa5e03e65bb6eb146c2612a356adc
MD5 4c53dac1debbb96a01025284978ac0f4
BLAKE2b-256 16324d6be58132e87fdc66158e9ceb8ec589e876efc8caabbe738fcb24f68f28

See more details on using hashes here.

File details

Details for the file amocrm_api_wrapper-0.0.20-py3-none-any.whl.

File metadata

File hashes

Hashes for amocrm_api_wrapper-0.0.20-py3-none-any.whl
Algorithm Hash digest
SHA256 109ba68825277e717549c9957b50853575b92b6dbf2ba480899650581fb59446
MD5 e805304f40a013bbf01c63f794f24522
BLAKE2b-256 95018a3351a5a6c6a7badd7a858035ade4eca4d56feb6a5e4b75acb154e4a483

See more details on using hashes here.

Release history Release notifications | RSS feed

1.0.0

2 files

This release

0.0.20 This release

2 files

0.0.19

1 file

0.0.18

1 file

0.0.17

1 file

0.0.16

1 file

0.0.15

1 file

0.0.14

1 file

0.0.13

1 file

0.0.12

1 file

0.0.11

1 file

0.0.10

1 file

0.0.9

1 file

0.0.8

1 file

0.0.7

1 file

0.0.6

1 file

0.0.5

1 file

0.0.4

1 file

0.0.3

1 file

0.0.2

1 file

0.0.1

1 file

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