KEPLIN Docs

GraphQL-API-et for modellen

Tabell-API-ene og GraphQL-skjemaet som genereres fra datamodellen — CRUD-operasjoner, filtre, sortering, paginering, totaler og enumer.

Hver app i Keplin serverer et GraphQL-API på sitt eget endepunkt. Skjemaet til det API-et skrives ikke for hånd: det genereres fra to kilder — API-ene du lager i builderen og appens datamodell. Tabellene i modellen blir GraphQL-typer med sine felt og relasjoner; enumene i modellen blir GraphQL-enumer; og et Tabell-API forvandler en tabell til komplette lese- og skriveoperasjoner, med filtre, sortering og paginering, uten at du skriver en eneste linje SQL.

Denne siden dekker endepunktet, Tabell-API-ene og spørrespråket de tilbyr klientene.

Endepunktet til appen

Alle operasjonene i en app serveres på ett enkelt GraphQL-endepunkt:

POST /api/graphql/<adressen-til-appen>

I eksempelappen, POST /api/graphql/gestao-clientes. Forespørselen er en JSON med query og variables, som i enhver GraphQL-tjeneste — fanen Dokumentasjon i hvert API gir deg eksempler klare til å kopieres. Når appen er publisert på en egen adresse, svarer den samme tjenesten også på /api/graphql på den adressen.

Hvem som kan kalle endepunktet:

Hvem kaller Hvordan de autentiseres Hva de ser
Skjermene i appen Økten til brukeren av appen (automatisk) Publiserte API-er
Eksterne systemer Headeren x-api-key — se API-nøkler Publiserte API-er innenfor nøkkelens scope
Den som bygger Økt på plattformen Publiserte API-er OG utkast (merket som utkast)
Anonyme Ingenting Bare offentlige API-er

Nota

Versjonene av appen teller også: en API-nøkkel og de anonyme forespørslene snakker alltid med hovedversjonen (eller med den publiserte versjonen for adressen som brukes); den som bygger, ser SIN arbeidsversjon. En nøkkel fanger aldri, ved en tilfeldighet, opp det en developer holder på å endre.

Lage et Tabell-API

  1. Lag et API (Ny API) med navnet som skal være basen for operasjonene — for eksempel contas.
  2. På fanen Bygg, seksjonen Pipeline, trykk på knappen Tabell. Tabell-blokken opptar hele pipelinen — den kan ikke kombineres med SQL-, HTTP- eller Skript-trinn.
  3. Velg tabellen i velgeren Velg tabell… — tabellene vises gruppert per datakilde, med søk på tabell- eller datakildenavn.
  4. Aktiver de Eksponerte handlingene og juster de Inkluderte feltene (se nedenfor).
  5. Lagre. For å publisere trengs valgt tabell og minst én aktiv handling.

Tabell-blokken i builderen, med tabellen valgt og handlingene eksponert.
Tabell-blokken i builderen, med tabellen valgt og handlingene eksponert.

Tabellvelgeren: datakilde → tabell, med søk.
Tabellvelgeren: datakilde → tabell, med søk.

Nota

Velgeren viser bare tabeller som er importert til datamodellen. Hvis den er tom, importer tabeller i fanen Modell på en datakilde først.

Eksponerte handlinger

Hver aktiv handling genererer en operasjon i skjemaet, med navnet utledet av basen — for API-et contas:

Handling Generert operasjon Hva den gjør
Select getContas (query) Liste med filtre/sortering/paginering. Har med seg countContas, totalen.
Insert addContas (mutation) Oppretter en rad.
Update updateContas (mutation) Oppdaterer en rad via primærnøkkelen — delvis: endrer bare det du sender.
Delete deleteContas (mutation) Sletter en rad via primærnøkkelen og returnerer true.

Linjen Offentlig tilgang (uten økt) styrer, handling for handling, hva de offentlige skjermene kan kalle — detaljer i Offentlige API-er.

Inkluderte felt

Treet Inkluderte felt definerer formen på svaret: fjern haken på feltene du ikke vil eksponere, og utvid navigasjonsfeltene for å inkludere relaterte entiteter — rekursivt, som i en visuell GraphQL-editor. I et API contas gjør en utvidelse av navigatoren contactos at klientene kan be om kontaktene til hver konto i samme kall.

Felttreet i et Tabell-API, med et navigasjonsfelt utvidet.
Felttreet i et Tabell-API, med et navigasjonsfelt utvidet.

Atenção

Med Insert eller Update aktivt tas de påkrevde feltene i tabellen (ikke-nullbare, uten automatisk verdi) alltid med — uten dem var det ikke mulig å opprette gyldige rader. Builderen viser dem avmerket og låst.

Lese data: filtre, sortering, paginering

Listespørringen godtar fire argumenter: where, order, take og skip. Et komplett eksempel i appen Kundehåndtering:

query {
  getContas(
    where: { cidade: { eq: "Lisboa" }, estado: { neq: "ARQUIVADA" } }
    order: [{ nome: ASC }]
    take: 20
    skip: 0
  ) {
    id
    nome
    cidade
    contactos {
      nome
      email
    }
  }
}

Argumentet where

Hvert filtrerbare felt godtar operatorer etter typen:

Feltets type Operatorer
Tekst (og enumer) eq, neq, contains, startsWith, endsWith, gt, gte, lt, lte, in, nin
Tall (Int, Float) eq, neq, gt, gte, lt, lte, in, nin
Boolean eq, neq
ID eq, neq, in, nin

Og to kombinatorer for sammensatte betingelser: and og or, som tar imot lister av filtre.

where: {
  or: [
    { cidade: { eq: "Lisboa" } }
    { cidade: { eq: "Porto" } }
  ]
  valorAnual: { gte: 10000 }
}

Nyttige regler:

  • eq: null finner postene med feltet tomt; neq: null, de utfylte.
  • Datointervaller: datoer lagret som ISO-tekst (f.eks. 2026-08-11) sorterer alfabetisk slik de sorterer i tid, derfor holder gt/lt/gte/lte på tekst for å filtrere intervaller — dataCriacao: { gte: "2026-01-01", lt: "2026-07-01" }.
  • in tar imot en liste av verdier; nin utelukker den.
  • Filterverdiene sendes alltid som parametere til databasen — en contains med ondsinnet tekst er ingen risiko.

Sortere og paginere

  • order er en liste av { felt: ASC } eller { felt: DESC } — flere elementer sorterer på flere felt, i den gitte rekkefølgen.
  • take begrenser antall rader (tak på 10 000 per forespørsel) og skip hopper over de første N — sammen utgjør de den klassiske pagineringen.

Totalen: count

Hvert Tabell-API med Select aktiv får også count<Navn>, som returnerer totalt antall rader for det SAMME where. Det naturlige paret for en paginert tabell er å be om siden og totalen i én operasjon, med aliaser:

query {
  items: getContas(take: 10, skip: 0) { id nome }
  total: countContas
}

Med filter, send det samme where til begge feltene — totalen teller nøyaktig de radene listen ville returnert uten paginering.

Skrive data

  • addContas tar imot de inkluderte feltene som argumenter (de påkrevde i tabellen er påkrevde i mutationen). I noen databaser er svaret raden som ble opprettet; i andre, true — fanen Dokumentasjon i API-et viser den nøyaktige formen i ditt tilfelle.
  • updateContas tar imot primærnøkkelen (påkrevd) og de øvrige feltene som valgfrie — den oppdaterer bare det du sender — og returnerer den oppdaterte raden.
  • deleteContas tar imot primærnøkkelen og returnerer true.
mutation ($nome: String!, $cidade: String) {
  addContas(nome: $nome, cidade: $cidade) {
    id
    nome
  }
}

Nota

Tillatelsene i appen gjelder her, alltid: hvis brukeren av appen bare kan se kontoene til sitt eget team, returnerer — og teller — getContas og countContas bare dem, uansett hvem som kaller (skjerm, rapport eller arbeidsflyt).

Enumer

En enum eksponerer et fast sett med verdier i GraphQL-skjemaet — statusen til en konto, fasen til en salgsmulighet. De administreres på siden API-er, fanen Enumer:

  1. Trykk på Ny enum.
  2. Gi den et navn (f.eks. EstadoConta) og, hvis det hjelper, en beskrivelse.
  3. Legg til verdier med Legg til verdi — hver verdi har en identifikator (value), og valgfri etikett og farge. Fargen og etiketten brukes av skjermene; value er det som reiser i API-et.
  4. Lagre.

Siden API-er, fanen Enumer — appen Kundehåndtering har ingen enumer opprettet ennå.
Siden API-er, fanen Enumer — appen Kundehåndtering har ingen enumer opprettet ennå.

Lage en enum: verdier med identifikator, etikett og farge.
Lage en enum: verdier med identifikator, etikett og farge.

En enum brukes på to steder: som typen til et felt i modellen (feltet godtar da bare de verdiene, og i filtrene oppfører det seg som tekst) og som argumenttype i et API. I skjemaet ser klientene enumen med verdiene sine — autofullføringen i testmiljøet foreslår dem.

Atenção

Å slette en enum er permanent, og feltene/argumentene som brukte den, slutter å referere til den. Foretrekk å redigere verdiene fremfor å slette enumen.

Utforske skjemaet i GraphiQL

Fanen Test i ethvert API inkluderer GraphiQL — det interaktive miljøet for appens endepunkt. Du skriver operasjonen til venstre, kjører, og ser svaret til høyre; autofullføringen kjenner hele skjemaet, Tabell-operasjoner inkludert. Knappen Åpne i vindu gir deg det samme miljøet i fullskjerm.

GraphiQL på fanen Test, med listespørringen klar til å kjøres.
GraphiQL på fanen Test, med listespørringen klar til å kjøres.

Siden du er autentisert på plattformen, kjører GraphiQL som en klient, men ser også utkastene — hver operasjon i utkast vises med beskrivelsen «UTKAST» i skjemadokumentasjonen. Og den svarer over din arbeidsversjon: det du designer, er det du tester.

Hvorfor kan jeg ikke…?

  • Hvorfor ser jeg ikke operasjonen getContas utenfra? Enten er API-et i utkast (publiser det), eller handlingen Select er ikke aktiv, eller nøkkelen din har ikke det endepunktet i sitt scope.
  • Hvorfor vises ikke et felt i svaret? Det er ikke avmerket i Inkluderte felt — klientene kan bare velge det API-et inkluderer.
  • Hvorfor returnerer addContas en true i stedet for raden? Det avhenger av databasen bak tabellen. Når du alltid trenger raden, følg opp med en getContas filtrert på nøkkelen.
  • Hvorfor endret skjemaet seg uten at jeg rørte API-ene? Skjemaet genereres fra modellen: å importere nye kolonner, endre en enum eller deaktivere en entitet gjenspeiles i API-et ved neste kall.