Шаблон бэкенда CRM приложения
REST API — Схема, API и AI руководство
Готовая к производству REST API CRM схема бэкенда и Стартовый комплект на Back4app: Контакт, Компания, Сделка, Активность, этапы воронки, ER-диаграмма, словарь данных, JSON-схема, API-площадка и однонажатийный AI агент для развертывания за минуты.
Ключевые выводы
На этой странице вы получите готовую к производству схему CRM, однонажатийный AI-подсказку и пошаговый код REST API — так вы сможете выпустить приложение CRM без создания бэкенда.
- Разверните за считанные минуты — Вставьте подсказку AI Agent и получите работающее приложение с контактами, компаниями, сделками и конвейером.
- Безопасно по умолчанию — ACL и доступ на основе ролей, чтобы пользователи видели только свои назначенные сделки и данные.
- REST API-родной SDK — Типизированные объекты, async/await, оффлайн-фиксация и Live Queries для обновлений конвейера.
- REST + GraphQL — Обе API сгенерированы автоматически; фильтруйте сделки по этапу, перечисляйте активности по relatedTo.
- Пять классов — _User (встроенный), Компания, Контакт, Сделка (конвейер), Активность (задачи/события).
Что такое шаблон бэкенда CRM REST API?
REST-first бэкенд CRM на Back4app: стандартные GET/POST/PUT/DELETE на /classes/Contact, /classes/Deal и связанных конечных точках. Используйте X-Parse-Session-Token для авторизации и where/order для запросов по воронке. Интегрируйтесь с любого стека — мобильного, веб или серверного — с четкими статус-кодами и JSON-данными. Никакого GraphQL или SDK не требуется.
Лучше всего для:
Обзор
REST API для CRM: GET /classes/Deal, POST /classes/Contact, PUT /classes/Deal/:id и так далее. Back4app генерирует эти конечные точки из схемы; вы отправляете X-Parse-Session-Token для аутентификации и используете where и order для запросов пайплайна и списков.
Схема (пять классов: _User, Company, Contact, Deal, Activity) такая же, как для SDK клиентов. Любой HTTP клиент может интегрироваться — мобильный, веб или серверный — со стандартным JSON и кодами состояния.
Основные функции CRM
REST API CRM бэкенд с REST-клиентом: управление контактами, воронка сделок и отслеживание активности. Используйте Guzzle или __BRAND1__ HTTP с токенами сессии и ACL.
Управление контактами
Храните и управляйте контактами с именем, электронной почтой, телефоном, компанией и заметками. Идеально подходит для приложений REST API.
Управление компаниями
Отслеживайте компании по имени, веб-сайту, отрасли и адресу. Связано с контактами и сделками.
Конвейер сделок
Конвейер продаж с этапами, суммой, ожидаемой датой закрытия и назначением. Создан для бэкендов REST API.
Отслеживание активности
Записывайте звонки, электронные письма, встречи и заметки, связанные с контактами и сделками. Работает с SDK REST API.
Пользователь и разрешения
Встроенная модель пользователя и указатели для владения и назначения. ACL из коробки для REST API.
ER диаграмма
Диаграмма «Сущность-связь» для модели данных CRM приложения REST API.
Просмотреть источник диаграммы
erDiagram
_User {
String objectId PK
String username
String email
String password
Date createdAt
Date updatedAt
}
Company {
String objectId PK
String name
String website
String industry
String address
String notes
Pointer createdBy FK
Date createdAt
Date updatedAt
}
Contact {
String objectId PK
String name
String email
String phone
Pointer company FK
String notes
Pointer createdBy FK
Date createdAt
Date updatedAt
}
Deal {
String objectId PK
String title
Number amount
String stage
Pointer contact FK
Pointer company FK
Date expectedCloseDate
String notes
Pointer assignedTo FK
Date createdAt
Date updatedAt
}
Activity {
String objectId PK
String type
String subject
String description
Date dueDate
Date completedAt
Pointer relatedTo FK
Pointer createdBy FK
Date createdAt
Date updatedAt
}
Company ||--o{ Contact : "has"
Company ||--o{ Deal : "has"
Contact ||--o{ Deal : "has"
_User ||--o{ Deal : "assignedTo"
_User ||--o{ Activity : "createdBy"
Contact ||--o{ Activity : "relatedTo"
Deal ||--o{ Activity : "relatedTo"
_User ||--o{ Company : "createdBy"
_User ||--o{ Contact : "createdBy"
Поток интеграции
Последовательность Auth-to-CRUD: как ваше REST API приложение взаимодействует с Back4app — вход в систему, затем запрос контактов и сделок, обновление воронки.
Просмотреть источник диаграммы
sequenceDiagram
participant User
participant Client as REST Client
participant Back4app as Back4app Cloud
User->>Client: Login
Client->>Back4app: POST /login (username, password)
Back4app-->>Client: sessionToken
Client-->>User: Logged in
User->>Client: Load deals and contacts
Client->>Back4app: GET /classes/Deal?where={"stage":"qualified"}
Back4app-->>Client: results
Client-->>User: Show pipeline
User->>Client: Create deal or contact
Client->>Back4app: POST /classes/Deal (X-Parse-Session-Token)
Back4app-->>Client: objectId, createdAt
Client-->>User: Updated listСловарь данных
Полная справка по полям для каждого класса в схеме.
Contact
| Поле | Тип | Описание | Обязательно |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | авто |
| name | String | Full name of the contact | |
| String | Email address | — | |
| phone | String | Phone number | — |
| company | Pointer<Company> | Company this contact belongs to | — |
| notes | String | Free-form notes | — |
| createdBy | Pointer<_User> | User who created this contact | — |
| createdAt | Date | Auto-generated creation timestamp | авто |
| updatedAt | Date | Auto-generated last-update timestamp | авто |
Company
| Поле | Тип | Описание | Обязательно |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | авто |
| name | String | Company name | |
| website | String | Company website URL | — |
| industry | String | Industry or sector | — |
| address | String | Physical or mailing address | — |
| notes | String | Free-form notes | — |
| createdBy | Pointer<_User> | User who created this company | — |
| createdAt | Date | Auto-generated creation timestamp | авто |
| updatedAt | Date | Auto-generated last-update timestamp | авто |
Deal
| Поле | Тип | Описание | Обязательно |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | авто |
| title | String | Deal title or name | |
| amount | Number | Deal value or amount | — |
| stage | String | Pipeline stage (e.g. lead, qualified, proposal, won, lost) | — |
| contact | Pointer<Contact> | Primary contact for this deal | — |
| company | Pointer<Company> | Company associated with this deal | — |
| expectedCloseDate | Date | Expected close date | — |
| notes | String | Free-form notes | — |
| assignedTo | Pointer<_User> | User assigned to this deal | — |
| createdAt | Date | Auto-generated creation timestamp | авто |
| updatedAt | Date | Auto-generated last-update timestamp | авто |
Activity
| Поле | Тип | Описание | Обязательно |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | авто |
| type | String | Activity type (call, email, meeting, note) | — |
| subject | String | Subject or title | — |
| description | String | Description or body | — |
| dueDate | Date | Due date | — |
| completedAt | Date | When the activity was completed | — |
| relatedTo | Pointer | Pointer to Contact or Deal | — |
| createdBy | Pointer<_User> | User who created this activity | — |
| createdAt | Date | Auto-generated creation timestamp | авто |
| updatedAt | Date | Auto-generated last-update timestamp | авто |
_User
| Поле | Тип | Описание | Обязательно |
|---|---|---|---|
| objectId | String | Auto-generated unique identifier | авто |
| username | String | Login username | |
| String | Email address | ||
| password | String | Hashed password (write-only) | |
| createdAt | Date | Auto-generated creation timestamp | авто |
| updatedAt | Date | Auto-generated last-update timestamp | авто |
Схема (JSON)
Сырая определение схемы JSON — скопируйте и используйте в вашем Back4app приложении или импортируйте через API.
{
"classes": [
{
"className": "Contact",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"name": {
"type": "String",
"required": true
},
"email": {
"type": "String",
"required": false
},
"phone": {
"type": "String",
"required": false
},
"company": {
"type": "Pointer",
"targetClass": "Company",
"required": false
},
"notes": {
"type": "String",
"required": false
},
"createdBy": {
"type": "Pointer",
"targetClass": "_User",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Company",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"name": {
"type": "String",
"required": true
},
"website": {
"type": "String",
"required": false
},
"industry": {
"type": "String",
"required": false
},
"address": {
"type": "String",
"required": false
},
"notes": {
"type": "String",
"required": false
},
"createdBy": {
"type": "Pointer",
"targetClass": "_User",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Deal",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"title": {
"type": "String",
"required": true
},
"amount": {
"type": "Number",
"required": false
},
"stage": {
"type": "String",
"required": false
},
"contact": {
"type": "Pointer",
"targetClass": "Contact",
"required": false
},
"company": {
"type": "Pointer",
"targetClass": "Company",
"required": false
},
"expectedCloseDate": {
"type": "Date",
"required": false
},
"notes": {
"type": "String",
"required": false
},
"assignedTo": {
"type": "Pointer",
"targetClass": "_User",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "Activity",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"type": {
"type": "String",
"required": false
},
"subject": {
"type": "String",
"required": false
},
"description": {
"type": "String",
"required": false
},
"dueDate": {
"type": "Date",
"required": false
},
"completedAt": {
"type": "Date",
"required": false
},
"relatedTo": {
"type": "Pointer",
"required": false
},
"createdBy": {
"type": "Pointer",
"targetClass": "_User",
"required": false
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
},
{
"className": "_User",
"fields": {
"objectId": {
"type": "String",
"required": false
},
"username": {
"type": "String",
"required": true
},
"email": {
"type": "String",
"required": true
},
"password": {
"type": "String",
"required": true
},
"createdAt": {
"type": "Date",
"required": false
},
"updatedAt": {
"type": "Date",
"required": false
}
}
}
]
}Создайте с помощью AI Agent
Используйте Back4app AI Agent, чтобы создать реальное CRM приложение из этого шаблона: он создаст фронтенд, бэкенд (эту схему, аутентификацию и API) и развернет его — без ручной настройки. Подсказка ниже описывает этот стек CRM, чтобы Агент мог сгенерировать готовое к производству приложение за один раз.
Создайте приложение CRM на Back4app с этой точной схемой и поведением. Схема: 1. _Пользователь (используйте встроенный Back4app): имя пользователя (Строка, обязательно), электронная почта (Строка, обязательно), пароль (Строка, обязательно); objectId, createdAt, updatedAt (система). 2. Компания: название (Строка, обязательно), веб-сайт (Строка), отрасль (Строка), адрес (Строка), заметки (Строка), создано (Указатель на _Пользователь); objectId, createdAt, updatedAt (система). 3. Контакт: имя (Строка, обязательно), электронная почта (Строка), телефон (Строка), компания (Указатель на Компанию), заметки (Строка), создано (Указатель на _Пользователь); objectId, createdAt, updatedAt (система). 4. Сделка: название (Строка, обязательно), сумма (Число), стадия (Строка; например, лид, квалифицированный, предложение, переговоры, выиграно, проиграно), контакт (Указатель на Контакт), компания (Указатель на Компанию), ожидаемая дата закрытия (Дата), заметки (Строка), назначено (Указатель на _Пользователь); objectId, createdAt, updatedAt (система). 5. Активность: тип (Строка; например, звонок, электронная почта, встреча, заметка), тема (Строка), описание (Строка), срок (Дата), завершено (Дата), связано с (Указатель на Контакт или Сделку), создано (Указатель на _Пользователь); objectId, createdAt, updatedAt (система). Безопасность: - Установите ACL, чтобы только аутентифицированные пользователи могли получать доступ к данным; используйте правила на основе ролей или владельца, где это уместно (например, назначено, создано). - Используйте разрешения на уровне класса, чтобы только аутентифицированные пользователи могли создавать/читать/обновлять/удалять эти классы. Аутентификация: - Регистрация (имя пользователя, электронная почта, пароль) и вход; поддержка выхода/сессии. Поведение: - Полный CRUD для Компании, Контакта, Сделки и Активности. - Список сделок с фильтром по стадии и сортировкой по ожидаемой дате закрытия или updatedAt (вид воронки). - Список активностей по связанным с (Контакт или Сделка). - Опционально: обновления в реальном времени Live Queries для Сделки и Активности для обновлений панели управления/воронки. - Опционально: оффлайн-фиксация для мобильных устройств (Контакты, Сделки, Активности). Доставка: - Создайте приложение Back4app с вышеуказанной схемой, ACL и любым необходимым облачным кодом. - Сгенерируйте фронтенд и подключите его к этому бэкенду; разверните, чтобы приложение работало от начала до конца.
Кредитная карта не требуется
API Playground
Попробуйте REST и GraphQL конечные точки для схемы CRM. Ответы из приведенных выше примерных данных — учетная запись Back4app не требуется.
Заголовки
{
"X-Parse-Application-Id": "YOUR_APP_ID",
"X-Parse-REST-API-Key": "YOUR_REST_API_KEY"
}Использование этого бэкенда с REST API
Подключитесь к бэкенду Back4app через стандартные HTTP-запросы.
Получите API-учётные данные
После создания приложения в Back4app найдите Application ID и REST API Key в Настройки приложения → Безопасность и ключи. Эти заголовки нужны для всех запросов.
# Required headers for every request
X-Parse-Application-Id: YOUR_APP_ID
X-Parse-REST-API-Key: YOUR_REST_API_KEYСоздать контакт
curl -X POST \
-H "X-Parse-Application-Id: YOUR_APP_ID" \
-H "X-Parse-REST-API-Key: YOUR_REST_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Jane Doe","email":"[email protected]","phone":"+1234567890"}' \
https://parseapi.back4app.com/classes/ContactСписок контактов или сделок
curl -X GET \
-H "X-Parse-Application-Id: YOUR_APP_ID" \
-H "X-Parse-REST-API-Key: YOUR_REST_API_KEY" \
https://parseapi.back4app.com/classes/ContactОбновить сделку
curl -X PUT \
-H "X-Parse-Application-Id: YOUR_APP_ID" \
-H "X-Parse-REST-API-Key: YOUR_REST_API_KEY" \
-H "Content-Type: application/json" \
-d '{"done":true}' \
https://parseapi.back4app.com/classes/Deal/OBJECT_IDУдалить сделку
curl -X DELETE \
-H "X-Parse-Application-Id: YOUR_APP_ID" \
-H "X-Parse-REST-API-Key: YOUR_REST_API_KEY" \
https://parseapi.back4app.com/classes/Deal/OBJECT_IDЧасто задаваемые вопросы
Распространенные вопросы о шаблоне бэкенда CRM приложения.
Готовы создать свое CRM-приложение?
Начните свой проект REST API за считанные минуты. Кредитная карта не требуется.