apiato

apiato (Private API) Documentation

Contact

Contact | Обновить все контакты (пользователей)

Массовое обновление, создание или удаление контактов и их переменных для команды, указанной через API-ключ. Контакты идентифицируются по полю vendor_id. Существующие контакты обновляются, новые создаются, а отсутствующие в запросе удаляются. Дополнительные поля, не входящие в стандартные (username, last_name, first_name, surname, is_confirmed, email, vendor_id, timezone), обрабатываются как пользовательские переменные: создаются с is_vendor = true (если их нет) и привязываются к контактам через значения. Значения переменных, не переданные в запросе, удаляются.

POST
https://dippi.fun/api/v1/contacts/update-all

Permission: none

{
    "contact": [
        {
            "vendor_id": "12345",
            "first_name": "Иван",
            "last_name": "Иванов",
            "email": "ivan@example.com",
            "timezone": "Europe/Moscow",
            "custom_field1": "значение1",
            "custom_field2": "значение2"
        },
        {
            "vendor_id": "67890",
            "first_name": "Петр",
            "last_name": "Петров",
            "email": "petr@example.com",
            "timezone": "Asia/Yekaterinburg",
            "different_field": "уникальное_значение",
            "another_field": "42"
        }
    ]
}

Header

Field Type Description
api_key String

API-ключ команды (обязательный). Пример: "abc123"

Request Body

Field Type Description
contact Object[]

Массив объектов контактов с их данными и переменными

  vendor_id String

Уникальный идентификатор контакта от внешнего провайдера (в вашей системе, обязательный, строка). Пример: "12345"

  first_name optional String

Имя контакта. Пример: "Иван"

  last_name optional String

Фамилия контакта. Пример: "Иванов"

  username optional String

Имя пользователя. Пример: "ivan123"

  surname optional String

Отчество контакта. Пример: "Иванович"

  is_confirmed optional Boolean

Подтвержден ли контакт. Пример: true

  email optional String

Email контакта. Пример: "ivan@example.com"

  timezone optional String

Таймзона контакта. Пример: "Europe/Moscow"

  some_other_fields optional String

Любые дополнительные поля интерпретируются как пользовательские переменные. Пример: 'custom_field=значение1'

send_invite_links optional String

Отправить по email новым контактам приглашение авторизироваться в боте (чтобы сразу можно было делать рассылки и работали триггеры, альтернативный путь - прямой переход по ссылке на один из сценариев или отправить приглашение позднее вручну со страницы 'пользователи' )

tags optional Array[]

Список тэгов (признаков) контакта, например ['руководитель','в отпуске']), переданный список синхранизуется с тэгами контакта. Если не нужно удалять(синхронизовывать) тэги которые былисозданны в ручную в системе используйте параметр saved_tags

saved_tags optional Boolean

Тэги переданные в tags будут синхронизовываться только с тэгами переданными по апи (тэги созданные и добавленные в системе через сценарий или страницу "Пользователи" остануться как есть) *

HTTP/1.1 200 OK
{
    "data": {
        "created": [
            {
                "vendor_id": "12345",
                "first_name": "Иван",
                "last_name": "Иванов",
                "email": "ivan@example.com",
                "timezone_id": 1,
                "team_id": 1,
                "id": "hashed_id_here"
            }
        ],
        "updated": [
            {
                "vendor_id": "67890",
                "first_name": "Петр",
                "last_name": "Петров",
                "email": "petr@example.com",
                "timezone_id": 2,
                "team_id": 1,
                "id": "hashed_id_here"
            }
        ],
        "deleted": [
            {
                "vendor_id": "99999",
                "first_name": "Сергей",
                "last_name": "Сергеев",
                "email": "sergey@example.com",
                "timezone_id": 3,
                "team_id": 1,
                "id": "hashed_id_here"
            }
        ]
    },
    "errors": [],
    "success": true
}
HTTP/1.1 400 Bad Request
{
    "data": [],
    "errors": [
        {
            "message": "API-ключ обязателен"
        }
    ],
    "success": false
}

Send a Sample Request

url

Headers

String

Body

json

Contact | Обновить контакт (пользователя)

Обновляет существующий контакт для команды, указанной через API-ключ. Контакт идентифицируется по полю vendor_id. Если контакт с таким vendor_id не существует в базе команды, возвращается ошибка. Дополнительные поля, не входящие в стандартные (username, last_name, first_name, surname, is_confirmed, email, vendor_id, timezone), обрабатываются как пользовательские переменные: создаются с is_vendor = true (если их нет) и привязываются к контакту через значения. Если передан параметр send_invite_links и контакт еще не привязан, ему отправляется приглашение по email для авторизации в боте.

POST
https://dippi.fun/api/v1/contact/update/{vendor_id}

Permission: none

{
    "vendor_id": "12345",
    "first_name": "Иван",
    "last_name": "Иванов",
    "email": "ivan@example.com",
    "timezone": "Europe/Moscow",
    "custom_field1": "новое_значение",
    "send_invite_links": "true"
}

Header

Field Type Description
api-key String

API-ключ команды (обязательный). Пример: "abc123"

Request Body

Field Type Description
vendor_id String

Уникальный идентификатор контакта от внешнего провайдера (обязательный, строка). Пример: "12345"

username optional String

Имя пользователя Telegram (без @). Пример: "ivan123"

first_name optional String

Имя контакта. Пример: "Иван"

last_name optional String

Фамилия контакта. Пример: "Иванов"

surname optional String

Отчество контакта. Пример: "Иванович"

is_confirmed optional Boolean

Подтвержден ли контакт. Пример: true

email optional String

Email контакта. Пример: "ivan@example.com"

timezone optional String

Таймзона контакта. Пример: "Europe/Moscow"

send_invite_links optional String

Отправить по email контакту приглашение авторизироваться в боте (если он еще не привязан). Пример: "true"

some_other_fields optional String

Любые дополнительные поля интерпретируются как пользовательские переменные. Пример: 'custom_field=значение1'

tags optional Array[]

Список тэгов (признаков) контакта, например ['руководитель','в отпуске']), переданный список синхранизуется с тэгами контакта. Если не нужно удалять(синхронизовывать) тэги которые былисозданны в ручную в системе используйте параметр saved_tags

saved_tags optional Boolean

Тэги переданные в tags будут синхронизовываться только с тэгами переданными по апи (тэги созданные и добавленные в системе через сценарий или страницу "Пользователи" остануться как есть)

HTTP/1.1 200 OK
{
    "success": true,
    "id": "hashed_id_here",
    "vendor_id": "12345",
    "first_name": "Иван",
    "last_name": "Иванов",
    "email": "ivan@example.com",
    "timezone": "Europe/Moscow",
    "team_id": 1,
    "value": {
        "custom_field1": "новое_значение"
    }
}
HTTP/1.1 400 Bad Request
{
    "success": false,
    "errors": [
        {
            "message": "vendor_id обязателен"
        }
    ]
}
HTTP/1.1 400 Bad Request
{
    "success": false,
    "errors": [
        {
            "message": "Контакт с таким vendor_id не существует в базе"
        }
    ]
}

Send a Sample Request

url

Headers

String

Body

json

Contact | Получить список контактов (пользователей)

Возвращает список контактов для команды, указанной через API-ключ. Поддерживает фильтрацию по имени (name_filter) и статусу подтверждения (is_confirmed). Контакты возвращаются с их данными и пользовательскими переменными в поле value.

GET
https://dippi.fun/api/v1/contacts/list

Permission: none

curl -X GET "https://dipi.fun/api/v1/contacts/list?name_filter=Иван&is_confirmed=true" \
-H "api-key: 1234"

Header

Field Type Description
api-key String

API-ключ команды (обязательный). Пример: "abc123"

Query Parameter(s)

Field Type Description
name_filter optional String

Фильтр по имени, фамилии или отчеству контакта (поиск по частичному совпадению). Пример: "Иван"

is_confirmed optional Boolean

Фильтр по статусу подтверждения контакта (true - подтвержденные, false - неподтвержденные). Пример: true

HTTP/1.1 200 OK
{
    "success": true,
    "data": [
        {
            "id": "hashed_id_here",
            "vendor_id": "12345",
            "first_name": "Иван",
            "last_name": "Иванов",
            "email": "ivan@example.com",
            "timezone": "Europe/Moscow",
            "team_id": 1,
            "value": {
                "custom_field1": "значение1",
                "custom_field2": "значение2"
            }
        },
        {
            "id": "hashed_id_here",
            "vendor_id": "67890",
            "first_name": "Иван",
            "last_name": "Петров",
            "email": "ivan2@example.com",
            "timezone": "Asia/Yekaterinburg",
            "team_id": 1,
            "value": {
                "different_field": "уникальное_значение"
            }
        }
    ]
}
HTTP/1.1 400 Bad Request
{
    "success": false,
    "errors": [
        {
            "message": "The name_filter must be a string."
        }
    ]
}

Send a Sample Request

url

Headers

String

Query Parameters

String
Boolean

Contact | Создать контакт (пользователя)

Создает новый контакт для команды, указанной через API-ключ. Контакт идентифицируется по полю vendor_id. Если контакт с таким vendor_id уже существует в базе команды, возвращается ошибка. Дополнительные поля, не входящие в стандартные (username, last_name, first_name, surname, is_confirmed, email, vendor_id, timezone), обрабатываются как пользовательские переменные: создаются с is_vendor = true (если их нет) и привязываются к контакту через значения. Если передан параметр send_invite_links, новому контакту отправляется приглашение по email для авторизации в боте.

POST
https://dippi.fun/api/v1/contact/create

Permission: none

{
    "vendor_id": "12345",
    "first_name": "Иван",
    "last_name": "Иванов",
    "email": "ivan@example.com",
    "timezone": "Europe/Moscow",
    "custom_field1": "значение1",
    "send_invite_links": "true"
}

Header

Field Type Description
api-key String

API-ключ команды (обязательный). Пример: "abc123"

Request Body

Field Type Description
vendor_id String

Уникальный идентификатор контакта от внешнего провайдера (обязательный, строка). Пример: '12345'

username optional String

Имя пользователя Telegram (без @). Пример: 'ivan123'

first_name optional String

Имя контакта. Пример: "Иван"

last_name optional String

Фамилия контакта. Пример: "Иванов"

surname optional String

Отчество контакта. Пример: "Иванович"

is_confirmed optional Boolean

Подтвержден ли контакт. Пример: true

email optional String

Email контакта. Пример: "ivan@example.com"

timezone optional String

Таймзона контакта. Пример: "Europe/Moscow"

send_invite_links optional String

Отправить по email новому контакту приглашение авторизироваться в боте (чтобы сразу можно было делать рассылки и работали триггеры). Пример: 'true'

some_other_fields optional String

Любые дополнительные поля интерпретируются как пользовательские переменные. Пример: 'custom_field=значение1'

tags optional Array[]

Список тэгов (признаков) контакта, например ['руководитель','в отпуске']), переданный список синхранизуется с тэгами контакта. Если не нужно удалять(синхронизовывать) тэги которые былисозданны в ручную в системе используйте параметр saved_tags

saved_tags optional Boolean

Тэги переданные в tags будут синхронизовываться только с тэгами переданными по апи (тэги созданные и добавленные в системе через сценарий или страницу "Пользователи" остануться как есть)

HTTP/1.1 200 OK
{
    "success": true,
    "id": "hashed_id_here",
    "vendor_id": "12345",
    "first_name": "Иван",
    "last_name": "Иванов",
    "email": "ivan@example.com",
    "timezone": "Europe/Moscow",
    "team_id": 1,
    "value": {
        "custom_field1": "значение1"
    }
}
HTTP/1.1 400 Bad Request
{
    "success": false,
    "errors": [
        {
            "message": "vendor_id обязателен"
        }
    ]
}
HTTP/1.1 400 Bad Request
{
    "success": false,
    "errors": [
        {
            "message": "Контакт с таким vendor_id уже существует в базе"
        }
    ]
}

Send a Sample Request

url

Headers

String

Body

json

Contact | Сохранить контакт

POST
https://dippi.fun/api/v1/contact/:id?

Permission: Authenticated ['permissions' => '', 'roles' => '']

Parameter

Field Type Description
id optional String

идентификатор контакта

Request Body

Field Type Description
first_name String

Имя

last_name String

Фамилия

timezone_id String

Таймзона

email optional String

Email

username optional String

Username

variables Object[]

массив Переменных, [{variable_id:x,value:y}]

avatar SplFileInfo
HTTP/1.1 200 OK
{
    // Insert the response of the request here...
}

Send a Sample Request

url

Parameters

json
String

Body

json

Contact | Удалить контакт (пользователя)

Удаляет существующий контакт для команды, указанной через API-ключ. Контакт идентифицируется по полю vendor_id. Если контакт с указанным vendor_id не найден в базе команды, возвращается ошибка. После удаления проверяются тарифные ограничения.

POST
https://dippi.fun/api/v1/contact/delete/{vendor_id}

Permission: none

{
    "vendor_id": "12345abc"
}

Header

Field Type Description
api-key String

API-ключ команды (обязательный). Пример: "abc123"

Parameter

Field Type Description
vendor_id String

Уникальный идентификатор контакта от внешнего провайдера (обязательный, передается в URL). Пример: "12345"

HTTP/1.1 200 OK
{
    "success": true
}
HTTP/1.1 400 Bad Request
{
    "success": false,
    "errors": [
        {
            "message": "Контакт не найден"
        }
    ]
}

Send a Sample Request

url

Headers

String

Parameters

json
String

Contact | Удалить несколько контактов (пользователей)

Массово удаляет существующие контакты для команды, указанной через API-ключ. Контакты идентифицируются по массиву vendor_ids. Удаляются только те контакты, которые существуют в базе команды и соответствуют переданным vendor_ids.

POST
https://dippi.fun/api/v1/contact/delete-many/{contact}

Permission: none

{
    "vendor_ids": ["12345abc", "67890"]
}

Header

Field Type Description
api-key String

API-ключ команды (обязательный). Пример: "abc123"

Request Body

Field Type Description
vendor_ids String[]

Массив уникальных идентификаторов контактов от внешнего провайдера (обязательный). Пример: ["12345abc", "67890"]

HTTP/1.1 200 OK
{
    "success": true
}
HTTP/1.1 400 Bad Request
{
    "success": false,
    "errors": [
        {
            "message": "The vendor_ids field is required."
        }
    ]
}

Send a Sample Request

url

Headers

String

Body

json

Document

Document | Обновить документ

Обновляет существующий документ для команды, указанной через API-ключ. Документ идентифицируется по полю vendor_id. Если документ не найден, возвращается ошибка. Требуется передать новый файл для обновления содержимого.

POST
https://dippi.fun/api/v1/documents/update/{vendor_id}

Permission: none

curl -X POST "https://dipi.fun/api/v1/documents/update/doc123" \
-H "api-key: abc123" \
-F "file=@/path/to/updated_document.pdf" \
-F "title=Контракт (обновленный)" \
-F "linkable=true" \
-F "private=false"

Header

Field Type Description
api-key String

API-ключ команды (обязательный). Пример: "abc123"

Parameter

Field Type Description
vendor_id String

Уникальный идентификатор документа от внешнего провайдера (обязательный, передается в URL). Пример: "doc123"

Request Body

Field Type Description
title optional String

Название документа. Пример: "Контракт (обновленный)"

file File

Новый файл документа (обязательный). Пример: файл с расширением .pdf, .docx и т.д.

linkable optional Boolean

Доступен ли документ по ссылке. Пример: true

private optional Boolean

Является ли документ приватным. Пример: false

HTTP/1.1 200 OK
{
    "success": true,
    "id": 1,
    "vendor_id": "doc123",
    "title": "Контракт (обновленный)",
    "private": false,
    "linkable": true
}
HTTP/1.1 400 Bad Request
{
    "success": false,
    "errors": [
        {
            "message": "Документ не найден"
        }
    ]
}

Send a Sample Request

url

Headers

String

Parameters

json
String

Body

json

Document | Получить список документов

Возвращает список всех документов для команды, указанной через API-ключ.

GET
https://dippi.fun/api/v1/documents/list

Permission: none

curl -X GET "https://dipi.fun/api/v1/documents/list" \
-H "api-key: abc123"

Header

Field Type Description
api-key String

API-ключ команды (обязательный). Пример: "abc123"

HTTP/1.1 200 OK
{
    "success": true,
    "data": [
        {
            "id": 1,
            "vendor_id": "doc123",
            "title": "Контракт",
            "private": false,
            "linkable": true
        },
        {
            "id": 2,
            "vendor_id": "doc456",
            "title": "Счет",
            "private": true,
            "linkable": false
        }
    ]
}
HTTP/1.1 400 Bad Request
{
    "success": false,
    "errors": [
        {
            "message": "Ошибка доступа или неверный API-ключ"
        }
    ]
}

Send a Sample Request

url

Headers

String

Document | Создать документ

Создает новый документ для команды, указанной через API-ключ. Документ идентифицируется по полю vendor_id. Требуется передать файл для обработки внешним сервисом (Gigachat). Если документ с таким vendor_id уже существует, он не будет создан повторно (для этого используйте обновление). Дополнительные параметры определяют настройки доступа и метаданные документа.

POST
https://dippi.fun/api/v1/documents/create/{vendor_id}

Permission: none

curl -X POST "https://dipi.fun/api/v1/documents/create/doc123" \
-H "api-key: abc123" \
-F "file=@/path/to/document.pdf" \
-F "title=Контракт" \
-F "linkable=true" \
-F "private=false" \
-F "bot_access_type=restricted" \
-F "bots[]=bot1" \
-F "bots[]=bot2"

Header

Field Type Description
api-key String

API-ключ команды (обязательный). Пример: "abc123"

Parameter

Field Type Description
vendor_id String

Уникальный идентификатор документа от внешнего провайдера (обязательный, передается в URL). Пример: "doc123"

Request Body

Field Type Description
title optional String

Название документа. Пример: "Контракт"

file File

Файл документа (обязательный). Пример: файл с расширением .pdf, .docx и т.д.

linkable optional Boolean

Доступен ли документ по ссылке. Пример: true

private optional Boolean

Является ли документ приватным. Пример: false

HTTP/1.1 200 OK
{
    "success": true,
    "id": 1,
    "vendor_id": "doc123",
    "title": "Контракт",
    "private": false,
    "linkable": true
}
HTTP/1.1 400 Bad Request
{
    "success": false,
    "errors": [
        {
            "message": "Файл не передан или не валиден"
        }
    ]
}

Send a Sample Request

url

Headers

String

Parameters

json
String

Body

json

Document | Удалить документ

Удаляет существующий документ для команды, указанной через API-ключ. Документ идентифицируется по полю vendor_id. Если документ не найден, возвращается ошибка.

POST
https://dippi.fun/api/v1/documents/delete/{vendor_id}

Permission: none

curl -X POST "https://dipi.fun/api/v1/documents/delete/doc123" \
-H "api-key: abc123"

Header

Field Type Description
api-key String

API-ключ команды (обязательный). Пример: "abc123"

Parameter

Field Type Description
vendor_id String

Уникальный идентификатор документа от внешнего провайдера (обязательный, передается в URL). Пример: "doc123"

HTTP/1.1 202 Accepted
{
    "success": true
}
HTTP/1.1 400 Bad Request
{
    "success": false,
    "errors": [
        {
            "message": "Документ не найден"
        }
    ]
}

Send a Sample Request

url

Headers

String

Parameters

json
String

Generated with apidoc 1.2.0 - Wed Mar 05 2025 08:32:38 GMT+0000 (Coordinated Universal Time)