1import{j as e,m as d,bH as l,_ as h,Z as o,aS as x,s as j,a3 as u}from"./ui-vendor-Bx5ZS6-E.js";import{a as p}from"./react-vendor-CHzeZC6v.js";import{H as g}from"./index-CTjnQqyU.js";import"./utils-vendor-BCn5QfZZ.js";const m="_container_1h04l_39",_="_sidebar_1h04l_127",f="_content_1h04l_191",y="_header_1h04l_193",b="_headerIcon_1h04l_205",N="_title_1h04l_221",A="_subtitle_1h04l_241",B="_enterpriseBadge_1h04l_261",v="_section_1h04l_297",R="_link_1h04l_383",k="_featureList_1h04l_403",E="_infoBox_1h04l_439",I="_warningBox_1h04l_441",P="_codeBlock_1h04l_507",T="_codeHeader_1h04l_521",z="_language_1h04l_539",H="_copyButton_1h04l_555",K="_endpoint_1h04l_619",L="_endpointHeader_1h04l_633",D="_method_1h04l_651",S="_post_1h04l_675",C="_path_1h04l_679",F="_table_1h04l_701",V="_cta_1h04l_749",q="_ctaButton_1h04l_803",s={container:m,sidebar:_,content:f,header:y,headerIcon:b,title:N,subtitle:A,enterpriseBadge:B,section:v,link:R,featureList:k,infoBox:E,warningBox:I,codeBlock:P,codeHeader:T,language:z,copyButton:H,endpoint:K,endpointHeader:L,method:D,post:S,delete:"_delete_1h04l_677",path:C,table:F,cta:V,ctaButton:q},n=({code:i,language:r})=>{const[c,t]=p.useState(!1),a=()=>{navigator.clipboard.writeText(i),t(!0),setTimeout(()=>t(!1),2e3)};return e.jsxs("div",{className:s.codeBlock,children:[e.jsxs("div",{className:s.codeHeader,children:[e.jsx("span",{className:s.language,children:r}),e.jsx("button",{className:s.copyButton,onClick:a,children:c?e.jsxs(e.Fragment,{children:[e.jsx(j,{size:14}),"Kopiert!"]}):e.jsxs(e.Fragment,{children:[e.jsx(u,{size:14}),"Kopieren"]})})]}),e.jsx("pre",{children:e.jsx("code",{children:i})})]})};function Z(){return e.jsxs(e.Fragment,{children:[e.jsxs(g,{children:[e.jsx("title",{children:"REST API-Dokumentation - Contract AI"}),e.jsx("meta",{name:"description",content:"Contract AI REST API-Dokumentation für Enterprise-Kunden"})]}),e.jsxs("div",{className:s.container,children:[e.jsxs("div",{className:s.sidebar,children:[e.jsx("h3",{children:"Inhaltsverzeichnis"}),e.jsxs("ul",{children:[e.jsx("li",{children:e.jsx("a",{href:"#introduction",children:"Einführung"})}),e.jsx("li",{children:e.jsx("a",{href:"#authentication",children:"Authentifizierung"})}),e.jsx("li",{children:e.jsx("a",{href:"#rate-limiting",children:"Rate Limiting"})}),e.jsxs("li",{children:[e.jsx("a",{href:"#endpoints",children:"Endpoints"}),e.jsxs("ul",{children:[e.jsx("li",{children:e.jsx("a",{href:"#get-contracts",children:"Liste Verträge"})}),e.jsx("li",{children:e.jsx("a",{href:"#post-contracts",children:"Vertrag hochladen"})}),e.jsx("li",{children:e.jsx("a",{href:"#get-contract",children:"Vertrag abrufen"})}),e.jsx("li",{children:e.jsx("a",{href:"#delete-contract",children:"Vertrag löschen"})}),e.jsx("li",{children:e.jsx("a",{href:"#get-analysis",children:"Analyse abrufen"})})]})]}),e.jsx("li",{children:e.jsx("a",{href:"#errors",children:"Fehlerbehandlung"})})]})]}),e.jsx("div",{className:s.content,children:e.jsxs(d.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5},children:[e.jsxs("div",{className:s.header,children:[e.jsx(l,{size:48,className:s.headerIcon}),e.jsx("h1",{className:s.title,children:"Contract AI REST API"}),e.jsx("p",{className:s.subtitle,children:"Dokumentation für Enterprise-Kunden ⢠Version 1.0.0"})]}),e.jsxs("div",{className:s.enterpriseBadge,children:[e.jsx(h,{size:16}),e.jsx("span",{children:"Enterprise-Feature ⢠Erfordert API-Key"})]}),e.jsxs("section",{id:"introduction",className:s.section,children:[e.jsx("h2",{children:"Einführung"}),e.jsx("p",{children:"Die Contract AI REST API ermöglicht es Enterprise-Kunden, Contract AI programmatisch zu nutzen. Automatisiere Vertrags-Uploads, Analysen und integriere Contract AI in deine bestehenden Workflows."}),e.jsxs("div",{className:s.infoBox,children:[e.jsx(o,{size:20}),e.jsxs("div",{children:[e.jsx("strong",{children:"Base URL:"})," ",e.jsx("code",{children:"https://api.contract-ai.de/api/v1"})]})]}),e.jsx("h3",{children:"Features"}),e.jsxs("ul",{className:s.featureList,children:[e.jsx("li",{children:"Sichere API-Key Authentifizierung"}),e.jsx("li",{children:"Automatischer Vertrag-Upload & Analyse"}),e.jsx("li",{children:"Zugriff auf alle Analysen & Daten"}),e.jsx("li",{children:"Rate Limiting: 1000 Requests/Stunde (Enterprise)"}),e.jsx("li",{children:"RESTful Design & JSON Responses"})]})]}),e.jsxs("section",{id:"authentication",className:s.section,children:[e.jsx("h2",{children:"Authentifizierung"}),e.jsxs("p",{children:["Alle API-Requests benötigen einen gültigen API-Key. Erstelle einen API-Key in deinem ",e.jsx("a",{href:"/api-keys",className:s.link,children:"API-Keys Dashboard"}),"."]}),e.jsx("h3",{children:"Authorization Header"}),e.jsx(n,{language:"HTTP",code:"Authorization: Bearer sk_live_your_api_key_here"}),e.jsx("h3",{children:"Beispiel-Request (cURL)"}),e.jsx(n,{language:"bash",code:`curl https://api.contract-ai.de/api/v1/contracts \\ 2 -H "Authorization: Bearer sk_live_your_api_key_here"`}),e.jsxs("div",{className:s.warningBox,children:[e.jsx("strong",{children:"â ï¸ Wichtig:"}
2)," Teile deinen API-Key niemals öffentlich. Behandle ihn wie ein Passwort!"]})]}),e.jsxs("section",{id:"rate-limiting",className:s.section,children:[e.jsx("h2",{children:"Rate Limiting"}),e.jsx("p",{children:"API-Requests sind limitiert basierend auf deinem Subscription-Plan:"}),e.jsxs("table",{className:s.table,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Plan"}),e.jsx("th",{children:"Requests/Stunde"}),e.jsx("th",{children:"Max API-Keys"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("strong",{children:"Business"})}),e.jsx("td",{children:"100"}),e.jsx("td",{children:"3"})]}),e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("strong",{children:"Enterprise"})}),e.jsx("td",{children:"1000"}),e.jsx("td",{children:"5"})]})]})]}),e.jsx("h3",{children:"Rate Limit Headers"}),e.jsx(n,{language:"HTTP",code:`RateLimit-Limit: 1000 3RateLimit-Remaining: 999 4RateLimit-Reset: 1640995200`})]}),e.jsxs("section",{id:"endpoints",className:s.section,children:[e.jsx("h2",{children:"Endpoints"}),e.jsxs("div",{id:"get-contracts",className:s.endpoint,children:[e.jsxs("div",{className:s.endpointHeader,children:[e.jsx("span",{className:s.method,children:"GET"}),e.jsx("code",{className:s.path,children:"/contracts"})]}),e.jsx("p",{children:"Listet alle Verträge des authentifizierten Users."}),e.jsx("h4",{children:"Query Parameter"}),e.jsxs("table",{className:s.table,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Parameter"}),e.jsx("th",{children:"Typ"}),e.jsx("th",{children:"Beschreibung"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("code",{children:"limit"})}),e.jsx("td",{children:"integer"}),e.jsx("td",{children:"Anzahl Ergebnisse (default: 50, max: 100)"})]}),e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("code",{children:"offset"})}),e.jsx("td",{children:"integer"}),e.jsx("td",{children:"Pagination Offset (default: 0)"})]}),e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("code",{children:"folder"})}),e.jsx("td",{children:"string"}),e.jsx("td",{children:"Filter nach Ordner-ID (optional)"})]})]})]}),e.jsx("h4",{children:"Beispiel-Request"}),e.jsx(n,{language:"bash",code:`curl "https://api.contract-ai.de/api/v1/contracts?limit=10" \\ 5 -H "Authorization: Bearer sk_live_your_api_key_here"`}),e.jsx("h4",{children:"Response"}),e.jsx(n,{language:"json",code:`{ 6 "success": true, 7 "contracts": [ 8 { 9 "id": "507f1f77bcf86cd799439011", 10 "filename": "Mietvertrag.pdf", 11 "contractType": "Mietvertrag", 12 "createdAt": "2025-01-20T12:00:00.000Z", 13 "folderId": null 14 } 15 ], 16 "pagination": { 17 "total": 42, 18 "limit": 10, 19 "offset": 0, 20 "hasMore": true 21 } 22}`})]}),e.jsxs("div",{id:"post-contracts",className:s.endpoint,children:[e.jsxs("div",{className:s.endpointHeader,children:[e.jsx("span",{className:`${s.method} ${s.post}`,children:"POST"}),e.jsx("code",{className:s.path,children:"/contracts"})]}),e.jsx("p",{children:"Lädt einen neuen Vertrag hoch und analysiert ihn optional."}),e.jsx("h4",{children:"Request Body (multipart/form-data)"}),e.jsxs("table",{className:s.table,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Parameter"}),e.jsx("th",{children:"Typ"}),e.jsx("th",{children:"Beschreibung"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("code",{children:"file"})}),e.jsx("td",{children:"file"}),e.jsxs("td",{children:[e.jsx("strong",{children:"Required:"})," PDF- oder DOCX-Datei (max 10MB)"]})]}),e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("code",{children:"folderId"})}),e.jsx("td",{children:"string"}),e.jsx("td",{children:"Optional: Ordner-ID"})]}),e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("code",{children:"analyze"})}),e.jsx("td",{children:"boolean"}),e.jsx("td",{children:"Automatische Analyse (default: true)"})]})]})]}),e.jsx("h4",{children:"Beispiel-Request"}),e.jsx(n,{language:"bash",code:`curl -X POST "https://api.contract-ai.de/api/v1/contracts" \\ 23 -H "Authorization: Bearer sk_live_your_api_key_here" \\ 24 -F "file=@/path/to/contract.pdf" \\ 25 -F "analyze=true"`}),e.jsx("h4",{children:"Response"}),e.jsx(n,{language:"json",code:`{ 26 "success": true, 27 "message": "Vertrag erfolgreich hochgeladen", 28 "contract": { 29 "id": "507f1f77bcf86cd799439011", 30 "filename": "contract.pdf", 31 "createdAt": "2025-01-20T12:00:00.000Z" 32 },
33 "analysis": { 34 "contractType": "Kaufvertrag", 35 "overallScore": 85, 36 "summary": "Der Vertrag regelt den Kauf..." 37 } 38}`})]}),e.jsxs("div",{id:"get-contract",className:s.endpoint,children:[e.jsxs("div",{className:s.endpointHeader,children:[e.jsx("span",{className:s.method,children:"GET"}),e.jsx("code",{className:s.path,children:"/contracts/:id"})]}),e.jsx("p",{children:"Ruft einen einzelnen Vertrag ab."}),e.jsx("h4",{children:"Beispiel-Request"}),e.jsx(n,{language:"bash",code:`curl "https://api.contract-ai.de/api/v1/contracts/507f1f77bcf86cd799439011" \\ 39 -H "Authorization: Bearer sk_live_your_api_key_here"`})]}),e.jsxs("div",{id:"delete-contract",className:s.endpoint,children:[e.jsxs("div",{className:s.endpointHeader,children:[e.jsx("span",{className:`${s.method} ${s.delete}`,children:"DELETE"}),e.jsx("code",{className:s.path,children:"/contracts/:id"})]}),e.jsx("p",{children:"Löscht einen Vertrag."}),e.jsx("h4",{children:"Beispiel-Request"}),e.jsx(n,{language:"bash",code:`curl -X DELETE "https://api.contract-ai.de/api/v1/contracts/507f1f77bcf86cd799439011" \\ 40 -H "Authorization: Bearer sk_live_your_api_key_here"`})]}),e.jsxs("div",{id:"get-analysis",className:s.endpoint,children:[e.jsxs("div",{className:s.endpointHeader,children:[e.jsx("span",{className:s.method,children:"GET"}),e.jsx("code",{className:s.path,children:"/contracts/:id/analysis"})]}),e.jsx("p",{children:"Ruft die Analyse eines Vertrags ab."}),e.jsx("h4",{children:"Response"}),e.jsx(n,{language:"json",code:`{ 41 "success": true,
42 "analysis": { 43 "contractType": "Kaufvertrag", 44 "overallScore": 85, 45 "risks": ["Keine Kündigungsfrist definiert"], 46 "suggestions": ["Klare Kündigungsklausel hinzufügen"], 47 "parties": ["Max Mustermann", "Firma GmbH"], 48 "keyTerms": ["Kaufpreis", "Lieferung", "Gewährleistung"], 49 "summary": "Der Vertrag regelt den Kauf..." 50 } 51}`})]})]}),e.jsxs("section",{id:"errors",className:s.section,children:[e.jsx("h2",{children:"Fehlerbehandlung"}),e.jsx("p",{children:"Die API verwendet Standard-HTTP-Statuscodes und gibt JSON-Fehler zurück:"}),e.jsxs("table",{className:s.table,children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Status"}),e.jsx("th",{children:"Bedeutung"})]})}),e.jsxs("tbody",{children:[e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("code",{children:"200"})}),e.jsx("td",{children:"Erfolg"})]}),e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("code",{children:"400"})}),e.jsx("td",{children:"Ungültige Anfrage"})]}),e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("code",{children:"401"})}),e.jsx("td",{children:"Unauthorized (ungültiger API-Key)"})]}),e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("code",{children:"403"})}),e.jsx("td",{children:"Forbidden (kein Enterprise-Plan)"})]}),e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("code",{children:"404"})}),e.jsx("td",{children:"Nicht gefunden"})]}),e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("code",{children:"429"})}),e.jsx("td",{children:"Rate Limit überschritten"})]}),e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("code",{children:"500"})}),e.jsx("td",{children:"Server-Fehler"})]})]})]}),e.jsx("h4",{children:"Beispiel-Error Response"}),e.jsx(n,{language:"json",code:`{ 52 "success": false, 53 "message": "API-Key ungültig oder deaktiviert", 54 "error": "UNAUTHORIZED", 55 "docs": "/api-docs" 56}`})]}),e.jsxs("div",{className:s.cta,children:[e.jsx(x,{size:32}),e.jsx("h3",{children:"Bereit loszulegen?"}),e.jsx("p",{children:"Erstelle deinen ersten API-Key im Dashboard"}),e.jsx("a",{href:"/api-keys",className:s.ctaButton,children:"Zum API-Keys Dashboard"})]})]})})]})]})}export{Z as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.