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

Добавление и обновление воронок и этапов продаж

Этапы продаж – это последовательность шагов, которые проходит потенциальный клиент (лид) по воронке продаж перед покупкой. В amoCRM можно создавать несколько воронок продаж в одном аккаунте и задавать свои этапы для отслеживания хода сделки в каждой воронке. В amoCRM можно настроить до 10-и воронок в аккаунте. Каждая воронка может содержать до 100 этапов (включая успешный и неуспешный статусы). Настроить воронки и этапы продаж может администратор аккаунт на странице Настройки->Этапы продаж.

Методы для работы с настройками этапов продаж аккаунта. Эти методы доступны только администратору аккаунта. Метод позволяет добавлять воронки и этапы продаж по одному или пакетно, а также обновлять данные по уже существующим воронкам и этапам. При изменении воронки необходимо передать полный список этапов, включая уже существующие.

URL метода
POST /private/api/v2/json/pipelines/set

Параметры

Параметр Тип Описание
add array Список добавляемых воронок, если возникнет ошибка, то этот ключ будет указан в описании к ошибке
update array Обновление существующей воронки
Все параметры, которые описаны в add действуют также и в update
add/name
require
string Имя воронки
add/sort int Порядковый номер воронки при отображении
add/is_main string Является ли воронка "главной" (необходимо передать значение "on", если является)
add/statuses array Этапы воронки, необходимо передать хотя бы один этап, кроме успешно/неуспешно завершенного.
В качестве ключа необходимо передать идентификатор этапа, если он существует. Для этапов успешно/неуспешно завершенно (id 142/143 соответственно) возможно передать только поле name
add/statuses// array Внутри него будет описание каждого этапа
add/statuses//name string Название этапа
add/statuses//sort int Порядковый номер этапа при отображении (автоматически пересчитывается после добавления)
add/statuses//color string Цвет этапа (подробнее можно узнать здесь)
update/id
require
int Уникальный идентификатор воронки, который указывается с целью её обновления
update/statuses//id
require
int Уникальный идентификатор этапа, который указывается с целью её обновления

Пример запроса

  1. {
  2.   "request": {
  3.     "pipelines": {
  4.       "add": [
  5.         {
  6.           "name": "Test Pipeline",
  7.           "statuses": {
  8.             "0": {
  9.               "color": "#fffeb2",
  10.               "name": "Status #0",
  11.               "sort": 0
  12.             },
  13.             "1": {
  14.               "color": "#fffeb2",
  15.               "name": "Status #1",
  16.               "sort": 10
  17.             },
  18.             "2": {
  19.               "color": "#d6eaff",
  20.               "name": "Status #2",
  21.               "sort": 20
  22.             },
  23.             "3": {
  24.               "color": "#f3beff",
  25.               "name": "Status #3",
  26.               "sort": 30
  27.             },
  28.             "142": {
  29.               "name": "Success"
  30.             },
  31.             "143": {
  32.               "name": "Failed"
  33.             }
  34.           },
  35.           "is_main": "false"
  36.         }
  37.       ]
  38.     },
  39.     "update": {
  40.       "2521": {
  41.         "id": 2521,
  42.         "name": "Retest Pipeline",
  43.         "sort": 12,
  44.         "is_main": "on",
  45.         "statuses": {
  46.           "10223179": {
  47.             "id": 10223179,
  48.             "name": "Status #0",
  49.             "sort": 10,
  50.             "color": "#fffeb2"
  51.           },
  52.           "10223183": {
  53.             "id": 10223183,
  54.             "name": "Status #4",
  55.             "sort": 50,
  56.             "color": "#deff81"
  57.           },
  58.           "10223184": {
  59.             "id": 10223184,
  60.             "name": "Status #5",
  61.             "sort": 60,
  62.             "color": "#d6eaff"
  63.           },
  64.           "10223185": {
  65.             "id": 10223185,
  66.             "name": "Status #6",
  67.             "sort": 70,
  68.             "color": "#fffd7f"
  69.           }
  70.         }
  71.       }
  72.     }
  73.   }
  74. }

Параметры ответа

Параметр Описание
add/pipelines//id Уникальный идентификатор воронки
add/pipelines//value Уникальный идентификатор воронки
add/pipelines//label Название воронки
add/pipelines//name Название воронки
add/pipelines//sort Порядковый номер воронки при отображении
add/pipelines//is_main Является ли воронка "главной"
add/pipelines//statuses//id Уникальный идентификатор этапа
add/pipelines//statuses//name Название этапа
add/pipelines//statuses//pipeline_id Уникальный идентификатор воронки
add/pipelines//statuses//sort Порядковый номер этапа при отображении
add/pipelines//statuses//color Цвет этапа (подробнее можно узнать здесь)
add/pipelines//statuses//editable Есть ли возможность изменить или удалить этот этап, возможные значения: "Y" или "N"
add/pipelines//leads Количество сделок, находящихся в этой воронке
update// Ассоциативный массив, где ключ - ID воронки, а значение - удалось ли применить изменение к воронке с этим идентификатором
server_time Временная метка текущего серверного времени со смещением на часовой пояс аккаунта (передается в формате timestamp)

Пример ответа

  1. {
  2.   "response": {
  3.     "pipelines": {
  4.       "add": {
  5.         "pipelines":{
  6.           "2116":{
  7.             "id":2116,
  8.             "value":2116,
  9.             "label":"Pipeline",
  10.             "name":"Pipeline",
  11.             "sort":1,
  12.             "is_main":true,
  13.             "statuses":{
  14.               "142":{
  15.                 "id":142,
  16.                 "name":"Closed - won",
  17.                 "color":"#CCFF66",
  18.                 "sort":10000,
  19.                 "editable":"N",
  20.                 "pipeline_id":2116
  21.               },
  22.               "143":{
  23.                 "id":143,
  24.                 "name":"Closed - lost",
  25.                 "color":"#D5D8DB",
  26.                 "sort":11000,
  27.                 "editable":"N",
  28.                 "pipeline_id":2116
  29.               },
  30.               "10216993":{
  31.                 "id":10216993,
  32.                 "name":"Initial Contact",
  33.                 "pipeline_id":2116,
  34.                 "sort":10,
  35.                 "color":"#99ccff",
  36.                 "editable":"Y"
  37.               },
  38.               "10216994":{
  39.                 "id":10216994,
  40.                 "name":"Offer made",
  41.                 "pipeline_id":2116,
  42.                 "sort":20,
  43.                 "color":"#ffff99",
  44.                 "editable":"Y"
  45.               },
  46.               "10216995":{
  47.                 "id":10216995,
  48.                 "name":"Negotiation",
  49.                 "pipeline_id":2116,
  50.                 "sort":30,
  51.                 "color":"#ffcc66",
  52.                 "editable":"Y"
  53.               },
  54.               "10216996":{
  55.                 "id":10216996,
  56.                 "name":"Contract Negotiation",
  57.                 "pipeline_id":2116,
  58.                 "sort":40,
  59.                 "color":"#ffcccc",
  60.                 "editable":"Y"
  61.               }
  62.             },
  63.             "leads":14
  64.           }
  65.         }
  66.       },
  67.     "update": {
  68.       "2521": true
  69.     }
  70.     }
  71.   }
  72. }

Добавление воронки

Для добавления воронки необходимо описать массив, содержащий информацию о воронке и поместить его в массив следующего вида: $pipelines['request']['pipelines']['add'] Наше API также поддерживает одновременное добавление сразу нескольких воронок. Для этого мы помещаем в массив $pipelines['request']['pipelines']['add'] несколько массивов, каждый из которых описывает необходимые данные для создания соответствующей воронки.

Пример интеграции

  1. $pipelines['request']['pipelines']['add'] = array(
  2.   array(
  3.     'name'     => 'Test Pipeline',
  4.     'statuses' => array(
  5.       array(
  6.         'color' => '#deff81',
  7.         'name'  => 'Status #0',
  8.         'sort'  => 0,
  9.       ),
  10.       array(
  11.         'color' => '#ffeab2',
  12.         'name'  => 'Status #1',
  13.         'sort'  => 10,
  14.       ),
  15.       array(
  16.         'color' => '#ffdc7f',
  17.         'name'  => 'Status #2',
  18.         'sort'  => 20,
  19.       ),
  20.       array(
  21.         'color' => '#deff81',
  22.         'name'  => 'Status #3',
  23.         'sort'  => 30,
  24.       ),
  25.       array(
  26.         'color' => '#ebffb1',
  27.         'name'  => 'Status #4',
  28.         'sort'  => 40,
  29.       ),
  30.       array(
  31.         'color' => '#fffeb2',
  32.         'name'  => 'Status #5',
  33.         'sort'  => 50,
  34.       ),
  35.       array(
  36.         'color' => '#ffc8c8',
  37.         'name'  => 'Status #6',
  38.         'sort'  => 60,
  39.       ),
  40.       array(
  41.         'color' => '#c1e0ff',
  42.         'name'  => 'Status #7',
  43.         'sort'  => 70,
  44.       ),
  45.       array(
  46.         'color' => '#f3beff',
  47.         'name'  => 'Status #8',
  48.         'sort'  => 80,
  49.       ),
  50.       array(
  51.         'color' => '#ccc8f9',
  52.         'name'  => 'Status #9',
  53.         'sort'  => 90,
  54.       ),
  55.     ),
  56.     'is_main'  => 'on',
  57.   ),
  58. );
  59. /* Теперь подготовим данные, необходимые для запроса к серверу */
  60. $subdomain='test'; #Наш аккаунт - поддомен
  61. #Формируем ссылку для запроса
  62. $link='https://'.$subdomain.'.amocrm.ru/private/api/v2/json/pipelines/set';
  63. /* Нам необходимо инициировать запрос к серверу. Воспользуемся библиотекой cURL (поставляется в составе PHP). Подробнее о
  64. работе с этой
  65. библиотекой Вы можете прочитать в мануале. */
  66. $curl=curl_init(); #Сохраняем дескриптор сеанса cURL
  67. #Устанавливаем необходимые опции для сеанса cURL
  68. curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
  69. curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-API-client/1.0');
  70. curl_setopt($curl,CURLOPT_URL,$link);
  71. curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'POST');
  72. curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($pipelines));
  73. curl_setopt($curl,CURLOPT_HTTPHEADER,array('Content-Type: application/json'));
  74. curl_setopt($curl,CURLOPT_HEADER,false);
  75. curl_setopt($curl,CURLOPT_COOKIEFILE,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
  76. curl_setopt($curl,CURLOPT_COOKIEJAR,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
  77. curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
  78. curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
  79. $out=curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
  80. $code=curl_getinfo($curl,CURLINFO_HTTP_CODE);
  81. /* Теперь мы можем обработать ответ, полученный от сервера. Это пример. Вы можете обработать данные своим способом. */
  82. $code=(int)$code;
  83. $errors=array(
  84.   301=>'Moved permanently',
  85.   400=>'Bad request',
  86.   401=>'Unauthorized',
  87.   403=>'Forbidden',
  88.   404=>'Not found',
  89.   500=>'Internal server error',
  90.   502=>'Bad gateway',
  91.   503=>'Service unavailable'
  92. );
  93. try
  94. {
  95.   #Если код ответа не равен 200 или 204 - возвращаем сообщение об ошибке
  96.  if($code!=200 && $code!=204)
  97.     throw new Exception(isset($errors[$code]) ? $errors[$code] : 'Undescribed error',$code);
  98. }
  99. catch(Exception $E)
  100. {
  101.   die('Ошибка: '.$E->getMessage().PHP_EOL.'Код ошибки: '.$E->getCode());
  102. }
  103.  
  104. /**
  105.  * Данные получаем в формате JSON, поэтому, для получения читаемых данных,
  106.  * нам придётся перевести ответ в формат, понятный PHP
  107.  */
  108. $Response=json_decode($out,true);
  109. $Response=$Response['response']['pipelines']['add'];
  110. $output='ID добавленных воронок:'.PHP_EOL;
  111. $output .= implode(PHP_EOL, array_keys($Response));
  112. return $output;

Обновление воронок

Для обновления информации о воронке необходимо описать массив, содержащий информацию о воронке и поместить его в массив следующего вида: $pipelines['request']['pipelines']['update'] Наше API также поддерживает одновременное обновление сразу нескольких воронок. Для этого мы помещаем в массив $pipelines['request']['pipelines']['update'] несколько массивов, каждый из которых описывает необходимые данные для обновления соответствующей воронки.

Пример интеграции

  1. $pipelines['request']['pipelines']['update'] = array(
  2.   2116 => array(
  3.     'id'       => 2116,
  4.     'name'     => 'Renamed Pipeline',
  5.     'sort'     => 1,
  6.     'is_main'  => FALSE,
  7.     'statuses' => array(
  8.       10216993 => array(
  9.         'id'          => 10216993,
  10.         'name'        => 'Initial Contact',
  11.         'sort'        => 10,
  12.         'color'       => '#99ccff',
  13.       ),
  14.       10216994 => array(
  15.         'id'          => 10216994,
  16.         'name'        => 'Offer made',
  17.         'sort'        => 20,
  18.         'color'       => '#ffff99',
  19.       ),
  20.       10216995 => array(
  21.         'id'          => 10216995,
  22.         'name'        => 'Negotiation',
  23.         'sort'        => 30,
  24.         'color'       => '#ffcc66',
  25.       ),
  26.       array(
  27.         'name'        => 'New status#1',
  28.         'sort'        => 40,
  29.         'color'       => '#ffff99',
  30.       ),
  31.       array(
  32.         'name'        => 'New status#2',
  33.         'sort'        => 50,
  34.         'color'       => '#99ccff',
  35.       ),
  36.       array(
  37.         'name'        => 'New status#3',
  38.         'sort'        => 60,
  39.         'color'       => '#ffcccc',
  40.       ),
  41.       142      => array(
  42.         'name'        => 'Closed_won',
  43.       ),
  44.       143      => array(
  45.         'name'        => 'Closed_lost',
  46.       ),
  47.     ),
  48.     'leads'    => 14,
  49.   ),
  50. );
  51. /* Теперь подготовим данные, необходимые для запроса к серверу */
  52. $subdomain='test'; #Наш аккаунт - поддомен
  53. #Формируем ссылку для запроса
  54. $link='https://'.$subdomain.'.amocrm.ru/private/api/v2/json/pipelines/set';
  55. /* Нам необходимо инициировать запрос к серверу. Воспользуемся библиотекой cURL (поставляется в составе PHP). Подробнее о
  56. работе с этой
  57. библиотекой Вы можете прочитать в мануале. */
  58. $curl=curl_init(); #Сохраняем дескриптор сеанса cURL
  59. #Устанавливаем необходимые опции для сеанса cURL
  60. curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
  61. curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-API-client/1.0');
  62. curl_setopt($curl,CURLOPT_URL,$link);
  63. curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'POST');
  64. curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($pipelines));
  65. curl_setopt($curl,CURLOPT_HTTPHEADER,array('Content-Type: application/json'));
  66. curl_setopt($curl,CURLOPT_HEADER,false);
  67. curl_setopt($curl,CURLOPT_COOKIEFILE,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
  68. curl_setopt($curl,CURLOPT_COOKIEJAR,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
  69. curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
  70. curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
  71. $out=curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
  72. $code=curl_getinfo($curl,CURLINFO_HTTP_CODE);
  73. /* Теперь мы можем обработать ответ, полученный от сервера. Это пример. Вы можете обработать данные своим способом. */
  74. $code=(int)$code;
  75. $errors=array(
  76.   301=>'Moved permanently',
  77.   400=>'Bad request',
  78.   401=>'Unauthorized',
  79.   403=>'Forbidden',
  80.   404=>'Not found',
  81.   500=>'Internal server error',
  82.   502=>'Bad gateway',
  83.   503=>'Service unavailable'
  84. );
  85. try
  86. {
  87.   #Если код ответа не равен 200 или 204 - возвращаем сообщение об ошибке
  88.  if($code!=200 && $code!=204)
  89.     throw new Exception(isset($errors[$code]) ? $errors[$code] : 'Undescribed error',$code);
  90. }
  91. catch(Exception $E)
  92. {
  93.   die('Ошибка: '.$E->getMessage().PHP_EOL.'Код ошибки: '.$E->getCode());
  94. }

Удаление воронок

Метод позволяет удалять воронки по одной или пакетно.

Удаление одной воронки в аккаунте невозможно, при удалении последней воронки выдается ошибка "Impossible to delete last pipeline"

URL метода
POST /private/api/v2/json/pipelines/delete

Параметры

Параметр Тип Описание
id array ID воронок, которые необходимо удалить. Можно передать как единственное число, так и массив чисел.

Пример запроса

  1. {"request":{"id":123}}
  2. {"request":{"id":[123,456]}}

Параметры ответа

Параметр Описание
response// Ассоциативный массив, где ключом является id воронки, а значением - удалось ли удалить воронку
response//errors Если удалить воронку не удалось, то здесь будет написана причина.
server_time Временная метка текущего серверного времени со смещением на часовой пояс аккаунта (передается в формате timestamp)

Пример ответа

  1. {
  2.   "response": {
  3.     123: true,
  4.     456: {"errors": "Impossible to delete last pipeline"}
  5.   }
  6. }

Удаление воронки

Для удаления воронки необходимо описать массив, содержащий идентификатор(ы) удаляемой воронки и поместить его в массив вида: $pipelines['request']['id']

Пример интеграции

  1. $pipelines['request']['id'] = array(123);
  2. /* Теперь подготовим данные, необходимые для запроса к серверу */
  3. $subdomain='test'; #Наш аккаунт - поддомен
  4. #Формируем ссылку для запроса
  5. $link='https://'.$subdomain.'.amocrm.ru/private/api/v2/json/pipelines/delete';
  6. /* Нам необходимо инициировать запрос к серверу. Воспользуемся библиотекой cURL (поставляется в составе PHP). Подробнее о
  7. работе с этой
  8. библиотекой Вы можете прочитать в мануале. */
  9. $curl=curl_init(); #Сохраняем дескриптор сеанса cURL
  10. #Устанавливаем необходимые опции для сеанса cURL
  11. curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
  12. curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-API-client/1.0');
  13. curl_setopt($curl,CURLOPT_URL,$link);
  14. curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'POST');
  15. curl_setopt($curl,CURLOPT_POSTFIELDS,json_encode($pipelines));
  16. curl_setopt($curl,CURLOPT_HTTPHEADER,array('Content-Type: application/json'));
  17. curl_setopt($curl,CURLOPT_HEADER,false);
  18. curl_setopt($curl,CURLOPT_COOKIEFILE,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
  19. curl_setopt($curl,CURLOPT_COOKIEJAR,dirname(__FILE__).'/cookie.txt'); #PHP>5.3.6 dirname(__FILE__) -> __DIR__
  20. curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
  21. curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
  22. $out=curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
  23. $code=curl_getinfo($curl,CURLINFO_HTTP_CODE);
  24. /* Теперь мы можем обработать ответ, полученный от сервера. Это пример. Вы можете обработать данные своим способом. */
  25. $code=(int)$code;
  26. $errors=array(
  27.   301=>'Moved permanently',
  28.   400=>'Bad request',
  29.   401=>'Unauthorized',
  30.   403=>'Forbidden',
  31.   404=>'Not found',
  32.   500=>'Internal server error',
  33.   502=>'Bad gateway',
  34.   503=>'Service unavailable'
  35. );
  36. try
  37. {
  38.   #Если код ответа не равен 200 или 204 - возвращаем сообщение об ошибке
  39.  if($code!=200 && $code!=204)
  40.     throw new Exception(isset($errors[$code]) ? $errors[$code] : 'Undescribed error',$code);
  41. }
  42. catch(Exception $E)
  43. {
  44.   die('Ошибка: '.$E->getMessage().PHP_EOL.'Код ошибки: '.$E->getCode());
  45. }
  46. /**
  47.  * Данные получаем в формате JSON, поэтому, для получения читаемых данных,
  48.  * нам придётся перевести ответ в формат, понятный PHP
  49.  */
  50. $Response=json_decode($out,true);
  51. $Response=$Response['response'];
  52. $output = 'Результат запроса:' . PHP_EOL;
  53. foreach ($Response as $pipeline_id => $result) {
  54.   if (isset($result['errors'])) {
  55.     $output .= 'Воронка "' . $pipeline_id . '" не удалена, причина: "' . $result['errors'] . '"' . PHP_EOL;
  56.   } else {
  57.     $output .= 'Воронка "' . $pipeline_id . '" удалена' . PHP_EOL;
  58.   }
  59. }
  60. return $output;

Список воронок и этапов продаж

Метод для получения списка воронок и этапов продаж.

URL метода
GET /api/v2/pipelines

Параметры GET

Параметр Описание
id Выбрать воронку с заданным ID

Параметры ответа

Параметр Тип Описание
id int Уникальный идентификатор воронки
name string Название воронки
sort int Порядковый номер воронки при отображении
is_main bool Является ли воронка "главной"
statuses array Массив содержащий информацию о этапах продаж
statuses//id int Уникальный идентификатор этапа
statuses//name string Название этапа
statuses//color string Цвет этапа
statuses//sort int Порядковый номер этапа при отображении
statuses//is_editable bool Есть ли возможность изменить или удалить этот этап
_links array Массив содержащий информацию о запросе
_links/self array Массив содержащий информацию о текущем запросе
_links/self/href string Относительный URL текущего запроса
_links/self/method string Метод текущего запроса
_embedded array Массив содержащий информацию прилегающую к запросу
_embedded/items array Массив содержащий информацию по каждому отдельному элементу

Цвета этапов продаж

Код Пример
#fffeb2 color example
#fffd7f color example
#fff000 color example
#ffeab2 color example
#ffdc7f color example
#ffce5a color example
#ffdbdb color example
#ffc8c8 color example
#ff8f92 color example
#d6eaff color example
#c1e0ff color example
#98cbff color example
#ebffb1 color example
#deff81 color example
#87f2c0 color example
#f9deff color example
#f3beff color example
#ccc8f9 color example
#eb93ff color example
#f2f3f4 color example
#e6e8ea color example

Пример ответа

  1. {
  2.    _links: {
  3.       self: {
  4.          href: "/api/v2/pipelines",
  5.          method: "get"
  6.       }
  7.    },
  8.    _embedded: {
  9.       items: {
  10.          10104: {
  11.             id: 10104,
  12.             name: "Воронка",
  13.             sort: 1,
  14.             is_main: true,
  15.             statuses: {
  16.                142: {
  17.                   id: 142,
  18.                   name: "Успешно реализовано",
  19.                   color: "#CCFF66",
  20.                   sort: 10000,
  21.                   is_editable: false
  22.                },
  23.                143: {
  24.                   id: 143,
  25.                   name: "Закрыто и не реализовано",
  26.                   color: "#D5D8DB",
  27.                   sort: 11000,
  28.                   is_editable: false
  29.                },
  30.                13667501: {
  31.                   id: 13667501,
  32.                   name: "Первичный контакт",
  33.                   color: "#99ccff",
  34.                   sort: 10,
  35.                   is_editable: true
  36.                },
  37.                13667502: {
  38.                   id: 13667502,
  39.                   name: "Переговоры",
  40.                   color: "#ffff99",
  41.                   sort: 20,
  42.                   is_editable: true
  43.                },
  44.                13667503: {
  45.                   id: 13667503,
  46.                   name: "Принимают решение",
  47.                   color: "#ffcc66",
  48.                   sort: 30,
  49.                   is_editable: true
  50.                },
  51.                13667504: {
  52.                   id: 13667504,
  53.                   name: "Согласование договора",
  54.                   color: "#ffcccc",
  55.                   sort: 40,
  56.                   is_editable: true
  57.                }
  58.             }
  59.          }
  60.       }
  61.    }
  62. }

Пример интеграции

  1. $subdomain='test'; #Наш аккаунт - поддомен
  2. #Формируем ссылку для запроса
  3. $link='https://'.$subdomain.'.amocrm.ru/api/v2/pipelines';
  4. /* Нам необходимо инициировать запрос к серверу. Воспользуемся библиотекой cURL (поставляется в составе PHP). Подробнее о
  5. работе с этой
  6. библиотекой Вы можете прочитать в мануале. */
  7. $curl=curl_init(); #Сохраняем дескриптор сеанса cURL
  8. #Устанавливаем необходимые опции для сеанса cURL
  9. curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
  10. curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-API-client/1.0');
  11. curl_setopt($curl,CURLOPT_HTTPHEADER,['Accept: application/json']);
  12. curl_setopt($curl,CURLOPT_URL,$link);
  13. curl_setopt($curl,CURLOPT_HEADER,false);
  14. curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);
  15. curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0);
  16. $out=curl_exec($curl); #Инициируем запрос к API и сохраняем ответ в переменную
  17. $code=curl_getinfo($curl,CURLINFO_HTTP_CODE);
  18. curl_close($curl);
  19. /* Теперь мы можем обработать ответ, полученный от сервера. Это пример. Вы можете обработать данные своим способом. */
  20. $code=(int)$code;
  21. $errors=array(
  22.   301=>'Moved permanently',
  23.   400=>'Bad request',
  24.   401=>'Unauthorized',
  25.   403=>'Forbidden',
  26.   404=>'Not found',
  27.   500=>'Internal server error',
  28.   502=>'Bad gateway',
  29.   503=>'Service unavailable'
  30. );
  31. try
  32. {
  33.   #Если код ответа не равен 200 или 204 - возвращаем сообщение об ошибке
  34.  if($code!=200 && $code!=204)
  35.     throw new Exception(isset($errors[$code]) ? $errors[$code] : 'Undescribed error',$code);
  36. }
  37. catch(Exception $E)
  38. {
  39.   die('Ошибка: '.$E->getMessage().PHP_EOL.'Код ошибки: '.$E->getCode());
  40. }
  41. /**
  42.  * Данные получаем в формате JSON, поэтому, для получения читаемых данных,
  43.  * нам придётся перевести ответ в формат, понятный PHP
  44.  */
  45. $Response=json_decode($out,true);
  46. $Response=$Response['_embedded']['items'];