Info
Innehåll

Allmänt API: Åtgärdstyper

preauth

Fråga åtgärdstyp för att autentisera en användare preauth först. Med din begäran, skicka användarnamnet så får du information om huruvida användaren behöver logga in via lösenord och/eller 2Factor eller en omdirigering till tredje parts servrar (SAML/OAuth) är nödvändig.

Ingångsexempel:

{
  "action":     "preauth",
  "accessType": 0|1|2|...,
  "kname":      "...",     //Username  
  "api_key":    ""         //API-Key
}

Utgångsexempel:

{
  ...
  "data":
  {
    "sso_type":          0/1/2/3,
    "sso_redirect":      "https://...",
    "twofactor_type":     0/1/2/3,
    "twofactor_required": true|false
  }
}

Svaret innehåller följande information:

Fält Beskrivning
sso_type

Typ av enkel inloggning:

0: Ingen 2FA

1: LDAP

2: SAML

3: OAuth

sso_redirect URL för att omdirigera användaren till (används med SAML + OAuth)
twofactor_type

Typ av tvåfaktorsbehörighet

0: Ingen 2FA

1: OTP

2: E-post

3: SMS

twofactor_required Om en andra faktor krävs eller inte (alla tvåfaktortyper, förutom 0)

Obs: När a sso_redirect URL finns, du måste vidarebefordra användaren till SSO -slutpunkten för autentisering. När användaren kommer tillbaka kan du fortsätta med nästa autentiseringssteg.

Obs! I de fall e-post eller SMS används som tvåfaktorsautentisering skickar systemet automatiskt e-postmeddelandet/sms: et med föranmälan.

auth

Använd åtgärdstyp för att autentisera användaren auth. Med din begäran, skicka användarnamn och lösenord (och 2FA -kod om det behövs) så får du en autentiseringstoken som svar. Token kan sedan användas för att behandla efterföljande förfrågningar.

Ingångsexempel:

{
  "action":     "auth",
  "accessType": 0|1|2|...,
  "kname":      "...",     //Username
  "kpass":      "...",     //Password
  "2fa":        "...",     //optional
  "longlife":   0|1 ,      //optional
  "api_key":    ""         //optional
}

Utgångsexempel:

{
  ...
  "data":
  {
    "kmd":"token"
  }
}

Spara värdet som finns under kmd och skicka det i alla efterföljande samtal till API: et som inmatningsvärde kmd.

Observera: Vid tvåfaktorautentisering, samtalet till auth kommer att returneras i en felkod beroende på autentiseringsmetoden om 2fa skickades inte. Om så är fallet måste du visa en tvåfaktorautentiseringssida för användaren som matchar felkoden (t.ex. för att ange e-postkoden eller OTP). Använd token (kmd) som du fick och använder åtgärder verifyauth för att (åter-) skicka 2fa-koden.

verifiera

Handlingen verifyauth kan användas för att antingen verifiera om en token (kmd) är fortfarande giltig och/eller att skicka in en 2fa -kod för tvåfaktorsautentisering.

Ingångsexempel:

{
  "action":     "verifyauth",
  "accessType": 0|1|2|...,
  "token":      "...",     //Token from auth  
  "2fa":        "...",     //2fa code    
}

Utgångsexempel:

{
  ...
  "data":
  {
    "kmd":"token"
  }
}

Spara värdet som finns under kmd och skicka det i alla efterföljande samtal till API: et som inmatningsvärde kmd.

logout

Smakämnen logout åtgärd avslutar en befintlig session (utloggning).

Ingångsexempel:

{
  "action":     "logout",
  "accessType": 0|1|2|...,
  "token":      "...",     //Token from auth  
}

rättigheter

Åtgärdstyp rights kan användas för att få en översikt över modeller och åtgärder som användaren har rätt till åtkomst till.

Ingångsexempel:

{
  "action":     "rights",
  "accessType": 0|1|2|...,
  "token":      "..."
}

Utgångsexempel:

{
  ...
  "data":
  [
    {
      "model":   "User",
      "actions": ["get","list","update"]
    },
    {
      "model":   "Subaccount",
      "actions": ["get","list","update","create","delete","deleteinfo"]
    }
  ]
}

lista

Åtgärdstypen list kan användas för att begära en lista med poster av en specifik modell från databasen. Den här åtgärdstypen är avsedd att användas för att erbjuda en användaröversikt över objekt (snarare än att visa specifika detaljer).

Förväntat ingångsexempel:

{
  ... 
 "model":   "...",  
 "action":  "list",
 "filters": [...],      // Filters to apply, see description (optional)
 "limit":   100,        // Limit of output rows (optional)
 "offset":  0,          // Start index of first row (optional)
 "order":   "...",      // Column to sort (optional)
 "sort":    "asc|desc", // Sorting direction of output (optional) 
 "cols":    [...]       // If set, will output the named fields, otherwise a default set of fields will be shown
 //optional: "assoc": true // If set, returns and associative array instead of a data list
 //optional: "dataonly": true // If set, returns the data list only (no header information)
}

Utdataexempel på svar:

{
  "status":     "Success",
  "statuscode": 0,
  "msg":        "Erfolgreich",
  "model":      "Subaccount",
  "action":     "list",
  "data":       
  {
    "data":    
    [
      {
        "id":  "542",
        "row": 
        [
          "542",
          "aaa",
          "Aktiv"
        ]
      },
      {
        "id":  "543",
        "row": 
        [
          "543",
          "bbb",
          "Aktiv"
        ]
      }
    ],
    "head":    
    [
      {        
        "headline":     "ID",
        "colsort":      false,
        "colorder":     "intID",
        "colname":      "intID"
      },
      {
        "headlineType": "string",
        "headline":     "Nutzername",
        "colsort":      false,
        "colorder":     "strLogin",
        "colname":      "strLogin"
      },
      {
        "headlineType": "string",
        "headline":     "Status",
        "colsort":      false,
        "colorder":     "intStatus",
        "colname":      "intStatus"
      }
    ],
    "caption": "User",
    "count":   2,
    "total":   2
  }
}

Utdata består av en data array och motsvarande head array. Datamatrisen innehåller de rader som ska visas för användaren. Head array kommer att innehålla specifik rubrikinformation (t.ex. sortering, rubriktext och så vidare) för varje kolumn i tabellen.

Ovanstående exempeldata skulle resultera i att följande tabell visas:

Konverterade värden

För fält med typlista (fältundertyper 1, 2 och 12) kan du använda suffix :convert in cols egenskapen för begäran för att få innehållets läsbara värde istället för råvärdet (t.ex. namnet på en kolumn istället för ID). Om en kolumn med detta suffix hittas innehåller utdata kolumnen två gånger, en gång som råvärde och en gång som konverterat värde.

Förväntat ingångsexempel:

{
  ... 
 "model":   "Design",  
 "action":  "list",
 "cols":    ['strName', 'intPosition:convert']  
}

Utdataexempel på svar:

{
 ...
  "data":       
  {
    "data":    
    [
      {
        "id":  "542",
        "row": 
        [
          "myDesign",
          "3",
          "Center middle"
        ]
      },
      ...
    ],
    "head":    
    [
      {        
        "headline":     "name",
        "colsort":      false,
        "colorder":     "strName",
        "colname":      "strName"
      },
      {        
        "headline":     "Position",
        "colsort":      false,
        "colorder":     "intPosition",
        "colname":      "intPosition"
      },
      {        
        "headline":     "Position",
        "colsort":      false,
        "colorder":     "intPosition",
        "colname":      "intPosition:convert"
      }
    ],
   ...
  }
}

filter

Smakämnen filters egenskap i begäran JSON kan användas för att söka efter specifika objekt eller minska output-listan. De filters fastigheten består av en rad filterartiklar. Varje artikel är ett objekt med följande struktur:
{
"fieldname": "...", // Field the filter should apply to
"comparison": "...", // (optional) Comparison type, see description
"value" : "..." // Value to compare the field to
}

För att söka i alla fält, fältnamnet query kan användas.

Möjligt comparison värden är:

Jämförelsetyp Beskrivning
eql Likvärdig. Hitta rader där innehållet i fieldname är exakt samma som value. (Den här typen är standard om comparison används inte i objektet.)
lt Lägre än. Hitta rader där innehållet i fieldname är mindre än value.
gt Större än. Hitta rader där innehållet i fieldname är större än value.
lte Lägre än / lika. Hitta rader där innehållet i fieldname är mindre än value eller lika med value.
gte Större än / lika. Hitta rader där innehållet i fieldname är större än value eller lika med value.
like Innehåller. Hitta rader var value ingår i innehållet i fieldname (helt eller delvis).
in Finns i listan. Hitta rader där innehållet i fieldname är exakt samma som en av value. I detta fall value borde vara en matris.
is Är inget. Hitta rader där innehållet i fieldname is NULL.
isnot Är inte NULL. Hitta rader där innehållet i fieldname är inte NULL.

Exempelvis:

{
  ...
  "filters":
  [
    {
      "fieldname": "age",
      "comparison": "gte",
      "value" : 27
    },
    {
      "fieldname": "lastname",
      "comparison": "like",
      "value" : "man"
    }
  ]
}

... hittar rader där age är lika med eller större än 27 och lastname innehåller mannen (t.ex. Hofmann eller Superman eller Mandy)

skaffa sig

Åtgärdstypen get kan användas för att begära en eller flera poster av en specifik modell från databasen när ID: n för posterna redan är kända. Den avsedda användningen av denna åtgärdstyp är för att visa data i ett formulär för redigering. Därför kommer svaret också att ge detaljerad information om varje fält.

Förväntat ingångsexempel:

{
  ... 
 "model":   "...",  
 "action":  "get",
 "ids":     [...]  // Array of IDs
 }

Skicka ett tomt utbud av ids för att endast få fältdefinitionen. Detta kan hjälpa dig att skapa en ny post baserat på fältdefinitionen.

Utdataexempel på svar:

{
  "status":     "Success",
  "statuscode": 0,
  "msg":        "Erfolgreich",
  "model":      "Subaccount",
  "action":     "get",
  "data":       
  {
    "fields":     
    [
      {
        "fieldname":    "intID",
        "displayname":  "ID",
        "type":         2,
        "subtype":      8,
        "required":     true,
        "defaultvalue": null,
        "disabled":     false,
        "infotext":     false,
        "value":        "542",
        "displayvalue": "",
        "listkeys":     [],
        "listvalues":   []
      },
      {
        "fieldname":    "strLogin",
        "displayname":  "Nutzername",
        "type":         1,
        "subtype":      0,
        "required":     true,
        "defaultvalue": null,
        "disabled":     false,
        "infotext":     false,
        "value":        "aaa",
        "displayvalue": "aaa",
        "listkeys":     [],
        "listvalues":   []
      },
      {
        "fieldname":    "strPass",
        "displayname":  "Passwort",
        "type":         1,
        "subtype":      5,
        "required":     true,
        "defaultvalue": null,
        "disabled":     false,
        "infotext":     false,
        "value":        "%%unchanged%%",
        "displayvalue": "********",
        "listkeys":     [],
        "listvalues":   []
      },
      {
        "fieldname":    "intStatus",
        "displayname":  "Status",
        "type":         2,
        "subtype":      1,
        "required":     false,
        "defaultvalue": null,
        "disabled":     false,
        "infotext":     false,
        "value":        "1",
        "displayvalue": "Aktiv",
        "listkeys":     [ 0, 1 ],
        "listvalues":   [ "Inaktiv", "Aktiv" ]
      }
    ],
    "caption":    "User: aaa",
    "groups":     [],
    "ids":        [ 542 ],
    "canDelete":  true,
    "canSave":    true,
    "canSaveNew": true
  }
}

Ovanstående exempel kan resultera i en form som ser ut så här:

skapa

För att skapa nya entrees kan du använda åtgärdstypen create.

Förväntat ingångsexempel:

{
  "action":     "create",
  "accessType": 1,
  "model":      "Subaccount",
  "ids":        [],
  "data":       {
    "intID":     "0",    
    "strLogin":  "new User",
    "strPass":   "ABCabc123!",
    "intStatus": "1"
  }
}

Resultatet av en framgångsrik uppdatering motsvarar exemplet som ges för get åtgärdstyp. Outputexempel:

{
  "status":         "Success",
  "statuscode":     0,
  "msg":            "Erfolgreich",
  "model":          "Subaccount",
  "action":         "get",
  "previousAction": "create",
  "data":           
  {
    "fields":     [...],
    "caption":    "User: new User",
    "groups":     [],
    "subgroups":  [],
    "ids":        [ 544 ],
    "canDelete":  true,
    "canSave":    true,
    "canSaveNew": true
  }
}

Observera att create misslyckas om modellen med samma ID redan finns. Om du vill åsidosätta befintliga inställningar kan du skicka de två fälten insertIgnore (värde = 1) och / eller onDuplicateUpdate (värde = 1). Sändning insertIgnore kommer att be systemet att inte returnera ett fel om insatsen misslyckas. onDuplicateUpdate uppmanar systemet att uppdatera alla värden i händelse av ett befintligt objekt med samma ID.

uppdatering

För att ändra en eller flera befintliga entires kan du använda åtgärdstypen update.

Förväntat ingångsexempel:

{
  "action":     "update",
  "accessType": 1,
  "model":      "Subaccount",
  "ids":        [ 542 ],
  "data":       
  {
    "intID":     "542",
    "strLogin":  "aaa",
    "strPass":   "abcabc",
    "intStatus": "1"
  }  
}

Resultatet av en framgångsrik uppdatering motsvarar exemplet som ges för get åtgärdstyp. Outputexempel:

{
  "status":         "Success",
  "statuscode":     0,
  "msg":            "Erfolgreich",
  "model":          "Subaccount",
  "action":         "get",
  "previousAction": "update",
  "data":           
  {
    "fields":     [...],
    "caption":    "User: aaa",
    "groups":     [],
    "subgroups":  [],
    "ids":        [ 542 ],
    "canDelete":  true,
    "canSave":    true,
    "canSaveNew": true
  }
}

I händelse av ett uppdateringsfel svarar systemet med ett felmeddelande så här:

{
  "status": "Error",
  "statuscode": 113,
  "msg": "Update error, see error message. Field specific messages see response.data",
  "model": "Subaccount",
  "action": "update",
  "data": 
  {
    "strLogin": "Wert muss mindestens 6 Zeichen lang sein",
    "strPass":  "Wert muss Sonderzeichen beinhalten"
  }
}

radera

Åtgärdstypen delete kan användas för att radera en eller flera poster av en specifik modell från databasen när ID: n för posterna redan är kända.

Förväntat ingångsexempel:

{
  ... 
 "model":   "...",  
 "action":  "delete",
 "ids":     [...]  // Array of IDs
 }

Utdataexempel på svar:

{
  "status":         "Success",
  "statuscode":     0,
  "msg":            "Erfolgreich",
  "model":          "Subaccount",
  "action":         "create",
  "previousAction": "delete",
  "data":           
  {
    "fields":     [...],
    "caption":    "User: new User",
    "groups":     [],
    "subgroups":  [],
    "ids":        [  ],
    "canDelete":  true,
    "canSave":    true,
    "canSaveNew": true
  }
}
Tillbaka till toppen