Salta al contenuto principale
Developer portal

Un'unica APIper il condominioe tutto il resto

REST su ogni risorsa, webhook in tempo reale, spec OpenAPI. Collega contabilità, ticket, assemblee e fatturazione ai tuoi strumenti: commercialista, BI, automazioni su misura.

bash
$ curl amministra.pro/api/v1/condominiums \
    -H "Authorization: Bearer ap_live_…"
{
  "data": [
    { "id": "cond_7fa2",
      "nome": "Condominio Aurora",
      "unita": 24 },
  ],
  "total": 137
}

Bearer token,
niente altro

  1. 1
    Crea una API key

    Da Impostazioni, API. Scegli lo scope: sola lettura o lettura e scrittura.

  2. 2
    Identifica l’organization

    L'header X-Organization-Id lega ogni chiamata a una sola organization.

  3. 3
    Chiama gli endpoint

    Passa il token come Bearer nell'header Authorization di ogni request.

headers
Authorization: Bearer ap_live_xxxxxxxxxxxxxxxxxxxx
X-Organization-Id: org_xxxxxxxxxxxx

Ogni risorsa del gestionale

Endpoint sotto /api/v1, tutti scoped all'organization della tua API key.

  • GET/condominiumsCondomini gestiti
  • GET/condominiums/{id}/residentsAnagrafe condomini
  • GET/condominiums/{id}/unitsUnità immobiliari e millesimi
  • GET/condominiums/{id}/rateRate condominiali
  • GET/condominiums/{id}/expensesSpese condominiali
  • GET/condominiums/{id}/assembliesAssemblee condominiali
  • GET/condominiums/{id}/documentsDocumenti del condominio
  • POST/condominiums/{id}/maintenanceTicket manutenzione
  • GET/suppliersFornitori
  • GET/ems/eventsEventi e iscrizioni EMS

Rate limit predefinito 100 richieste al minuto per API key. Ogni risposta porta gli header X-RateLimit-Limit e X-RateLimit-Remaining.

Dalla prima request al deploy

Lista condomini, cURL
curl https://amministra.pro/api/v1/condominiums \
  -H "Authorization: Bearer ap_live_xxx" \
  -H "X-Organization-Id: org_xxx"
Crea ticket, Node.js
import fetch from 'node-fetch';

const res = await fetch(
  'https://amministra.pro/api/v1/condominiums/cond_xxx/maintenance',
  {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${process.env.AMP_API_KEY}`,
      'X-Organization-Id': process.env.AMP_ORG_ID,
    },
    body: JSON.stringify({
      titolo: 'Perdita acqua box 3',
      descrizione: 'Allagamento box auto interno 3',
      priorita: 'urgente',
      fornitoreId: 'forn_xxx',
    }),
  },
);

const ticket = await res.json();
console.log('Ticket creato:', ticket.id);
Webhook receiver, Express
import express from 'express';
import crypto from 'crypto';

const app = express();
app.use(express.raw({ type: 'application/json' }));

app.post('/amp-webhook', (req, res) => {
  // 1. Verifica la firma
  const signature = req.header('X-Webhook-Signature');
  const expected = crypto
    .createHmac('sha256', process.env.AMP_WEBHOOK_SECRET)
    .update(req.body)
    .digest('hex');
  if (signature !== expected) return res.status(401).send('Invalid signature');

  // 2. Gestisci l'evento
  const payload = JSON.parse(req.body.toString());
  switch (payload.event) {
    case 'payment.overdue':
      console.log('Rata scaduta:', payload.data);
      break;
    case 'ticket.created':
      console.log('Nuovo ticket:', payload.data);
      break;
  }

  res.status(200).send('ok');
});

app.listen(3000);
Spec OpenAPI 3.0

Importa lo schema completo in Postman, Insomnia o Bruno.

27 eventi,
in tempo reale

Configurali da Impostazioni, API e webhook. Ogni payload è firmato HMAC-SHA256 nell'header X-Webhook-Signature: verificalo sempre prima di processare.

payload
{
  "event": "payment.overdue",
  "timestamp": "2026-05-08T10:30:00Z",
  "data": {
    "rataId": "rata_xxx",
    "condominoId": "res_xxx",
    "condominoNome": "Mario Rossi",
    "importo": 450.00,
    "dataScadenza": "2026-05-01",
    "giorniRitardo": 7
  }
}
  • payment.received
    Pagamento registrato
  • payment.overdue
    Rata oltre la scadenza
  • ticket.created
    Nuovo ticket manutenzione
  • ticket.updated
    Ticket aggiornato
  • assembly.scheduled
    Assemblea convocata
  • assembly.completed
    Assemblea conclusa
  • document.uploaded
    Nuovo documento caricato
  • expense.created
    Spesa registrata
  • resident.created
    Nuovo condomino anagrafato
  • contatore.lettura
    Lettura contatore acquisita
  • comunicazione.inviata
    Comunicazione PEC o email inviata
  • esercizio.approved
    Bilancio approvato in assemblea
  • snapshot.created
    Snapshot contabile creato
  • parcellazione.generated
    Parcellazione generata
  • spid.login
    Accesso SPID effettuato
  • audit.critical
    Evento di audit critico
  • iot.alert
    Allerta da sensore IoT
  • condominio.created
    Nuovo condominio creato
  • condominio.updated
    Condominio aggiornato
  • ems.registration.created
    Iscrizione a evento creata
  • ems.registration.updated
    Iscrizione a evento aggiornata
  • ems.registration.cancelled
    Iscrizione a evento annullata
  • ems.checkin
    Check-in a evento registrato
  • ems.event.published
    Evento pubblicato
  • ems.event.updated
    Evento aggiornato
  • ems.event.archived
    Evento archiviato
  • ems.order.paid
    Ordine evento pagato

Integrazioni su misura?

Per scope speciali, partnership tecniche o un endpoint che ancora non trovi, scrivici. Rispondiamo agli sviluppatori, non ai ticket.