Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

profacto bietet einen token-gesicherten Zugriff auf ausgewählte Tabellen und Felder mit sehr flexibler Architektur. Bei Wünschen für zusätzliche Tabellen, API-Sets oder als externer Entwickler sprich uns gerne an. 

Inhalt

Lizenz

...

profacto bietet einen token-gesicherten Zugriff auf ausgewählte Tabellen und Felder mit sehr flexibler Architektur. Bei Wünschen für zusätzliche Tabellen, API-Sets oder als externer Entwickler sprich uns gerne an. 

Inhalt

Lizenz

  • Ein API-Access beinhaltet einen parallelen Zugriff je API-Token + IP-Adress-Kombination für ein Zeitfenster von 15 Minuten ab dem erstem Aufruf.
  • Jeder neue Aufruf innerhalb dieses Zeitfenster verlängert die Nutzungsphase dieses API-Accesses um weitere 15 Minuten.
  • Je profacto Lizenz (exkl. TZE-Clients) ist ein freier Zugriff bereits integriert. In profacto SmallBusiness ist die API für die Zeiterfassung und Integration (s.u.) reduziert - Sonderfall ist die Craftboxx-Anbindung.
  • Zusätzlich erhält jede profacto Lizenz (inkl. Small Business, StartUp) einen parallelen OTA-Integration Zugriff, der wie ein zweckbestimmter API-Zugriff ebenso berechnet wird.
  • Weitere API-Accesses (auch für die OTA-Integration) können ab profacto 2021 für profacto (exkl. StartUp) separat erworben werden. Bis dahin wird kein erweitertes Entgelt erhoben, selbst wenn man mehr Zugänge nutzen möchte.

...

Sobald man das Limit der Lizenzen erreicht, wird der Aufruf umgeleitet. Man erhält je nach Aufruf der eigentlichen Zielseite eine Webseite mit weiteren Infos

...

  • Symbole zum Vergleichen von Attribut und Value. Es gibt folgende Symbole:

    VergleichSymbol(e)Kommentar
    Ist gleich=, ==Erhält passende Daten, unterstützt den Joker @, berücksichtigt weder Groß- und Kleinschreibung noch diakritische Zeichen.

    ===, ISErhält passende Daten, bewertet @ als Standardzeichen und nicht als Joker, berücksichtigt weder Groß- und Kleinschreibung noch diakritische Zeichen.
    Ungleich zu#, !=unterstützt den Joker (@)

    !==, IS NOTbewertet @ als Standardzeichen und nicht als Joker
    Kleiner als<
    Größer als>
    Kleiner als oder gleich<=
    Größer als oder gleich>=
    Enthalten inINErhält Daten, die mit mindestens einem Wert in einer Collection bzw. einem Satz Werte übereinstimmt
    Nicht enthalten in einer AnweisungNOTKlammern sind zwingend, wenn NOT vor einer Anweisung mit mehreren Operatoren verwendet wird
    Enthält Schlüsselwort%Schlüsselwörter lassen sich in Attributen vom Typ String oder Bild verwenden


  • Value: Wert zum Vergleichen mit dem aktuellen Wert der Eigenschaft. 
    Für eine Suche nach einem String innerhalb eines anderen String (eine Suche "Enthalten in") verwenden Sie den Joker (@) in value, um den zu suchenden String zu isolieren, zum Beispiel: "@Smith@".
    Für numerische Werte dient Punkt als Dezimaltrenner. Datumsangeben müssen im Format "YYYY-MM-DD" sein.
    Bei einer Suche mit einem IN Vergleichsoperator muss value eine Collection sein bzw. Werte, die zum Typ des Attributspfads zwischen eckigen Klammern [] passen, getrennt durch Kommas (bei Strings müssen Anführungszeichen " mit "\" abschließen).
  • LogicalOperator: verbindet mehrere Bedingungen in der Suche (optional). Es gibt folgende logische Operatoren (Sie können Name oder Symbol übergeben):

    KonjunktionSymbol(e)
    AND&, &&, and
    OR|, ||, or


  • order by Attribut: Sie können eine Anweisung order by Attribute in der Suche hinzufügen, so dass die Ergebniswerte sortiert werden. Sie können mehrere Sortieranweisungen, durch Komma getrennt, verwenden, (z.B. order by Attribut1 desc, Attribut2 asc). Die Sortierung ist standardmäßig aufsteigend. Übergeben Sie 'desc' für absteigende Reihenfolge und 'asc' für aufsteigende Reihenfolge 

...

Die Namen aller Tabellen  und Felder in profacto können hier eingesehen werden. Für die verschiedenen put-Befehle wird auf jeweils eine Tabelle schreibend zugriffen. Bestimmte Felder dürfen nicht geschrieben werden, dies ist unten in der Dokumentation jeweils aufgeführt.

Link: Datenbankstruktur

Verhalten bei gesperrten Datensätzen

...

Beispiel Templates (api_put_*)

Image Added

Wir haben für das Testen der API-Methoden ein kleines Template-Paket auf GitHub bereitgestellt.

Zum schnellen Ausprobieren der Methode api_put_customer in der Kunden-API und der Methode api_put_project in der Projekt-API haben wir auf unserem ftp-Server Templates zugänglich gemacht.

Verhalten bei gesperrten Datensätzen

Versuchen Sie mit einem api_put_* Aufruf Daten zu verändern die gerade in Profacto geöffnet sind schlägt der Aufruf fehl.

...

{"success":false,"error":"Datensatz der Tabelle Kunden mit Schlüssel KundenNr:100019 ist gesperrt und kann nicht geschrieben werden.","processingTime":7575,"errorMsg":"Datensatz der Tabelle Kunden mit Schlüssel KundenNr:100019 ist gesperrt und kann nicht geschrieben werden."}

API-Methodenauflistung mit Beispielen

api_getapilist - Auflistung aller API's

Erforderliche Parameter: 

Token

Konkretes Beispiel:

http://meinServer:8080/4DAction/api_getapilist?token=5E05A427CD134432A28F2DAF11EC500E

In der JSON-Rückmeldung wird eine Liste aller verfügbaren Schnittstellen im Feld 'APIList' zurückgegeben:

{"error":"","success":true,"APIList":["Integration","Zeiterfassung","APIPinger","Produktion","Kunden","Kontakte","Lieferanten","Artikel","Lager","Bestellung","Personal","Aktivitäten","Projekte","Dateien","extragroup"]}

api_put_contact - Ansprechpartner anlegen

Erforderliche Parameter: 

VorName, Name, TypNr, Typ

Ausgeschlossene Parameter:

PKUUID_90

Optionale Parameter:

Telefon, Telefax, response, update

Konkretes Beispiel:

http://meinserver:8080/4DAction/api_put_contact?token=5223EE4D186449B0BDBE9ED7EC53F747&VorName=Heinz&Name=Ruehmann&TypNr=_0573&Typ=1&Telefon=089&Telefax=0891

Zu Beachten ist, daß die TypNr je nach Ansprechpartner der KundenNr, LieferantenNr oder PersonalNr entsprechen sollte.

In der JSON-Rückmeldung haben Sie beispielhaft folgenden Inhalt:

{"success":true,"error":"","processingTime":6996,"errorMsg":""}

api_put_customer - Kundenanlage

Erforderliche Parameter: 

Name1, PLZ

Ausgeschlossene Parameter:

PKUUID_12

Konkretes Beispiel:

http://meinServer:8080/4DAction/api_put_customer?token=5E05A427CD134432A28F2DAF11EC500E&Name1=Schreinerei%20Meier&PLZ=48149&Strasse=Hauptstr.%201&response=true

In der JSON-Rückmeldung wird auch die neue vergebene Kundennummer rückgeliefert:

{"success":true,"wasUpdate":false,"mainKey":"n20-01170","processingTime":54,"errorMsg":""}

api_put_project - Projekt anlegen

Erforderliche Parameter: 

Bauvorhaben, Bezeichnung

Ausgeschlossene Parameter:

PKUUID_20

Optionale Parameter:

response - (true|false) bestimmt ob der API-Aufruf eine Response zurückgibt

textupdatemode - bestimmt wie Textbausteine für den gegebenen Kunden aktualisiert werden können

default: Standardtexte aus Voreinstellungen, customer: Texte wie im Kunden hinterlegt, none: Texte lassen

paymentupdatemode - bestimmt ob die Zahlungskonditionen des Projekts oder des Kunden maßgeblich sind

default: Zahlungsbedingungen mit den aus dem Kunden hinterlegten Werten überschreiben, none: Werte aus dem Projekt stehen lassen

update - (true|false) - bestimmt ob ein bestehender Datensatz aktualisiert wird, hierbei ist der zusätzliche Parameter AuftragsNr (ProjektNr e.g. PK-0003) zwingend erforderlich

Konkretes Beispiel:

http://meinServer:8080/4DAction/api_put_project?token=41356A67726F4D219330ED924AE68E63&AuftragsNr=S019&update=true&Bauvorhaben=Altbau&Bezeichnung=kleines%20Nebenprojekt&textupdatemode=0&paymentupdatemode=1&response=true

In der JSON-Rückmeldung wird auch die neue vergebene AuftragsNr zurückgeliefert:

{"success":true,"error":"","wasUpdate":false,"AuftragsNr":"S014","processingTime":7819,"errorMsg":""}

api_put_item - Artikel anlegen

Erforderliche Parameter: 

ArtikelTypenNr, Artikelgruppe

Ausgeschlossene Parameter:

PKUUID_21

Konkretes Beispiel:

http://meinServer:8080/4DAction/api_put_item?token=5E05A427CD134432A28F2DAF11EC500E&ArtikelTypenNr=FuzzyWuzzyOrigin&ArtikelGruppe=Zukaufteile

In der JSON-Rückmeldung wird auch die neue vergebene Kundennummer rückgeliefert:

{"success":true,"wasUpdate":false,"ArtikelTypNr":"FuzzyWuzzyOrigin","processingTime":54,"errorMsg":""}

api_put_time - erfasste Arbeitszeit in das System Einbuchen

Erforderliche Parameter: 

project, position, costsource, fromtime, totime

oder

project, position, costsource, fromtime, totaltime

Optionale Parameter:

date, pause, comment, feedback, response

Ausgeschlossene Parameter:

UUID, PersonalNr, BDEID

Konkretes Beispiel:

http://meinserver:8080/4DAction/api_put_time?response=JSON&token=41356A67726F4D219330ED924AE68E63&project=.GK&position=1&costsource=100&fromtime=06:00:00&totime=12:00:00&date=27.08.20&pause=00:00:00&comment=&feedback=false

Zu den Parametern:

  • project → entspricht der ProjektNr (String)
  • position → entspricht der Projekt-Position (Integer)
  • costsource → entspricht der Kostenstelle (Integer)
  • fromtime → entspricht der Startzeit des zu buchenden Eintrags im Format 'hh:mm:ss'
  • totime → entspricht der Endzeit des zu buchenden Eintrags im Format 'hh:mm:ss'
    (Nur verwenden wenn man den Parameter totaltime nicht nutzt)
  • totaltime → entspricht der Gesamtzeit des zu buchenden Eintrags im Format 'hh:mm:ss'
    (Nur verwenden wenn man den Parameter totime nicht nutzt)
  • date → entspricht dem Datum des zu buchenden Eintrags im Format 'dd.mm.yy'
    (Wir dieser Parameter weggelassen, verwendet Profacto das gegenwärtige Datum)
  • pause → entspricht der Gesamtzeit für die zu buchende Pause im Format 'hh:mm:ss'
    (Wird keine Pause angegeben, nimmt Profacto die vom Zeitmodell vorgeschlagenen Pausen)
  • comment → entspricht der Bemerkung als Zeichenkette (String)
  • feedback → entspricht Anforderung von Rückfragen als boolischer Wert (Boolean als String)
  • response → mögliche Werte sind 'HTML' und 'JSON'. Wird kein Wert angegeben erfolgt die Response in HTML

In der JSON-Rückmeldung wird auch die neue vergebene UUID zurückgeliefert:

{"success":true,"error":"","processingTime":1326,"errorMsg":"","recNum":885,"UUID":"3665FF277C1C4589AD07C075EA159314"}

api_put_bestellung - Bestellung anlegen

Erforderliche Parameter: 

Bezeichnung, Bauvorhaben

Ausgeschlossene Parameter:

PKUUID_104

Optionale Parameter:

BestellNr (nur bei update), Lieferant, Adr1, Adr2, Adr3, Adr4, Datum, Lieferdatum, Status, SkontoSatz, Frachtkosten, Kurzbez, vollstandig, Bestelldatum, Besteller, Bemerkung, LieferDatVorgab, AuftragsNr, VorText, NachText, RechnungsNr, LiefZugesagt, BestPreis, LieferPreis, LieferArt, AnfVorText, AnfNachText, LieferWoche, WahrungISO, LieferscheinNr, SkontoTage, FalligkeitTage, Rabatt, ABDatum, ABNr, AnsprechpartnerRecNum, Adr5, Adr6, StornoVorText, StornoNachText, StornoDatum, AufwandsKonto, StatusDatum, SuchFeld1, SuchFeld2, SuchFeld3, SuchFeld4, BestnrAlpha, UpdateDate, UpdateUser, isRahmenBestellung, isAbrufBestellung, RahmenBestellnr, isVorgabe, Berechnet, VollBerechnet, UStG13b, UStKlasse, LieferungProjektLieferadresse, SCVorlieferant, SCNachLieferant, VorgabeDatumFesthalten, IsGU, isBetriebsauftrag, MandantenKennung, AnfrageDatum, AngebotDatum, AngebotDatumWunsch, BestPreisRabattiert, LiefPreisRabattiert, Abschlag1Betrag, Abschlag2Betrag, Abschlag3Betrag, Abschlag4Betrag, Abschlag1Satz, Abschlag2Satz, Abschlag3Satz, Abschlag4Satz, EinbehaltAZ, EinbehaltSR, EinbehaltAllgemein, EinbehaltSRFaelligTage, EinbehaltAllgemeinText, GUBearbeitungStart, GUBearbeitungEnde, RabattAbsolut, IsRabattAbsolut, current_xUser, Absagedatum, Absagegrund, Bauabnahmedatum, isReklamation, GUBankbuergschaft, usePOBox, ViewProObject, ProjektBauvorhaben, ProjektKommission, response, update

Konkretes Beispiel:

http://meinserver:8080/4DAction/api_put_bestellung?token=C900BFE22DFF4B75917837006E247932&response=true&Bauvorhaben=Klettergerüst&Bezeichnung=Kinderspielplatz

In der JSON-Rückmeldung haben Sie beispielhaft folgenden Inhalt:

{"success":true,"error":"","wasUpdate":false,"BestellNr":130128,"processingTime":29210,"errorMsg":""}

api_put_bestellpos - Bestellposition anlegen

Erforderliche Parameter: 

BestellNr, LfdNr, BestellMenge

Ausgeschlossene Parameter:

PKUUID_105

Optionale Parameter:

ArtikelNr, LieferArtikelNr, LieferMenge, Einheit, Preis, Beschreibung, geliefert, LieferPreis, Rabatt, LieferRabatt, AuftragsNr, PositionsNr, LiefZugesagt, orgMenge, Lange, Breite, Dicke, Gebindegrosse, inKalkEinheit, KalkMenge, KalkEinheit, GewichtLiefME, WahrungISO, Suchfeld1, Suchfeld2, Suchfeld3, Suchfeld4, RecNum, ExtraBeschreibung, KontoAufwand, Lieferdatum, Skizze1, Skizze2, LieferterminVorgabe, Freigegeben, FreigegebenDurch, FreigegebenAm, Loeschbar, Bemerkung, DurchLieferzeit, UpdateDate, UpdateUser, Rahmenbestellnr, RechMenge, LieferantenNr, isHeadline, isBetriebsauftrag, beImperial, BestNichtZusammenfassen, Alternativ, Eventual, Lagerort, RegalNr, RegalEbene, RegalSpalte, LieferantDefault, Lieferadresstyp, LieferadressePAName, CreationDate, CreationUser, ArtikelGruppe, RecNumOriginal, response, update

Konkretes Beispiel:

http://meinserver:8080/4DAction/api_put_bestellpos?token=C900BFE22DFF4B75917837006E247932&response=true&BestellNr=130076&LfdNr=5&BestellMenge=2&ArtikelNr=10089&LieferArtikelNr=10023&BestellMenge=3&LieferMenge=4&Einheit=m&Preis=20&Beschreibung=TestPosition

Der Parameter LfdNr entspricht der Bestell-Position, das ist in der Regel eine fortlaufende Nummer die mit der 1 beginnt.

In der JSON-Rückmeldung haben Sie beispielhaft folgenden Inhalt:

{"success":true,"error":"","wasUpdate":false,"BestellNr":130076,"LfdNr":5,"processingTime":28821,"errorMsg":""}

api_put_projectpos - Projektposition anlegen

Erforderliche Parameter: 

AuftragsNr, PositionsNr, Anzahl

Optionale Parameter:

response, update ArtikelNr, Bezeichnung, Breite, Höhe, Tiefe, Einzelpreis, Rabatt, Gesamtpreis, Alt, DokumentNr, Status, Hopsasa, Suchfeld2, Suchfeld3, Suchfeld4

Konkretes Beispiel:

http://meinserver:8080/4DAction/api_put_projectpos?token=41356A67726F4D219330ED924AE68E63&response=true&AuftragsNr=08/15&PositionsNr=5&Anzahl=5

In der Response steht dann im Erfolgsfall die AuftragsNr und die PositionsNr wie übergeben:

{"success":true,"error":"","wasUpdate":false,"AuftragsNr":"08/15","PositionsNr":5,"processingTime":28575,"errorMsg":""}

api_time_getpositions - Projektpositionen abrufen

Erforderliche Parameter: 

Token, projectid

Konkretes Beispiel:

http://meinServer:8080/4DAction/api_time_getpositions?token=5E05A427CD134432A28F2DAF11EC500E&projectid=bb0664617357c9cd7d7ddb9d56d014fe

In der Rückmeldung enthaltenem JSON-Object wird der Tabellenname angeführt ("positions") in dem ein Array alle zu dem Projekt verfügbaren Positionen enthält im Format { "positonsnr": integer, "Bezeichnung": string}:

{"positions":[{"positionsnr":"1","bezeichnung":"Infomaterial Display X\r\rHochglanz weiß gemäß Entwurfskizze von Mies van der Rohe\r6 Flyerfäche\r4 Zeitschriften"},{"positionsnr":"2","bezeichnung":"Theke \r\rSockel mit indirekter LED-Beleuchtung\r3 PC-Arbeitsplätze\r2 Kassenzonen\rAudioguide-Wechselstation"}]}

api_time_getday - Gebuchte Zeit-Einträge für einen Tag abrufen

Erforderliche Parameter: 

Token

Optionale Parameter:

Date - Ist der Parameter Date nicht gesetzt, werden die Datensätze für den gegenwärtigen Tag ausgeliefert.

Konkretes Beispiel:

http://meinServer:8080/4DAction/api_time_getday?token=5E05A427CD134432A28F2DAF11EC500E&date=01.10.20

In der Rückmeldung enthaltenem JSON-Object wird der Tabellenname angeführt ("Zeiten") in dem ein Array alle zu dem Tag gebuchten Zeiterfassungs-Einträge enthält im Format:

{"AuftragsNr": Alphanum, "VonZeit": Integer[Sekunden], "BisZeit":Integer[Sekunden], "PositionsNr": Integer, "KSTNR": Integer, "GesamtZeit": Integer[Stunden], "Bemerkung": String,"Nachweis": Boolean, "FeedbackRequired": Boolean, "BisZeitIstPausenAnfang": Boolean, "VonZeitIstPausenEnde": Boolean, "Zeitart": String, "Pause": Float[Stunden]}

Response:

{"success":true,"error":"","zeiten":[{"AuftragsNr":"100019","VonZeit":21600,"BisZeit":43200,"PositionsNr":3,"KSTNR":200,"GesamtZeit":6,"Bemerkung":"","Nachweis":false,"FeedbackRequired":true,"BisZeitIstPausenAnfang":false,"VonZeitIstPausenEnde":false,"Zeitart":"B","Pause":0.5},{"AuftragsNr":"100019","VonZeit":43200,"BisZeit":64800,"PositionsNr":3,"KSTNR":400,"GesamtZeit":6,"Bemerkung":"","Nachweis":false,"FeedbackRequired":true,"BisZeitIstPausenAnfang":false,"VonZeitIstPausenEnde":false,"Zeitart":"B","Pause":0.5}],"processingTime":6,"errorMsg":"","procTime2":0}

api_getZeitModell - Zeitmodell für einen Mitarbeiter für einen Tag abrufen

Erforderliche Parameter: 

Token

Optionale Parameter:

Datum - Ist der Parameter Datum nicht gesetzt, wird das Zeitmodell für den gegenwärtigen Tag ausgeliefert.

Konkretes Beispiel:

http://meinServer:8080/4DAction/api_getZeitModell?token=41356A67726F4D219330ED924AE68E63&Datum=14.10.20

In der Rückmeldung enthaltenem JSON-Object wird der Wert "zeitmodell" aufgeführt und enthält in einem separaten Objekt die Kerndaten zu gegebenem Zeitmodell.

Response:

{"error":"","success":true,"zeitmodell":{"PersonalNr":"10","Name":"Krtek Maulwurf","Datum":"2020-10-13T22:00:00.000Z","PersUrlaubVerplantHHMM":0,"pers_ILEintritt":"12.08.04","pers_ILAustritt":"-","pers_ILUrlaubAnspruch":"160 h = 2.0 Tage","pers_ILUrlaubRest":"100 h = 1.2 Tage","pers_ILZeitmodell":"","pers_ILZeitmodellVon":"Von: jeher","pers_ILZeitmodellBis":"Bis: auf Weiteres","pers_ILMontag":"6:00 - 18:00","pers_ILMontagP1":"9:00 - 9:30","pers_ILMontagP2":"12:30 - 13:00","pers_ILDienstag":"6:00 - 18:00","pers_ILDienstagP1":"9:00 - 9:30","pers_ILDienstagP2":"12:30 - 13:00","pers_ILMittwoch":"6:00 - 18:00","pers_ILMittwochP1":"9:00 - 9:30","pers_ILMittwochP2":"12:30 - 13:00","pers_ILDonnerstag":"6:00 - 18:00","pers_ILDonnerstagP1":"9:00 - 9:30","pers_ILDonnerstagP2":"12:30 - 13:00","pers_ILFreitag":"6:00 - 16:00","pers_ILFreitagP1":"9:00 - 9:30","pers_ILFreitagP2":"12:30 - 13:00","pers_ILZeitmodellStdWoche":"40 Std./Wo","pers_ILZeitmodellStdWocheHHMM":144000,"zArbVon":21600,"zArbBis":64800,"zArbStd":8.5,"zPause1Von":32400,"zPause1Bis":34200,"zPause2Von":45000,"zPause2Bis":46800}}

Lagerbedarfsmeldung

api_newstockdemand?ArtikelID=ABC123 - die ArtikelID wird parallel zur ArtikelTypenNr erstellt.

...

Aufruf löst einen Bestellvorschlag des Artikels basierend auf den Mindest und Maximalbeständen aus. Sinnvollerweise nur für Artikel im Standardlagersortiment, und der Aufruf sollte über QRCode per Smartphone erfolgen, damit man als Rückmeldung auch sieht, ob es geklappt hat.

Zeiten erfassen mit api_time_start

Die API api_time_start gibt ein Webanwendung (WebZE) wieder mit der Zeiten in Profacto gebucht werden können. Der Mitarbeiter identifiziert sich anhand eines persönlichen und Aufgaben bezogenen Tokens.

...



Untergeordnete Seiten (Anzeige untergeordneter Seiten)

...