REST API Шаблон

Шаблон бэкенда CRM приложения
REST API — Схема, API и AI руководство

Готовая к производству REST API CRM схема бэкенда и Стартовый комплект на Back4app: Контакт, Компания, Сделка, Активность, этапы воронки, ER-диаграмма, словарь данных, JSON-схема, API-площадка и однонажатийный AI агент для развертывания за минуты.

Ключевые выводы

На этой странице вы получите готовую к производству схему CRM, однонажатийный AI-подсказку и пошаговый код REST API — так вы сможете выпустить приложение CRM без создания бэкенда.

  1. Разверните за считанные минутыВставьте подсказку AI Agent и получите работающее приложение с контактами, компаниями, сделками и конвейером.
  2. Безопасно по умолчаниюACL и доступ на основе ролей, чтобы пользователи видели только свои назначенные сделки и данные.
  3. REST API-родной SDKТипизированные объекты, async/await, оффлайн-фиксация и Live Queries для обновлений конвейера.
  4. REST + GraphQLОбе API сгенерированы автоматически; фильтруйте сделки по этапу, перечисляйте активности по relatedTo.
  5. Пять классов_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 не требуется.

Лучше всего для:

Команды продажСоздатели CRMБыстрое прототипированиеПолевые представителиЗапуски MVPКоманды выбирают BaaS для CRM

Обзор

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"
Загрузка диаграммы…
Просмотреть источник диаграммы
Mermaid
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
Загрузка диаграммы…
Просмотреть источник диаграммы
Mermaid
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

ПолеТипОписаниеОбязательно
objectIdStringAuto-generated unique identifierавто
nameStringFull name of the contact
emailStringEmail address
phoneStringPhone number
companyPointer<Company>Company this contact belongs to
notesStringFree-form notes
createdByPointer<_User>User who created this contact
createdAtDateAuto-generated creation timestampавто
updatedAtDateAuto-generated last-update timestampавто

Company

ПолеТипОписаниеОбязательно
objectIdStringAuto-generated unique identifierавто
nameStringCompany name
websiteStringCompany website URL
industryStringIndustry or sector
addressStringPhysical or mailing address
notesStringFree-form notes
createdByPointer<_User>User who created this company
createdAtDateAuto-generated creation timestampавто
updatedAtDateAuto-generated last-update timestampавто

Deal

ПолеТипОписаниеОбязательно
objectIdStringAuto-generated unique identifierавто
titleStringDeal title or name
amountNumberDeal value or amount
stageStringPipeline stage (e.g. lead, qualified, proposal, won, lost)
contactPointer<Contact>Primary contact for this deal
companyPointer<Company>Company associated with this deal
expectedCloseDateDateExpected close date
notesStringFree-form notes
assignedToPointer<_User>User assigned to this deal
createdAtDateAuto-generated creation timestampавто
updatedAtDateAuto-generated last-update timestampавто

Activity

ПолеТипОписаниеОбязательно
objectIdStringAuto-generated unique identifierавто
typeStringActivity type (call, email, meeting, note)
subjectStringSubject or title
descriptionStringDescription or body
dueDateDateDue date
completedAtDateWhen the activity was completed
relatedToPointerPointer to Contact or Deal
createdByPointer<_User>User who created this activity
createdAtDateAuto-generated creation timestampавто
updatedAtDateAuto-generated last-update timestampавто

_User

ПолеТипОписаниеОбязательно
objectIdStringAuto-generated unique identifierавто
usernameStringLogin username
emailStringEmail address
passwordStringHashed password (write-only)
createdAtDateAuto-generated creation timestampавто
updatedAtDateAuto-generated last-update timestampавто

Схема (JSON)

Сырая определение схемы JSON — скопируйте и используйте в вашем Back4app приложении или импортируйте через API.

JSON
{
  "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, чтобы Агент мог сгенерировать готовое к производству приложение за один раз.

Back4app AI Agent
Готовы к созданию
Создайте приложение 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 не требуется.

GET
https://parseapi.back4app.com/classes/Contact
Заголовки
{
  "X-Parse-Application-Id": "YOUR_APP_ID",
  "X-Parse-REST-API-Key": "YOUR_REST_API_KEY"
}

Использование этого бэкенда с REST API

Подключитесь к бэкенду Back4app через стандартные HTTP-запросы.

1

Получите API-учётные данные

После создания приложения в Back4app найдите Application ID и REST API Key в Настройки приложения → Безопасность и ключи. Эти заголовки нужны для всех запросов.

Bash
# Required headers for every request
X-Parse-Application-Id: YOUR_APP_ID
X-Parse-REST-API-Key: YOUR_REST_API_KEY
2

Создать контакт

Bash
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
3

Список контактов или сделок

Bash
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
4

Обновить сделку

Bash
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
5

Удалить сделку

Bash
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 приложения.

Что такое Back4app?
Почему использовать Back4app для CRM REST API?
Как мне перечислить сделки по этапу с REST?
Как мне создать активность, связанную со сделкой?

Готовы создать свое CRM-приложение?

Начните свой проект REST API за считанные минуты. Кредитная карта не требуется.