0.0
No release in over 3 years
Low commit activity in last 3 years
Rails wrapper API AmoCrm
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

>= 0.16.0
>= 1.11.0
 Project Readme

Amocrm для Rails

Оглавление

  1. Установка
    1. Упрощенная авторизация
    2. Авторизация через перенаправления пользователя (требуется gem Devise)
  2. Параметры аккаунта
  3. Сделки
    1. Список сделок
    2. Получение сделки по ID
    3. Добавление сделок
    4. Комплексное добавление сделок с контактом и компанией
    5. Редактирование сделок
    6. Редактирование сделки
  4. Неразобранное
    1. Список неразобранного
    2. Получение неразобранного по UID
    3. Добавление неразобранного типа звонок
    4. Добавление неразобранного типа форма
    5. Принятие неразобранного
    6. Отклонение неразобранного
    7. Привязка неразобранного
    8. Сводная информация о неразобранных сделках
    9. Описание объектов metadata
  5. Воронки и этапы
    1. Общая информация
    2. Список воронок сделок
    3. Получение воронки сделок по ID
    4. Добавление воронок
    5. Редактирование воронки
    6. Удаление воронки
    7. Список статусов воронки сделок
    8. Получение статуса воронки сделок по ID
    9. Добавление статусов в воронку
    10. Редактирование статуса воронки
    11. Удаление статуса воронки
    12. Доступные цвета статусов
  6. Фильтрация
    1. Фильтрация списка сделок
    2. Фильтрация списка контактов
    3. Фильтрация списка компаний
    4. Фильтрация списка покупателей
    5. Типы фильтров
  7. Контакты
    1. Список контактов
    2. Получение контакта по ID
    3. Добавление контактов
    4. Редактирование контактов
    5. Редактирование контакта
    6. Привязка чатов к контактам
    7. Получение списка чатов контакта
  8. Компании
    1. Список компаний
    2. Получение компании по ID
    3. Добавление компаний
    4. Редактирование компаний
    5. Редактирование компании
  9. Списки
    1. Доступные списки
    2. Получение списка по ID
    3. Добавление списков
    4. Редактирование списков
    5. Редактирование списка
    6. Доступные элементы списка
    7. Получение элемента списка по ID
    8. Добавление элементов списков
    9. Редактирование элементов списков
    10. Редактирование элемента списка
    11. Удаление элементов списка
  10. Связи сущностей
    1. Список связанных сущностей
    2. Привязка сущностей
    3. Отвязка сущностей
    4. Массовый список связанных сущностей
    5. Массовая привязка сущностей
    6. Массовая отвязка сущностей
  11. Задачи
    1. Список задач
    2. Получение задачи по ID
    3. Добавление задач
    4. Редактирование задач
    5. Редактирование задачи
    6. Выполнение задачи
  12. Поля и группы полей
    1. Список полей сущности
    2. Получение поля сущности по его ID
    3. Создание дополнительных полей сущности
    4. Редактирование дополнительных полей сущности
    5. Удаление дополнительного поля
    6. Список групп полей сущности
    7. Получение группы полей сущности по ID группы
    8. Создание групп полей
    9. Редактирование группы полей
    10. Удаление группы дополнительных полей
    11. Доступные типы полей
    12. Примеры заполнения разных типов полей через API
  13. Теги
    1. Список полей сущности
    2. Добавление тегов для конкретного типа сущности
    3. Добавление тегов к сущности
    4. Удаление тегов у сущности
  14. События и примечания
    1. Список событий
    2. Значения для фильтра по значению до/после
    3. Типы событий
    4. Общая информация о примечаниях
    5. Типы примечаний
    6. Список примечаний по типу сущности
    7. Список примечаний по конкретной сущности, по ID сущности
    8. Получение примечания по ID
    9. Добавление примечаний
  15. Покупатели
    1. Включение покупателей и смена их режима
    2. Список покупателей
    3. Получение покупателя по ID
    4. Добавление покупателей
    5. Редактирование покупателей
    6. Редактирование покупателя
    7. Список транзакций
    8. Получение транзакции по ID
    9. Добавление транзакций к покупателю
    10. Удаление транзакции
    11. Списание/начисление бонусных баллов покупателю
  16. Статусы и сегменты покупателей
    1. Список статусов покупателей
    2. Получение статуса покупателей по ID
    3. Добавление статусов в воронку
    4. Редактирование статуса покупателей
    5. Удаление статуса покупателей
    6. Список сегментов покупателей
    7. Получение сегмента покупателей по ID
    8. Добавление сегмента покупателей
    9. Редактирование сегмента покупателей
    10. Удаление сегмента покупателей
    11. Доступные цвета статусов
    12. Доступные цвета сегментов
  17. Пользователи
    1. Список пользователей
    2. Получение пользователя по ID
    3. Добавление пользователей
    4. Список ролей пользователей
    5. Получение роли по ID
    6. Добавление ролей
    7. Редактирование роли
    8. Удаление роли
    9. Общие обозначения прав пользователей
    10. Зависимости прав пользователей
  18. Товары
  19. Вебхуки
    1. Список установленных вебхуков в аккаунте
    2. Подписка на вебхук
    3. Отписка от событий
    4. Возможные событий
  20. Виджеты
    1. Список виджетов
    2. Информация о виджете по его коду
    3. Установка виджета в аккаунт
    4. Удаление установки виджета
    5. Подтверждение выполнения блока виджета в Salesbot
  21. Добавление звонков
  22. Salebot
  23. Короткие ссылки

Установка

добавьте в Gemfile:

gem 'amocrm-rails'

и запустите bundle install.

Для упрощенной авторизации:

rails g amocrm_rails:install

Для авторизации через перенаправление пользователя (требуется gem devise):

rails g amocrm_rails:install --with=devise

Получение CLIENT_ID, CLIENT_SECRET и CODE

Упрощенная авторизация

  1. Переходим на страницу интеграций https://yourdomain.amocrm.ru/settings/widgets/ и нажимаем "+ СОЗДАТЬ ИНТЕГРАЦИЮ" alt Страница виджетов
  2. Заполняем поля, в первое поле вводим https://yourdomain.com/amocrm и нажимаем "Сохранить" alt Создание интеграции
  3. Переходим на таб "Ключи и доступы". Код авторизации работает 20 минут. alt Создание интеграции

В файл config/amocrm.yml вставляем данные.

Авторизация через перенаправления пользователя (требуется gem Devise)

Выполняем все шаги как при упрощенной авторизации

Ссылка на получение кода:

<%= link_to "Установить интеграцию",
          amocrm_oauth_url(state: current_user.try(:id)),
          class: 'btn btn-primary' %>

Пример доступен по адресу: https://yourdomain/amocrm/link

alt Страница с кнопкой

Нажимаем на кнопку, логинимся в амо и даём права приложению

alt Авторизация в amo

После вы будуте перенаправлены на страницу https://yourdomain.com/amocrm

alt Страница с кнопкой

Если вы увидили код и информацию об аккаунте - всё в порядке, копировать код нет необходимости, страницу можно закрыть.

Если вы не используете gem Devise, то вам необходимо реализовать в application_controller.rb методы current_user для получения текущего пользователя, user_signed_in? для проверки авторизован ли посетитель на вашем сайте и new_user_session_path для получения пути к странице авторизции.

Вы можете изменять timeout, open_timeout, faraday_adapter, proxy, symbolize_keys, logger, и debug:

AmocrmRails::Request.timeout = 60
AmocrmRails::Request.open_timeout = 60
AmocrmRails::Request.symbolize_keys = true
AmocrmRails::Request.debug = false

в файле config/initializers/amocrm.rb

params = {
  with: 'amojo_id,amojo_rights,users_groups,task_types,version,entity_names,datetime_settings'
}
response = AmocrmRails::Request.account.retrieve(params: params)
p(response.body)

Сделки

params = {
  with: 'catalog_elements',
  page: 0,
  limit: 10
}
response = AmocrmRails::Request.leads.retrieve(params: params)
p(response.body)
leads = response.body[:_embedded][:leads]
lead_id = leads.first[:id]
params = {
  with: 'catalog_elements'
}
response = AmocrmRails::Request.leads(lead_id).retrieve(params: params)
p(response.body)
body = [
    {
        "name": "Сделка для примера 1",
        "created_by": 0,
        "price": 20000
    },
    {
        "name": "Сделка для примера 2",
        "price": 10000
    }
]
response = AmocrmRails::Request.leads.create(body: body)
p(response.body)
leads = response.body[:_embedded][:leads]
body = [
  {
    name: "Название сделки",
    price: 3422,
    created_at: 1608905348
  },
  {
    name: "Название сделки",
    price: 3422
  }
]
response = AmocrmRails::Request.leads.complex.create(body: body)
p(response.body)
body = [
    {
      id: 666749,
      closed_at: 1589297221
    },
    {
      id: 666753,
      price: 50000
    }
]
response = AmocrmRails::Request.leads.update(body: body)
p(response.body)
leads = response.body[:_embedded][:leads]
body = {
  closed_at: 1589297221
}
response = AmocrmRails::Request.leads(666749).update(body: body)
p(response.body)
leads = response.body[:_embedded][:leads]

Неразобранное

params = {
  page: 0,
  limit: 10
}
response = AmocrmRails::Request.leads.unsorted.retrieve(params: params)
p(response.body)
unsorted = response.body[:_embedded][:unsorted]
uid = unsorted.first[:uid]
response = AmocrmRails::Request.leads.unsorted(uid).retrieve
p(response.body)
body = [
  {
    source_name: "ООО Деппа",
    source_uid: "a1fee7c0fc436088e64ba2e8822ba2b3",
    created_at: 1510261200,
    _embedded: {
      leads: [
        {
          name: "Тех обслуживание",
          price: 5000
        }
      ],
      contacts: [
        {
          name: "Контакт для примера"
        }
      ],
      companies: [
        {
          name: "ООО Деппа"
        }
      ]
    },
    metadata: {
      is_call_event_needed: true,
      uniq: "a1fe231cc88e64ba2e8822ba2b3ewrw",
      duration: 54,
      service_code: "CkAvbEwPam6sad",
      link: "https://deppa.ru",
      phone: 79998888888,
      called_at: 1510261200,
      from: "onlinePBX"
    }
  }
]
response = AmocrmRails::Request.leads.unsorted.sip.create(body: body)
p(response.body)
body = [
  {
    source_name: "ООО Деппа",
    source_uid: "a1fee7c0fc436088e64ba2e8822ba2b3",
    created_at: 1590830520,
    _embedded: {
      leads: [
        {
          name: "Тех обслуживание",
          visitor_uid: "5692210d-58d0-468c-acb2-dce7f93eef87",
          price: 5000,
          _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://deppa.ru",
      referer: "https://www.google.com/search?&q=elon+musk"
    }
  }
]
response = AmocrmRails::Request.leads.unsorted.forms.create(body: body)
p(response.body)
uid = response.body[:_embedded][:unsorted].first[:uid]
body = {
  status_id: 41504311
}
response = AmocrmRails::Request.leads.unsorted(uid).accept.create(body: body)
p(response.body)
response = AmocrmRails::Request.leads.unsorted(uid).decline.delete
p(response.body)
body = {
  link: {
    entity_id: lead_id,
    entity_type: "leads"
  }
}
response = AmocrmRails::Request.leads.unsorted(uid).link.create(body: body)
p(response.body)
response = AmocrmRails::Request.leads.unsorted.summary.retrieve
p(response.body)

Воронки и этапы

response = AmocrmRails::Request.leads.pipelines.retrieve
p(response.body)
pipelines = response.body[:_embedded][:pipelines]
pipeline_id = pipelines.first[:id]
response = AmocrmRails::Request.leads.pipelines(pipeline_id).retrieve
p(response.body)
body = [
  {
    name: "Воронка доп продаж",
    is_main: false,
    is_unsorted_on: true,
    sort: 20,
    request_id: "123",
    _embedded: {
      statuses: [
        {
          id: 142,
          name: "Мое название для успешных сделок"
        },
        {
          name: "Первичный контакт",
          sort: 10,
          color: "#fffeb2"
        }
      ]
    }
  }
]
response = AmocrmRails::Request.leads.pipelines.create(body: body)
p(response.body)
pipelines = response.body[:_embedded][:pipelines]
pipeline_id = pipelines.first[:id]
body = {
        "name": "Новое название для воронки",
        "is_main": false,
        "is_unsorted_on": false,
        "sort": 100
}
response = AmocrmRails::Request.leads.pipelines(pipeline_id).update(body: body)
p(response.body)
AmocrmRails::Request.leads.pipelines(pipeline_id).delete
response = AmocrmRails::Request.leads.pipelines(pipeline_id).statuses.retrieve
p(response.body)
statuses = response.body[:_embedded][:statuses]
status_id = statuses.first[:id]
response = AmocrmRails::Request.leads.pipelines(pipeline_id).statuses(status_id).retrieve
p(response.body)
body = [
  {
    name: "Новый этап",
    sort: 100,
    color: "#fffeb2"
  },
  {
    name: "Новый этап 2",
    sort: 200,
    color: "#fffeb2"
  }
]
response = AmocrmRails::Request.leads.pipelines(pipeline_id).statuses.create(body: body)
p(response.body)
statuses = response.body[:_embedded][:statuses]
status_id = statuses.first[:id]
body = {
  name: "Новое название для статуса",
  color: "#c1e0ff"
}
response = AmocrmRails::Request.leads.pipelines(pipeline_id).statuses(status_id).update(body: body)
p(response.body)
AmocrmRails::Request.leads.pipelines(pipeline_id).statuses(status_id).delete
params = {
  filter: { 
    id: lead_id
  }
}
response = AmocrmRails::Request.leads.retrieve(params: params)
p(response.body)
leads = response.body[:_embedded][:leads]
params = {
  filter: { 
    name: "Павел Осетров"
  }
}
response = AmocrmRails::Request.contacts.retrieve(params: params)
p(response.body)
contacts = response.body[:_embedded][:contacts]
params = {
  filter: { 
    name: "ООО Деппа"
  }
}
response = AmocrmRails::Request.companies.retrieve(params: params)
p(response.body)
companies = response.body[:_embedded][:companies]
params = {
  filter: { 
    name: "Павел Осетров"
  }
}
response = AmocrmRails::Request.customers.retrieve(params: params)
p(response.body)
customers = response.body[:_embedded][:customers]
params = {
  with: 'leads',
  page: 0,
  limit: 10
}
response = AmocrmRails::Request.contacts.retrieve(params: params)
p(response.body)
contacts = response.body[:_embedded][:contacts]
contact_id = contacts.first[:id]
response = AmocrmRails::Request.contacts(contact_id).retrieve
p(response.body)
body = [
  {
    first_name: "Петр",
    last_name: "Смирнов"
  },
  {
    name: "Владимир Смирнов"
  }
]
response = AmocrmRails::Request.contacts.create(body: body)
p(response.body)
contacts = response.body[:_embedded][:contacts]
contact_id = contacts.first[:id]
body = [
  {
    id: contact_id,
    first_name: "Иван",
    last_name: "Иванов"
  }
]
response = AmocrmRails::Request.contacts.update(body: body)
p(response.body)
contacts = response.body[:_embedded][:contacts]
contact_id = contacts.first[:id]
body = {
  first_name: "Иван",
  last_name: "Иванов"
}
response = AmocrmRails::Request.contacts(contact_id).update(body: body)
p(response.body)
body = [
  {
    contact_id: contact_id,
    chat_id: uid
  }
]
response = AmocrmRails::Request.contacts.chats.create(body: body)
p(response.body)
params = [
  {
    contact_id: contact_id
  }
]
response = AmocrmRails::Request.contacts.chats.retrieve(params: params)
p(response.body)
params = {
  with: 'leads',
  page: 0,
  limit: 10
}
response = AmocrmRails::Request.companies.retrieve(params: params)
p(response.body)
companies = response.body[:_embedded][:companies]
company_id = companies.first[:id]
response = AmocrmRails::Request.companies(company_id).retrieve
p(response.body)
body = [
  { 
    name: "ООО Деппа"
  }
]
response = AmocrmRails::Request.companies.create(body: body)
p(response.body)
companies = response.body[:_embedded][:companies]
company_id = companies.first[:id]
body = [
  { 
    id: company_id,     
    name: "ООО ДЕППА"
  }
]
response = AmocrmRails::Request.companies.update(body: body)
p(response.body)
companies = response.body[:_embedded][:companies]
company_id = companies.first[:id]
body = {
  name: "ООО ДЕППА"
}
response = AmocrmRails::Request.companies(company_id).update(body: body)
p(response.body)
company_id = response.body[:id]
params = {
  page: 0,
  limit: 10
}
response = AmocrmRails::Request.catalogs.retrieve(params: params)
p(response.body)
catalogs = response.body[:_embedded][:catalogs]
catalog_id = catalogs.first[:id]
response = AmocrmRails::Request.catalogs(catalog_id).retrieve
p(response.body)
body = [
  {
    name: "Тестовый список",
    can_add_elements: true,
    can_link_multiple: false
  }
]
response = AmocrmRails::Request.catalogs.create(body: body)
p(response.body)
catalogs = response.body[:_embedded][:catalogs]
catalog_id = catalogs.first[:id]
body = [
  { 
    id: catalog_id,     
    name: "Новое имя списка"
  }
]
response = AmocrmRails::Request.catalogs.update(body: body)
p(response.body)
catalogs = response.body[:_embedded][:catalogs]
catalog_id = catalogs.first[:id]
body = {
  name: "Новое имя списка"
}
response = AmocrmRails::Request.catalogs(catalog_id).update(body: body)
p(response.body)
catalog_id = response.body[:id]
params = { 
  with: 'invoice_link',      
  page: 0,
  limit: 10
}
response = AmocrmRails::Request.catalogs(catalog_id).elements.retrieve(params: params)
p(response.body)
elements = response.body[:_embedded][:elements]
element_id = elements.first[:id]
params = { 
  with: 'invoice_link'
}
response = AmocrmRails::Request.catalogs(catalog_id).elements(element_id).retrieve(params: params)
p(response.body)
element_id = response.body[:id]
body = [
  {
    name: "Новый элемент списка"
  }
]
response = AmocrmRails::Request.catalogs(catalog_id).elements.create(body: body)
p(response.body)
elements = response.body[:_embedded][:elements]
element_id = elements.first[:id]
body = [
  { 
    id: element_id,
    name: "Новое имя элемента"
  }
]
response = AmocrmRails::Request.catalogs(catalog_id).elements.update(body: body)
p(response.body)
elements = response.body[:_embedded][:elements]
element_id = elements.first[:id]
body = { 
  name: "Новое имя элемента"
}
response = AmocrmRails::Request.catalogs(catalog_id).elements(element_id).update(body: body)
p(response.body)
element_id = response.body[:id]
body = { delete: [35159, 35164] }
response = AmocrmRails::Request.v2.catalog_elements.create(body: body)
p(response.body)
response = AmocrmRails::Request.leads(lead_id).links.retrieve
links = response.body[:_embedded][:links]
response = AmocrmRails::Request.contacts(contact_id).links.retrieve
links = response.body[:_embedded][:links]
response = AmocrmRails::Request.companies(company_id).links.retrieve
links = response.body[:_embedded][:links]
response = AmocrmRails::Request.customers(customer_id).links.retrieve
links = response.body[:_embedded][:links]
body = [
 {
   to_entity_id: 10,
   to_entity_type: "catalog_elements",
   metadata: {
     quantity: 1,
     catalog_id: 1026
  }
 },
 {
   to_entity_id: 457282,
   to_entity_type: "contacts",
   metadata: {
     is_main: true,
  }
 }
]
response = AmocrmRails::Request.leads(lead_id).link.create(body: body)
links = response.body[:_embedded][:links]
response = AmocrmRails::Request.contacts(contact_id).link.create(body: body)
links = response.body[:_embedded][:links]
response = AmocrmRails::Request.companies(company_id).link.create(body: body)
links = response.body[:_embedded][:links]
response = AmocrmRails::Request.customers(customer_id).link.create(body: body)
links = response.body[:_embedded][:links]
body = [
  {
    to_entity_id: 10,
    to_entity_type: "catalog_elements",
    metadata: {
      catalog_id: 1026
    }
  },
  {
    to_entity_id: 457282,
    to_entity_type: "contacts",
  }
]
response = AmocrmRails::Request.leads(lead_id).unlink.create(body: body)
links = response.body[:_embedded][:links]
response = AmocrmRails::Request.contacts(contact_id).unlink.create(body: body)
links = response.body[:_embedded][:links]
response = AmocrmRails::Request.companies(company_id).unlink.create(body: body)
links = response.body[:_embedded][:links]
response = AmocrmRails::Request.customers(customer_id).unlink.create(body: body)
links = response.body[:_embedded][:links]
response = AmocrmRails::Request.leads.links.retrieve
links = response.body[:_embedded][:links]
response = AmocrmRails::Request.contacts.links.retrieve
links = response.body[:_embedded][:links]
response = AmocrmRails::Request.companies.links.retrieve
links = response.body[:_embedded][:links]
response = AmocrmRails::Request.customers.links.retrieve
links = response.body[:_embedded][:links]
body = [
  {
    entity_id: 14158851,
    to_entity_id: 10,
    to_entity_type: "catalog_elements",
    metadata: {
      quantity: 1,
      catalog_id: 1026
    }
  },
  {
    entity_id: 14158852,
    to_entity_id: 457282,
    to_entity_type: "contacts",
    metadata: {
      is_main: true,
    }
  }
]
response = AmocrmRails::Request.leads.link.create(body: body)
links = response.body[:_embedded][:links]
response = AmocrmRails::Request.contacts.link.create(body: body)
links = response.body[:_embedded][:links]
response = AmocrmRails::Request.companies.link.create(body: body)
links = response.body[:_embedded][:links]
response = AmocrmRails::Request.customers.link.create(body: body)
links = response.body[:_embedded][:links]
body = [
  {
    to_entity_id: 10,
    to_entity_type: "catalog_elements",
    metadata: {
      catalog_id: 1026
    }
  },
  {
    to_entity_id: 457282,
    to_entity_type: "contacts",
  }
]
response = AmocrmRails::Request.leads.unlink.create(body: body)
links = response.body[:_embedded][:links]
response = AmocrmRails::Request.contacts.unlink.create(body: body)
links = response.body[:_embedded][:links]
response = AmocrmRails::Request.companies.unlink.create(body: body)
links = response.body[:_embedded][:links]
response = AmocrmRails::Request.customers.unlink.create(body: body)
links = response.body[:_embedded][:links]
params = {
        page: 0,
        limit: 10
}
response = AmocrmRails::Request.tasks.retrieve(params: params)
p(response.body)
tasks = response.body[:_embedded][:tasks]
task_id = tasks.first[:id]
response = AmocrmRails::Request.tasks(task_id).retrieve
p(response.body)
task_id = response.body[:id]
body = [
 {
   task_type_id: 1,
   text: "Встретиться с клиентом Иван Иванов",
   complete_till: 1588885140
 }
]
response = AmocrmRails::Request.tasks.create(body: body)
p(response.body)
tasks = response.body[:_embedded][:tasks]
body = [
    {
      id: task_id,
      task_type_id: 2,
      text: "Новое название для задачи",
      complete_till: 1588885140
    }
]
response = AmocrmRails::Request.tasks.update(body: body)
p(response.body)
tasks = response.body[:_embedded][:tasks]
body = {
  task_type_id: 2,
  text: "Новое название для задачи",
  complete_till: 1588885140
}
response = AmocrmRails::Request.tasks(task_id).update(body: body)
task = response.body
body = {
  is_completed: true,
  result: {
    text: "Удалось связаться с клиентом"
  }
}
response = AmocrmRails::Request.tasks(task_id).update(body: body)
task = response.body
response = AmocrmRails::Request.leads.custom_fields.retrieve
response = AmocrmRails::Request.contacts.custom_fields.retrieve
response = AmocrmRails::Request.companies.custom_fields.retrieve
response = AmocrmRails::Request.customers.custom_fields.retrieve
response = AmocrmRails::Request.customers.segments.custom_fields.retrieve
response = AmocrmRails::Request.catalogs(catalog_id).custom_fields.retrieve
custom_fields = response.body[:_embedded][:custom_fields]
response = AmocrmRails::Request.leads.custom_fields(id).retrieve
response = AmocrmRails::Request.contacts.custom_fields(id).retrieve
response = AmocrmRails::Request.companies.custom_fields(id).retrieve
response = AmocrmRails::Request.customers.custom_fields(id).retrieve
response = AmocrmRails::Request.customers.segments.custom_fields(id).retrieve
response = AmocrmRails::Request.catalogs(catalog_id).custom_fields(id).retrieve
custom_fields = response.body
body = [
 {
   name: "multi select",
   type: "multiselect",
   sort: 510,
   required_statuses: [
   {
     pipeline_id: 16056,
     status_id: 20540473
   }
  ],
   enums: [
   {
     value: "Значение 1",
     sort: 1
   },
   {
     value: "Значение 2",
     sort: 2
   }
  ]
 }
]
response = AmocrmRails::Request.leads.custom_fields.create(body: body)
response = AmocrmRails::Request.contacts.custom_fields.create(body: body)
response = AmocrmRails::Request.companies.custom_fields.create(body: body)
response = AmocrmRails::Request.customers.custom_fields.create(body: body)
response = AmocrmRails::Request.customers.segments.custom_fields.create(body: body)
response = AmocrmRails::Request.catalogs(catalog_id).custom_fields.create(body: body)
custom_fields = response.body[:_embedded][:custom_fields]
custom_field_id = 1278898087
body_items = [{
        "id": custom_field_id,
        "name": "Новое имя для дополнительного поля",
        "sort": 560,
        "is_visible": false,
        "is_required": true
}]
body_item = {
        "name": "Новое имя для дополнительного поля",
        "sort": 560,
        "is_visible": false,
        "is_required": true
}
AmocrmRails::Request.leads.custom_fields.update(body: body_items)
AmocrmRails::Request.leads.custom_fields(custom_field_id).update(body: body_item)
AmocrmRails::Request.contacts.custom_fields.update(body: body_items)
AmocrmRails::Request.contacts.custom_fields(custom_field_id).update(body: body_item)
AmocrmRails::Request.companies.custom_fields.update(body: body_items)
AmocrmRails::Request.companies.custom_fields(custom_field_id).update(body: body_item)
AmocrmRails::Request.customers.custom_fields.update(body: body_items)
AmocrmRails::Request.customers.custom_fields(custom_field_id).update(body: body_item)
AmocrmRails::Request.customers.segments.custom_fields.update(body: body_items)
AmocrmRails::Request.customers.segments.custom_fields(custom_field_id).update(body: body_item)
AmocrmRails::Request.catalogs(catalog_id).custom_fields.update(body: body_items)
AmocrmRails::Request.catalogs(catalog_id).custom_fields(custom_field_id).update(body: body_item)
AmocrmRails::Request.leads.custom_fields(custom_field_id).delete
AmocrmRails::Request.contacts.custom_fields(custom_field_id).delete
AmocrmRails::Request.companies.custom_fields(custom_field_id).delete
AmocrmRails::Request.customers.custom_fields(custom_field_id).delete
AmocrmRails::Request.customers.segments.custom_fields(custom_field_id).delete
AmocrmRails::Request.catalogs(catalog_id).custom_fields(custom_field_id).delete
response = AmocrmRails::Request.leads.custom_fields.groups.retrieve
response = AmocrmRails::Request.contacts.custom_fields.groups.retrieve
response = AmocrmRails::Request.companies.custom_fields.groups.retrieve
response = AmocrmRails::Request.customers.custom_fields.groups.retrieve
custom_field_groups = response[:_embedded][:custom_field_groups]
group_id = custom_field_groups.first[:id]
response = AmocrmRails::Request.leads.custom_fields.groups(group_id).retrieve
response = AmocrmRails::Request.contacts.custom_fields.groups(group_id).retrieve
response = AmocrmRails::Request.companies.custom_fields.groups(group_id).retrieve
response = AmocrmRails::Request.customers.custom_fields.groups(group_id).retrieve
group_id = response[:id]
body = [
  {
    name: "group 1",
    sort: 4
  },
  {
    name: "group 2",
    sort: 5
  }
]
response = AmocrmRails::Request.leads.custom_fields.groups.create(body: body)
response = AmocrmRails::Request.contacts.custom_fields.groups.create(body: body)
response = AmocrmRails::Request.companies.custom_fields.groups.create(body: body)
response = AmocrmRails::Request.customers.custom_fields.groups.create(body: body)
custom_field_groups = response.body[:_embedded][:custom_field_groups]
custom_field_group_id = custom_field_groups.first[:id]
body = {
  sort: 6,
  fields: [
    14563,
    12575
  ]
}
response = AmocrmRails::Request.leads.custom_fields.groups(custom_field_group_id).update(body: body)
response = AmocrmRails::Request.contacts.custom_fields.groups(custom_field_group_id).update(body: body)
response = AmocrmRails::Request.companies.custom_fields.groups(custom_field_group_id).update(body: body)
response = AmocrmRails::Request.customers.custom_fields.groups(custom_field_group_id).update(body: body)
custom_field_groups = response.body[:_embedded][:custom_field_groups]
custom_field_group_id = custom_field_groups.first[:id]
AmocrmRails::Request.leads.custom_fields.groups(custom_field_group_id).delete
AmocrmRails::Request.contacts.custom_fields.groups(custom_field_group_id).delete
AmocrmRails::Request.companies.custom_fields.groups(custom_field_group_id).delete
AmocrmRails::Request.customers.custom_fields.groups(custom_field_group_id).delete
params = {
  page: 0,
  limit: 10
}
response = AmocrmRails::Request.leads.tags.retrieve(params: params)
response = AmocrmRails::Request.contacts.tags.retrieve(params: params)
response = AmocrmRails::Request.companies.tags.retrieve(params: params)
response = AmocrmRails::Request.customers.tags.retrieve(params: params)
tags = response.body[:_embedded][:tags]
tag_id = tags.first[:id]
body = [
  {
    "name": "Tag 1"
  },
  {
    "name": "Tag 2",
    "request_id": "my_request_id"
  },
  {
    "name": "Tag 3"
  }
]
response = AmocrmRails::Request.leads.tags.create(body: body)
response = AmocrmRails::Request.contacts.tags.create(body: body)
response = AmocrmRails::Request.companies.tags.create(body: body)
response = AmocrmRails::Request.customers.tags.create(body: body)
tags = response.body[:_embedded][:tags]
tag_id = tags.first[:id]
body_item = {
  _embedded: {
    tags: [
      {
        id: tag_id
      }
    ]
  }
}
body = [
  {
    id: object_id,
    _embedded: {
      tags: [
        {
          id: tag_id
        }
      ]
    }
  }
]
AmocrmRails::Request.leads.update(body: body)
AmocrmRails::Request.leads(lead_id).update(body: body_item)
AmocrmRails::Request.contacts.update(body: body)
AmocrmRails::Request.contacts(contact_id).update(body: body_item)
AmocrmRails::Request.companies.update(body: body)
AmocrmRails::Request.contacts(company_id).update(body: body_item)
AmocrmRails::Request.customers.update(body: body)
AmocrmRails::Request.contacts(customer_id).update(body: body_item)
body_item = {
  _embedded: {
    tags: nil
  }
}
body = [
  {
    id: object_id,
    _embedded: {
      tags: nil
    }
  }
]
AmocrmRails::Request.leads.update(body: body)
AmocrmRails::Request.leads(lead_id).update(body: body_item)
AmocrmRails::Request.contacts.update(body: body)
AmocrmRails::Request.contacts(contact_id).update(body: body_item)
AmocrmRails::Request.companies.update(body: body)
AmocrmRails::Request.contacts(company_id).update(body: body_item)
AmocrmRails::Request.customers.update(body: body)
AmocrmRails::Request.contacts(customer_id).update(body: body_item)
params = {
  with: 'contact_name',
  page: 0,
  limit: 10
}
response = AmocrmRails::Request.events.retrieve(params: params)
events = response.body[:_embedded][:events]
event_id = events.first[:id]
params = {
  with: 'contact_name'
}
response = AmocrmRails::Request.events(event_id).retrieve(params: params)
event = response.body
filter = {
  filter: {
    value_after: [
      customers_statuses: [
        {
          status_id: 135751,
        },
        {
          status_id: 135754,
        }
      ]
    ]
  }
}
filter = {
  filter: {
    value_after: [
      value: '155',
    ],
    type: 'sale_field_changed',
    entity: 'lead'
  }
}
params = {
  language_code: 'en'
}
response = AmocrmRails::Request.events.types.retrieve(params: params)
events_types = response.body[:_embedded][:events_types]
params = {
  page: 0,
  limit: 10
}
response = AmocrmRails::Request.leads.notes.retrieve(params: params)
response = AmocrmRails::Request.contacts.notes.retrieve(params: params)
response = AmocrmRails::Request.companies.notes.retrieve(params: params)
response = AmocrmRails::Request.customers.notes.retrieve(params: params)
notes = response.body[:_embedded][:notes]
note_id = notes.first[:id]
params = {
  page: 0,
  limit: 10
}
response = AmocrmRails::Request.leads(lead_id).notes.retrieve(params: params)
response = AmocrmRails::Request.contacts(contact_id).notes.retrieve(params: params)
response = AmocrmRails::Request.companies(company_id).notes.retrieve(params: params)
response = AmocrmRails::Request.customers(customer_id).notes.retrieve(params: params)
notes = response.body[:_embedded][:notes]
note_id = notes.first[:id]
response = AmocrmRails::Request.leads(lead_id).notes(note_id).retrieve
response = AmocrmRails::Request.contacts(contact_id).notes(note_id).retrieve
response = AmocrmRails::Request.companies(company_id).notes(note_id).retrieve
response = AmocrmRails::Request.customers(customer_id).notes(note_id).retrieve
note = response.body
body = [
  {
    entity_id: 167353,
    note_type: "call_in",
    params: {
      uniq: "8f52d38a-5fb3-406d-93a3-a4832dc28f8b",
      duration: 60,
      source: "onlinePBX",
      link: "https://deppa.ru",
      phone: "+79999999999"
    }
  },
  {
    entity_id: 167353,
    note_type: "call_out",
    params: {
      uniq: "8f52d38a-5fb3-406d-93a3-a4832dc28f8b",
      duration: 60,
      source: "onlinePBX",
      link: "https://deppa.ru",
      phone: "+79999999999"
    }
  },
  {
    entity_id: 167353,
    note_type: "geolocation",
    params: {
      text: "Примечание с геолокацией",
      address: "ул. Пушкина, дом Колотушкина, квартира Вольнова",
      longitude: "53.714816",
      latitude: "91.423146"
    }
  }
]
body_item = {
  entity_id: 167353,
  note_type: "call_in",
  params: {
    uniq: "8f52d38a-5fb3-406d-93a3-a4832dc28f8b",
    duration: 60,
    source: "onlinePBX",
    link: "https://deppa.ru",
    phone: "+79999999999"
  }
}
AmocrmRails::Request.leads.notes.create(body: body)
AmocrmRails::Request.leads(lead_id).notes.create(body: body_item)
AmocrmRails::Request.contacts.notes.create(body: body)
AmocrmRails::Request.contacts(contact_id).notes.create(body: body_item)
AmocrmRails::Request.companies.notes.create(body: body)
AmocrmRails::Request.companies(company_id).notes.create(body: body_item)
AmocrmRails::Request.customers.notes.create(body: body)
AmocrmRails::Request.customers(customer_id).notes.create(body: body_item)
notes = response.body[:_embedded][:notes]
note_id = notes.first[:id]
body = [
  {
    entity_id: 167353,
    note_type: "call_in",
    params: {
      uniq: "8f52d38a-5fb3-406d-93a3-a4832dc28f8b",
      duration: 60,
      source: "onlinePBX",
      link: "https://deppa.ru",
      phone: "+79999999999"
    }
  },
  {
    entity_id: 167353,
    note_type: "call_out",
    params: {
      uniq: "8f52d38a-5fb3-406d-93a3-a4832dc28f8b",
      duration: 60,
      source: "onlinePBX",
      link: "https://deppa.ru",
      phone: "+79999999999"
    }
  },
  {
    entity_id: 167353,
    note_type: "geolocation",
    params: {
      text: "Примечание с геолокацией",
      address: "ул. Пушкина, дом Колотушкина, квартира Вольнова",
      longitude: "53.714816",
      latitude: "91.423146"
    }
  }
]
body_item = {
  entity_id: 167353,
  note_type: "call_in",
  params: {
    uniq: "8f52d38a-5fb3-406d-93a3-a4832dc28f8b",
    duration: 60,
    source: "onlinePBX",
    link: "https://deppa.ru",
    phone: "+79999999999"
  }
}
AmocrmRails::Request.leads.notes.update(body: body)
AmocrmRails::Request.leads(lead_id).notes.update(body: body_item)
AmocrmRails::Request.contacts.notes.update(body: body)
AmocrmRails::Request.contacts(contact_id).notes.update(body: body_item)
AmocrmRails::Request.companies.notes.update(body: body)
AmocrmRails::Request.companies(company_id).notes.update(body: body_item)
AmocrmRails::Request.customers.notes.update(body: body)
AmocrmRails::Request.customers(customer_id).notes.update(body: body_item)
notes = response.body[:_embedded][:notes]
note_id = notes.first[:id]
body = {
  mode: "segments",
  is_enabled: true
}
response = AmocrmRails::Request.customers.mode.update(body: body)
p(response.body)
params = {
  with: 'contacts',
  page: 0,
  limit: 10
}
response = AmocrmRails::Request.customers.retrieve(params: params)
customers = response.body[:_embedded][:customers]
customer_id = customers.first[:id]
params = {
  with: 'contacts'
}
response = AmocrmRails::Request.customers(customer_id).retrieve(params: params)
customer = response.body
body = [
    {
      name: "Покупатель для примера 1",
      created_by: 0
    },
    {
      name: "Покупатель для примера 2",
      _embedded: {
        tags: [
                {
                    "name": "Важный покупатель"
                }
            ]
        }
    }
]
response = AmocrmRails::Request.customers.create(body: body)
customers = response.body[:_embedded][:customers]
customer_id = customers.first[:id]
body = [
  {
    id: customer_id,
    name: "Новое название покупателя",
    _embedded: {
      tags: [
        {
          name: "Тег 125"
        }
      ]
    }
  }
]
response = AmocrmRails::Request.customers.update(body: body)
customers = response.body[:_embedded][:customers]
customer_id = customers.first[:id]
body = {
  name: "Новое название покупателя",
  _embedded: {
    tags: [
      {
        name: "Тег 125"
      }
    ]
  }
}
response = AmocrmRails::Request.customers(customer_id).update(body: body)
customer = response.body
params = {
  page: 0,
  limit: 10
}
response = AmocrmRails::Request.customers.transactions.retrieve(params: params)
response = AmocrmRails::Request.customers(customer_id).transactions.retrieve(params: params)

transactions = response.body[:_embedded][:transactions]
transaction_id = transactions.first[:id]
response = AmocrmRails::Request.customers.transactions(transaction_id).retrieve
response = AmocrmRails::Request.customers(customer_id).transactions(transaction_id).retrieve

transaction = response.body
body = [
  {
    price: 123,
    created_by: 0,
    comment: "Комментарий",
    _embedded: {
      catalog_elements: [
        {
          id: 1677,
          metadata: {
            catalog_id: 1079,
            quantity: 10
          }
        }
      ]
    }
  }
]
response = AmocrmRails::Request.customers(customer_id).transactions.create(body: body)
p(response.body)
transactions = response.body[:_embedded][:transactions]
transaction_id = transactions.first[:id]
response = AmocrmRails::Request.customers.transactions(transaction_id).delete
p(response.body)
body = {
  earn: 500
}
response = AmocrmRails::Request.customers(customer_id).bonus_points.create(body: body)
p(response.body)
response = AmocrmRails::Request.customers.statuses.retrieve
statuses = response.body[:_embedded][:statuses]
status_id = statuses.first[:id]
response = AmocrmRails::Request.customers.statuses(status_id).retrieve
status = response.body
body = [
  {
    name: "Новый статус",
    sort: 100,
    color: "#fffeb2"
  },
  {
    name: "Новый статус 2",
    sort: 200,
    color: "#fffeb2"
  }
]
response = AmocrmRails::Request.customers.statuses.create(body: body)
p(response.body)
statuses = response.body[:_embedded][:statuses]
status_id = statuses.first[:id]
body = {
  name: "Новое название для статуса",
  color: "#c1e0ff"
}
response = AmocrmRails::Request.customers.statuses(status_id).update(body: body)
customer = response.body
AmocrmRails::Request.customers.statuses(status_id).delete
response = AmocrmRails::Request.customers.segments
segments = response.body[:_embedded][:segments]
segment_id = segments.first[:id]
response = AmocrmRails::Request.customers.segments(segment_id).retrieve
segment = response.body
body = {
  name: "Сегмент для примера",
  color: "ae003f"
}
response = AmocrmRails::Request.customers.segments.create(body: body)
p(response.body)
segment = response.body
segment_id = segment[:id]
body = {
  name: "Новое имя для сегмента",
  color: "ae003f"
}
response = AmocrmRails::Request.customers.segments(segment_id).update(body: body)
segment = response.body
AmocrmRails::Request.customers.segments(segment_id).delete
params = {
  with: 'group',
  page: 0,
  limit: 10
}
response = AmocrmRails::Request.users.retrieve
users = response.body[:_embedded][:users]
user_id = users.first[:id]
params = {
  with: 'group'
}
response = AmocrmRails::Request.users(user_id).retrieve(params: params)
user = response.body
user_id = user[:id]
body = [
  {
    name: "Павел Осетров",
    email: 'pavel.osetrov@me.com'
  }
]
response = AmocrmRails::Request.users.create(body: body)
p(response.body)
users = response.body[:_embedded][:users]
user_id = users.first[:id]
params = {
  with: 'users',
  page: 0,
  limit: 10
}
response = AmocrmRails::Request.roles.retrieve
roles = response.body[:_embedded][:roles]
role_id = roles.first[:id]
params = {
  with: 'users'
}
response = AmocrmRails::Request.roles(role_id).retrieve(params: params)
role = response.body
role_id = user[:id]
body = [
  {
    name: "role 3",
    rights: {
      leads: {
        add: "A",
        edit: "G",
        view: "G",
        delete: "G",
        export: "G"
      },
      tasks: {
        edit: "A",
        delete: "A"
      },
      contacts: {
        add: "A",
        edit: "A",
        view: "A",
        delete: "A",
        export: "A"
      },
      companies: {
        add: "A",
        edit: "A",
        view: "A",
        delete: "A",
        export: "A"
      },
      mail_access: true,
      status_rights: [
        {
          entity_type: "leads",
          pipeline_id: 16056,
          status_id: 20542166,
          rights: {
            edit: "A",
            view: "A",
            delete: "A",
            export: "A"
          }
        }
      ],
      catalog_access: true
    }
  }
]
response = AmocrmRails::Request.roles.create(body: body)
p(response.body)
roles = response.body[:_embedded][:roles]
role_id = roles.first[:id]
body = {
  name: "role 3 modified",
  rights: {
    contacts: {
      add: "A",
      edit: "D",
      view: "D",
      delete: "D",
      export: "D"
    },
    status_rights: nil
  }
}
response = AmocrmRails::Request.roles(role_id).update(body: body)
role = response.body
AmocrmRails::Request.roles(role_id).delete
body = [
      {
        name: "Автомобильный держатель Mage Safe Qi для iPhone, магнитный",
        description: "",
        :custom_fields_values=>[
          {
            :field_id=>82661,
            :field_name=>"Артикул", 
            :field_code=>"SKU",
            :field_type=>"text",
            :values=>[{:value=>"55185"}]
          },
          {
            :field_id=>82661,
            :field_name=>"Группа",
            :field_code=>"GROUP",
            :field_type=>"category",
            :values=>[{:value=>"Автомобильные держатели", :enum_id=>category_id}]
          },
          {
            :field_id=>82665,
            :field_name=>"Цена",
            :field_code=>"PRICE",
            :field_type=>"price",
            :values=>[{:value=>3390}]
          }
        ]
      }
    ]
    response = AmocrmRails::Request.catalogs(catalog_id).elements.create(body: body)
    elements = response.body[:_embedded][:elements]
    element_id = elements.first[:id]
response = AmocrmRails::Request.webhooks.retrieve
webhooks = response.body[:_embedded][:webhooks]
webhook_id = webhooks.first[:id]
body = {
  destination: "https://deppa.ru",
  settings: [
    "add_lead"
  ],
  sort: 10
}
response = AmocrmRails::Request.webhooks.create(body: body)
p(response.body)
webhook = response.body
webhook_id = webhook[:id]
AmocrmRails::Request.webhooks(webhook_id).delete
params = {
  page: 0,
  limit: 10
}
response = AmocrmRails::Request.widgets.retrieve
widgets = response.body[:_embedded][:widgets]
widget_code = widgets.first[:code]
response = AmocrmRails::Request.widgets(widget_code).retrieve
widget = response.body
body = {
  login: "example",
  password: "eXaMp1E",
  script_path: "https://deppa.ru/"
}
response = AmocrmRails::Request.widgets.create(body: body)
p(response.body)
widget = response.body
AmocrmRails::Request.widgets(widget_code).delete
body = {
  data: {
    status: "success"
  },
  execute_handlers: [
    {
      handler: "show",
      params: {
        type: "text",
        value: "Здесь текст"
      }
    },
    {
      handler: "show",
      params: {
        type: "buttons",
        value: "Нажми на кнопку",
        buttons: [
          "1ая кнопка",
          "2ая кнопка",
          "3ая кнопка",
          "4ая кнопка"
        ]
      }
    },
    {
      handler: "show",
      params: {
        type: "buttons_url",
        value: "Кнопки со ссылками",
        buttons: [
          "https://amocrm.ru",
          "https://deppa.ru"
        ]
      }
    },
    {
      handler: "goto",
      params: {
        type: "question|answer|finish",
        step: 5
      }
    }
  ]
}
AmocrmRails::Request.salesbot(bot_id).continue(continue_id).create(body: body)
AmocrmRails::Request.marketingbot(bot_id).continue(continue_id).create(body: body)
body = [
  {
    duration: 10,
    source: "example_integration",
    phone: "123123",
    link: "https://deppa.ru/audio.mp3",
    direction: "inbound",
    call_result: "Успешный разговор",
    call_status: 4
  }
]
response = AmocrmRails::Request.calls.create(body: body)
p(response.body)
calls = response.body[:_embedded][:calls]
body = [
  {
    bot_id: 565,
    entity_id: 76687686,
    entity_type: 1
  }
]
response = AmocrmRails::Request.salesbot.run.create(body: body)
p(response.body)
body = [
  {
    url:"https://deppa.ru",
    metadata:{
      entity_type:"contacts",
      entity_id:11070881
    }
  }
]
response = AmocrmRails::Request.short_links.create(body: body)
p(response.body)
short_links = response.body[:_embedded][:short_links]