Skip to content
Back to skills

Amocrm Api Control

ASecurity

Безопасная OAuth-авторизация amoCRM, чтение схемы аккаунта и сверка заявок по источнику, времени, статусу, ответственному и внешней ссылке.

  • 1,531 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
ai-agentsapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 7 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add hashgraph-online/awesome-codex-plugins --skill amocrm-api-control --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Amocrm Api Control?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Amocrm Api Control
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hashgraph-online-amocrm-api-control/badge)](https://www.skillsdirectory.com/skills/hashgraph-online-amocrm-api-control)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: amocrm-api-control
description: "Безопасная OAuth-авторизация amoCRM, чтение схемы аккаунта и сверка заявок по источнику, времени, статусу, ответственному и внешней ссылке."
---

# Управление amoCRM через программный интерфейс

## Если amoCRM не подключена

amoCRM необязательна. Для сверки продаж достаточно любой CRM-выгрузки (CSV, Excel, JSON) с источником, временем события, статусом, ответственным и внешней ссылкой: к файлу применяются те же правила сверки. Интеграцию и OAuth создавайте только по явной просьбе пользователя о доступе по API.

## Граница задачи

Навык предназначен для получения и обновления OAuth-токенов, чтения воронок, статусов и полей, а также сверки заявок. Любые изменения бизнес-данных требуют отдельного плана, точной области, подтверждения и чтения после записи.

## Перед созданием интеграции

1. Если для аккаунта уже есть закрытая интеграция, восстановить и использовать её, а не создавать вторую: лишняя интеграция повышает риск отказа в технической поддержке и разрастания учётных данных. Новая допустима только с записанной причиной, почему существующая непригодна, и подтверждением риска пользователем.
2. Создание закрытой интеграции в нетехническом аккаунте может иметь последствия для технической поддержки; покажи владельцу актуальное предупреждение из интерфейса amoCRM.
3. `redirect_uri` должен точно совпадать с адресом интеграции. Местный приёмник слушает только `127.0.0.1` и проверяет точные путь и `state`.
4. Доступ привязывается к ожидаемому аккаунту: запросами на чтение сверить вместе читаемое имя аккаунта, поддомен и идентификатор аккаунта. Одного названия мало: одинаковые названия, скопированные сеансы браузера и чужие закрытые интеграции тоже успешно авторизуются.
5. Откат и отзыв описываются на уровне токена: отозвать выданный токен, заменить локальную учётную запись или убрать текущую авторизацию приложения. Отключение всей интеграции — отдельное действие высокого влияния: от неё могут зависеть другие токены и процессы.

## Закрытые файлы

Все файлы интеграции, `state`, кода авторизации и токенов должны иметь права `0600`, а их папки — `0700`. Секрет, код и токен не передавай аргументом и не печатай.

Ожидаемая схема файла интеграции:

```json
{
  "subdomain": "ACCOUNT_SUBDOMAIN",
  "client_id": "PUBLIC_INTEGRATION_ID",
  "client_secret": "PRIVATE_INTEGRATION_SECRET",
  "redirect_uri": "EXACT_REGISTERED_REDIRECT_URI"
}
```

## Порядок OAuth

1. Создай случайное состояние и сохрани его в закрытом файле.
2. Запусти `scripts/amocrm_local_callback_server.py` с явными `--state-file` и `--output`.
3. Открой адрес согласия, содержащий тот же `state`.
4. Приёмник сохранит только код, а не полный адрес.
5. Запусти `scripts/exchange_amocrm_token.py` с `--integration-file`, `--authorization-code-file` и `--token-file`. Для обновления используй `--refresh` без файла кода.
6. После успешного первого обмена удали одноразовый файл кода.

## Чтение схемы и сверка

`scripts/fetch_amocrm_schema.py` проходит постраничную выдачу и сохраняет схему аккаунта в закрытой папке. Повтор той же страницы считается ошибкой.

Для сверки каждая строка обязана иметь поля:

- `source` — источник;
- `occurred_at` — время события;
- `status` — статус;
- `responsible` — ответственный;
- `external_link` — внешняя ссылка, используемая как ключ сопоставления.

Результат разделяет совпадение, расхождение и строку, присутствующую только во втором источнике.

## Сверка заявок: доказательства

При сверке внешних форм, выгрузок конструктора сайтов, меток UTM и CSV с amoCRM сначала сохраняются доказательства только на чтение:

1. Снимок схемы и счётчиков: аккаунт, воронка, статусы, поля заявки и контакта, «Неразобранное».
2. Точное окно времени, форма исходного файла, способ извлечения адреса и UTM, правило категорий.
3. Различие контактов, сделок, неразобранных заявок, дублей и пропавших заявок: карточка контакта сама по себе не доказывает, что заявка попала в нужную воронку.
4. Перед решением «новый или повторный клиент» — поиск дублей контактов по нормализованным телефону и почте и оценка всех связанных сделок, заметок и истории статусов.

Единица анализа для отчётов по менеджеру, первому менеджеру, новизне, источнику, выручке и статусу продажи — набор идентичности: дубли контактов, все связанные сделки, история смены статусов и ответственных, заметки, пометки удалённых и недоступных сделок.

Структурированные доказательства источника отделяются от подстрок и свободного текста. Название источника, фрагмент UTM или метка канала внутри комментария — кандидат, а не доказательство, пока не записаны поле, воронка, окно и порядок приоритета. Источники классифицируются явным порядком (UTM, referrer, поле источника, пометка интеграции, ручные заметки); записи без доказательства остаются `unknown`. В конце — контрольный подсчёт без фильтров по аккаунту или воронке: отбор, фильтр дублей и удалённых и граница дат не потеряли целевые заявки. Для перенесённой или переименованной воронки читаются и старая, и новая воронки за точный период.

Удалённые и недоступные сделки не превращаются в ноль: `deleted_inaccessible`, `unknown_missing_amount`, `confirmed_zero`, `not_sale` или `out_of_scope`. Агрегат выручки, повторности или менеджера, зависящий от неразрешённых удалённых сделок, остаётся заблокированным или помечается неразрешённым.

Пустые тела, пробелы пагинации, сбои авторизации и неожиданные ответы не в JSON записываются как отдельные состояния ответа. В сводках для пользователя — человекочитаемые названия воронок, статусов и источников; служебные номера — только для технического аудита.

Для анализа воронки или статусов учитывается история смены статусов, а не только текущее членство: сделки, вошедшие в воронку, покинувшие её или проигранные в окне, входят в аудит, даже если их уже не видно в воронке. Раздельно хранятся прямые свидетельства ответа клиента, внутренние заметки, текущее и историческое состояние потери, критерий суммы продажи и пустые причины; пустая причина не превращается в названную.

## Массовые чтения и блокировки

Перед тысячами чтений по контактам или сделкам проверить, нет ли в официальном API массового или связывающего метода с пагинацией, и применять его после сверки с небольшой выборкой отдельных чтений. Долгие чтения устойчивы к обрыву: после каждой идемпотентной партии сохраняются последняя подтверждённая страница или курсор, контрольная сумма партии, путь результата и состояние ответа. Медленный живой запрос не повторяется вслепую, второй исполнитель на ту же страницу не запускается; после остановки работа продолжается с последней подтверждённой партии.

Ответы amoCRM — сигналы безопасности: `429` требует паузы и сохранения прогресса; первый `403` или блокировка аккаунта останавливает очередь исполнителей без повторов и без смены сетевой идентичности. Сохраняются последняя успешная единица, класс заблокированного метода, прогресс и одно безопасное чтение состояния аккаунта.

## Корпус коммуникаций и идентичность события

До скачивания или расшифровки проверить поверхности источников: заметки, комментарии к задачам, метаданные звонков, записи, письма, мессенджеры и телефония — отдельные источники. Наличие ссылок и коротких заметок не доказывает покрытия чатов и записей: доказать скачиваемый источник, способ доступа, период и что отсутствует. Заранее оценить число звонков, длительность и объём диска; докачка с манифестами, контрольными суммами и прогрессом по источнику. Получение источника и локальная расшифровка — разные слои сбоев; после докачки производные журналы, таблицы, манифесты и кэши сверяются с итоговым исходом по каждому звонку.

Предполагаемому `created_at` не доверять, пока не доказано поведение фильтра на конкретном методе: сохранить проверенный серверный фильтр и локально исключить записи вне окна. Если пользователь сузил корпус, широкая выгрузка останавливается, а свои артефакты вне области убираются. Событие звонка, скачанный файл, задание расшифровки и связь со сделкой — разные идентичности: несколько событий могут ссылаться на один файл; контакт не определяет единственную сделку; при нескольких возможных сделках хранятся кандидаты и явная неоднозначность. Для постоянного сборщика снимок истории отделяется от изменяющегося потока: вместо фиксированных дат — явный контракт синхронизации (поле изменения, курсор, часовой пояс и точность, перекрытие); отсутствие записи на одной странице не доказывает её удаления.

## Аудитории и ретаргетинг

Перед выбором аудитории по профессии проверить поля контакта и сделки в схеме аккаунта и записать, где хранится профессия и как разрешаются конфликты. Пустое поле не доказывает отсутствия профессиональной связи; профессия сделки не распространяется на всех связанных людей без доказательств. Назначение каждого телефонного поля сохраняется при нормализации и дедупликации; если частные номера исключены, нормализованный номер исключается по всей выгрузке. Подходящая аудитория не даёт права на её выгрузку в рекламную систему — это отдельное разрешение.

Для ретаргетинга источник истины — воронка, статус и идентификаторы сделки и контакта; передаются хешированные почты и телефоны партиями или используется встроенная синхронизация платформы. Для связки «воронка и статус → аудитория» сначала проверить встроенную интеграцию amoCRM с нужной площадкой. Для ВКонтакте поведение описано в справке amoCRM: контакт «Активен», пока сделка в заданном этапе, и становится «Неактивным», когда сделка уходит из этапа или пользователь скрывает рекламу; повторным входом в этап из «Неактивного» не возвращается. Для Яндекс Аудиторий и других площадок правила переходов проверяются по их собственной документации и на тестовой сделке, а не переносятся с ВКонтакте. Логика добавления и удаления описывается по каждому переходу статуса, с дедупликацией и повторным входом.

## Отчёты по этапам и полям

Использовать уже подтверждённый API amoCRM; не требовать входа у поставщика форм, если API покрывает нужные доказательства. Сохранённые исходные журналы форм — для независимой проверки дублей и доставки; недоступное свежее покрытие форм помечается отдельно. Перед признанием отчёта готовым построитель выполняется целиком на сохранённой полной выборке: проверка синтаксиса не ловит конфликтов имён и несоответствий схемы. Служебные и трекинговые поля скрываются без учёта регистра и написания (`referer` и `referrer`); сырые адреса и параметры запросов остаются только в закрытых доказательствах.

## Граница публикации

Не публикуй поддомены аккаунтов, учётные данные, токены, контакты, заявки, домены и местные пути. Для испытаний используй только синтетические данные.

Files in this skill

  • SKILL.md18.2 KB
  • agents/openai.yaml299 B
  • references/official-notes.md940 B
  • scripts/amocrm_local_callback_server.py3.8 KB
  • scripts/exchange_amocrm_token.py5.4 KB
  • scripts/fetch_amocrm_schema.py6.6 KB
  • tests/test_reconciliation.py5.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.