API-Dokumentation Vertragscheck

Informationen zur Integration des Vertragschecks zur automatischen Analyse von Arbeitsverträgen.

Stand: 03/22

Einführung

Die verlingo Vertragscheck-API ist nach den Prinzipien von REST aufgebaut. Es stehen mehrere Endpunkte zur Verfügung:

Alle Zugriffe erfolgen über HTTPS.

Wichtig: Ungesicherte HTTP-Anfragen nehmen wir aus Sicherheitsgründen nicht entgegen. Es werden nur HTTPS-Anfragen angenommen.

Authentifizierung

Jeder Nutzer unserer API erhält individuelle Zugangsdaten. Sollten Sie Interesse an einer Integration unseres Services haben, dann schicken Sie uns eine kurze Email an info@verlingo.de

API-Schlüssel

Diese Zugangsdaten geben Sie einfach per HTTP-Authorization Header als API-Schlüssel an.

HTTP-VERB: ("Authorization", IHR_API-Schlüssel)

HTTP Status-Codes

Im Folgenden finden Sie eine Liste der wichtigsten HTTP-Status-Codes, die die verlingo API ausgibt, und wie Sie diese interpretieren können. Im Allgemeinen stehen 200er-Codes für einen erfolgreichen Request, 400er für einen Fehler in den Request-Daten (zum Beispiel fehlt ein zwingend anzugebender Parameter) und 500er für einen Fehler auf unseren Servern.

CodeBedeutung
200 OKEine erfolgreiche Anfrage
400 Bad RequestLiegt meist an einem Syntax-Fehler im Request-Body
401 UnauthorizedFalsche oder fehlende Authentifizierung
404 Not FoundDie Ressource konnte nicht gefunden werden
406 Not AcceptableDas Format der Anfrage wird nicht unterstützt
417 Expectation FailedDie übermittelte Datei konnte nicht analysiert werden
500, 502, 503 Server ErrorServerfehler. Wiederholen Sie die Anfrage nach kurzer Zeit und melden Sie sich bei uns, falls der Fehler dauerhaft auftritt

Beispielanalyse

Es steht eine Beispielanalyse unter dem nachfolgenden Test-Endpunkt zur Verfügung

GET https://legal.verlingo.de/arbeitsvertrag/v1/beispielanalyse

Der Test-Endpunkt kann direkt ohne Authorization-Header und ohne speziellen Request-Body angesprochen werden und liefert eine Beispielantwort zurück ohne den Analyseprozess wirklich zu durchlaufen.


Vertragscheck

POST https://legal.verlingo.de/arbeitsvertrag/v1/analyse
Bitte beachten: Als Format verwenden wir JSON, dies muss mittels des Headers Content-Types (application/json) mit angegeben werden.

Request / Basis-Anfrage

http-Header:

{ 
  "Content-Type": "application/json"
  "Accept": "application/json"
  "Authorization": IHR_API-Schlüssel
}

http-Body:

{
    "Documents": [
      {
        "format": "pdf" | "jpg" | "jpeg" | "png",
        "doc": "Base64"
      },
      ...
    ]
}

Dokument:

Die Größe der Dateien pro Anfrage darf 10 MB nicht überschreiten. Zudem müssen die Dateien in einem Base64 enkodierten String vorliegen und UTF-8 kodiert sein.

Wichtig: Wenn Sie mehrere Dateien schicken, gehen wir davon aus, dass es sich um einen einzelnen Arbeitsvertrag handelt.

Format:

Wir akzeptieren die Formate PDF, JPG, JPEG, PNG

POST Response / Antwort

Sie erhalten von unserer API immer eine Antwort im JSON-Format und den HTTP-Statuscode 200 bei einer erfolgreichen Antwort.

Basis-Struktur der Antwort

{
    "Result": {
        "ContractualPartner": {
            "Employer": {
                "CompanyName": {
                    "Value": "Muster-GmbH",
                    "DocId": 1,
                    "Pageno": 1,
                    "CropNo": 3
                }
            },
            "Employee": {
                "FirstName": {
                    "Value": "Max",
                    "DocId": 1,
                    "Pageno": 1,
                    "CropNo": 3
                },
                "LastName": {
                    "Value": "Muster",
                    "DocId": 1,
                    "Pageno": 1,
                    "CropNo": 3
                }
            },
            "PlaceOfJurisdiction": null
        },
        "Employment": {
            "Occupation": {
                "Value": "technischer Angestellter",
                "DocId": 1,
                "Pageno": 1,
                "CropNo": 7
            },
            "Activities": null,
            "Workplace": {
                "Value": "Musterstadt",
                "DocId": 1,
                "Pageno": 1,
                "CropNo": 8
            },
            "Begin": {
                "Value": "01.03.2019",
                "DocId": 1,
                "Pageno": 1,
                "CropNo": 9
            },
            "End": null,
            "TypeOfEmployment": "Unlimited" | "Temporary" | null
        },
        "WorkingHours": {
            "WeeklyHours": {
                "Value": "40",
                "DocId": 1,
                "Pageno": 1,
                "CropNo": 14
            },
            "OvertimeIncluded": {
                "Value": "8",
                "DocId": 1,
                "Pageno": 1,
                "CropNo": 14
            },
            "OvertimeRegulation": {
                "References": [
                    {
                        "DocId": 1,
                        "Pageno": 1,
                        "CropNo": 14
                    }
                ]
            },
            "Workweek": null
        },
        "Compensation": {
            "AnnualSalary": null,
            "MonthlySalary": {
                "Value": "6500",
                "DocId": 1,
                "Pageno": 2,
                "CropNo": 4
            },
            "HourlySalary": null,
            "SpecialPayments": {
                "References": [
                    {
                        "DocId": 1,
                        "Pageno": 2,
                        "CropNo": 6
                    }
                ]
            },
            "VoluntarinessAndRevocation": null
        },
        "Vacation": {
            "VacationDays": {
                "Value": "zwei",
                "DocId": 1,
                "Pageno": 2,
                "CropNo": 12
            },
            "VacationDaysLegally": null
        },
        "NoticePeriods": {
            "ProbationaryPeriod": {
                "Value": "sechs Monate",
                "DocId": 1,
                "Pageno": 1,
                "CropNo": 12
            },
            "DeadlineProbationaryPeriod": {
                "Value": "vier Wochen",
                "DocId": 1,
                "Pageno": 1,
                "CropNo": 12
            },
            "CancellationPeriod": {
                "Value": "einem Monat zum Ende des Kalendervierteljahres",
                "DocId": 1,
                "Pageno": 2,
                "CropNo": 10
            },
            "CutoffPeriod": {
                "References": [
                    {
                        "DocId": 1,
                        "Pageno": 3,
                        "CropNo": 7
                    },
                    {
                        "DocId": 1,
                        "Pageno": 3,
                        "CropNo": 8
                    },
                    {
                        "DocId": 1,
                        "Pageno": 3,
                        "CropNo": 9
                    }
                ]
            },
            "CutoffPeriodValue": {
                "Value": "drei Monaten",
                "DocId": 1,
                "Pageno": 3,
                "CropNo": 8
            }
        },
        "CollectiveAgreement": null,
        "AdditionalAgreements": {
            "NonCompetitionClause": null
        },
        "Document": {
            "Pages": [
                {
                    "Pageno": 1,
                    "Paragraphs": [
                        {
                            "CropNo": 3,
                            "x": 561.5490307867731,
                            "xEndpoint": 1916.622006841505,
                            "y": 473.6719064893188,
                            "yEndpoint": 678.6940749697702,
                            "width": 1355.072976054732,
                            "height": 205.02216848045143,
                            "scaleY": 0.7072405929304447,
                            "scaleX": 0.7069729947601774,
                            "CropContent": "Null",
                            "Text": "der Muster-GmbH, vertreten durch ihren Geschäftsführer Max Muster, Musterstraße 1, 11111 Musterstadt - im folgenden: „Arbeitgeber“ -",
                            "TextConfidence": 93,
                            "words": [
                                {
                                    "x": 19.802736602052452,
                                    "y": 24.03708182184603,
                                    "w": 59.40820980615735,
                                    "h": 31.106811769447802,
                                    "text": "der",
                                    "confidence": 93
                                },
                                ...
                            ],
                            "textlines": [
                                {
                                    "text": "der Muster-GmbH, vertreten durch ihren Geschäftsführer Max Muster,\n",
                                    "confidence": 93,
                                    "fontsize": 15,
                                    "x": 5.657924743443557,
                                    "y": 9.897621926642483,
                                    "w": 1345.1716077537058,
                                    "h": 66.45546150745668
                                },
                                ...
                            ],
                            "NamedEntities": [
                                {
                                    "label": "Firmenname",
                                    "value": "Muster-GmbH",
                                    "start": 4,
                                    "end": 15
                                },
                                ...
                            ],
                            "Labels": [
                                {
                                    "label": "paragraphType",
                                    "value": "Vertragspartner",
                                    "probability": 0.99
                                },
                                ...
                            ],
                            "DocId": 1,
                            "Pageno": 1
                        },
                        ...
                    ],
                    "ImageWidth": 2481,
                    "ImageHeight": 3508,
                    "ImageB64": "Base64",
                    "PageText": "pageText",
                    "CategoryNumeric": 5,
                    "Category": "Sonstiges",
                    "CategoryProbability": 1,
                    "Language": "de",
                    "LanguageProbability": 1,
                    "DocId": 1,
                    "ImageFormat": "jpeg"
                },
                ...
            ]
        },
        "Remarks": [
            {
                "Title": "Mindestlohn eingehalten",
                "Content": "Ihr Arbeitslohn ist höher als der Mindestlohn und ist damit gesetzeskonform.",
                "Level": "hint",
                "Category": "Vergütung",
                "Trigger": [
                    "mindestlohnUeberschritten"
                ],
                "LegalReference": {
                    "lawBook": "MiLoG",
                    "Section": "1",
                    "SubSection": "1"
                }
            },
            ...
        ]
    }
}
Info: Dies beschreibt die komplette Struktur der JSON Antwort.

Abfrage der Credits

Unter dem nachfolgenden Endpunkt können die aktuellen Credits abgerufen werden:

GET https://legal.verlingo.de/arbeitsvertrag/v1/credits

Der Endpunkt muss mit der oben beschriebenen Authentifizierung, aber ohne Request-Body angesprochen werden und liefert als Antwort:

{
    "CurrentCredits": 1500 
}