Modelo REST API

Modelo de Backend para App de CRM
REST API — Guia de Schema, API e IA

Um schema de backend de REST API CRM pronto para produção e Starter Kit na Back4app: Contato, Empresa, Negócio, Atividade, estágios do pipeline, diagrama ER, dicionário de dados, schema JSON, playground de API e um prompt de Agente de IA com um clique para implantar em minutos.

Principais Conclusões

Nesta página você obtém um schema de CRM pronto para produção, um prompt de IA com um clique e código REST API passo a passo — para que você possa lançar um app de CRM sem construir o backend.

  1. Implante em minutosCole o prompt do Agente de IA e obtenha um aplicativo em funcionamento com contatos, empresas, negócios e pipeline.
  2. Seguro por padrãoACLs e acesso baseado em funções para que os usuários vejam apenas seus negócios e dados atribuídos.
  3. REST API-nativo SDKObjetos tipados, async/await, fixação offline e Live Queries para atualizações de pipeline.
  4. REST + GraphQLAmbas as APIs geradas automaticamente; filtre negócios por estágio, liste atividades por relacionado a.
  5. Cinco classes_Usuário (embutido), Empresa, Contato, Negócio (pipeline), Atividade (tarefas/eventos).

O que é o modelo de backend CRM da REST API?

Um backend CRM com foco em REST na Back4app: GET/POST/PUT/DELETE padrão em /classes/Contato, /classes/Negócio, e endpoints relacionados. Use X-Parse-Session-Token para autenticação e where/order para consultas de pipeline. Integre de qualquer stack — móvel, web ou lado do servidor — com códigos de status claros e payloads JSON. Nenhum GraphQL ou SDK necessário.

Melhor para:

Equipes de vendasConstrutores de CRMPrototipagem rápidaRepresentantes de campoLançamentos de MVPEquipes escolhendo um BaaS para CRM

Visão geral

Um REST API para CRM: GET /classes/Deal, POST /classes/Contact, PUT /classes/Deal/:id, e assim por diante. Back4app gera esses endpoints a partir do esquema; você envia X-Parse-Session-Token para autenticação e usa where e order para consultas de pipeline e lista.

O esquema (cinco classes: _User, Company, Contact, Deal, Activity) é o mesmo que para clientes SDK. Qualquer cliente HTTP pode se integrar — móvel, web ou servidor — com JSON padrão e códigos de status.

Recursos principais do CRM

REST API backend CRM: endpoints para Contato, Empresa, Negócio e Atividade com cabeçalhos de autenticação e códigos de status. Gerenciamento de pipeline e ACLs prontos para uso.

Gerenciamento de contatos

Armazene e gerencie contatos com nome, e-mail, telefone, empresa e notas. Ideal para aplicativos REST API.

Gestão de empresas

Rastreie empresas com nome, site, setor e endereço. Links para contatos e negócios.

Pipeline de negócios

Pipeline de vendas com etapas, valor, data de fechamento esperada e atribuição. Construído para backends REST API.

Rastreamento de atividades

Registre chamadas, e-mails, reuniões e notas vinculadas a contatos e negócios. Funciona com o SDK REST API.

Usuário e permissões

Modelo de usuário embutido e referências para propriedade e atribuição. ACLs prontas para uso para REST API.

Diagrama ER

Diagrama de Entidade-Relacionamento para o modelo de dados do aplicativo REST API CRM.

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"
Carregando diagrama…
Ver fonte do diagrama
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"

Fluxo de Integração

Sequência Auth-to-CRUD: como seu aplicativo REST API se comunica com Back4app — login, depois consulta contatos e negócios, atualiza o pipeline.

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
Carregando diagrama…
Ver fonte do diagrama
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

Dicionário de Dados

Referência completa de campos para cada classe no esquema.

Contact

CampoTipoDescriçãoObrigatório
objectIdStringAuto-generated unique identifierautomático
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 timestampautomático
updatedAtDateAuto-generated last-update timestampautomático

Company

CampoTipoDescriçãoObrigatório
objectIdStringAuto-generated unique identifierautomático
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 timestampautomático
updatedAtDateAuto-generated last-update timestampautomático

Deal

CampoTipoDescriçãoObrigatório
objectIdStringAuto-generated unique identifierautomático
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 timestampautomático
updatedAtDateAuto-generated last-update timestampautomático

Activity

CampoTipoDescriçãoObrigatório
objectIdStringAuto-generated unique identifierautomático
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 timestampautomático
updatedAtDateAuto-generated last-update timestampautomático

_User

CampoTipoDescriçãoObrigatório
objectIdStringAuto-generated unique identifierautomático
usernameStringLogin username
emailStringEmail address
passwordStringHashed password (write-only)
createdAtDateAuto-generated creation timestampautomático
updatedAtDateAuto-generated last-update timestampautomático

Esquema (JSON)

Definição de esquema JSON bruto — copie e use em seu aplicativo Back4app ou importe via 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
        }
      }
    }
  ]
}

Construa com o Agente de IA

Use o Agente de IA Back4app para construir um aplicativo CRM real a partir deste modelo: ele criará o frontend, o backend (este esquema, autenticação e APIs) e fará a implantação — sem configuração manual. O prompt abaixo descreve esta pilha de CRM para que o Agente possa gerar um aplicativo pronto para produção de uma só vez.

Agente de IA Back4app
Pronto para construir
Crie um aplicativo CRM no Back4app com este esquema e comportamento exatos.

Esquema:
1. _Usuário (use Back4app embutido): nome de usuário (String, obrigatório), email (String, obrigatório), senha (String, obrigatório); objectId, createdAt, updatedAt (sistema).
2. Empresa: nome (String, obrigatório), site (String), setor (String), endereço (String), notas (String), criadoPor (Ponteiro para _Usuário); objectId, createdAt, updatedAt (sistema).
3. Contato: nome (String, obrigatório), email (String), telefone (String), empresa (Ponteiro para Empresa), notas (String), criadoPor (Ponteiro para _Usuário); objectId, createdAt, updatedAt (sistema).
4. Negócio: título (String, obrigatório), valor (Número), estágio (String; por exemplo, lead, qualificado, proposta, negociação, ganho, perdido), contato (Ponteiro para Contato), empresa (Ponteiro para Empresa), dataFechamentoEsperada (Data), notas (String), atribuídoA (Ponteiro para _Usuário); objectId, createdAt, updatedAt (sistema).
5. Atividade: tipo (String; por exemplo, chamada, email, reunião, nota), assunto (String), descrição (String), dataVencimento (Data), concluídoEm (Data), relacionadoA (Ponteiro para Contato ou Negócio), criadoPor (Ponteiro para _Usuário); objectId, createdAt, updatedAt (sistema).

Segurança:
- Defina ACLs para que apenas usuários autenticados possam acessar os dados; use regras baseadas em função ou baseadas em proprietário onde apropriado (por exemplo, atribuídoA, criadoPor).
- Use Permissões em Nível de Classe para que apenas usuários autenticados possam criar/ler/atualizar/excluir essas classes.

Autenticação:
- Cadastro (nome de usuário, email, senha) e login; suporte para logout/sessão.

Comportamento:
- CRUD completo para Empresa, Contato, Negócio e Atividade.
- Liste negócios com filtro por estágio e ordene por dataFechamentoEsperada ou updatedAt (visualização de pipeline).
- Liste atividades por relacionadoA (Contato ou Negócio).
- Opcional: Live Queries em tempo real para Negócio e Atividade para atualizações de painel/pipeline.
- Opcional: fixação offline para mobile (Contatos, Negócios, Atividades).

Entregar:
- Crie o aplicativo Back4app com o esquema acima, ACLs e qualquer Cloud Code necessário.
- Gere o frontend e conecte-o a este backend; implante para que o aplicativo seja executável de ponta a ponta.

Nenhum cartão de crédito necessário

API Playground

Experimente os endpoints REST e GraphQL para o esquema CRM. Respostas dos dados de exemplo acima — nenhuma conta Back4app necessária.

GET
https://parseapi.back4app.com/classes/Contact
Cabeçalhos
{
  "X-Parse-Application-Id": "YOUR_APP_ID",
  "X-Parse-REST-API-Key": "YOUR_REST_API_KEY"
}

Usando este backend com REST API

Conecte-se ao seu backend Back4app usando requisições HTTP padrão.

1

Obtenha suas credenciais de API

Após criar seu aplicativo no Back4app, encontre seu ID do Aplicativo e Chave REST API em Configurações do App → Segurança e Chaves. Todas as solicitações requerem esses cabeçalhos.

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

Criar um contato

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

Listar contatos ou negócios

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

Atualizar um negócio

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

Excluir um negócio

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

Perguntas Frequentes

Perguntas comuns sobre o modelo de backend do aplicativo CRM.

O que é Back4app?
Por que usar Back4app para um CRM REST API?
Como faço para listar negócios por estágio com REST?
Como faço para criar uma atividade vinculada a um negócio?

Pronto para Construir Seu App de CRM?

Comece seu projeto REST API em minutos. Nenhum cartão de crédito necessário.