Введение
Спасибо за выбор Synergy CRM! Данный API позволяет работать со всеми основными объектами и настройками SynergyCRM, благодаря чему вы можете быстро создавать свои собственные приложения. В случае возникновения вопросов по работе API обращайтесь в техническую поддержку.
Получение API токена
Для корректной работы всех последующих примеров вам потребуется ключ для доступа к SynergyCRM API. Чтобы получить данный ключ перейдите в раздел Настройки / Настройки API из своего аккаунта. Детали можно посмотреть в инструкции по ссылке.
Спецификация
Форматы запросов и ответов к API соответствуют спецификации JSON API v1.0.
Общие принципы
Постраничный вывод (пагинация)
Пример ответа, содержащего мета данные о количестве объектов и количество страниц
{
"data" : [....],
"meta": {
"record-count": 2222,
"page-count": 22
}
}
Для перехода на вторую (третью, четвертую и тд) страницу, необходимо в адрес
запроса указывать параметр page[number]
, например, чтобы получить вторую страницу сделок
нужно GET запрос отправлять на адрес https://app.synergycrm.ru/api/v1/deals?page[number]=2.
Для изменения количества выводимых объектов на страницу нужно использовать параметр page[size]
,
по умолчанию размер страницы составляет 50 объектов, максимально допустимый 100 объектов.
GET запрос на адрес https://app.synergycrm.ru/api/v1/deals?page[size]=5 вернет 5 сделок.
Оба параметра page[number]
и page[size]
можно вызывать вместе, GET запрос на адрес
https://app.synergycrm.ru/api/v1/deals?page[number]=2&page[size]=2 вернет две сделки второй страницы.
Каждый ответ содержит не только ключ c данными (data
), но и ключ с метаданными (meta
),
в котором хранится информация о общем количестве объектов (record-count
) запрашиваемой
сущности и о общем количестве страниц (page-count
).
Таким образом, на основании метаданных, можно строить логику деления объектов на страницы.
Авторизация
Чтобы авторизоваться используйте следующий код:
curl "https://app.synergycrm.ru/api/v1/deals" \
-H "Authorization: Bearer api_token"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/deals");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/deals')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/deals", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/deals',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/deals"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/deals'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Используйте полученный в настройках API токен вместо
api_token
.
Каждый запрос к API требует авторизации. Для авторизации необходим специальный уникальный токен.
Токен авторизации необходимо передавать в заголовке Authorization
каждого запроса. Пример:
Authorization: Bearer access_api_token
Информация о токене
Возвращает информацию о токене и настройках
curl "https://app.synergycrm.ru/api/v1/current-token" \
-H "Authorization: Bearer api_token"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/current-token");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/current-token')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/current-token", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/current-token',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/current-token"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/current-token'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Содержит в себе информацию о настройках приложения, что может быть полезно при работе с приложениями из маркетплейса.
JSON API type | oauth-token |
URL | /api/v1/current-token |
Чтение | GET /api/v1/current-token |
Редактирование | PATCH /api/v1/current-token |
Пример токена с настройками
{
"data": {
"id": "2",
"type": "oauth-token",
"links": {
"self": "https://app.synergycrm.ru/api/v1/oauth-token"
},
"attributes": {
"created-at": "2022-02-22T12:02:22.222+03:00",
"updated-at": "2022-02-22T12:02:22.222+03:00",
"cached-at": "2022-02-22T12:02:22.222+03:00",
"options": {},
"token": "bRx2cpE22ZOl2A2UFVJTX2CoVl2gBVg2FR22qMcI-PM",
"token-label": "1",
"scopes": "api",
"user-id": 2,
"subscription-expires-at": "2022-02-22T12:02:22.222+03:00",
"subscription-rights": {
"price": 0.0,
"license_included": 1,
"license_count": 9999,
"license_price": 1350.0,
"license_min_count": 3,
"default_payment_period": 3,
"payment_periods": [
3,
6,
12,
24
],
"disabled_payment_periods": [],
"discount_map": [
[
6,
20
],
[
12,
30
],
[
24,
40
]
],
"api": true,
"scenarios": 9999,
"dynamic_tabs": true,
"document_templates": 9999,
"objects": 0,
"sms": true,
"telephony": true,
"web_form": true,
"roistat": true,
"dadata_from_api": false,
"manual_scenarios_api": false,
"mail_count": 9999,
"mail_method": "user",
"table_filters": 9999,
"custom_fields": 5000,
"disabled_custom_types": [],
"storage": true,
"import": -1,
"export": "csv,xls",
"analytic": 9999999,
"settings_copy": true,
"card_blocks": true,
"invoices": true,
"payments": true,
"entries": true,
"checkups": true,
"contracts": true,
"contact_groups": true,
"recurrence_rules": true,
"user_salaries": true,
"indiboards": 9999,
"org_details": 9999,
"telegram": true,
"sales_funnel": 9999,
"time_tracking": true,
"ip_security": true,
"custom_roles": 9999,
"duplicates_finder_rules": 20,
"webhook_providers": true,
"bank_services": true,
"estate_property_exporters": true,
"accounting_provider": true,
"delivery_service": true,
"store": false,
"invite_count": 10,
"chat_widget": true,
"chat_integrations": true
},
"master-options": {}
}
}
}
В данном примере каждый ключ в
options
идентичен названию ключа в настройках приложения. Подробнее о настройках можно почитать в Кабинете разработчика
Основные атрибуты
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
id | integer |
2 |
нет | идентификатор токена |
type | oauth-token |
oauth-token |
нет | тип объекта |
self | string |
https://app.synergycrm.ru/api/v1/oauth-token |
нет | адрес запроса |
token | string |
bRx2cpE22ZOl2A2UFVJTX2CoVl2gBVg2FR22qMcI-PM |
нет | API Access Token |
scopes | array |
["profile_read"] |
нет | Разрешения |
options | json |
{"key":"value"} |
да | Настройки приложения |
user_id | integer |
22 | нет | ID пользователя владельца токена |
created_at | datetime |
2022-02-22T12:02:22.222+03:00 |
нет | Дата создания |
updated_at | datetime |
2022-02-22T12:02:22.222+03:00 |
нет | Дата обновления |
token-label | integer |
1 |
нет | Порядковый номер токена |
subscription-expires-at | datetime |
2022-02-22T12:02:22.222+03:00 |
нет | Дата окончания подписки |
price | decimal |
0.0 |
нет | цена |
license_included | integer |
2 |
нет | Количество включенных лицензий |
license_count | integer |
9999 |
нет | Количество доступных лицензий для покупки |
license_price | decimal |
1350.0 |
нет | Цена одной лицензии в месяц |
license_min_count | integer |
3 |
нет | Минимальное количество лицензий на аккаунт |
default_payment_period | integer |
3 |
нет | Минимальный срок оплаты лицензий |
payment_periods | array |
[3,6,12,24], |
нет | Варианты сроков оплаты лицензий |
disabled_payment_periods | array |
[] |
нет | Отключенные варианты сроков оплаты лицензий |
discount_map | array |
[6,20],[12,30],[24,40]], |
нет | Варианты скидок |
api | boolean |
true |
нет | Доступ к API |
scenarios | integer |
9999 |
нет | Сценарии автоматизаций доступные для создания и работы |
dynamic_tabs | boolean |
true |
нет | Динамическе таблицы |
document_templates | integer |
9999 |
нет | Доступаное кол-во шаблонов документов |
objects | integer |
9999 |
нет | Кол-во доступных для создания объектов (контакты, компании, сделки, заявки…) |
sms | boolean |
true |
нет | Доступ к SMS интеграциям |
telephony | boolean |
true |
нет | Интеграция с BATC |
web_form | boolean |
true |
нет | Генерация и работа форм захвата заявок и сделок с сайтов |
roistat | boolean |
true |
нет | Интеграция сервиса сквозной аналитики |
dadata_from_api | boolean |
false |
нет | Доступ к интеграции с сервисом dadata |
manual_scenarios_api | boolean |
false |
нет | Доступ к API-сценариям |
mail_count | integer |
9999 |
нет | Кол-во доступных подключенных почтовых ящиков |
mail_method | string |
user |
нет | Метод регистрации |
table_filters | integer |
9999 |
нет | Фильтры в реестрах |
custom_fields | integer |
9999 |
нет | Кол-во доступных дополнительных полей |
disabled_custom_types | array |
["file","formula"] |
нет | Запрещенные типы дополнительных полей |
storage | boolean |
true |
нет | Хранилище файлов |
import | integer |
2500 |
нет | Доступное кол-во загружаемых данных в таблицы через механизм импорта |
export | string |
"csv,xls" |
нет | Формат файлов для экспорта |
analytic | integer |
100 |
нет | Кол-во доступных отчетов |
settings_copy | boolean |
true |
нет | Копирование настроек от одного пользователя другим |
card_blocks | boolean |
true |
нет | Карточки объектов системы |
invoices | boolean |
true |
нет | Счета в модуле финансы |
payments | boolean |
true |
нет | Платежи в модуле финансы |
entries | boolean |
true |
нет | Журнал записей |
checkups | boolean |
true |
нет | Модуль осмотры (универсальный справочник) |
contracts | boolean |
true |
нет | Модуль договоры |
contact_groups | boolean |
true |
нет | Группы контактов |
recurrence_rules | boolean |
true |
нет | Правила повтора событий |
user_salaries | boolean |
true |
нет | Расчет зарплаты сотрудников |
indiboards | integer |
9999 |
нет | Рабочие доски с виджетами с отчетами |
org_details | integer |
2 |
нет | Реквизиты юридических лиц аккаунта |
telegram | boolean |
true |
нет | Интеграция с Telegram ботом BotFather в том числе уведомления о событиях в Telegram |
sales_funnel | integer |
9999 |
нет | Кол-во воронок продаж |
time_tracking | boolean |
true |
нет | Трекинг отработанного/затраченного времени |
ip_security | boolean |
true |
нет | Защита/ограничение доступа по IP-адресу |
custom_roles | integer |
9999 |
нет | Кастомные правда доступа, роли сотрудников в системе |
duplicates_finder_rules | integer |
20 |
нет | Кол-во доступных для создания правил поиска дублей |
webhook_providers | boolean |
true |
нет | Работа с вебхуками, вызов в автоматизациях |
bank_services | boolean |
true |
нет | Интеграции с банковскими сервисами |
estate_property_exporters | boolean |
true |
нет | Экспорт объектов недвижимости |
accounting_provider | boolean |
true |
нет | Работа с банковскими реквизитами |
delivery_service | boolean |
true |
нет | Интеграция с сервисом отслеживания грузоперевозок и доставки |
store | boolean |
true |
нет | Модуль в системе "Склад" |
invite_count | integer |
10 |
нет | Максимальное количество пользователей |
chat_widget | boolean |
true |
нет | Модуль "Чаты" |
chat_integrations | boolean |
true |
нет | Возможность интегрировать социальные сети и мессенджеры |
Контакты
Создание контакта с предустановленным источником и ответственным
curl "https://app.synergycrm.ru/api/v1/contacts" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"contacts",
"attributes":{
"first-name":"Иван",
"last-name":"Иванов"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
},
"responsible":{
"data":{
"type":"users",
"id":"2"
}
}
}
}
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/contacts");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"data\":{\"type\":\"contacts\",\"attributes\":{\"first-name\":\"Иван\",\"last-name\":\"Иванов\"},\"relationships\":{\"source\":{\"data\":{\"type\":\"sources\",\"id\":\"2\"}},\"responsible\":{\"data\":{\"type\":\"users\",\"id\":\"2\"}}}}}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/contacts')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"contacts",
"attributes":{
"first-name":"Иван",
"last-name":"Иванов"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
},
"responsible":{
"data":{
"type":"users",
"id":"2"
}
}
}
}
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"data":{
"type":"contacts",
"attributes":{
"first-name":"Иван",
"last-name":"Иванов"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
},
"responsible":{
"data":{
"type":"users",
"id":"2"
}
}
}
}
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/contacts", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/contacts',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"data":{
"type":"contacts",
"attributes":{
"first-name":"Иван",
"last-name":"Иванов"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
},
"responsible":{
"data":{
"type":"users",
"id":"2"
}
}
}
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/contacts"
payload = json.dumps({
"data":{
"type":"contacts",
"attributes":{
"first-name":"Иван",
"last-name":"Иванов"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
},
"responsible":{
"data":{
"type":"users",
"id":"2"
}
}
}
}
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('POST', Uri.parse('https://app.synergycrm.ru/api/v1/contacts'));
request.body = json.encode({
"data":{
"type":"contacts",
"attributes":{
"first-name":"Иван",
"last-name":"Иванов"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
},
"responsible":{
"data":{
"type":"users",
"id":"2"
}
}
}
}
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
JSON API type | contacts |
URL | /api/v1/contacts |
Список | GET /api/v1/contacts |
Чтение | GET /api/v1/contacts/{id} |
Создание | POST /api/v1/contacts |
Редактирование | PATCH /api/v1/contacts/{id} |
Удаление | DELETE /api/v1/contacts/{id} |
Атрибуты
Ниже приведен пример формата данных, в реальном ответе будут присутствовать все перечисленные атрибуты
{
"data": {
"type":"contacts",
"id":"2",
"attributes":{
"first-name":"Иван",
"last-name":"Иванов",
"middle-name": "Иванович",
"work-phone":"+79876543211",
"customs":{
"custom-1":"Значение",
"custom-943":"2022-02-22T12:02:22.222+03:00"
},
"created-at":"2022-02-22T12:02:22.222+03:00",
"updated-at":"2022-02-22T12:02:22.222+03:00",
"archived-at": "2022-02-22T12:02:22.222+03:00",
"cached-at": "2022-02-22T12:02:22.222+03:00",
"position": "Руководитель отдела",
"birthdate": null,
"mobile-phone": "+79876543211",
"general-phone": "+79876543211",
"other-phone": "+79876543211",
"email": "test@mail.ru",
"other-email": "test@mail.ru",
"fax": "+79876543211",
"website": "synergycrm.ru",
"work-country": "Россия",
"work-region": "Московская обл.",
"work-city": "Москва",
"work-zipcode": "2222222",
"work-street": "ул. Мира",
"work-building": "2а",
"work-housing": "2",
"work-apartment": "222",
"home-country": "Росссия",
"home-region": "Московская обл.",
"home-city": "Москва",
"home-zipcode": "2222222",
"home-street": "ул. Мира",
"home-building": "2а",
"home-housing": "2",
"home-apartment": "222",
"vkontakte": "vk.com/domen",
"facebook": "facebook.com",
"linkedin": "ru.linkedin.com",
"odnoklassniki": "",
"instagram": "instagram.com",
"twitter": "twitter.com",
"whatsapp": null,
"viber": null,
"telegram": null,
"skype": null,
"description": "Описание",
"note": null,
"initial-balance": null,
"discarded-at": null,
"previous-responsible-id": null,
"utm-source": null,
"utm-medium": null,
"utm-campaign": null,
"utm-term": null,
"utm-content": null,
"utm-landing-page": null,
"utm-city": null,
"utm-search-query": null,
"as-string": "Иван Иванов Иванович",
"sex-code": "201"
}
}
}
Основные атрибуты
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
first-name* | string |
Иван | да | Имя |
last-name* | string |
Иванов | да | Фамилия |
middle-name | string |
Иванович | да | Отчество |
birthdate | date |
2022-02-22 |
да | Дата рождения |
description | string |
Описание | да | Описание |
general-phone | string |
+79876543211 |
да | Телефон (основной) |
mobile-phone | string |
+79876543211 |
да | Телефон (мобильный) |
work-phone | string |
+79876543211 |
да | Телефон (рабочий) |
work-phone-postfix | string |
200 |
да | Добавочный (рабочий) |
other-phone | string |
+79876543211 |
да | Телефон (дополнительный) |
other-phone-postfix | string |
200 |
да | Добавочный (дополнительный) |
fax | string |
+79876543211 |
да | Факс |
string |
help@synergycrm.ru | да | E-mail адрес | |
other-email | string |
help@synergycrm.ru | да | E-mail адрес (дополнительный) |
website | string |
synergycrm.ru | да | Сайт |
customs | hash |
{"custom-1":'custom value'} |
да | Свои поля |
created-at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата создания |
updated-at | datetime |
2022-02-22T12:02:22.222+03:00 |
нет | Дата обновления |
archived-at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата архивации |
discarded-at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата перемещения в корзину |
previous-responsible-id | integer |
100 |
нет | Предыдущий ответственный |
sex-code | string |
201 |
да | Пол контакта("201" - мужской, "202" - женский) |
* Обязательные поля
Рабочий адрес
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
work-country | string |
Россия | да | Страна |
work-region | string |
Республика Татарстан | да | Область, регион, край |
work-city | string |
Иннополис | да | Город, населенный пункт |
work-zipcode | string |
012345 |
да | Индекс |
work-street | string |
ул. Университетская | да | Улица, проспект |
work-building | string |
22а |
да | Номер дома |
work-housing | string |
2 |
да | Корпус |
work-apartment | string |
123 |
да | Номер офиса или квартиры |
Домашний адрес
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
home-country | string |
Россия | да | Страна |
home-region | string |
Москва | да | Область, регион, край |
home-city | string |
Москва | да | Город, населенный пункт |
home-zipcode | string |
012345 |
да | Индекс |
home-street | string |
ул. Кремлевская | да | Улица, проспект |
home-building | string |
22а |
да | Номер дома |
home-housing | string |
2 |
да | Корпус |
home-apartment | string |
123 |
да | Номер офиса или квартиры |
Соц. сети и мессенджеры
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
vkontakte | string |
vk.com/domain | да | ВКонтакте |
string |
facebook.com/domain | да | ||
string |
ru.linkedin.com/domain | да | Linked-in | |
odnoklassniki | string |
ok.ru/domain | да | Одноклассники |
string |
instagram.com/domain | да | ||
string |
twitter.com/domain | да | ||
string |
wa.me/79876543211 | да | ||
viber | string |
viber://chat?number=+79876543211 | да | Viber |
telegram | string |
t.me/username | да | Telegram |
skype | string |
skype:(username) | да | Skype |
Связи
Пример данных (перечислены не все связи)
{
"data": {
"type":"contacts",
"id":"2",
"relationships":{
"responsible":{
"links":{
"self":"/api/v1/contacts/2/relationships/responsible",
"related":"/api/v1/contacts/2/responsible"
}
},
"contact-type":{
"links":{
"self":"/api/v1/contacts/2/relationships/contact-type",
"related":"/api/v1/contacts/2/contact-type"
}
}
}
}
}
Пример запроса с загруженными отвественными и типом контакта
curl "https://app.synergycrm.ru/api/v1/contacts?include=responsible,contact-type" \
-H "Authorization: Bearer api_token"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/contacts?include=responsible,contact-type");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/contacts?include=responsible,contact-type')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/contacts?include=responsible,contact-type", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/contacts?include=responsible,contact-type',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/contacts?include=responsible,contact-type"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/contacts?include=responsible,contact-type'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Получить контакты по связанным реквизитам юридического лица аккаунта (org-detail)
curl -G "http://app.synergycrm.ru/api/v1/contacts?filter[org-detail-id]=2" \
-X GET \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token"
Каждая связь может быть включена в JSON ответ через параметр include
, согласно
официальной спецификации JSON API Inclusion of Related Resources.
Название | Связь | JSON API type |
---|---|---|
Ответственный | responsible | users |
Создатель | user | users |
Источник | source | sources |
Компании | companies | companies |
Статус | status | contact-statuses |
Тип | contact-type | contact-types |
Сделки | deals | deals |
Заявки | orders | orders |
Продукты | products | products |
Спецификации | entities-products | entity-products |
Задачи | tasks | diary-tasks |
События | events | diary-events |
Соисполнители | performers | users |
Счета | invoices | invoices |
Договоры | contracts | contracts |
Сегменты | segments | segments |
Ответственная организация | org-detail | org-details |
Фильтры
Получить список контактов с определённым рабочим номером
curl -G "https://app.synergycrm.ru/api/v1/contacts" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[work_phone]=+79876543211"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/contacts?filter[work_phone]=79876543211");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/contacts?filter[work_phone]=79876543211')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/contacts?filter[work_phone]=79876543211", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/contacts?filter[work_phone]=79876543211',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/contacts?filter[work_phone]=79876543211"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/contacts?filter[work_phone]=79876543211'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Фильтр | Описание | Пример |
---|---|---|
last-name | Вывести контакты по определенному last-name |
filter[last-name]=Ivanov |
middle-name | Вывести контакты по определенному middle-name |
filter[middle-name]=Ivanovich |
first-name | Вывести контакты по определенному first-name |
filter[first-name]=Ivan |
work-phone | Вывести контакты по определенному work-phone |
filter[work-phone]=+79876543211 |
mobile-phone | Вывести контакты по определенному mobile-phone |
filter[mobile-phone]=+79876543211 |
other-phone | Вывести контакты по определенному other-phone |
filter[other-phone]=+79876543211 |
any-phone | Вывести контакты в которых из одном из телефонных полей хранится значение any-phone |
filter[any_phone]=+79876543211 |
Вывести контакты по определенному email |
filter[email]=test@mail.ru |
|
other-email | Вывести контакты по определенному other-email |
filter[other-email]=test@mail.ru |
responsible-id | Вывести контакты по определенному ответственному | filter[responsible-id]=2 |
segment-ids | Вывести контакты по определенным сегментам | filter[segment-ids]=2 |
segment-process-status-ids | Вывести контакты по статусам в сегменте | filter[segment-process-status-ids]=2 |
created-at-gte | Вывести контакты созданные после указанного времени | filter[created-at-gte]=2022.02.22 12:00 |
created-at-lte | Вывести контакты созданные до указанного времени | filter[created-at-lte]=2022.02.22 12:00 |
updated-at-gte | Вывести контакты обновлённые после указанного времени | filter[updated-at-gte]=2022.02.22 12:00 |
updated-at-lte | Вывести контакты обновлённые до указанного времени | filter[updated-at-lte]=2022.02.22 12:00 |
birthdate-gte | Вывести контакты с датой рождения после указанной даты | filter[birthdate-gte]=1992.12.22 |
birthdate-lte | Вывести контакты с датой рождения до указанной даты | filter[birthdate-lte]=1992.12.22 |
table-state-id | Вывести контакты по заданному табличному фильтру | filter[table-state-id]=2 |
q | Вывести контакты по поисковому запросу | filter[q]=some-query |
archived | Вывести контакты в архиве | filter[archived]=2 |
discarded | Вывести контакты в корзине | filter[discarded]=2 |
actual | Вывести актуальные контакты | filter[actual]=2 |
discarded-at-null | Вывести контакты не в корзине | filter[discarded-at-null]=true |
birthdate-null | Вывести контакты без дня рождения | filter[birthdate-null]=true |
org-details | Вывести контакты по связанным реквизитам аккаунта org-detail-id |
filter[org-detail-id]=2 |
Статусы
Создание статуса контакта
curl "https://app.synergycrm.ru/api/v1/contact-statuses" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"contact-statuses",
"attributes":{
"name":"Статус контакта в API",
"color":"#000000"
}
}
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/contact-statuses");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"data\":{\"type\":\"contact-statuses\",\"attributes\":{\"name\":\"Статус контакта в API\",\"color\":\"#000000\"}}}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/contact-statuses')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"contact-statuses",
"attributes":{
"name":"Статус контакта в API",
"color":"#000000"
}
}
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"data":{
"type":"contact-statuses",
"attributes":{
"name":"Статус контакта в API",
"color":"#000000"
}
}
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/contact-statuses", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/contact-statuses',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"data":{
"type":"contact-statuses",
"attributes":{
"name":"Статус контакта в API",
"color":"#000000"
}
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/contact-statuses"
payload = json.dumps({
"data":{
"type":"contact-statuses",
"attributes":{
"name":"Статус контакта в API",
"color":"#000000"
}
}
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('POST', Uri.parse('https://app.synergycrm.ru/api/v1/contact-statuses'));
request.body = json.encode({
"data":{
"type":"contact-statuses",
"attributes":{
"name":"Статус контакта в API",
"color":"#000000"
}
}
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
JSON API type | contact-statuses |
URL | /api/v1/contact-statuses |
Список | GET /api/v1/contact-statuses |
Чтение | GET /api/v1/contact-statuses/{id} |
Создание | POST /api/v1/contact-statuses |
Редактирование | PATCH /api/v1/contact-statuses/{id} |
Удаление | DELETE /api/v1/contact-statuses/{id} |
Атрибуты
Атрибуты статуса контакта
{
"data": {
"type":"contact-statuses",
"id":"2",
"attributes":{
"created-at":"2022-02-22T12:22:22.222+03:00",
"updated-at":"2022-02-22T12:22:22.222+03:00",
"name": "Мой статус контакта",
"color": "#1f2f3f"
}
}
}
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
name* | string |
Мой статус контакта | да | Имя статуса контакта |
color | string |
#1f2f3f | да | Цвет статуса контакта |
created-at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
updated-at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Фильтры
Получить список статусов контактов созданных до определённой даты
curl -G "https://app.synergycrm.ru/api/v1/contact-statuses" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created-at-gte]=2022.02.22 12:00"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/contact-statuses?filter[created-at-gte]=2022.02.22 12:00");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/contact-statuses?filter[created-at-gte]=2022.02.22 12:00')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/contact-statuses?filter[created-at-gte]=2022.02.22 12:00", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/contact-statuses?filter[created-at-gte]=2022.02.22 12:00',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/contact-statuses?filter[created-at-gte]=2022.02.22 12:00"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/contact-statuses?filter[created-at-gte]=2022.02.22 12:00'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Фильтр | Описание | Пример |
---|---|---|
created-at-gte | Вывести статусы контактов созданные после указанного времени | filter[created-at-gte]=2022.02.22 12:00 |
created-at-lte | Вывести статусы контактов созданные до указанного времени | filter[created-at-lte]=2022.02.22 12:00 |
updated-at-gte | Вывести статусы контактов обновлённые после указанного времени | filter[updated-at-gte]=2022.02.22 12:00 |
updated-at-lte | Вывести статусы контактов обновлённые до указанного времени | filter[updated-at-lte]=2022.02.22 12:00 |
Типы
Создание типа контакта
curl "https://app.synergycrm.ru/api/v1/contact-types" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"contact-types",
"attributes":{
"name":"Тип контакта в API"
}
}
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/contact-types");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"data\":{\"type\":\"contact-types\",\"attributes\":{\"name\":\"Тип контакта в API\"}}}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/contact-types')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"contact-types",
"attributes":{
"name":"Тип контакта в API"
}
}
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"data":{
"type":"contact-types",
"attributes":{
"name":"Тип контакта в API"
}
}
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/contact-types", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/contact-types',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"data":{
"type":"contact-types",
"attributes":{
"name":"Тип контакта в API"
}
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/contact-types"
payload = json.dumps({
"data":{
"type":"contact-types",
"attributes":{
"name":"Тип контакта в API"
}
}
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('POST', Uri.parse('https://app.synergycrm.ru/api/v1/contact-types'));
request.body = json.encode({
"data":{
"type":"contact-types",
"attributes":{
"name":"Тип контакта в API"
}
}
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
JSON API type | contact-types |
URL | /api/v1/contact-types |
Список | GET /api/v1/contact-types |
Чтение | GET /api/v1/contact-types/{id} |
Создание | POST /api/v1/contact-types |
Редактирование | PATCH /api/v1/contact-types/{id} |
Удаление | DELETE /api/v1/contact-types/{id} |
Атрибуты
Атрибуты типа контакта
{
"data": {
"type":"contact-types",
"id":"2",
"attributes":{
"created-at":"2022-02-22T12:22:22.222+03:00",
"updated-at":"2022-02-22T12:22:22.222+03:00",
"name": "Мой тип контакта"
}
}
}
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
name* | string |
Мой тип контакта | да | Имя типа контакта |
created-at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
updated-at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Фильтры
Получить список типов контактов созданных до определённой даты
curl -G "https://app.synergycrm.ru/api/v1/contact-types" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created-at-gte]=2022.02.22 12:00"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/contact-types?filter[created-at-gte]=2022.02.22 12:00");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/contact-types?filter[created-at-gte]=2022.02.22 12:00')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/contact-types?filter[created-at-gte]=2022.02.22 12:00", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/contact-types?filter[created-at-gte]=2022.02.22 12:00',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/contact-types?filter[created-at-gte]=2022.02.22 12:00"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/contact-types?filter[created-at-gte]=2022.02.22 12:00'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Фильтр | Описание | Пример |
---|---|---|
created-at-gte | Вывести типы контактов, созданные после указанного времени | filter[created-at-gte]=2022.02.22 12:00 |
created-at-lte | Вывести типы контактов, созданные до указанного времени | filter[created-at-lte]=2022.02.22 12:00 |
updated-at-gte | Вывести типы контактов, обновлённые после указанного времени | filter[updated-at-gte]=2022.02.22 12:00 |
updated-at-lte | Вывести типы контактов, обновлённые до указанного времени | filter[updated-at-lte]=2022.02.22 12:00 |
Родственные связи
Создание/редактирование родственной связи.
curl "https://app.synergycrm.ru/api/v1/contacts/44/relative" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"contact_id": 43,
"relation_type": "child"
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/contacts/44/relative");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"contact_id\":43,\"relation_type\":\"child\"}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/contacts/44/relative')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"contact_id": 43,
"relation_type": "child"
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"contact_id": 43,
"relation_type": "child"
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/contacts/44/relative", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/contacts/44/relative',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"contact_id": 43,
"relation_type": "child"
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/contacts/44/relative"
payload = json.dumps({
"contact_id": 43,
"relation_type": "child"
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('POST', Uri.parse('https://app.synergycrm.ru/api/v1/contacts/44/relative'));
request.body = json.encode({
"contact_id": 43,
"relation_type": "child"
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
При передаче данных о родственной связи для контакта, будет создана родственная связь для переданного контакта, согласно таблице:
relation_type | Обозначение | Наличие кода пола у контакта | Генерируемые значения родственной связи у контакта в зависимости от пола |
---|---|---|---|
father | Отец | да | '201' => 'son', '202' => 'daughter' |
mother | Мать | да | '201' => 'son', '202' => 'daughter' |
son | Сын | да | '201' => 'father', '202' => 'mother' |
daughter | Дочь | да | '201' => 'father', '202' => 'mother' |
brother | Брат | да | '201' => 'brother', '202' => 'sister' |
sister | Сестра | да | '201' => 'brother', '202' => 'sister' |
husband | Муж | нет | 'wife' |
wife | Жена | нет | 'husband' |
grandad | Прадедушка | да | '201' => 'grandson', '202' => 'granddaughter' |
grandma | Прабабушка | да | '201' => 'grandson', '202' => 'granddaughter' |
grandson | Правнук | да | '201' => 'grandad', '202' => 'grandma' |
granddaughter | Правнучка | да | '201' => 'grandad', '202' => 'grandma' |
uncle | Дядя | да | '201' => 'nephew', '202' => 'niece' |
aunt | Тётя | да | '201' => 'nephew', '202' => 'niece' |
nephew | Племянник | да | '201' => 'uncle', '202' => 'aunt' |
niece | Племянница | да | '201' => 'uncle', '202' => 'aunt' |
fosterer | Опекун | нет | 'foster_child' |
foster_child | Подопечный | нет | 'fosterer' |
legal_representative | Законный представитель | нет | 'child' |
child | Ребенок | нет | 'legal_representative' |
При передаче связи, требующей пол у контакта, но при его остутсвии, у родственной связи для контакта будет пустое значене
Атрибуты
Имя | Тип | Пример | Описание |
---|---|---|---|
contact_id* | integer |
43 | id контакта, с которым создается связь |
relation_type* | string |
child |
Тип родственной связи |
* Обязательные поля
Ниже приведен пример формата данных. В реальном ответе будут присутствовать перечисленные атрибуты
{
"data": [
{
"contact_id": 44,
"relation_type": "legal_representative"
},
{
"contact_id": 43,
"relation_type": "child"
}
]
}
Компании
Создание компании с предустановленным источником и ответственным
curl "https://app.synergycrm.ru/api/v1/companies" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"companies",
"attributes":{
"name":"ООО Синергия Софт",
"description":"Разработка компьютерного программного обеспечения"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
},
"responsible":{
"data":{
"type":"users",
"id":"2"
}
}
}
}
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/companies");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"data\":{\"type\":\"companies\",\"attributes\":{\"name\":\"ООО Синергия Софт\",\"description\":\"Разработка компьютерного программного обеспечения\"},\"relationships\":{\"source\":{\"data\":{\"type\":\"sources\",\"id\":\"2\"}},\"responsible\":{\"data\":{\"type\":\"users\",\"id\":\"2\"}}}}}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/companies')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"companies",
"attributes":{
"name":"ООО Синергия Софт",
"description":"Разработка компьютерного программного обеспечения"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
},
"responsible":{
"data":{
"type":"users",
"id":"2"
}
}
}
}
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"data":{
"type":"companies",
"attributes":{
"name":"ООО Синергия Софт",
"description":"Разработка компьютерного программного обеспечения"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
},
"responsible":{
"data":{
"type":"users",
"id":"2"
}
}
}
}
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/companies", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/companies',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"data":{
"type":"companies",
"attributes":{
"name":"ООО Синергия Софт",
"description":"Разработка компьютерного программного обеспечения"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
},
"responsible":{
"data":{
"type":"users",
"id":"2"
}
}
}
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/companies"
payload = json.dumps({
"data":{
"type":"companies",
"attributes":{
"name":"ООО Синергия Софт",
"description":"Разработка компьютерного программного обеспечения"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
},
"responsible":{
"data":{
"type":"users",
"id":"2"
}
}
}
}
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('POST', Uri.parse('https://app.synergycrm.ru/api/v1/companies'));
request.body = json.encode({
"data":{
"type":"companies",
"attributes":{
"name":"ООО Синергия Софт",
"description":"Разработка компьютерного программного обеспечения"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
},
"responsible":{
"data":{
"type":"users",
"id":"2"
}
}
}
}
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
JSON API type | companies |
URL | /api/v1/companies |
Список | GET /api/v1/companies |
Чтение | GET /api/v1/companies/{id} |
Создание | POST /api/v1/companies |
Редактирование | PATCH /api/v1/companies/{id} |
Удаление | DELETE /api/v1/companies/{id} |
Атрибуты
Атрибуты компании
{
"data": {
"type":"companies",
"id":"2",
"attributes":{
"created-at": "2022-02-22T12:02:22.222+03:00",
"updated-at": "2022-02-22T12:02:22.222+03:00",
"name": "ООО Синергия Софт",
"general-phone": "79876543211",
"work-phone": "79876543211",
"mobile-phone": "79876543211",
"other-phone": "79876543211",
"fax": "79876543211",
"country": "Россия",
"city": "Иннополис",
"region": "Республика Татарстан",
"address": "Университетская ул, д. 7, помещ. 503",
"zip-code": "012345",
"email": "email@mail.ru",
"other-email": "mail@gmail.com",
"website": "www.site.com",
"juristic-country": "Россия",
"juristic-region": "Республика Татарстан",
"juristic-city": "Иннополис",
"juristic-zip-code": "012345",
"juristic-street": "Университетская",
"juristic-house": "1",
"juristic-build": "1",
"juristic-office": "1",
"actual-country": "Россия",
"actual-region": "Республика Татарстан",
"actual-city": "Иннополис",
"actual-zip-code": "012345",
"actual-street": "ул. Университетская",
"actual-house": "22а",
"actual-build": "2",
"actual-office": "123",
"mailing-country": "Россия",
"mailing-region": "Республика Татарстан",
"mailing-city": "Иннополис",
"mailing-zip-code": "012345",
"mailing-street": "Университетская",
"mailing-house": "1",
"mailing-build": "1",
"mailing-office": "1",
"inn": "0101010101",
"description": "Разработка компьютерного программного обеспечения",
"full-name": "Общество с ограниченной ответственностью Синергия Софт",
"short-name": "ООО Синергия Софт",
"ogrn": "0101010101010",
"kpp": "010101010",
"okved": "62.01",
"manager-name": "Сидоров В.В.",
"manager-position": "Генеральный директор",
"lawfulness-base": null,
"accountant": "Иванов И.И.",
"customs": {
"custom-98": "",
"custom-9": ""
},
"discarded-at": null,
"utm-source": null,
"utm-medium": null,
"utm-campaign": null,
"utm-term": null,
"utm-content": null,
"utm-landing-page": null,
"utm-city": null,
"utm-search-query": null,
"archived-at": null
}
}
}
Основные атрибуты
Имя | Тип | Пример | Запись | Описание | |
---|---|---|---|---|---|
name* | string |
ООО Синергия Софт | да | Название | |
description | string |
Разработка компьютерного программного обеспечения | да | Описание | |
general-phone | string |
+79876543211 |
да | Телефон (основной) | |
mobile-phone | string |
+79876543211 |
да | Телефон (мобильный) | |
work-phone | string |
+79876543211 |
да | Телефон (рабочий) | |
work-phone-postfix | string |
200 |
да | Добавочный (рабочий) | |
other-phone | string |
+79876543211 |
да | Телефон (дополнительный) | |
other-phone-postfix | string |
200 |
да | Добавочный (дополнительный) | |
fax | string |
+79876543211 |
да | Факс | |
string |
help@synergycrm.ru | да | E-mail адрес | ||
other-email | string |
help@synergycrm.ru | да | E-mail адрес (дополнительный) | |
website | string |
synergycrm.ru | да | Сайт | |
country | string |
РФ | да | Страна | |
region | string |
Республика Татарстан | да | Регион | |
city | string |
Иннополис | да | Город | |
address | string |
Университетская ул, д. 7, помещ. 503 | да | Адрес | |
zip-code | string |
012345 | да | Индекс | |
custom | hash |
{"custom-1":'custom value'} |
да | Свои поля | |
created-at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата создания | |
updated-at | datetime |
2022-02-22T12:02:22.222+03:00 |
нет | Дата обновления | |
archived-at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата архивации | |
discarded-at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата перемещения в корзину | |
previous-responsible-id | integer |
100 |
нет | Предыдущий ответственный |
* Обязательные поля
Фактический адрес
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
actual-country | string |
Россия | да | Страна |
actual-region | string |
Республика Татарстан | да | Область, регион, край |
actual-city | string |
Иннополис | да | Город, населенный пункт |
actual-zip-code | string |
012345 |
да | Индекс |
actual-street | string |
ул. Университетская | да | Улица, проспект |
actual-house | string |
22а |
да | Номер дома |
actual-build | string |
2 |
да | Корпус |
actual-office | string |
123 |
да | Номер офиса |
Юридический адрес
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
juristic-country | string |
Россия | да | Страна |
juristic-region | string |
Республика Татарстан | да | Область, регион, край |
juristic-city | string |
Иннополис | да | Город, населенный пункт |
juristic-zip-code | string |
012345 |
да | Индекс |
juristic-street | string |
ул. Университетская | да | Улица, проспект |
juristic-house | string |
22а |
да | Номер дома |
juristic-build | string |
2 |
да | Корпус |
juristic-office | string |
123 |
да | Номер офиса |
Почтовый адрес
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
mailing-country | string |
Россия | да | Страна |
mailing-region | string |
Республика Татарстан | да | Область, регион, край |
mailing-city | string |
Иннополис | да | Город, населенный пункт |
mailing-zip-code | string |
012345 |
да | Индекс |
mailing-street | string |
ул. Университетская | да | Улица, проспект |
mailing-house | string |
22а |
да | Номер дома |
mailing-build | string |
2 |
да | Корпус |
mailing-office | string |
123 |
да | Номер офиса |
Реквизиты
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
full-name | string |
Общество с ограниченной ответственностью | да | Полное наименование |
short-name | string |
ООО "Синергия Софт" | да | Короткое наименование |
inn | string |
0101010101 |
да | ИНН |
ogrn | string |
0101010101010 |
да | ОГРН |
kpp | string |
010101010 |
да | КПП |
okved | string |
62.01 |
да | ОКВЭД |
director | string |
Иванов И.И. | да | Директор |
accountant | string |
Иванов И.И. | да | Бухгалтер |
lawfulness-base | string |
Значение | да | Правомочность |
manager-name | string |
Сидоров В.В. | да | ФИО руководителя |
manager-position | string |
Генеральный директор | да | Должность руководителя |
руководителя |
UTM метки
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
utm-source | string |
yandex-direct | да | Рекламная система |
utm-medium | string |
cpc | да | Тип трафика |
utm-campaign | string |
cosmetic | да | Название рекламной кампании |
utm-term | string |
shampoo | да | Ключевое слово, которое инициировало показ объявления |
utm-content | string |
some text | да | Информация, которая помогает различать объявления, если совпадают другие параметры |
utm-landing-page | string |
somesite.ru/path | да | Адрес посадочной страницы |
utm-city | string |
Москва | да | Город |
Связи
Пример данных (перечислены не все связи)
{
"data": {
"type":"companies",
"id":"2",
"relationships":{
"responsible":{
"links":{
"self":"/api/v1/contacts/2/relationships/responsible",
"related":"/api/v1/contacts/2/responsible"
}
},
"company-type":{
"links":{
"self":"/api/v1/contacts/2/relationships/company-type",
"related":"/api/v1/contacts/2/company-type"
}
}
}
}
}
Пример запроса с загруженными отвественными и типом компании
curl "https://app.synergycrm.ru/api/v1/companies?include=responsible,company-type" \
-H "Authorization: Bearer api_token"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/companies?include=responsible,company-type");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/companies?include=responsible,company-type')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/companies?include=responsible,company-type", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/companies?include=responsible,company-type',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/companies?include=responsible,company-type"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/companies?include=responsible,company-type'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Получить компании по связанным реквизитам юридического лица аккаунта (org-detail)
curl -G "http://app.synergycrm.ru/api/v1/companies?filter[org-detail-id]=2" \
-X GET \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token"
Каждая связь может быть включена в JSON ответ через параметр include
, согласно
официальной спецификации JSON API Inclusion of Related Resources.
Название | Связь | JSON API type |
---|---|---|
Ответственный | responsible | users |
Создатель | user | users |
Источник | source | sources |
Контакты | contacts | contacts |
Статус | status | company-statuses |
Тип | company-type | company-types |
Сделки | deals | deals |
Продукты | products | products |
Спецификации | entities-products | entity-products |
Задачи | tasks | diary-tasks |
События | events | diary-events |
Банк. реквизиты | bank-details | company-bank-details |
Соисполнители | performers | users |
Счета | invoices | invoices |
Договоры | contracts | contracts |
Осмотры | checkups | checkups |
Сегменты | segments | segments |
Ответственная организация | org-detail | org-details |
Фильтры
Получить список компаний с определённым рабочим номером
curl -G "https://app.synergycrm.ru/api/v1/companies" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[general_phone]=+79876543211"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/companies?filter[general_phone]=79876543211");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/companies?filter[general_phone]=79876543211')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/companies?filter[general_phone]=79876543211", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/companies?filter[general_phone]=79876543211',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/companies?filter[general_phone]=79876543211"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/companies?filter[general_phone]=79876543211'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Фильтр | Описание | Пример |
---|---|---|
inn | Вывести компании по определенному номеру ИНН | filter[inn]=000000000 |
kpp | Вывести компании по определенному номеру КПП | filter[kpp]=000000000 |
work-phone | Вывести компании по определенному work-phone |
filter[work-phone]=+79876543211 |
general-phone | Вывести компании по определенному general-phone |
filter[general-phone]=+79876543211 |
other-phone | Вывести компании по определенному other-phone |
filter[other-phone]=+79876543211 |
any-phone | Вывести компании в которых из одном из телефонных полей хранится значение any-phone |
filter[any_phone]=+79876543211 |
Вывести компании по определенному email |
filter[email]=mail@test.ru |
|
other-email | Вывести компании по определенному other-email |
filter[other-email]=mail@test.ru |
responsible-id | Вывести компании по определенному ответственному | filter[responsible-id]=2 |
segment-ids | Вывести компании по определенным сегментам | filter[segment-ids]=2 |
segment-process-status-ids | Вывести компании по статусам в сегменте | filter[segment-process-status-ids]=2 |
created-at-gte | Вывести компании созданные после указанного времени | filter[created-at-gte]=2022.02.22 12:00 |
created-at-lte | Вывести компании созданные до указанного времени | filter[created-at-lte]=2022.02.22 12:00 |
updated-at-gte | Вывести компании обновлённые после указанного времени | filter[updated-at-gte]=2022.02.22 12:00 |
updated-at-lte | Вывести компании обновлённые до указанного времени | filter[updated-at-lte]=2022.02.22 12:00 |
table-state-id | Вывести компании по заданному табличному фильтру | filter[table-state-id]=2 |
q | Вывести компании по поисковому запросу | filter[q]=some-query |
archived | Вывести компании в архиве | filter[archived]=2 |
discarded | Вывести компании в корзине | filter[discarded]=2 |
actual | Вывести актуальные компании | filter[actual]=2 |
discarded-at-null | Вывести компании не в корзине | filter[discarded-at-null]=true |
org-details | Вывести компании по связанным реквизитам аккаунта org-detail-id |
filter[org-detail-id]=2 |
Банковские реквизиты
Создание банковских реквизитов для компании
curl "https://app.synergycrm.ru/api/v1/company-bank-details" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"company-bank-details",
"attributes":{
"name":"МОЕ НАЗВАНИЕ БАНКОВСКИХ РЕКВИЗИТОВ"
},
"relationships":{
"company":{
"data":{
"type":"companies",
"id":2
}
}
}
}
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/company-bank-details");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"data\":{\"type\":\"company-bank-details\",\"attributes\":{\"name\":\"МОЕ НАЗВАНИЕ БАНКОВСКИХ РЕКВИЗИТОВ\"},\"relationships\":{\"company\":{\"data\":{\"type\":\"companies\",\"id\":2}}}}}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/company-bank-details')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"company-bank-details",
"attributes":{
"name":"МОЕ НАЗВАНИЕ БАНКОВСКИХ РЕКВИЗИТОВ"
},
"relationships":{
"company":{
"data":{
"type":"companies",
"id":2
}
}
}
}
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"data":{
"type":"company-bank-details",
"attributes":{
"name":"МОЕ НАЗВАНИЕ БАНКОВСКИХ РЕКВИЗИТОВ"
},
"relationships":{
"company":{
"data":{
"type":"companies",
"id":2
}
}
}
}
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/company-bank-details", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/company-bank-details',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"data":{
"type":"company-bank-details",
"attributes":{
"name":"МОЕ НАЗВАНИЕ БАНКОВСКИХ РЕКВИЗИТОВ"
},
"relationships":{
"company":{
"data":{
"type":"companies",
"id":2
}
}
}
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/company-bank-details"
payload = json.dumps({
"data":{
"type":"company-bank-details",
"attributes":{
"name":"МОЕ НАЗВАНИЕ БАНКОВСКИХ РЕКВИЗИТОВ"
},
"relationships":{
"company":{
"data":{
"type":"companies",
"id":2
}
}
}
}
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('POST', Uri.parse('https://app.synergycrm.ru/api/v1/company-bank-details'));
request.body = json.encode({
"data":{
"type":"company-bank-details",
"attributes":{
"name":"МОЕ НАЗВАНИЕ БАНКОВСКИХ РЕКВИЗИТОВ"
},
"relationships":{
"company":{
"data":{
"type":"companies",
"id":2
}
}
}
}
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
JSON API type | company-bank-details |
URL | /api/v1/company-bank-details |
Список | GET /api/v1/company-bank-details |
Чтение | GET /api/v1/company-bank-details/{id} |
Создание | POST /api/v1/company-bank-details |
Редактирование | PATCH /api/v1/company-bank-details/{id} |
Удаление | DELETE /api/v1/company-bank-details/{id} |
Атрибуты
Атрибуты банковских реквизитов компании
{
"data":{
"id": "2",
"type": "company-bank-details",
"attributes":{
"created-at": "2022-02-22T12:22:22.222+03:00",
"updated-at": "2022-02-22T12:22:22.222+03:00",
"name": "МОЕ НАЗВАНИЕ БАНКОВСКИХ РЕКВИЗИТОВ",
"bank-name": "ПАО СБЕРБАНК",
"bik": "000000000",
"corr-number": "00000000000000000000",
"number": "00000000000000000000",
"is-default": true,
"active": true
}
}
}
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
name* | string |
МОЕ НАЗВАНИЕ БАНКОВСКИХ РЕКВИЗИТОВ | да | Название набора реквизитов |
bank-name | string |
ПАО СБЕРБАНК | да | Имя банка |
bik | string |
000000000 | да | БИК банка |
corr-number | string |
00000000000000000000 | да | Корр. счет |
number | string |
00000000000000000000 | да | Номер счета |
is-default | boolean |
true |
да | Основные реквизиты? |
created-at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
updated-at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Фильтры банковских реквизитов
Получить список банковских реквизитов, созданных до определённой даты
curl -G "https://app.synergycrm.ru/api/v1/company-bank-details" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created-at-gte]=2022.02.22 12:00"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/company-bank-details?filter[created-at-gte]=2022.02.22 12:00");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/company-bank-details?filter[created-at-gte]=2022.02.22 12:00')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/company-bank-details?filter[created-at-gte]=2022.02.22 12:00", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/company-bank-details?filter[created-at-gte]=2022.02.22 12:00',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/company-bank-details?filter[created-at-gte]=2022.02.22 12:00"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/company-bank-details?filter[created-at-gte]=2022.02.22 12:00'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Фильтр | Описание | Пример |
---|---|---|
created-at-gte | Вывести банковские реквизиты созданные в системе после указанного времени | filter[created-at-gte]=2022.02.22 12:00 |
created-at-lte | Вывести банковские реквизиты созданные в системе до указанного времени | filter[created-at-lte]=2022.02.22 12:00 |
updated-at-gte | Вывести банковские реквизиты обновлённые после указанного времени | filter[updated-at-gte]=2022.02.22 12:00 |
updated-at-lte | Вывести банковские реквизиты обновлённые до указанного времени | filter[updated-at-lte]=2022.02.22 12:00 |
bik | Вывести банковские реквизиты по БИК банка | filter[bik]=010101010 |
number | Вывести банковские реквизиты по номеру счета | filter[number]=01010101010101010101 |
Связи
Загрузка банковских реквизитов по определенной компании (id = 2)
curl "https://app.synergycrm.ru/api/v1/companies/2/relationships/bank-details" \
-X GET \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/companies/2/relationships/bank-details");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/companies/2/relationships/bank-details')
req = Net::HTTP::Get.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/companies/2/relationships/bank-details", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/companies/2/relationships/bank-details',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/companies/2/relationships/bank-details"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/companies/2/relationships/bank-details'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Название | Связь | JSON API type |
---|---|---|
Компания | company | companies |
Статусы
Создание статуса компании
curl "https://app.synergycrm.ru/api/v1/company-statuses" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"company-statuses",
"attributes":{
"name":"Статус компании из API",
"color":"#000000"
}
}
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/company-statuses");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"data\":{\"type\":\"company-statuses\",\"attributes\":{\"name\":\"Статус компании из API\",\"color\":\"#000000\"}}}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/company-statuses')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"company-statuses",
"attributes":{
"name":"Статус компании из API",
"color":"#000000"
}
}
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"data":{
"type":"company-statuses",
"attributes":{
"name":"Статус компании из API",
"color":"#000000"
}
}
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/company-statuses", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/company-statuses',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"data":{
"type":"company-statuses",
"attributes":{
"name":"Статус компании из API",
"color":"#000000"
}
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/company-statuses"
payload = json.dumps({
"data":{
"type":"company-statuses",
"attributes":{
"name":"Статус компании из API",
"color":"#000000"
}
}
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('POST', Uri.parse('https://app.synergycrm.ru/api/v1/company-statuses'));
request.body = json.encode({
"data":{
"type":"company-statuses",
"attributes":{
"name":"Статус компании из API",
"color":"#000000"
}
}
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
JSON API type | company-statuses |
URL | /api/v1/company-statuses |
Список | GET /api/v1/company-statuses |
Чтение | GET /api/v1/company-statuses/{id} |
Создание | POST /api/v1/company-statuses |
Редактирование | PATCH /api/v1/company-statuses/{id} |
Удаление | DELETE /api/v1/company-statuses/{id} |
Атрибуты
Атрибуты статуса компании
{
"data": {
"type":"company-statuses",
"id":"2",
"attributes":{
"created-at": "2022-02-22T12:22:22.222+03:00",
"updated-at": "2022-02-22T12:22:22.222+03:00",
"name": "Мой статус компании",
"color": "#1f2f3f"
}
}
}
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
name* | string |
Мой статус компании | да | Имя статуса компании |
color | string |
#1f2f3f | да | Цвет статуса компании |
created-at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
updated-at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Фильтры
Получить список статусов компаний созданных до определённой даты
curl -G "https://app.synergycrm.ru/api/v1/company-statuses" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created-at-gte]=2022.02.22 12:00"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/company-statuses?filter[created-at-gte]=2022.02.22 12:00");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/company-statuses?filter[created-at-gte]=2022.02.22 12:00')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/company-statuses?filter[created-at-gte]=2022.02.22 12:00", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/company-statuses?filter[created-at-gte]=2022.02.22 12:00',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/company-statuses?filter[created-at-gte]=2022.02.22 12:00"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/company-statuses?filter[created-at-gte]=2022.02.22 12:00'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Фильтр | Описание | Пример |
---|---|---|
created-at-gte | Вывести объекты созданные после указанного времени | filter[created-at-gte]=2022.02.22 12:00 |
created-at-lte | Вывести объекты созданные до указанного времени | filter[created-at-lte]=2022.02.22 12:00 |
updated-at-gte | Вывести объекты обновлённые после указанного времени | filter[updated-at-gte]=2022.02.22 12:00 |
updated-at-lte | Вывести объекты обновлённые до указанного времени | filter[updated-at-lte]=2022.02.22 12:00 |
Типы
Создание типа компании
curl "https://app.synergycrm.ru/api/v1/company-types" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"company-types",
"attributes":{
"name":"Тип компании из API"
}
}
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/company-types");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"data\":{\"type\":\"company-types\",\"attributes\":{\"name\":\"Тип компании из API\"}}}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/company-types')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"company-types",
"attributes":{
"name":"Тип компании из API"
}
}
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"data":{
"type":"company-types",
"attributes":{
"name":"Тип компании из API"
}
}
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/company-types", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/company-types',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"data":{
"type":"company-types",
"attributes":{
"name":"Тип компании из API"
}
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/company-types"
payload = json.dumps({
"data":{
"type":"company-types",
"attributes":{
"name":"Тип компании из API"
}
}
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('POST', Uri.parse('https://app.synergycrm.ru/api/v1/company-types'));
request.body = json.encode({
"data":{
"type":"company-types",
"attributes":{
"name":"Тип компании из API"
}
}
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
JSON API type | company-types |
URL | /api/v1/company-types |
Список | GET /api/v1/company-types |
Чтение | GET /api/v1/company-types/{id} |
Создание | POST /api/v1/company-types |
Редактирование | PATCH /api/v1/company-types/{id} |
Удаление | DELETE /api/v1/company-types/{id} |
Атрибуты
Атрибуты типа компании
{
"data": {
"type":"company-types",
"id":"2",
"attributes":{
"created-at":"2022-02-22T12:22:22.222+03:00",
"updated-at":"2022-02-22T12:22:22.222+03:00",
"name": "Мой тип компании"
}
}
}
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
name* | string |
Мой тип компании | да | Имя типа компании |
created-at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
updated-at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Фильтры
Получить список типов компаний созданных до определённой даты
curl -G "https://app.synergycrm.ru/api/v1/company-types" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created-at-gte]=2022.02.22 12:00"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/company-types?filter[created-at-gte]=2022.02.22 12:00");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/company-types?filter[created-at-gte]=2022.02.22 12:00')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/company-types?filter[created-at-gte]=2022.02.22 12:00", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/company-types?filter[created-at-gte]=2022.02.22 12:00',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/company-types?filter[created-at-gte]=2022.02.22 12:00"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/company-types?filter[created-at-gte]=2022.02.22 12:00'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Фильтр | Описание | Пример |
---|---|---|
created-at-gte | Вывести типы компаний созданные после указанного времени | filter[created-at-gte]=2022.02.22 12:00 |
created-at-lte | Вывести типы компаний созданные до указанного времени | filter[created-at-lte]=2022.02.22 12:00 |
updated-at-gte | Вывести типы компаний обновлённые после указанного времени | filter[updated-at-gte]=2022.02.22 12:00 |
updated-at-lte | Вывести типы компаний обновлённые до указанного времени | filter[updated-at-lte]=2022.02.22 12:00 |
Сделки
Создание сделки с предустановленным источником
curl "https://app.synergycrm.ru/api/v1/deals" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"deals",
"attributes":{
"name":"Сделка по API",
"planned-at":"2022-02-22"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
}
}
}
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/deals");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"data\":{\"type\":\"deals\",\"attributes\":{\"name\":\"Сделка по API\",\"planned-at\":\"2022-02-22\"},\"relationships\":{\"source\":{\"data\":{\"type\":\"sources\",\"id\":\"2\"}}}}}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/deals')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"deals",
"attributes":{
"name":"Сделка по API",
"planned-at":"2022-02-22"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
}
}
}
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"data":{
"type":"deals",
"attributes":{
"name":"Сделка по API",
"planned-at":"2022-02-22"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
}
}
}
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/deals", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/deals',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"data":{
"type":"deals",
"attributes":{
"name":"Сделка по API",
"planned-at":"2022-02-22"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
}
}
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/deals"
payload = json.dumps({
"data":{
"type":"deals",
"attributes":{
"name":"Сделка по API",
"planned-at":"2022-02-22"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
}
}
}
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('POST', Uri.parse('https://app.synergycrm.ru/api/v1/deals'));
request.body = json.encode({
"data":{
"type":"deals",
"attributes":{
"name":"Сделка по API",
"planned-at":"2022-02-22"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
}
}
}
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Создание сделки с привязанной заявкой
curl "https://app.synergycrm.ru/api/v1/deals" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"deals",
"attributes":{
"name":"Сделка по API с привязанной заявкой"
},
"relationships":{
"orders": {
"data" : [{
"type": "orders",
"id": 22222
}]
}
}
}
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/deals");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"data\":{\"type\":\"deals\",\"attributes\":{\"name\":\"Сделка по API с привязанной заявкой\"},\"relationships\":{\"orders\": {\"data\" : [{\"type\": \"orders\",\"id\": 22222}]}}}}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/deals')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"deals",
"attributes":{
"name":"Сделка по API с привязанной заявкой"
},
"relationships":{
"orders": {
"data" : [{
"type": "orders",
"id": 22222
}]
}
}
}
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"data":{
"type":"deals",
"attributes":{
"name":"Сделка по API с привязанной заявкой"
},
"relationships":{
"orders": {
"data" : [{
"type": "orders",
"id": 22222
}]
}
}
}
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/deals", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/deals',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"data":{
"type":"deals",
"attributes":{
"name":"Сделка по API с привязанной заявкой"
},
"relationships":{
"orders": {
"data" : [{
"type": "orders",
"id": 22222
}]
}
}
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/deals"
payload = json.dumps({
"data":{
"type":"deals",
"attributes":{
"name":"Сделка по API с привязанной заявкой"
},
"relationships":{
"orders": {
"data" : [{
"type": "orders",
"id": 22222
}]
}
}
}
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('POST', Uri.parse('https://app.synergycrm.ru/api/v1/deals?filter[created-at-gte]=2022.02.22 12:00'));
request.body = json.encode({
"data":{
"type":"deals",
"attributes":{
"name":"Сделка по API с привязанной заявкой"
},
"relationships":{
"orders": {
"data" : [{
"type": "orders",
"id": 22222
}]
}
}
}
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Создание сделки с привязанными продуктами
curl "https://app.synergycrm.ru/api/v1/deals" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"deals",
"attributes":{
"name":"Сделка по API с привязанными продуктами"
},
"relationships":{
"products": {
"data" : [{
"type": "products",
"id": 2222
}, {
"type": "products",
"id": 222
}]
}
}
}
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/deals");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"data\":{\"type\":\"deals\",\"attributes\":{\"name\":\"Сделка по API с привязанными продуктами\"},\"relationships\":{\"products\": {\"data\" : [{\"type\": \"products\",\"id\": 2222}, {\"type\": \"products\",\"id\": 222}]}}}}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/deals')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"deals",
"attributes":{
"name":"Сделка по API с привязанными продуктами"
},
"relationships":{
"products": {
"data" : [{
"type": "products",
"id": 2222
}, {
"type": "products",
"id": 222
}]
}
}
}
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"data":{
"type":"deals",
"attributes":{
"name":"Сделка по API с привязанными продуктами"
},
"relationships":{
"products": {
"data" : [{
"type": "products",
"id": 2222
}, {
"type": "products",
"id": 222
}]
}
}
}
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/deals", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/deals',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"data":{
"type":"deals",
"attributes":{
"name":"Сделка по API с привязанными продуктами"
},
"relationships":{
"products": {
"data" : [{
"type": "products",
"id": 2222
}, {
"type": "products",
"id": 222
}]
}
}
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/deals"
payload = json.dumps({
"data":{
"type":"deals",
"attributes":{
"name":"Сделка по API с привязанными продуктами"
},
"relationships":{
"products": {
"data" : [{
"type": "products",
"id": 2222
}, {
"type": "products",
"id": 222
}]
}
}
}
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('POST', Uri.parse('https://app.synergycrm.ru/api/v1/deals?filter[created-at-gte]=2022.02.22 12:00'));
request.body = json.encode({
"data":{
"type":"deals",
"attributes":{
"name":"Сделка по API с привязанными продуктами"
},
"relationships":{
"products": {
"data" : [{
"type": "products",
"id": 2222
}, {
"type": "products",
"id": 222
}]
}
}
}
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
JSON API type | deals |
URL | /api/v1/deals |
Список | GET /api/v1/deals |
Чтение | GET /api/v1/deals/{id} |
Создание | POST /api/v1/deals |
Редактирование | PATCH /api/v1/deals/{id} |
Удаление | DELETE /api/v1/deals/{id} |
Атрибуты
Атрибуты сделки
{
"data": {
"type":"deals",
"id":"2",
"attributes":{
"name":"Моя сделка",
"description":"Мое описание сделки",
"amount":2200000.0,
"number":22,
"planned-at":null,
"finished-at":"2022-02-22",
"customs":{
"custom-1":"Значение",
"custom-943":"2022-02-22T12:02:22.222+03:00"
},
"created-at":"2022-02-22T12:02:22.222+03:00",
"updated-at":"2022-02-22T12:02:22.222+03:00",
"archived-at":null,
"utm-source": null,
"utm-medium": null,
"utm-campaign": null,
"utm-term": null,
"utm-content": null,
"utm-landing-page": null,
"utm-city": null,
"utm-search-query": null
}
}
}
Основные атрибуты
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
name | string |
Моя сделка | да | Имя сделки |
description | string |
Описание сделки | да | Подробное описание сделки |
loss-comment | string |
Причина поражения | да | Причина поражения в свободной форме |
amount | decimal |
222.0 | да | Сумма сделки |
cost | decimal |
222.0 | да | Себестомость сделки |
profit | decimal |
222.0 | нет | Прибыль сделки |
number | integer |
22 | да | Номер сделки |
planned-at | date |
2022-02-22 |
да | Планируемая дата закрытия |
finished-at | date |
2022-02-22 |
да | Фактическая дата закрытия |
customs | hash |
{"custom-1":'custom value'} |
да | Свои поля |
created-at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата создания |
updated-at | datetime |
2022-02-22T12:02:22.222+03:00 |
нет | Дата обновления |
archived-at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата архивации |
previous-responsible-id | integer |
100 |
нет | Предыдущий ответственный |
UTM метки
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
utm-source | string |
yandex-direct | да | Рекламная система |
utm-medium | string |
cpc | да | Тип трафика |
utm-campaign | string |
cosmetic | да | Название рекламной кампании |
utm-term | string |
shampoo | да | Ключевое слово, которое инициировало показ объявления |
utm-content | string |
some text | да | Информация, которая помогает различать объявления, если совпадают другие параметры |
utm-landing-page | string |
somesite.ru/path | да | Адрес посадочной страницы |
utm-city | string |
Москва | да | Город |
Связи
Пример данных (перечислены не все связи)
{
"data": {
"type":"deals",
"id":"2",
"relationships":{
"responsible":{
"links":{
"self":"/api/v1/deals/2/relationships/responsible",
"related":"/api/v1/deals/2/responsible"
}
},
"stage-category":{
"links":{
"self":"/api/v1/deals/2/relationships/stage-category",
"related":"/api/v1/deals/2/stage-category"
}
}
}
}
}
Пример запроса с загруженными источниками и отвественными
curl "https://app.synergycrm.ru/api/v1/deals?include=source,responsible" \
-H "Authorization: Bearer api_token"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/deals?include=source,responsible");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/deals?include=source,responsible')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/deals?include=source,responsible", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/deals?include=source,responsible',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/deals?include=source,responsible"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/deals?filter[created-at-gte]=2022.02.22 12:00'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Получить сделки по связанным реквизитам юридического лица аккаунта (org-detail)
curl -G "http://app.synergycrm.ru/api/v1/deals?filter[org-detail-id]=2" \
-X GET \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token"
Каждая связь может быть включена в JSON ответ через параметр include
, согласно
официальной спецификации JSON API Inclusion of Related Resources.
Название | Связь | JSON API type |
---|---|---|
Ответственный | responsible | users |
Создатель | user | users |
Компания | company | companies |
Контакт | contact | contacts |
Этап | stage | deal-stages |
Воронка | stage-category | deal-stage-categories |
Источник | source | sources |
Статус | status | deal-statuses |
Причина поражения | loss-reason | deal-loss-reasons |
Конкурент поражения | loss-competitor | competitors |
Территория | area | areas |
Продукты | products | products |
Сделки | deals | deals |
Заявки | orders | orders |
Спецификации | entities-products | entity-products |
Задачи | tasks | diary-tasks |
Файлы | documents | documents |
Счета | invoices | invoices |
Договоры | contracts | contracts |
Сегменты | segments | segments |
Ответственная организация | org-detail | org-details |
Фильтры
Получить список сделок созданных до определённой даты
curl -G "https://app.synergycrm.ru/api/v1/deals" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created-at-gte]=2022.02.22 12:00"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/deals?filter[created-at-gte]=2022.02.22 12:00");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/deals?filter[created-at-gte]=2022.02.22 12:00')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/deals?filter[created-at-gte]=2022.02.22 12:00", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/deals?filter[created-at-gte]=2022.02.22 12:00',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/deals?filter[created-at-gte]=2022.02.22 12:00"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/deals?filter[created-at-gte]=2022.02.22 12:00'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Фильтр | Описание | Пример |
---|---|---|
responsible-id | Вывести сделки по определенному ответственному | filter[responsible-id]=2 |
deal-status-id | Вывести сделки по статусу сделки | filter[deal-status-id]=2 |
deal-stage-id | Вывести сделки по этапу сделки | filter[deal-stage-id]=2 |
deal-stage-category-id | Вывести сделки по воронке | filter[deal-stage-category-id]=2 |
related-contacts-ids | Вывести сделки по определенным контактам | filter[related-contacts-ids]=2 |
related-companies-ids | Вывести сделки по определенным компаниям | filter[related-companies-ids]=2 |
segment-ids | Вывести сделки по определенным сегментам | filter[segment-ids]=2 |
segment-process-status-ids | Вывести сделки по статусам в сегменте | filter[segment-process-status-ids]=2 |
created-at-gte | Вывести сделки созданные после указанного времени | filter[created-at-gte]=2022.02.22 12:00 |
created-at-lte | Вывести сделки созданные до указанного времени | filter[created-at-lte]=2022.02.22 12:00 |
updated-at-gte | Вывести сделки обновлённые после указанного времени | filter[updated-at-gte]=2022.02.22 12:00 |
updated-at-lte | Вывести сделки обновлённые до указанного времени | filter[updated-at-lte]=2022.02.22 12:00 |
table-state-id | Вывести сделки по заданному табличному фильтру | filter[table-state-id]=2 |
q | Вывести сделки по поисковому запросу | filter[q]=some-query |
archived | Вывести сделки в архиве | filter[archived]=2 |
discarded | Вывести сделки в корзине | filter[discarded]=2 |
actual | Вывести актуальные сделки | filter[actual]=2 |
discarded-at-null | Вывести сделки не в корзине | filter[discarded-at-null]=true |
org-details | Вывести сделки по связанным реквизитам аккаунта org-detail-id |
filter[org-detail-id]=2 |
Причины поражения
Создание причины поражения сделок
curl "https://app.synergycrm.ru/api/v1/deal-loss-reasons" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"deal-loss-reasons",
"attributes":{
"name":"Причины поражения из API"
}
}
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/deal-loss-reasons");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"data\":{\"type\":\"deal-loss-reasons\",\"attributes\":{\"name\":\"Причины поражения из API\"}}}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/deal-loss-reasons')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"deal-loss-reasons",
"attributes":{
"name":"Причины поражения из API"
}
}
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"data":{
"type":"deal-loss-reasons",
"attributes":{
"name":"Причины поражения из API"
}
}
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/deal-loss-reasons", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/deal-loss-reasons',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"data":{
"type":"deal-loss-reasons",
"attributes":{
"name":"Причины поражения из API"
}
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/deal-loss-reasons"
payload = json.dumps({
"data":{
"type":"deal-loss-reasons",
"attributes":{
"name":"Причины поражения из API"
}
}
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('POST', Uri.parse('https://app.synergycrm.ru/api/v1/deal-loss-reasons'));
request.body = json.encode({
"data":{
"type":"deal-loss-reasons",
"attributes":{
"name":"Причины поражения из API"
}
}
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
JSON API type | deal-loss-reasons |
URL | /api/v1/deal-loss-reasons |
Список | GET /api/v1/deal-loss-reasons |
Чтение | GET /api/v1/deal-loss-reasons/{id} |
Создание | POST /api/v1/deal-loss-reasons |
Редактирование | PATCH /api/v1/deal-loss-reasons/{id} |
Удаление | DELETE /api/v1/deal-loss-reasons/{id} |
Атрибуты
Атрибуты причины поражения по сделке
{
"data": {
"type":"deal-loss-reasons",
"id":"2",
"attributes":{
"created-at":"2022-02-22T12:22:22.222+03:00",
"updated-at":"2022-02-22T12:22:22.222+03:00",
"name": "Моя причина поражения"
}
}
}
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
name* | string |
Моя причина поражения | да | Название причины поражения сделки |
created-at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
updated-at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Фильтры
Получить список причин поражений сделок созданных до определённой даты
curl -G "https://app.synergycrm.ru/api/v1/deal-loss-reasons" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created-at-gte]=2022.02.22 12:00"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/deal-loss-reasons?filter[created-at-gte]=2022.02.22 12:00");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/deal-loss-reasons?filter[created-at-gte]=2022.02.22 12:00')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/deal-loss-reasons?filter[created-at-gte]=2022.02.22 12:00", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/deal-loss-reasons?filter[created-at-gte]=2022.02.22 12:00',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/deal-loss-reasons?filter[created-at-gte]=2022.02.22 12:00"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/deal-loss-reasons?filter[created-at-gte]=2022.02.22 12:00'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Фильтр | Описание | Пример |
---|---|---|
created-at-gte | Вывести причины поражения, созданные после указанного времени | filter[created-at-gte]=2022.02.22 12:00 |
created-at-lte | Вывести причины поражения, созданные до указанного времени | filter[created-at-lte]=2022.02.22 12:00 |
updated-at-gte | Вывести причины поражения, обновлённые после указанного времени | filter[updated-at-gte]=2022.02.22 12:00 |
updated-at-lte | Вывести причины поражения, обновлённые до указанного времени | filter[updated-at-lte]=2022.02.22 12:00 |
Воронки
Создание новой категории этапов сделки
curl "https://app.synergycrm.ru/api/v1/deal-stage-categories" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"deal-stage-categories",
"attributes":{
"name":"Воронка сделок из API"
}
}
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/deal-stage-categories");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"data\":{\"type\":\"deal-stage-categories\",\"attributes\":{\"name\":\"Воронка сделок из API\"}}}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/deal-stage-categories')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"deal-stage-categories",
"attributes":{
"name":"Воронка сделок из API"
}
}
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"data":{
"type":"deal-stage-categories",
"attributes":{
"name":"Воронка сделок из API"
}
}
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/deal-stage-categories", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/deal-stage-categories',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"data":{
"type":"deal-stage-categories",
"attributes":{
"name":"Воронка сделок из API"
}
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/deal-stage-categories"
payload = json.dumps({
"data":{
"type":"deal-stage-categories",
"attributes":{
"name":"Воронка сделок из API"
}
}
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('POST', Uri.parse('https://app.synergycrm.ru/api/v1/deal-stage-categories'));
request.body = json.encode({
"data":{
"type":"deal-stage-categories",
"attributes":{
"name":"Воронка сделок из API"
}
}
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
JSON API type | deal-stage-categories |
URL | /api/v1/deal-stage-categories |
Список | GET /api/v1/deal-stage-categories |
Чтение | GET /api/v1/deal-stage-categories/{id} |
Создание | POST /api/v1/deal-stage-categories |
Редактирование | PATCH /api/v1/deal-stage-categories/{id} |
Удаление | DELETE /api/v1/deal-stage-categories/{id} |
Атрибуты
Атрибуты воронки сделок
{
"data": {
"type":"deal-stage-categories",
"id":"2",
"attributes":{
"created-at":"2022-02-22T12:22:22.222+03:00",
"updated-at":"2022-02-22T12:22:22.222+03:00",
"name": "Воронка сделок",
"calculation-method": "by_billings",
"is-default": true,
"win-by-diaries": false
}
}
}
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
name* | string |
Воронка сделок | да | Название воронки |
amount-calc-method* | string |
invoices | да | Способ расчета суммы сделки |
cost-calc-method* | string |
payments | да | Способ расчета себестоимости сделки |
amount-calc-field | string |
custom_1 | да | Поле формулы при расчете суммы сделки по формуле |
cost-calc-field | string |
custom_2 | да | Поле формулы при расчете себестоимости сделки по формуле |
is-default | boolean |
true | да | По-умолчанию |
win-by-diaries | boolean |
false | да | Cчитать сделку выиграной, eсли все задачи выполнены |
created-at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
updated-at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Ограничения по значениям
Аттрибут | Варианты |
---|---|
amount-calc-method | manually , invoices , products , payments , formula |
cost-calc-method | manually , products , payments , formula |
Фильтры
Получить список категорий этапов сделок созданных до определённой даты
curl -G "https://app.synergycrm.ru/api/v1/deal-stage-categories" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created-at-gte]=2022.02.22 12:00"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/deal-stage-categories?filter[created-at-gte]=2022.02.22 12:00");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/deal-stage-categories?filter[created-at-gte]=2022.02.22 12:00')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/deal-stage-categories?filter[created-at-gte]=2022.02.22 12:00", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/deal-stage-categories?filter[created-at-gte]=2022.02.22 12:00',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/deal-stage-categories?filter[created-at-gte]=2022.02.22 12:00"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/deal-stage-categories?filter[created-at-gte]=2022.02.22 12:00'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Фильтр | Описание | Пример |
---|---|---|
created-at-gte | Вывести воронки сделок, созданные после указанного времени | filter[created-at-gte]=2022.02.22 12:00 |
created-at-lte | Вывести воронки сделок, созданные до указанного времени | filter[created-at-lte]=2022.02.22 12:00 |
updated-at-gte | Вывести воронки сделок, обновлённые после указанного времени | filter[updated-at-gte]=2022.02.22 12:00 |
updated-at-lte | Вывести воронки сделок, обновлённые до указанного времени | filter[updated-at-lte]=2022.02.22 12:00 |
Этапы
Создание нового этапа сделки
curl "https://app.synergycrm.ru/api/v1/deal-stages" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"deal-stages",
"attributes":{
"name":"Этап сделки в API"
},
"relationships":{
"deal-stage-category": {
"data": {
"type": "deal-stage-categories",
"id": 2
}
}
}
}
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/deal-stages");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"data\":{\"type\":\"deal-stages\",\"attributes\":{\"name\":\"Этап сделки в API\"},\"relationships\":{ \"deal-stage-category\":{\"data\": { \"type\": \"deal-stage-categories\",\"id\": 2}}}}}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/deal-stages')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"deal-stages",
"attributes":{
"name":"Этап сделки в API"
},
"relationships":{
"deal-stage-category": {
"data": {
"type": "deal-stage-categories",
"id": 2
}
}
}
}
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"data":{
"type":"deal-stages",
"attributes":{
"name":"Этап сделки в API"
},
"relationships":{
"deal-stage-category": {
"data": {
"type": "deal-stage-categories",
"id": 2
}
}
}
}
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/deal-stages", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/deal-stages',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"data":{
"type":"deal-stages",
"attributes":{
"name":"Этап сделки в API"
},
"relationships":{
"deal-stage-category": {
"data": {
"type": "deal-stage-categories",
"id": 2
}
}
}
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/deal-stages"
payload = json.dumps({
"data":{
"type":"deal-stages",
"attributes":{
"name":"Этап сделки в API"
},
"relationships":{
"deal-stage-category": {
"data": {
"type": "deal-stage-categories",
"id": 2
}
}
}
}
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('POST', Uri.parse('https://app.synergycrm.ru/api/v1/deal-stages'));
request.body = json.encode({
"data":{
"type":"deal-stages",
"attributes":{
"name":"Этап сделки в API"
},
"relationships":{
"deal-stage-category": {
"data": {
"type": "deal-stage-categories",
"id": 2
}
}
}
}
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
JSON API type | deal-stages |
URL | /api/v1/deal-stages |
Список | GET /api/v1/deal-stages |
Чтение | GET /api/v1/deal-stages/{id} |
Создание | POST /api/v1/deal-stages |
Редактирование | PATCH /api/v1/deal-stages/{id} |
Удаление | DELETE /api/v1/deal-stages/{id} |
Атрибуты
Атрибуты этапа сделки
{
"data": {
"type":"deal-stages",
"id":"2",
"attributes":{
"created-at": "2022-02-22T12:22:22.222+03:00",
"updated-at": "2022-02-22T12:22:22.222+03:00",
"name": "Мой этап сделки",
"description": null,
"duration": null,
"kind": null,
"color": "#e0e0e0",
"next-if-items-done": false
}
}
}
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
name* | string |
Мой этап сделки | да | Название воронки |
duration | integer |
20000 | да | Длительность этапа |
next-if-items-done | boolean |
false | да | Переходить на следующий этап, если все задачи выполнены |
description | boolean |
true | да | Описание |
color | string |
#ee66aa | да | Цвет этапа |
created-at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
updated-at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Фильтры
Получить список этапов сделок созданных до определённой даты
curl -G "https://app.synergycrm.ru/api/v1/deal-stages" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created-at-gte]=2022.02.22 12:00"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/deal-stages?filter[created-at-gte]=2022.02.22 12:00");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/deal-stages?filter[created-at-gte]=2022.02.22 12:00')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/deal-stages?filter[created-at-gte]=2022.02.22 12:00", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/deal-stages?filter[created-at-gte]=2022.02.22 12:00',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/deal-stages?filter[created-at-gte]=2022.02.22 12:00"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/deal-stages?filter[created-at-gte]=2022.02.22 12:00'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Фильтр | Описание | Пример |
---|---|---|
created-at-gte | Вывести этапы сделок, созданные после указанного времени | filter[created-at-gte]=2022.02.22 12:00 |
created-at-lte | Вывести этапы сделок, созданные до указанного времени | filter[created-at-lte]=2022.02.22 12:00 |
updated-at-gte | Вывести этапы сделок, обновлённые после указанного времени | filter[updated-at-gte]=2022.02.22 12:00 |
updated-at-lte | Вывести этапы сделок, обновлённые до указанного времени | filter[updated-at-lte]=2022.02.22 12:00 |
Статусы
Создание статуса сделки
curl "https://app.synergycrm.ru/api/v1/deal-statuses" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"deal-statuses",
"attributes":{
"name":"Статус сделки в API",
"color":"#000000"
}
}
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/deal-statuses");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"data\":{\"type\":\"deal-statuses\",\"attributes\":{\"name\":\"Статус сделки в API\",\"color\":\"#000000\"}}}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/deal-statuses')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"deal-statuses",
"attributes":{
"name":"Статус сделки в API",
"color":"#000000"
}
}
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"data":{
"type":"deal-statuses",
"attributes":{
"name":"Статус сделки в API",
"color":"#000000"
}
}
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/deal-statuses", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/deal-statuses',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"data":{
"type":"deal-statuses",
"attributes":{
"name":"Статус сделки в API",
"color":"#000000"
}
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/deal-statuses"
payload = json.dumps({
"data":{
"type":"deal-statuses",
"attributes":{
"name":"Статус сделки в API",
"color":"#000000"
}
}
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('POST', Uri.parse('https://app.synergycrm.ru/api/v1/deal-statuses'));
request.body = json.encode({
"data":{
"type":"deal-statuses",
"attributes":{
"name":"Статус сделки в API",
"color":"#000000"
}
}
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
JSON API type | deal-statuses |
URL | /api/v1/deal-statuses |
Список | GET /api/v1/deal-statuses |
Чтение | GET /api/v1/deal-statuses/{id} |
Создание | POST /api/v1/deal-statuses |
Редактирование | PATCH /api/v1/deal-statuses/{id} |
Удаление | DELETE /api/v1/deal-statuses/{id} |
Атрибуты
Атрибуты статуса сделки
{
"data": {
"type":"deal-statuses",
"id":"2",
"attributes":{
"created-at":"2022-02-22T12:22:22.222+03:00",
"updated-at":"2022-02-22T12:22:22.222+03:00",
"name": "Мой статус сделки",
"color": "#1f2f3f"
}
}
}
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
name* | string |
Мой статус сделки | да | Имя статуса сделки |
color | string |
#1f2f3f | да | Цвет статуса сделки |
created-at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
updated-at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Фильтры
Получить список статусов сделок созданных до определённой даты
curl -G "https://app.synergycrm.ru/api/v1/deal-statuses" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created-at-gte]=2022.02.22 12:00"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/deal-statuses?filter[created-at-gte]=2022.02.22 12:00");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/deal-statuses?filter[created-at-gte]=2022.02.22 12:00')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/deal-statuses?filter[created-at-gte]=2022.02.22 12:00", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/deal-statuses?filter[created-at-gte]=2022.02.22 12:00',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/deal-statuses?filter[created-at-gte]=2022.02.22 12:00"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/deal-statuses?filter[created-at-gte]=2022.02.22 12:00'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Фильтр | Описание | Пример |
---|---|---|
created-at-gte | Вывести статусы сделок, созданные после указанного времени | filter[created-at-gte]=2022.02.22 12:00 |
created-at-lte | Вывести статусы сделок, созданные до указанного времени | filter[created-at-lte]=2022.02.22 12:00 |
updated-at-gte | Вывести статусы сделок, обновлённые после указанного времени | filter[updated-at-gte]=2022.02.22 12:00 |
updated-at-lte | Вывести статусы сделок, обновлённые до указанного времени | filter[updated-at-lte]=2022.02.22 12:00 |
Заявки
Создание заявки с предустановленным источником
curl "https://app.synergycrm.ru/api/v1/orders" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"orders",
"attributes":{
"name":"Заявка по API",
"archived-at":"2022-02-22"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
}
}
}
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/orders");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"data\":{\"type\":\"orders\",\"attributes\":{\"name\":\"Заявка по API\",\"archived-at\":\"2022-02-22\"},\"relationships\":{\"source\":{\"data\":{\"type\":\"sources\",\"id\":\"2\"}}}}}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/orders')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"orders",
"attributes":{
"name":"Заявка по API",
"archived-at":"2022-02-22"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
}
}
}
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"data":{
"type":"orders",
"attributes":{
"name":"Заявка по API",
"archived-at":"2022-02-22"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
}
}
}
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/orders", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/orders',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"data":{
"type":"orders",
"attributes":{
"name":"Заявка по API",
"archived-at":"2022-02-22"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
}
}
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/orders"
payload = json.dumps({
"data":{
"type":"orders",
"attributes":{
"name":"Заявка по API",
"archived-at":"2022-02-22"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
}
}
}
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('POST', Uri.parse('https://app.synergycrm.ru/api/v1/orders'));
request.body = json.encode({
"data":{
"type":"orders",
"attributes":{
"name":"Заявка по API",
"archived-at":"2022-02-22"
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
}
}
}
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Создание заявки с предустановленной сделкой
curl "https://app.synergycrm.ru/api/v1/orders" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"orders",
"attributes":{
"name":"Заявка по API с предустановленной сделкой",
"archived-at":"2022-02-22"
},
"relationships":{
"deals": {
"data" : [{
"type": "deals",
"id": 22222
}]
}
}
}
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/orders");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"data\":{\"type\":\"orders\",\"attributes\":{\"name\":\"Заявка по API с предустановленной сделкой\",\"archived-at\":\"2022-02-22\"},\"relationships\":{\"deals\": {\"data\" : [{\"type\": \"deals\",\"id\": 22222}]}}}}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/orders')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"orders",
"attributes":{
"name":"Заявка по API с предустановленной сделкой",
"archived-at":"2022-02-22"
},
"relationships":{
"deals": {
"data" : [{
"type": "deals",
"id":22222
}]
}
}
}
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"data":{
"type":"orders",
"attributes":{
"name":"Заявка по API с предустановленной сделкой",
"archived-at":"2022-02-22"
},
"relationships":{
"deals": {
"data" : [{
"type": "deals",
"id":22222
}]
}
}
}
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/orders", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/orders',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"data":{
"type":"orders",
"attributes":{
"name":"Заявка по API с предустановленной сделкой",
"archived-at":"2022-02-22"
},
"relationships":{
"deals": {
"data" : [{
"type": "deals",
"id":22222
}]
}
}
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/orders"
payload = json.dumps({
"data":{
"type":"orders",
"attributes":{
"name":"Заявка по API с предустановленной сделкой",
"archived-at":"2022-02-22"
},
"relationships":{
"deals": {
"data" : [{
"type": "deals",
"id":22222
}]
}
}
}
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('POST', Uri.parse('https://app.synergycrm.ru/api/v1/orders'));
request.body = json.encode({
"data":{
"type":"orders",
"attributes":{
"name":"Заявка по API с предустановленной сделкой",
"archived-at":"2022-02-22"
},
"relationships":{
"deals": {
"data" : [{
"type": "deals",
"id":22222
}]
}
}
}
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
JSON API type | orders |
URL | /api/v1/orders |
Список | GET /api/v1/orders |
Чтение | GET /api/v1/orders/{id} |
Создание | POST /api/v1/orders |
Редактирование | PATCH /api/v1/orders/{id} |
Удаление | DELETE /api/v1/orders/{id} |
Атрибуты
Атрибуты заявки
{
"data": {
"type":"orders",
"id":"2",
"attributes":{
"name":"Моя заявка",
"description":"Мое описание заявки",
"amount":"2222.0",
"number":22,
"archived-at":"2022-02-22",
"customs":{
"custom-11":"Значение",
"custom-43":"2022-02-22T12:02:22.222+03:00"
},
"created-at":"2022-02-22T12:02:22.222+03:00",
"updated-at":"2022-02-22T12:02:22.222+03:00"
"utm-source": null,
"utm-medium": null,
"utm-campaign": null,
"utm-term": null,
"utm-content": null,
"utm-landing-page": null,
"utm-city": null,
"utm-search-query": null
}
}
}
Основные атрибуты
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
name | string |
Моя сделка | да | Имя заявки |
description | string |
Описание сделки | да | Подробное описание заявки |
loss-comment | string |
Причина поражения | да | Причина поражения в свободной форме |
amount | decimal |
123.0 | да | Сумма заявки |
number | integer |
2 | да | Номер заявки |
customs | hash |
{"custom-1":'custom value'} |
да | Свои поля |
created-at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата создания |
updated-at | datetime |
2022-02-22T12:02:22.222+03:00 |
нет | Дата обновления |
archived-at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата архивации |
discarded-at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата перемещения в корзину |
previous-responsible-id | integer |
100 |
нет | Предыдущий ответственный |
UTM метки
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
utm-source | string |
yandex-direct | да | Рекламная система |
utm-medium | string |
cpc | да | Тип трафика |
utm-campaign | string |
cosmetic | да | Название рекламной кампании |
utm-term | string |
shampoo | да | Ключевое слово, которое инициировало показ объявления |
utm-content | string |
some text | да | Информация, которая помогает различать объявления, если совпадают другие параметры |
utm-landing-page | string |
somesite.ru/path | да | Адрес посадочной страницы |
utm-city | string |
Москва | да | Город |
Связи
Пример данных (перечислены не все связи)
{
"data": {
"type":"orders",
"id":"2",
"relationships":{
"responsible":{
"links":{
"self":"/api/v1/orders/2/relationships/responsible",
"related":"/api/v1/orders/2/responsible"
}
},
"stage":{
"links":{
"self":"/api/v1/orders/2/relationships/stage",
"related":"/api/v1/orders/2/stage"
}
}
}
}
}
Пример запроса с загруженными источниками и отвественными
curl "https://app.synergycrm.ru/api/v1/orders?include=source,responsible" \
-H "Authorization: Bearer api_token"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/orders?include=source,responsible");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/orders?include=source,responsible')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/orders?include=source,responsible", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/orders?include=source,responsible',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/orders?include=source,responsible"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/orders?include=source,responsible'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Каждая связь может быть включена в JSON ответ через параметр include
, согласно
официальной спецификации JSON API Inclusion of Related Resources.
Название | Связь | JSON API type |
---|---|---|
Ответственный | responsible | users |
Создатель | user | users |
Компания | company | companies |
Контакт | contact | contacts |
Этап | stage | order-stages |
Источник | source | sources |
Статус | status | order-statuses |
Причина поражения | loss-reason | order-loss-reasons |
Конкурент поражения | loss-competitor | competitors |
Территория | area | areas |
Продукты | products | products |
Сделки | deals | deals |
Спецификации | entities-products | |
Соисполнители | performers | users |
Задачи | tasks | diary-tasks |
Файлы | documents | documents |
Счета | invoices | invoices |
Договоры | contracts | contracts |
Фильтры
Получить список заявок до определённой даты
curl -G "https://app.synergycrm.ru/api/v1/orders" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created-at-gte]=2022.02.22 12:00"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/orders?filter[created-at-gte]=2022.02.22 12:00");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/orders?filter[created-at-gte]=2022.02.22 12:00')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/orders?filter[created-at-gte]=2022.02.22 12:00", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/orders?filter[created-at-gte]=2022.02.22 12:00',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/orders?filter[created-at-gte]=2022.02.22 12:00"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/orders?filter[created-at-gte]=2022.02.22 12:00'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Фильтр | Описание | Пример |
---|---|---|
order-stage-id | Вывести заявки по этапу заявки | filter[order-stage-id]=2 |
responsible-id | Вывести заявки по определенному ответственному | filter[responsible-id]=2 |
created-at-gte | Вывести заявки созданные после указанного времени | filter[created-at-gte]=2022.02.22 12:00 |
created-at-lte | Вывести заявки созданные до указанного времени | filter[created-at-lte]=2022.02.22 12:00 |
updated-at-gte | Вывести заявки обновлённые после указанного времени | filter[updated-at-gte]=2022.02.22 12:00 |
updated-at-lte | Вывести заявки обновлённые до указанного времени | filter[updated-at-lte]=2022.02.22 12:00 |
table-state-id | Вывести заявки по заданному табличному фильтру | filter[table-state-id]=2 |
q | Вывести заявки по поисковому запросу | filter[q]=some-query |
archived | Вывести заявки в архиве | filter[archived]=2 |
discarded | Вывести заявки в корзине | filter[discarded]=2 |
actual | Вывести актуальные заявки | filter[actual]=2 |
discarded-at-null | Вывести заявки не в корзине | filter[discarded-at-null]=true |
Причины поражения
Создание причины поражения заявки
curl "https://app.synergycrm.ru/api/v1/order-loss-reasons" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"order-loss-reasons",
"attributes":{
"name":"Моя причина поражения"
}
}
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/order-loss-reasons");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"data\":{\"type\":\"order-loss-reasons\",\"attributes\":{\"name\":\"Моя причина поражения\"}}}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/order-loss-reasons')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"order-loss-reasons",
"attributes":{
"name":"Моя причина поражения"
}
}
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"data":{
"type":"order-loss-reasons",
"attributes":{
"name":"Моя причина поражения"
}
}
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/order-loss-reasons", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/order-loss-reasons',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"data":{
"type":"order-loss-reasons",
"attributes":{
"name":"Моя причина поражения"
}
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/order-loss-reasons"
payload = json.dumps({
"data":{
"type":"order-loss-reasons",
"attributes":{
"name":"Моя причина поражения"
}
}
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('POST', Uri.parse('https://app.synergycrm.ru/api/v1/order-loss-reasons'));
request.body = json.encode({
"data":{
"type":"order-loss-reasons",
"attributes":{
"name":"Моя причина поражения"
}
}
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
JSON API type | order-loss-reasons |
URL | /api/v1/order-loss-reasons |
Список | GET /api/v1/order-loss-reasons |
Чтение | GET /api/v1/order-loss-reasons/{id} |
Создание | POST /api/v1/order-loss-reasons |
Редактирование | PATCH /api/v1/order-loss-reasons/{id} |
Удаление | DELETE /api/v1/order-loss-reasons/{id} |
Атрибуты
Атрибуты причины поражения по заявке
{
"data": {
"type":"order-loss-reasons",
"id":"1",
"attributes":{
"created-at":"2022-02-22T12:22:22.222+03:00",
"updated-at":"2022-02-22T12:22:22.222+03:00",
"name": "Моя причина поражения"
}
}
}
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
name* | string |
Моя причина поражения | да | Название причины поражения заявки |
created-at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
updated-at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Фильтры
Получить список причин поражений заявок созданных до определённой даты
curl -G "https://app.synergycrm.ru/api/v1/order-loss-reasons" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created-at-gte]=2022.02.22 12:00"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/order-loss-reasons?filter[created-at-gte]=2022.02.22 12:00");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/order-loss-reasons?filter[created-at-gte]=2022.02.22 12:00')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/order-loss-reasons?filter[created-at-gte]=2022.02.22 12:00", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/order-loss-reasons?filter[created-at-gte]=2022.02.22 12:00',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/order-loss-reasons?filter[created-at-gte]=2022.02.22 12:00"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/order-loss-reasons?filter[created-at-gte]=2022.02.22 12:00'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Фильтр | Описание | Пример |
---|---|---|
created-at-gte | Вывести причины поражения созданные после указанного времени | filter[created-at-gte]=2022.02.22 12:00 |
created-at-lte | Вывести причины поражения созданные до указанного времени | filter[created-at-lte]=2022.02.22 12:00 |
updated-at-gte | Вывести причины поражения обновлённые после указанного времени | filter[updated-at-gte]=2022.02.22 12:00 |
updated-at-lte | Вывести причины поражения обновлённые до указанного времени | filter[updated-at-lte]=2022.02.22 12:00 |
Этапы
Создание нового этапа заявки
curl "https://app.synergycrm.ru/api/v1/order-stages" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"deal-stages",
"attributes":{
"name":"Этап в API"
},
"relation"
}
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/order-stages");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"data\":{\"type\":\"deal-stages\",\"attributes\":{\"name\":\"Этап в API\"},\"relation\"}}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/order-stages')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"deal-stages",
"attributes":{
"name":"Этап в API"
},
"relation"
}
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"data":{
"type":"deal-stages",
"attributes":{
"name":"Этап в API"
},
"relation"
}
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/order-stages", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/order-stages',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"data":{
"type":"deal-stages",
"attributes":{
"name":"Этап в API"
},
"relation"
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/order-stages"
payload = json.dumps({
"data":{
"type":"deal-stages",
"attributes":{
"name":"Этап в API"
},
"relation"
}
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('POST', Uri.parse('https://app.synergycrm.ru/api/v1/order-stages'));
request.body = json.encode({
"data":{
"type":"deal-stages",
"attributes":{
"name":"Этап в API"
},
"relation"
}
});
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
JSON API type | order-stages |
URL | /api/v1/order-stages |
Список | GET /api/v1/order-stages |
Чтение | GET /api/v1/order-stages/{id} |
Создание | POST /api/v1/order-stages |
Редактирование | PATCH /api/v1/order-stages/{id} |
Удаление | DELETE /api/v1/order-stages/{id} |
Атрибуты
Атрибуты этапа заявки
{
"data": {
"type":"order-stages",
"id":"1",
"attributes":{
"created-at": "2022-02-22T12:22:22.222+03:00",
"updated-at": "2022-02-22T12:22:22.222+03:00",
"name": "Мой этап заявки",
"description": true,
"color": "#ee66aa",
"duration": 20000,
"next-if-items-done": false
}
}
}
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
name* | string |
Мое название воронки | да | Название воронки |
duration | integer |
20000 | да | Длительность этапа |
next-if-items-done | boolean |
false | да | Переходить на следующий этап, если все задачи выполнены |
description | boolean |
true | да | Описание |
color | string |
#ee66aa | да | Цвет этапа |
kind | string |
opened, won, lost, null | нет | Вид этапа |
created-at | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Дата создания |
updated-at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
* Обязательные поля
Фильтры
Получить список этапов заявок созданных до определённой даты
curl -G "https://app.synergycrm.ru/api/v1/deal-stages" \
-X GET \
-H "Authorization: Bearer api_token" \
--data-urlencode "filter[created-at-gte]=2022.02.22 12:00"
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/deal-stages?filter[created-at-gte]=2022.02.22 12:00");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/deal-stages?filter[created-at-gte]=2022.02.22 12:00')
req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer api_token'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
client := &http.Client{}
req, err := http.NewRequest("GET", "https://app.synergycrm.ru/api/v1/deal-stages?filter[created-at-gte]=2022.02.22 12:00", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.synergycrm.ru/api/v1/deal-stages?filter[created-at-gte]=2022.02.22 12:00',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/vnd.api+json',
'Authorization: Bearer api_token'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Пример на Python
import requests
import json
url = "https://app.synergycrm.ru/api/v1/deal-stages?filter[created-at-gte]=2022.02.22 12:00"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на Dart
import 'dart:convert';
import 'package:http/http.dart' as http;void main() async {
var headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_key'
};
var request = http.Request('GET', Uri.parse('https://app.synergycrm.ru/api/v1/deal-stages?filter[created-at-gte]=2022.02.22 12:00'));
request.headers.addAll(headers);
http.StreamedResponse response = await request.send();
if (response.statusCode == 200) {
print(await response.stream.bytesToString());
}
else {
print(response.reasonPhrase);
}
}
Фильтр | Описание | Пример |
---|---|---|
created-at-gte | Вывести этапы заявок, созданные после указанного времени | filter[created-at-gte]=2022.02.22 12:00 |
created-at-lte | Вывести этапы заявок, созданные до указанного времени | filter[created-at-lte]=2022.02.22 12:00 |
updated-at-gte | Вывести этапы заявок, обновлённые после указанного времени | filter[updated-at-gte]=2022.02.22 12:00 |
updated-at-lte | Вывести этапы заявок, обновлённые до указанного времени | filter[updated-at-lte]=2022.02.22 12:00 |
Статусы
Создание статуса заявки
curl "https://app.synergycrm.ru/api/v1/order-statuses" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"order-statuses",
"attributes":{
"name":"Статус заявки в API",
"color":"#000000"
}
}
}
EOF
Пример на Java
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main {
public static void main(String[] args) throws IOException {
URL url = new URL("https://app.synergycrm.ru/api/v1/order-statuses");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("POST");
httpConn.setRequestProperty("Content-Type", "application/vnd.api+json");
httpConn.setRequestProperty("Authorization", "Bearer api_token");
httpConn.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
writer.write("{\"data\":{\"type\":\"order-statuses\",\"attributes\":{\"name\":\"Статус заявки в API\",\"color\":\"#000000\"}}}");
writer.flush();
writer.close();
httpConn.getOutputStream().close();
InputStream responseStream = httpConn.getResponseCode() / 100 == 2
? httpConn.getInputStream()
: httpConn.getErrorStream();
Scanner s = new Scanner(responseStream).useDelimiter("\\A");
String response = s.hasNext() ? s.next() : "";
System.out.println(response);
}
}
Пример на Ruby
require 'net/http'
uri = URI('https://app.synergycrm.ru/api/v1/order-statuses')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"order-statuses",
"attributes":{
"name":"Статус заявки в API",
"color":"#000000"
}
}
}'
req_options = {
use_ssl: uri.scheme == "https"
}
res = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(req)
end
Пример на GO
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
client := &http.Client{}
var data = strings.NewReader(`{
"data":{
"type":"order-statuses",
"attributes":{
"name":"Статус заявки в API",
"color":"#000000"
}
}
}`)
req, err := http.NewRequest("POST", "https://app.synergycrm.ru/api/v1/order-statuses", data)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Content-Type", "application/vnd.api+json")
req.Header.Set("Authorization", "Bearer api_token")
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
bodyText, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n