Autenticação
Toda requisição é feita por POST para a URL base, com o corpo em JSON contendo o campoaction. A autenticação usa a chave de API no headerX-API-Key. Cada chave acessa somente os dados do estabelecimento que a criou.
Headers obrigatórios
Content-Type: application/jsonX-API-Key: opn_...Gere sua chave em Configurações → API dentro do painel do estabelecimento. A chave é exibida uma única vez.
curl -X POST https://opinara.com.br/functions/integrationApi \
-H "Content-Type: application/json" \
-H "X-API-Key: opn_1a2b3c4d5e6f7a8b9c0d1e2f" \
-d '{
"action": "get_establishment"
}'/functions/integrationApiDados do estabelecimento
Retorna as informações do estabelecimento vinculado à chave de API, incluindo os links públicos de avaliação (geral, setores e pessoas) e a imagem do QR Code do link geral.
"get_establishment"curl -X POST https://opinara.com.br/functions/integrationApi \
-H "Content-Type: application/json" \
-H "X-API-Key: SUA_CHAVE" \
-d '{
"action": "get_establishment"
}'{
"ok": true,
"establishment": {
"id": "6ad27e7f9cff0e69825bf912",
"name": "Estabelecimento Exemplo",
"slug": "estabelecimento-exemplo",
"logo_url": null,
"evaluation_method": "nps",
"status": "active",
"evaluation_links": {
"general": "https://opinara.com.br/avaliar/estabelecimento/estabelecimento-exemplo/geral",
"sectors": "https://opinara.com.br/avaliar/estabelecimento/estabelecimento-exemplo/setores",
"people": "https://opinara.com.br/avaliar/estabelecimento/estabelecimento-exemplo/pessoas",
"products": "https://opinara.com.br/avaliar/estabelecimento/estabelecimento-exemplo/produtos"
},
"general_qr_code_url": "https://api.qrserver.com/v1/create-qr-code/?size=600x600&ecc=H&data=https%3A%2F%2Fopinara.com.br%2Favaliar%2Festabelecimento%2Festabelecimento-exemplo%2Fgeral"
}
}Endpoint: https://opinara.com.br/functions/integrationApi
/functions/integrationApiFuncionários ativos
Lista todos os funcionários ativos do estabelecimento, ordenados por nome, com o link público de avaliação e a imagem do QR Code de cada um.
"list_employees"curl -X POST https://opinara.com.br/functions/integrationApi \
-H "Content-Type: application/json" \
-H "X-API-Key: SUA_CHAVE" \
-d '{
"action": "list_employees"
}'{
"ok": true,
"employees": [
{
"id": "6ad27e7fa6a30989eadfa50c",
"full_name": "Maria Souza",
"role": "Recepção",
"unit": "Unidade Centro",
"slug": "maria-souza",
"qr_code_id": "qr_8f21c",
"evaluation_url": "https://opinara.com.br/avaliar/estabelecimento/estabelecimento-exemplo/pessoa/maria-souza",
"qr_code_url": "https://api.qrserver.com/v1/create-qr-code/?size=600x600&ecc=H&data=https%3A%2F%2Fopinara.com.br%2Favaliar%2Festabelecimento%2Festabelecimento-exemplo%2Fpessoa%2Fmaria-souza"
}
]
}Endpoint: https://opinara.com.br/functions/integrationApi
/functions/integrationApiSalas e setores ativos
Lista todas as salas/setores ativos do estabelecimento, ordenados por nome, com o link público de avaliação e a imagem do QR Code de cada um.
"list_rooms"curl -X POST https://opinara.com.br/functions/integrationApi \
-H "Content-Type: application/json" \
-H "X-API-Key: SUA_CHAVE" \
-d '{
"action": "list_rooms"
}'{
"ok": true,
"rooms": [
{
"id": "6ad27e7fa6a30989eadfa51a",
"name": "Recepção",
"unit": "Unidade Centro",
"slug": "recepcao",
"qr_code_id": "qr_3b77a",
"evaluation_url": "https://opinara.com.br/avaliar/estabelecimento/estabelecimento-exemplo/setor/recepcao",
"qr_code_url": "https://api.qrserver.com/v1/create-qr-code/?size=600x600&ecc=H&data=https%3A%2F%2Fopinara.com.br%2Favaliar%2Festabelecimento%2Festabelecimento-exemplo%2Fsetor%2Frecepcao"
}
]
}Endpoint: https://opinara.com.br/functions/integrationApi
/functions/integrationApiProdutos e serviços ativos
Lista todos os produtos e serviços ativos do estabelecimento, ordenados por nome, com o link público de avaliação e a imagem do QR Code de cada um.
"list_products"curl -X POST https://opinara.com.br/functions/integrationApi \
-H "Content-Type: application/json" \
-H "X-API-Key: SUA_CHAVE" \
-d '{
"action": "list_products"
}'{
"ok": true,
"products": [
{
"id": "6ad27e81c4a10b33f0a91d77",
"name": "Plano Dental",
"kind": "servico",
"unit": "Unidade Centro",
"slug": "plano-dental",
"qr_code_id": "qr_5d90f",
"evaluation_url": "https://opinara.com.br/avaliar/estabelecimento/estabelecimento-exemplo/produto/plano-dental",
"qr_code_url": "https://api.qrserver.com/v1/create-qr-code/?size=600x600&ecc=H&data=https%3A%2F%2Fopinara.com.br%2Favaliar%2Festabelecimento%2Festabelecimento-exemplo%2Fproduto%2Fplano-dental"
}
]
}Endpoint: https://opinara.com.br/functions/integrationApi
/functions/integrationApiCadastrar funcionário
Cria um funcionário no estabelecimento da chave. O link de avaliação e o QR Code são gerados automaticamente.
"create_employee"Parâmetros do corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
full_name | string | Sim | Nome completo. |
role | string | Sim | Cargo/função. |
unit | string | Sim | Unidade de trabalho. |
slug | string | Não | Link personalizado (gerado do nome quando omitido). |
photo_url | string | Não | URL da foto. |
status | string | Não | "active" (padrão) ou "inactive". |
curl -X POST https://opinara.com.br/functions/integrationApi \
-H "Content-Type: application/json" \
-H "X-API-Key: SUA_CHAVE" \
-d '{
"action": "create_employee",
"full_name": "Maria Souza",
"role": "Recepção",
"unit": "Unidade Centro"
}'{
"ok": true,
"employee": {
"id": "6ad27e7fa6a30989eadfa50c",
"full_name": "Maria Souza",
"role": "Recepção",
"unit": "Unidade Centro",
"slug": "maria-souza",
"status": "active",
"evaluation_url": "https://opinara.com.br/avaliar/estabelecimento/estabelecimento-exemplo/pessoa/maria-souza"
}
}Endpoint: https://opinara.com.br/functions/integrationApi
/functions/integrationApiEditar funcionário
Atualiza os dados de um funcionário do estabelecimento da chave.
"update_employee"Parâmetros do corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string | Sim | ID do funcionário. |
full_name | string | Não | Nome completo. |
role | string | Não | Cargo/função. |
unit | string | Não | Unidade de trabalho. |
slug | string | Não | Link personalizado de avaliação. |
photo_url | string | Não | URL da foto. |
status | string | Não | "active" ou "inactive". |
curl -X POST https://opinara.com.br/functions/integrationApi \
-H "Content-Type: application/json" \
-H "X-API-Key: SUA_CHAVE" \
-d '{
"action": "update_employee",
"id": "6ad27e7fa6a30989eadfa50c",
"role": "Coordenação",
"status": "inactive"
}'{
"ok": true,
"employee": {
"id": "6ad27e7fa6a30989eadfa50c",
"full_name": "Maria Souza",
"role": "Coordenação",
"status": "inactive",
"evaluation_url": "https://opinara.com.br/avaliar/estabelecimento/estabelecimento-exemplo/pessoa/maria-souza"
}
}Endpoint: https://opinara.com.br/functions/integrationApi
/functions/integrationApiCadastrar sala/setor
Cria uma sala ou setor no estabelecimento da chave. O link de avaliação e o QR Code são gerados automaticamente.
"create_room"Parâmetros do corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Nome da sala/setor. |
unit | string | Sim | Unidade. |
slug | string | Não | Link personalizado (gerado do nome quando omitido). |
photo_url | string | Não | URL da foto. |
status | string | Não | "active" (padrão) ou "inactive". |
curl -X POST https://opinara.com.br/functions/integrationApi \
-H "Content-Type: application/json" \
-H "X-API-Key: SUA_CHAVE" \
-d '{
"action": "create_room",
"name": "Recepção",
"unit": "Unidade Centro"
}'{
"ok": true,
"room": {
"id": "6ad27e7fa6a30989eadfa51a",
"name": "Recepção",
"unit": "Unidade Centro",
"slug": "recepcao",
"status": "active",
"evaluation_url": "https://opinara.com.br/avaliar/estabelecimento/estabelecimento-exemplo/setor/recepcao"
}
}Endpoint: https://opinara.com.br/functions/integrationApi
/functions/integrationApiEditar sala/setor
Atualiza os dados de uma sala ou setor do estabelecimento da chave.
"update_room"Parâmetros do corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string | Sim | ID da sala/setor. |
name | string | Não | Nome da sala/setor. |
unit | string | Não | Unidade. |
slug | string | Não | Link personalizado de avaliação. |
photo_url | string | Não | URL da foto. |
status | string | Não | "active" ou "inactive". |
curl -X POST https://opinara.com.br/functions/integrationApi \
-H "Content-Type: application/json" \
-H "X-API-Key: SUA_CHAVE" \
-d '{
"action": "update_room",
"id": "6ad27e7fa6a30989eadfa51a",
"name": "Recepção Principal"
}'{
"ok": true,
"room": {
"id": "6ad27e7fa6a30989eadfa51a",
"name": "Recepção Principal",
"unit": "Unidade Centro",
"slug": "recepcao",
"evaluation_url": "https://opinara.com.br/avaliar/estabelecimento/estabelecimento-exemplo/setor/recepcao"
}
}Endpoint: https://opinara.com.br/functions/integrationApi
/functions/integrationApiCadastrar produto/serviço
Cria um produto ou serviço no estabelecimento da chave. O link de avaliação e o QR Code são gerados automaticamente.
"create_product"Parâmetros do corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Nome do produto ou serviço. |
unit | string | Sim | Unidade onde é oferecido. |
kind | string | Não | "produto" (padrão) ou "servico". |
slug | string | Não | Link personalizado (gerado do nome quando omitido). |
photo_url | string | Não | URL da foto. |
status | string | Não | "active" (padrão) ou "inactive". |
curl -X POST https://opinara.com.br/functions/integrationApi \
-H "Content-Type: application/json" \
-H "X-API-Key: SUA_CHAVE" \
-d '{
"action": "create_product",
"name": "Plano Dental",
"kind": "servico",
"unit": "Unidade Centro"
}'{
"ok": true,
"product": {
"id": "6ad27e81c4a10b33f0a91d77",
"name": "Plano Dental",
"kind": "servico",
"unit": "Unidade Centro",
"slug": "plano-dental",
"status": "active",
"evaluation_url": "https://opinara.com.br/avaliar/estabelecimento/estabelecimento-exemplo/produto/plano-dental"
}
}Endpoint: https://opinara.com.br/functions/integrationApi
/functions/integrationApiEditar produto/serviço
Atualiza os dados de um produto ou serviço do estabelecimento da chave.
"update_product"Parâmetros do corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string | Sim | ID do produto/serviço. |
name | string | Não | Nome do produto ou serviço. |
kind | string | Não | "produto" ou "servico". |
unit | string | Não | Unidade onde é oferecido. |
slug | string | Não | Link personalizado de avaliação. |
photo_url | string | Não | URL da foto. |
status | string | Não | "active" ou "inactive". |
curl -X POST https://opinara.com.br/functions/integrationApi \
-H "Content-Type: application/json" \
-H "X-API-Key: SUA_CHAVE" \
-d '{
"action": "update_product",
"id": "6ad27e81c4a10b33f0a91d77",
"name": "Plano Dental Premium",
"status": "inactive"
}'{
"ok": true,
"product": {
"id": "6ad27e81c4a10b33f0a91d77",
"name": "Plano Dental Premium",
"kind": "servico",
"status": "inactive",
"evaluation_url": "https://opinara.com.br/avaliar/estabelecimento/estabelecimento-exemplo/produto/plano-dental"
}
}Endpoint: https://opinara.com.br/functions/integrationApi
/functions/integrationApiAvaliações recebidas
Lista as avaliações do estabelecimento (funcionários, salas/setores e produtos/serviços), das mais recentes para as mais antigas. Use os filtros para recortes por período ou tipo de avaliado.
"list_evaluations"Parâmetros do corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
since | string (ISO) | Não | Data/hora mínima de criação, ex: "2026-01-01T00:00:00.000Z". |
limit | number | Não | Quantidade de registros (1 a 500). Padrão: 50. |
target_type | string | Não | "employee", "room" ou "product". |
curl -X POST https://opinara.com.br/functions/integrationApi \
-H "Content-Type: application/json" \
-H "X-API-Key: SUA_CHAVE" \
-d '{
"action": "list_evaluations",
"since": "2026-01-01T00:00:00.000Z",
"limit": 100,
"target_type": "employee"
}'{
"ok": true,
"evaluations": [
{
"id": "6ad27e80ea8d1f8cb50fb864",
"target_type": "employee",
"target_name": "Maria Souza",
"target_unit": "Unidade Centro",
"rating": "excellent",
"rating_value": 5,
"comment": "Atendimento excelente!",
"visitor_type": "patient",
"is_anonymous": true,
"created_date": "2026-02-14T13:22:05.000Z"
}
],
"has_more": false
}Endpoint: https://opinara.com.br/functions/integrationApi
/functions/integrationApiRegistrar uma avaliação
Cria uma nova avaliação para um funcionário, sala/setor ou produto/serviço do estabelecimento. Responde com 201 quando a avaliação é registrada.
"create_evaluation"Parâmetros do corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
target_type | string | Sim | "employee", "room" ou "product". |
target_id | string | Sim | ID do funcionário ou sala (obtido em list_employees / list_rooms). |
rating_value | number | Sim | Nota de 1 a 5 (5 = excelente, 1 = péssimo). |
comment | string | Não | Comentário do avaliador. |
is_anonymous | boolean | Não | Padrão: true. Se false, os dados de quem avaliou são gravados. |
visitor_name | string | Não | Nome do avaliador (apenas quando is_anonymous = false). |
visitor_phone | string | Não | Telefone do avaliador (apenas quando is_anonymous = false). |
visitor_type | string | Não | "patient" (cliente) ou "companion" (acompanhante). |
curl -X POST https://opinara.com.br/functions/integrationApi \
-H "Content-Type: application/json" \
-H "X-API-Key: SUA_CHAVE" \
-d '{
"action": "create_evaluation",
"target_type": "employee",
"target_id": "6ad27e7fa6a30989eadfa50c",
"rating_value": 5,
"comment": "Atendimento excelente!",
"visitor_type": "patient"
}'{
"ok": true,
"evaluation_id": "6ad27e80ea8d1f8cb50fb864"
}Endpoint: https://opinara.com.br/functions/integrationApi
/functions/integrationApiEstatísticas do período
Retorna o total de avaliações, a média geral e o desempenho por avaliado no período informado.
"get_stats"Parâmetros do corpo (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
days | number | Não | Período em dias (1 a 730). Padrão: 30. |
target_type | string | Não | Filtra a busca de nomes por "employee", "room" ou "product". |
curl -X POST https://opinara.com.br/functions/integrationApi \
-H "Content-Type: application/json" \
-H "X-API-Key: SUA_CHAVE" \
-d '{
"action": "get_stats",
"days": 30
}'{
"ok": true,
"period_days": 30,
"total_evaluations": 128,
"average_rating": 4.62,
"by_target": [
{
"target_id": "6ad27e7fa6a30989eadfa50c",
"target_name": "Maria Souza",
"target_unit": "Unidade Centro",
"count": 42,
"average": 4.81
}
]
}Endpoint: https://opinara.com.br/functions/integrationApi
Códigos de erro
Erros retornam { "ok": false, "error": "mensagem" }.
| Status | Descrição |
|---|---|
400 | Requisição inválida — ação inexistente ou parâmetros incorretos. |
401 | Chave de API ausente, inválida ou revogada. |
403 | Assinatura inativa — a API só responde enquanto o plano do estabelecimento estiver ativo. |
404 | Avaliado não encontrado neste estabelecimento. |
500 | Erro interno ao processar a requisição. |
{
"ok": false,
"error": "Chave de API inválida ou revogada"
}