Введение
Спасибо за выбор 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.syncrm.ru/api/v1/deals?page[number]=2.
Для изменения количества выводимых объектов на страницу нужно использовать параметр page[size]
,
по умолчанию размер страницы составляет 50 объектов, максимально допустимый 100 объектов.
GET запрос на адрес https://app.syncrm.ru/api/v1/deals?page[size]=5 вернет 5 сделок.
Оба параметра page[number]
и page[size]
можно вызывать вместе, GET запрос на адрес
https://app.syncrm.ru/api/v1/deals?page[number]=2&page[size]=2 вернет две сделки второй страницы.
Каждый ответ содержит не только ключ c данными (data
), но и ключ с метаданными (meta
),
в котором хранится информация о общем количестве объектов (record-count
) запрашиваемой
сущности и о общем количестве страниц (page-count
).
Таким образом, на основании метаданных, можно строить логику деления объектов на страницы.
Авторизация
Чтобы авторизоваться используйте следующий код
curl "https://app.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/deals");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Используйте полученный в настройках API токен вместо
api_token
Каждый запрос к API требует авторизации. Для авторизации необходим специальный уникальный токен.
Токен авторизации необходимо передавать в заголовке Authorization
каждого запроса. Пример:
Authorization: Bearer access_api_token
Контакты
Создание контакта с предустановленным источником и ответственным
curl "https://app.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/contacts");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"contacts\",\"attributes\":{\"first-name\":\"Иван\",\"last-name\":\"Иванов\"},\"relationships\":{\"source\":{\"data\":{\"type\":\"sources\",\"id\":\"2\"}},\"responsible\":{\"data\":{\"type\":\"users\",\"id\":\"2\"}}}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
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":"Иванов",
"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":null
}
}
}
Основные атрибуты
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
first-name* | string |
Иван | да | Имя |
last-name* | string |
Иванов | да | Фамилия |
middle-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@syncrm.ru | да | E-mail адрес | |
other-email | string |
help@syncrm.ru | да | E-mail адрес (дополнительный) |
website | string |
syncrm.ru | да | Сайт |
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 |
да | Дата архивации |
* Обязательные поля
Рабочий адрес
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/contacts?include=responsible,contact-type");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Каждая связь может быть включена в 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 |
Фильтры
Получить список контактов с определённым рабочим номером
curl -G "https://app.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/contacts?filter[work_phone]=79876543211");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Фильтр | Описание | Пример |
---|---|---|
last-name | Вывести контакты по определенному last-name |
filter[last-name]=Ivanov |
first-name | Вывести контакты по определенному first-name |
filter[first-name]=Ivan |
middle-name | Вывести контакты по определенному middle-name |
filter[middle-name]=Ivanovich |
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]=support@syncrm.ru |
|
other-email | Вывести контакты по определенному other-email |
filter[other-email]=support@syncrm.ru |
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/contact-statuses");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"contact-statuses\",\"attributes\":{\"name\":\"Статус контакта в API\",\"color\":\"#000000\"}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/contact-statuses?filter[created-at-gte]=2022.02.22 12:00");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Фильтр | Описание | Пример |
---|---|---|
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/contact-types");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"contact-types\",\"attributes\":{\"name\":\"Тип контакта в API\"}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/contact-types?filter[created-at-gte]=2022.02.22 12:00");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Фильтр | Описание | Пример |
---|---|---|
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.syncrm.ru/api/v1/contracts" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"contracts",
"attributes":{
"name":"Трудовой договор",
"date":"2022-02-22"
},
"relationships":{
"first-party":{
"data":{
"type":"contacts",
"id":"2"
}
},
"second-party":{
"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.syncrm.ru/api/v1/contracts");
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\":\"contracts\",\"attributes\":{\"name\":\"Трудовой договор\",\"date\":\"2022-02-22\"},\"relationships\":{\"first-party\":{\"data\":{\"type\":\"contacts\",\"id\":\"2\"}},\"second-party\":{\"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.syncrm.ru/api/v1/contracts')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"contracts",
"attributes":{
"name":"Трудовой договор",
"date":"2022-02-22"
},
"relationships":{
"first-party":{
"data":{
"type":"contacts",
"id":"2"
}
},
"second-party":{
"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":"contracts",
"attributes":{
"name":"Трудовой договор",
"date":"2022-02-22"
},
"relationships":{
"first-party":{
"data":{
"type":"contacts",
"id":"2"
}
},
"second-party":{
"data":{
"type":"companies",
"id":"2"
}
}
}
}
}`)
req, err := http.NewRequest("POST", "https://app.syncrm.ru/api/v1/contracts", 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.syncrm.ru/api/v1/contracts',
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":"contracts",
"attributes":{
"name":"Трудовой договор",
"date":"2022-02-22"
},
"relationships":{
"first-party":{
"data":{
"type":"contacts",
"id":"2"
}
},
"second-party":{
"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.syncrm.ru/api/v1/contracts"
payload = json.dumps({
"data":{
"type":"contracts",
"attributes":{
"name":"Трудовой договор",
"date":"2022-02-22"
},
"relationships":{
"first-party":{
"data":{
"type":"contacts",
"id":"2"
}
},
"second-party":{
"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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/contracts");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"contracts\",\"attributes\":{\"name\":\"Трудовой договор\",\"date\":\"2022-02-22\"},\"relationships\":{\"first-party\":{\"data\":{\"type\":\"contacts\",\"id\":\"2\"}},\"second-party\":{\"data\":{\"type\":\"companies\",\"id\":\"2\"}}}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
JSON API type | contracts |
URL | /api/v1/contracts |
Список | GET /api/v1/contracts |
Чтение | GET /api/v1/contracts/{id} |
Создание | POST /api/v1/contracts |
Редактирование | PATCH /api/v1/contracts/{id} |
Удаление | DELETE /api/v1/contracts/{id} |
Атрибуты
Ниже приведен пример формата данных. В реальном ответе будут присутствовать все перечисленные атрибуты
{
"data": {
"type":"contracts",
"id":"2",
"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",
"name": "Трудовой договор",
"number": 22,
"custom-number": "abc-22",
"date": "2022-02-22",
"archived-at": null,
"customs":{
"custom-1":"Значение",
"custom-943":"2022-02-22T12:02:22.222+03:00"
},
"archived-at":null
}
}
}
Основные атрибуты
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
name | string |
Трудовой договор | да | Название договора |
number | integer |
22 | да | Номер договора |
custom_number | string |
abc-22 | да | № ручн. |
date | datetime |
2022-02-22 |
да | Дата договора |
custom | hash |
{"custom-1":'custom value'} |
да | Свои поля |
archived-at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата архивации |
previous-responsible-id | integer |
100 |
нет | Предыдущий ответственный |
Связи
Пример данных (перечислены не все связи)
{
"data": {
"type":"contracts",
"id":"2",
"relationships": {
"first-party": {
"links": {
"self": "http://localhost:3000/api/v1/contracts/2/relationships/first-party",
"related": "http://localhost:3000/api/v1/contracts/2/first-party"
}
},
"second-party": {
"links": {
"self": "http://localhost:3000/api/v1/contracts/2/relationships/second-party",
"related": "http://localhost:3000/api/v1/contracts/2/second-party"
}
}
}
}
}
Пример запроса с загруженными компаниями и заявками договора
curl "https://app.syncrm.ru/api/v1/contracts?include=companies,orders" \
-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.syncrm.ru/api/v1/contracts?include=companies,orders");
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.syncrm.ru/api/v1/contracts?include=companies,orders')
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.syncrm.ru/api/v1/contracts?include=companies,orders", 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.syncrm.ru/api/v1/contracts?include=companies,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 => '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.syncrm.ru/api/v1/contracts?include=companies,orders"
payload={}
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/contracts?include=companies,orders");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Каждая связь может быть включена в JSON ответ через параметр include
, согласно
официальной спецификации JSON API Inclusion of Related Resources.
Название | Связь | JSON API type |
---|---|---|
Сторона 1 | first-party | companies , contacts |
Сторона 2 | second-party | companies , contacts |
Создатель | user | users |
Компании | companies | companies |
Контакты | contacts | contacts |
Сделки | deals | deals |
Заявки | orders | orders |
Объекты недвижимости | estate-properties | estate-properties |
Фильтры
Получить список договоров с определённым номером
curl -G "https://app.syncrm.ru/api/v1/contracts" \
-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.syncrm.ru/api/v1/contracts?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.syncrm.ru/api/v1/contracts?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.syncrm.ru/api/v1/contracts?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.syncrm.ru/api/v1/contracts?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.syncrm.ru/api/v1/contracts?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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/contracts?filter[created-at-gte]=2022.02.22 12:00");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Фильтр | Описание | Пример |
---|---|---|
number | Вывести договор с указанным номером | filter[number]=22 |
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 |
discarded-at-gte | Вывести договоры в корзине после указанного времени | filter[discarded-at-gte]=2022.02.22 12:00 |
discarded-at-lte | Вывести договоры в корзине до указанного времени | filter[discarded-at-lte]=2022.02.22 12:00 |
table-state-id | Вывести договоры по заданному табличному фильтру | filter[table-state-id]=22 |
q | Вывести договоры по поисковому запросу | filter[q]=some-query |
archived | Вывести договоры в архиве | filter[archived]=2 |
discarded | Вывести договоры в корзине | filter[discarded]=2 |
actual | Вывести договоры объекты | filter[actual]=2 |
Компании
Создание компании с предустановленным источником и ответственным
curl "https://app.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/companies");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"companies\",\"attributes\":{\"name\":\"ООО Синергия Софт\",\"description\":\"Разработка компьютерного программного обеспечения\"},\"relationships\":{\"source\":{\"data\":{\"type\":\"sources\",\"id\":\"2\"}},\"responsible\":{\"data\":{\"type\":\"users\",\"id\":\"2\"}}}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
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": ""
},
"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@syncrm.ru | да | E-mail адрес | |
other-email | string |
help@syncrm.ru | да | E-mail адрес (дополнительный) |
website | string |
syncrm.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 |
да | Дата архивации |
* Обязательные поля
Фактический адрес
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
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 |
Генеральный директор | да | Должность руководителя |
Связи
Пример данных (перечислены не все связи)
{
"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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/companies?include=responsible,company-type");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Установить статус у компании
curl "https://app.syncrm.ru/api/v1/companies/101010" \
-X PATCH \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data": {
"id": "101010",
"type": "companies",
"relationships": {
"status": {
"data": {
"type": "company-statuses",
"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.syncrm.ru/api/v1/companies/101010");
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
httpConn.setRequestMethod("PATCH");
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\": {\"id\": \"101010\",\"type\": \"companies\",\"relationships\": {\"status\": {\"data\": {\"type\": \"company-statuses\",\"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.syncrm.ru/api/v1/companies/101010')
req = Net::HTTP::Patch.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data": {
"id": "101010",
"type": "companies",
"relationships": {
"status": {
"data": {
"type": "company-statuses",
"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": {
"id": "101010",
"type": "companies",
"relationships": {
"status": {
"data": {
"type": "company-statuses",
"id": "222"
}
}
}
}
}`)
req, err := http.NewRequest("PATCH", "https://app.syncrm.ru/api/v1/companies/101010", 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.syncrm.ru/api/v1/companies/101010',
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": {
"id": "101010",
"type": "companies",
"relationships": {
"status": {
"data": {
"type": "company-statuses",
"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.syncrm.ru/api/v1/companies/101010"
payload = json.dumps({
"data": {
"id": "101010",
"type": "companies",
"relationships": {
"status": {
"data": {
"type": "company-statuses",
"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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Patch, "https://app.syncrm.ru/api/v1/companies/101010");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\": {\"id\": \"101010\",\"type\": \"companies\",\"relationships\": {\"status\": {\"data\": {\"type\": \"company-statuses\",\"id\": \"222\"}}}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Каждая связь может быть включена в 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 |
Фильтры
Получить список компаний с определённым рабочим номером
curl -G "https://app.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/companies?filter[general_phone]=79876543211");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Фильтр | Описание | Пример |
---|---|---|
inn | Вывести компании по определенному номеру ИНН | filter[inn]=0101010101 |
kpp | Вывести компании по определенному номеру КПП | filter[kpp]=010101010 |
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]=support@syncrm.ru |
|
other-email | Вывести компании по определенному other-email |
filter[other-email]=support@syncrm.ru |
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/company-bank-details");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"company-bank-details\",\"attributes\":{\"name\":\"МОЕ НАЗВАНИЕ БАНКОВСКИХ РЕКВИЗИТОВ\"},\"relationships\":{\"company\":{\"data\":{\"type\":\"companies\",\"id\":2}}}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
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
}
}
}
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
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 |
нет | Дата обновления |
* Обязательные поля
Связи
Загрузка банковских реквизитов по определенной компании (id = 2)
curl "https://app.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/companies/2/relationships/bank-details");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Название | Связь | JSON API type |
---|---|---|
Компания | company | companies |
Статусы
Создание статуса компании
curl "https://app.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/company-statuses");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"company-statuses\",\"attributes\":{\"name\":\"Статус компании из API\",\"color\":\"#000000\"}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/company-statuses?filter[created-at-gte]=2022.02.22 12:00");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Фильтр | Описание | Пример |
---|---|---|
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/company-types");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"company-types\",\"attributes\":{\"name\":\"Тип компании из API\"}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/company-types?filter[created-at-gte]=2022.02.22 12:00");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Фильтр | Описание | Пример |
---|---|---|
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/deals");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"deals\",\"attributes\":{\"name\":\"Сделка по API\",\"planned-at\":\"2022-02-22\"},\"relationships\":{\"source\":{\"data\":{\"type\":\"sources\",\"id\":\"2\"}}}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Создание сделки с привязанной заявкой
curl "https://app.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/deals");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"deals\",\"attributes\":{\"name\":\"Сделка по API с привязанной заявкой\"},\"relationships\":{\"orders\": {\"data\" : [{\"type\": \"orders\",\"id\": 22222}]}}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Создание сделки с привязанными продуктами
curl "https://app.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/deals");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"deals\",\"attributes\":{\"name\":\"Сделка по API с привязанными продуктами\"},\"relationships\":{\"products\": {\"data\" : [{\"type\": \"products\",\"id\": 2222}, {\"type\": \"products\",\"id\": 222}]}}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
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
}
}
}
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
name | string |
Моя сделка | да | Имя сделки |
description | 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 |
да | Фактическая дата закрытия |
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 |
да | Дата архивации |
Связи
Пример данных (перечислены не все связи)
{
"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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/deals?include=source,responsible");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Каждая связь может быть включена в 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 |
Фильтры
Получить список сделок созданных до определённой даты
curl -G "https://app.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/deals?filter[created-at-gte]=2022.02.22 12:00");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Фильтр | Описание | Пример |
---|---|---|
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/deal-loss-reasons");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"deal-loss-reasons\",\"attributes\":{\"name\":\"Причины поражения из API\"}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/deal-loss-reasons?filter[created-at-gte]=2022.02.22 12:00");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Фильтр | Описание | Пример |
---|---|---|
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/deal-stage-categories");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"deal-stage-categories\",\"attributes\":{\"name\":\"Воронка сделок из API\"}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/deal-stage-categories?filter[created-at-gte]=2022.02.22 12:00");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Фильтр | Описание | Пример |
---|---|---|
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/deal-stages");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"deal-stages\",\"attributes\":{\"name\":\"Этап сделки в API\"},\"relationships\":{ \"deal-stage-category\":{\"data\": { \"type\": \"deal-stage-categories\",\"id\": 2}}}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
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": true,
"duration": 20000,
"color": "#ee66aa",
"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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/deal-stages?filter[created-at-gte]=2022.02.22 12:00");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Фильтр | Описание | Пример |
---|---|---|
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/deal-statuses");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"deal-statuses\",\"attributes\":{\"name\":\"Статус сделки в API\",\"color\":\"#000000\"}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/deal-statuses?filter[created-at-gte]=2022.02.22 12:00");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Фильтр | Описание | Пример |
---|---|---|
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.syncrm.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":""
},
"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.syncrm.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\":\"\"},\"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.syncrm.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":""
},
"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":""
},
"relationships":{
"source":{
"data":{
"type":"sources",
"id":"2"
}
}
}
}
}`)
req, err := http.NewRequest("POST", "https://app.syncrm.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.syncrm.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":""
},
"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.syncrm.ru/api/v1/orders"
payload = json.dumps({
"data":{
"type":"orders",
"attributes":{
"name":"Заявка по API",
"archived-at":""
},
"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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/orders");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"orders\",\"attributes\":{\"name\":\"Заявка по API\",\"archived-at\":\"2022-02-22\"},\"relationships\":{\"source\":{\"data\":{\"type\":\"sources\",\"id\":\"2\"}}}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Создание заявки с предустановленной сделкой
curl "https://app.syncrm.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":""
},
"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.syncrm.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\":\"\"},\"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.syncrm.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":""
},
"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":""
},
"relationships":{
"deals": {
"data" : [{
"type": "deals",
"id":22222
}]
}
}
}
}`)
req, err := http.NewRequest("POST", "https://app.syncrm.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.syncrm.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":""
},
"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.syncrm.ru/api/v1/orders"
payload = json.dumps({
"data":{
"type":"orders",
"attributes":{
"name":"Заявка по API с предустановленной сделкой",
"archived-at":""
},
"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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/orders");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"orders\",\"attributes\":{\"name\":\"Заявка по API с предустановленной сделкой\",\"archived-at\":\"2022-02-22\"},\"relationships\":{\"deals\": {\"data\" : [{\"type\": \"deals\",\"id\": 22222}]}}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
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"
}
}
}
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
name | string |
Моя сделка | да | Имя заявки |
description | 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 |
да | Дата архивации |
Связи
Пример данных (перечислены не все связи)
{
"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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/orders?include=source,responsible");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Каждая связь может быть включена в 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 | entity-products |
Фильтры
Получить список заявок до определённой даты
curl -G "https://app.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/orders?filter[created-at-gte]=2022.02.22 12:00");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Фильтр | Описание | Пример |
---|---|---|
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/order-loss-reasons");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"order-loss-reasons\",\"attributes\":{\"name\":\"Моя причина поражения\"}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/order-loss-reasons?filter[created-at-gte]=2022.02.22 12:00");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Фильтр | Описание | Пример |
---|---|---|
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/order-stages");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"deal-stages\",\"attributes\":{\"name\":\"Этап в API\"},\"relation\"}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
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 | да | Цвет этапа |
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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.syncrm.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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/deal-stages?filter[created-at-gte]=2022.02.22 12:00");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Фильтр | Описание | Пример |
---|---|---|
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.syncrm.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.syncrm.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.syncrm.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.syncrm.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", bodyText)
}
Пример на PHP
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://app.syncrm.ru/api/v1/order-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":"order-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.syncrm.ru/api/v1/order-statuses"
payload = json.dumps({
"data":{
"type":"order-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)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/order-statuses");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"order-statuses\",\"attributes\":{\"name\":\"Статус заявки в API\",\"color\":\"#000000\"}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
JSON API type | order-statuses |
URL | /api/v1/order-statuses |
Список | GET /api/v1/order-statuses |
Чтение | GET /api/v1/order-statuses/{id} |
Создание | POST /api/v1/order-statuses |
Редактирование | PATCH /api/v1/order-statuses/{id} |
Удаление | DELETE /api/v1/order-statuses/{id} |
Атрибуты
Атрибуты статуса заявки
{
"data": {
"type":"order-statuses",
"id":"1",
"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.syncrm.ru/api/v1/order-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.syncrm.ru/api/v1/order-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.syncrm.ru/api/v1/order-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.syncrm.ru/api/v1/order-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.syncrm.ru/api/v1/order-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.syncrm.ru/api/v1/order-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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/order-statuses?filter[created-at-gte]=2022.02.22 12:00");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Фильтр | Описание | Пример |
---|---|---|
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.syncrm.ru/api/v1/diary-events" \
-X POST \
-H "Content-Type: application/vnd.api+json" \
-H "Authorization: Bearer api_token" \
-d @- << EOF
{
"data":{
"type":"diary-events",
"attributes":{
"name":"Задача по API",
"description":"Данная задача было создана при помощи API",
"start-time":"2022-02-22 12:00 +0300"
},
"relationships":{
"responsible": {
"data":{
"type":"users",
"id":"2"
}
},
"company":{
"data":{
"type":"companies",
"id":"22"
}
}
}
}
}
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.syncrm.ru/api/v1/diary-events");
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\":\"diary-events\",\"attributes\":{\"name\":\"Задача по API\",\"description\":\"Данная задача было создана при помощи API\",\"start-time\":\"2022-02-22 12:00 +0300\"},\"relationships\":{\"responsible\": {\"data\":{\"type\":\"users\",\"id\":\"2\"}},\"company\":{\"data\":{\"type\":\"companies\",\"id\":\"22\"}}}}}");
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.syncrm.ru/api/v1/diary-events')
req = Net::HTTP::Post.new(uri)
req.content_type = 'application/vnd.api+json'
req['Authorization'] = 'Bearer api_token'
req.body = '{
"data":{
"type":"diary-events",
"attributes":{
"name":"Задача по API",
"description":"Данная задача было создана при помощи API",
"start-time":"2022-02-22 12:00 +0300"
},
"relationships":{
"responsible": {
"data":{
"type":"users",
"id":"2"
}
},
"company":{
"data":{
"type":"companies",
"id":"22"
}
}
}
}
}'
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":"diary-events",
"attributes":{
"name":"Задача по API",
"description":"Данная задача было создана при помощи API",
"start-time":"2022-02-22 12:00 +0300"
},
"relationships":{
"responsible": {
"data":{
"type":"users",
"id":"2"
}
},
"company":{
"data":{
"type":"companies",
"id":"22"
}
}
}
}
}`)
req, err := http.NewRequest("POST", "https://app.syncrm.ru/api/v1/diary-events", 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.syncrm.ru/api/v1/diary-events',
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":"diary-events",
"attributes":{
"name":"Задача по API",
"description":"Данная задача было создана при помощи API",
"start-time":"2022-02-22 12:00 +0300"
},
"relationships":{
"responsible": {
"data":{
"type":"users",
"id":"2"
}
},
"company":{
"data":{
"type":"companies",
"id":"22"
}
}
}
}
}',
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.syncrm.ru/api/v1/diary-events"
payload = json.dumps({
"data":{
"type":"diary-events",
"attributes":{
"name":"Задача по API",
"description":"Данная задача было создана при помощи API",
"start-time":"2022-02-22 12:00 +0300"
},
"relationships":{
"responsible": {
"data":{
"type":"users",
"id":"2"
}
},
"company":{
"data":{
"type":"companies",
"id":"22"
}
}
}
}
})
headers = {
'Content-Type': 'application/vnd.api+json',
'Authorization': 'Bearer api_token'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Пример на C#
using System.Net.Http.Headers;
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "https://app.syncrm.ru/api/v1/diary-events");
request.Headers.Add("Authorization", "Bearer api_token");
request.Content = new StringContent("{\"data\":{\"type\":\"diary-events\",\"attributes\":{\"name\":\"Задача по API\",\"description\":\"Данная задача было создана при помощи API\",\"start-time\":\"2022-02-22 12:00 +0300\"},\"relationships\":{\"responsible\": {\"data\":{\"type\":\"users\",\"id\":\"2\"}},\"company\":{\"data\":{\"type\":\"companies\",\"id\":\"22\"}}}}}");
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.api+json");
HttpResponseMessage response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
JSON API type | diary-events |
URL | /api/v1/diary-events |
Список | GET /api/v1/diary-events |
Чтение | GET /api/v1/diary-events/{id} |
Создание | POST /api/v1/diary-events |
Редактирование | PATCH /api/v1/diary-events/{id} |
Удаление | DELETE /api/v1/diary-events/{id} |
Атрибуты
Атрибуты события
{
"data": {
"type":"diary-events",
"id":"2",
"attributes":{
"name":"Отправить копию договора",
"description":"Отправить копию договора в ООО \"Компания\"",
"start-time":"2022-02-22T12:02:22.222+03:00",
"end-time":"2022-02-22T12:22:22.222+03:00",
"color":"#fff",
"status":"completed",
"due-date":"2022-02-22T22:02:22.222+03:00",
"duration":null,
"customs":{
"custom-1":"Важный клиент",
"custom-943":"2022-02-22T12:02:22.222+03:00"
},
"created-at":"2022-02-22T12:02:22.222+03:00",
"completed-at":"2022-02-22T22:02:22.222+03:00",
"updated-at":"2022-02-22T12:22:22.222+03:00",
"archived-at":null
}
}
}
Имя | Тип | Пример | Запись | Описание |
---|---|---|---|---|
name* | string |
Переговоры с ООО "Компания" | да | Название события |
description | string |
Переговоры для дальнейшей координации сотрудничества | да | Подробное описание события |
start-time | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Время начала |
end-time | datetime |
2022-02-22T12:22:22.222+03:00 |
да | Время окончания |
due-date | datetime |
2022-02-22T22:02:22.222+03:00 |
да | Дедлайн |
color | string |
#fff | да | Цвет |
status | string |
completed, overdue, opened | нет | Статус |
custom | hash |
{"custom-1":'custom value'} |
да | Свои поля |
created-at | datetime |
2022-02-22T12:02:22.222+03:00 |
да | Дата создания |
completed-at | datetime |
2022-02-22T22:02:22.222+03:00 |
да | Дата завершения |
updated-at | datetime |
2022-02-22T12:22:22.222+03:00 |
нет | Дата обновления |
archived-at | datetime |
2022-02-22T22:02:22.222+03:00 |
да | Дата архивации |
* Обязательные поля
Связи
Пример данных (перечислены не все связи)
{
"data": {
"type":"diary-events",
"id":"2",
"relationships":{
"responsible":{
"links":{
"self":"/api/v1/diary-events/2/relationships/responsible",
"related":"/api/v1/diary-events/2/responsible"
}
},
"diary-type":{
"links":{
"self":"/api/v1/diary-events/2/relationships/diary-type",
"related":"/api/v1/diary-events/2/diary-type"
}
}
}
}
}
Пример запроса с загруженными типами задачи и отвественными
curl "https://app.syncrm.ru/api/v1/diary-events?include=diary-type,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.syncrm.ru/api/v1/diary-events?include=diary-type,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.syncrm.ru/api/v1/diary-events?include=diary-type,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.syncrm.ru/api/v1/diary-events?include=diary-type,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.syncrm.ru/api/v1/diary-events?include=diary-type,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.syncrm.ru/api/v1/diary-events?include=diary-type,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)
Пример на C#
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "https://app.syncrm.ru/api/v1/diary-events?include=diary-type,responsible");
request.Headers.Add("Authorization", "Bearer api_token");
HttpResponseMessage response = await client