कीज़ के आगे `si_` उपसर्ग लगा होता है और उन्हें scrypt हैश के रूप में संग्रहीत किया जाता है - कच्ची की एक बार दिखाई जाती है और फिर कभी पुनः प्राप्त नहीं की जा सकती।
### प्रमाणीकरण एंडपॉइंट {#auth-endpoints}
| मेथड | पथ | पहुँच | विवरण |
|--------|------|--------|-------------|
| `POST` | `/api/auth/login` | सार्वजनिक | लॉगिन, सेशन टोकन प्राप्त करें |
| `POST` | `/api/auth/logout` | प्रमाणित | वर्तमान सेशन नष्ट करें |
जब किसी उपयोगकर्ता के लिए MFA सक्षम होता है, तो `POST /api/auth/login` सेशन टोकन के बजाय `{"requiresMfa":true,"mfaToken":"...","mfaRequired":true|false}` लौटाता है। उस `mfaToken` के साथ एक TOTP या रिकवरी कोड `/api/auth/mfa/complete` को भेजें।
### अनुमतियाँ {#permissions}
| अनुमति | एडमिन | उपयोगकर्ता |
|-----------|:-----:|:----:|
| टूल का उपयोग करें | ✓ | ✓ |
| अपनी फ़ाइलें/पाइपलाइन/API कीज़ | ✓ | ✓ |
| सभी उपयोगकर्ताओं की फ़ाइलें/पाइपलाइन/कीज़ देखें | ✓ | - |
| सेटिंग्स लिखें | ✓ | - |
| उपयोगकर्ता और टीमें प्रबंधित करें | ✓ | - |
| ब्रांडिंग प्रबंधित करें | ✓ | - |
## हेल्थ चेक {#health-check}
| मेथड | पथ | पहुँच | विवरण |
|--------|------|--------|-------------|
| `GET` | `/api/v1/health` | सार्वजनिक | बुनियादी हेल्थ चेक। 200 के साथ `{"status":"healthy","version":"..."}` लौटाता है, या डेटाबेस अगम्य होने पर 503 के साथ `{"status":"unhealthy"}`। |
| `GET` | `/api/v1/readyz` | सार्वजनिक | रेडीनेस प्रोब। कॉन्फ़िगर होने पर PostgreSQL, Redis, डिस्क स्थान और S3 की जाँच करता है। जब इंस्टेंस को ट्रैफ़िक प्राप्त नहीं करना चाहिए तब 503 लौटाता है। |
| `GET` | `/api/v1/admin/health` | एडमिन (`system:health`) | अपटाइम, स्टोरेज मोड, डेटाबेस स्थिति, क्यू स्थिति और GPU उपलब्धता सहित विस्तृत निदान। |
## टूल का उपयोग {#using-tools}
हर टूल एक ही पैटर्न का पालन करता है:
```bash
# Single file
curl -X POST http://localhost:1349/api/v1/tools/<section>/<toolId> \
-H "Authorization: Bearer <token>"\
-F "file=@input.jpg"\
-F 'settings={"width":800,"height":600}'
# Batch (returns ZIP)
curl -X POST http://localhost:1349/api/v1/tools/<section>/<toolId>/batch \
-H "Authorization: Bearer <token>"\
-F "files=@a.jpg"\
-F "files=@b.jpg"\
-F 'settings={...}'
```
`<section>` इनमें से एक है: `image`, `video`, `audio`, `pdf`, या `files`।
- अपलोड `multipart/form-data` है।
-`settings` टूल-विशिष्ट विकल्पों वाला एक JSON स्ट्रिंग है।
-`clientJobId` कॉलर-प्रदत्त प्रगति सहसंबंध के लिए एक वैकल्पिक फ़ॉर्म फ़ील्ड है।
-`fileId` एक मौजूदा फ़ाइल लाइब्रेरी आइटम को संदर्भित करने वाला एक वैकल्पिक फ़ॉर्म फ़ील्ड है। मौजूद होने पर, संसाधित आउटपुट एक नए संस्करण के रूप में सहेजा जाता है और प्रतिक्रिया में `savedFileId` शामिल होता है।
- **तेज़ टूल** आमतौर पर 200 JSON लौटाते हैं: `{"jobId":"...","downloadUrl":"/api/v1/download/<jobId>/<filename>","originalSize":1234,"processedSize":567}`। संसाधित फ़ाइल `downloadUrl` से प्राप्त करें।
- **कोई भी क्यू किया गया टूल** 202 JSON लौटा सकता है यदि वह लंबे समय तक चलने वाला हो या समकालिक प्रतीक्षा विंडो से अधिक हो: `{"jobId":"...","async":true}`। प्रगति के लिए SSE से कनेक्ट करें, फिर पूरा होने पर डाउनलोड करें ([प्रगति ट्रैकिंग](#progress-tracking) देखें)।
- **बैच** रूट सामान्य बैच रजिस्ट्री में पंजीकृत टूल के लिए सीधे स्ट्रीम किया गया एक ZIP संग्रह (`X-Job-Id` हेडर के साथ) लौटाते हैं।
## टूल संदर्भ {#tools-reference}
### कन्वर्ज़न प्रीसेट {#conversion-presets}
साझा कैटलॉग में 83 समर्पित कन्वर्ज़न प्रीसेट एंडपॉइंट शामिल हैं, जैसे `jpg-to-png`, `mov-to-mp4`, `m4a-to-mp3`, `pdf-to-jpg`, और `excel-to-csv`। प्रीसेट प्रथम-श्रेणी के टूल रूट हैं:
`POST /api/v1/tools/<section>/<presetId>`
प्रत्येक प्रीसेट आउटपुट फ़ॉर्मेट को लॉक करता है और किसी बेस टूल को सौंपता है, जैसे `convert`, `convert-video`, `extract-audio`, `convert-audio`, `image-to-pdf`, `pdf-to-image`, `svg-to-raster`, या `convert-spreadsheet`। संपूर्ण रूट तालिका और वैकल्पिक सेटिंग्स के लिए [कन्वर्ज़न प्रीसेट](/hi/tools/conversion-presets) देखें।
### आवश्यक चीज़ें {#essentials}
| टूल ID | नाम | मुख्य सेटिंग्स |
|---------|------|-------------|
| `resize` | रीसाइज़ | `width`, `height`, `fit` (cover/contain/fill/inside/outside), `percentage`, `withoutEnlargement`, साथ ही 23 सोशल मीडिया प्रीसेट |
सभी AI टूल आपके हार्डवेयर पर चलते हैं: डिफ़ॉल्ट रूप से CPU पर, या समर्थित NVIDIA GPU उपलब्ध होने पर NVIDIA CUDA पर। VA-API, Quick Sync, या OpenCL के माध्यम से Intel/AMD iGPU एक्सेलरेशन आज AI इन्फ़रेंस के लिए समर्थित नहीं है। कोई इंटरनेट आवश्यक नहीं है।
| `passport-photo` | पासपोर्ट फ़ोटो | MediaPipe लैंडमार्क | दो-चरण प्रवाह। विश्लेषण मल्टीपार्ट `file` का उपयोग करता है; जेनरेट JSON का उपयोग करता है, जिसमें `countryCode`, `bgColor`, `printLayout` (none/4x6/a4), लैंडमार्क, इमेज आयाम होते हैं |
| `compose` | इमेज कंपोज़िशन | `x`, `y`, `opacity`, `blend` - दूसरी फ़ाइल ऊपर लेयर की जाती है |
| `meme-generator` | मीम जेनरेटर | `templateId`, `textLayout` (top-bottom/top-only/bottom-only/center/side-by-side), `textBoxes` ([{id, text}]), `fontFamily` (anton/arial-black/comic-sans/montserrat/bebas-neue/permanent-marker/roboto), `fontSize`, `textColor`, `strokeColor`, `textAlign`, `allCaps`। टेम्पलेट मोड (`templateId` के साथ JSON बॉडी) या कस्टम इमेज मोड (फ़ाइल के साथ मल्टीपार्ट) का समर्थन करता है। |
### उपयोगिताएँ {#utilities}
| टूल ID | नाम | मुख्य सेटिंग्स |
|---------|------|-------------|
| `info` | इमेज जानकारी | - (width, height, format, size, channels, hasAlpha, DPI, EXIF लौटाता है) |
| `compare` | इमेज तुलना | `mode` (side-by-side/overlay/diff), `diffThreshold` - दूसरी फ़ाइल तुलना लक्ष्य है |
| `extract-zip` | ZIP निकालें | - (bomb-संरक्षित) |
### HTML से इमेज {#html-to-image}
एक वेबपेज को इमेज के रूप में कैप्चर करें। अन्य टूल के विपरीत, यह एंडपॉइंट मल्टीपार्ट फ़ॉर्म डेटा के बजाय `application/json` स्वीकार करता है (किसी फ़ाइल अपलोड की आवश्यकता नहीं)।
कुछ टूल मानक `POST /api/v1/tools/<section>/<toolId>` से परे अतिरिक्त एंडपॉइंट प्रदान करते हैं:
| मेथड | पथ | विवरण |
|--------|------|-------------|
| `GET` | `/api/v1/tools/popular` | लोकप्रिय टूल ID लौटाएँ, उपयोग डेटा विरल होने पर एक क्यूरेटेड डिफ़ॉल्ट सूची पर वापस आते हुए |
| `POST` | `/api/v1/tools/image/remove-background/effects` | AI को फिर से चलाए बिना बैकग्राउंड प्रभाव (color/gradient/blur/shadow) लागू करें। प्रारंभिक हटाने से कैश किया गया मास्क उपयोग करता है। |
| `POST` | `/api/v1/tools/image/edit-metadata/inspect` | किसी इमेज से मौजूदा EXIF/IPTC/XMP मेटाडेटा पढ़ें |
| `POST` | `/api/v1/tools/image/strip-metadata/inspect` | हटाने से पहले मेटाडेटा फ़ील्ड्स की जाँच करें |
| `POST` | `/api/v1/tools/image/passport-photo/analyze` | चरण 1: AI फ़ेस डिटेक्शन + बैकग्राउंड हटाना। फ़ेस लैंडमार्क और कैश किया गया डेटा लौटाता है। |
| `POST` | `/api/v1/tools/image/passport-photo/generate` | चरण 2: कैश किए गए विश्लेषण का उपयोग करके क्रॉप, रीसाइज़ और टाइल करें। कोई AI पुनः-रन नहीं। |
| `POST` | `/api/v1/tools/pdf/pdf-to-image/info` | PDF मेटाडेटा प्राप्त करें (पेज गिनती, आयाम) |
| `POST` | `/api/v1/tools/pdf/pdf-to-image/preview` | किसी विशिष्ट PDF पेज का प्रीव्यू जेनरेट करें |
| `POST` | `/api/v1/tools/pdf/pdf-to-jpg/info` | समर्पित JPG प्रीसेट के लिए PDF मेटाडेटा प्राप्त करें |
| `POST` | `/api/v1/tools/pdf/pdf-to-jpg/preview` | एक JPG प्रीसेट PDF पेज प्रीव्यू जेनरेट करें |
| `POST` | `/api/v1/tools/pdf/pdf-to-png/info` | समर्पित PNG प्रीसेट के लिए PDF मेटाडेटा प्राप्त करें |
| `POST` | `/api/v1/tools/pdf/pdf-to-png/preview` | एक PNG प्रीसेट PDF पेज प्रीव्यू जेनरेट करें |
| `POST` | `/api/v1/tools/pdf/pdf-to-tiff/info` | समर्पित TIFF प्रीसेट के लिए PDF मेटाडेटा प्राप्त करें |
| `POST` | `/api/v1/tools/pdf/pdf-to-tiff/preview` | एक TIFF प्रीसेट PDF पेज प्रीव्यू जेनरेट करें |
| `POST` | `/api/v1/tools/image/svg-to-raster/batch` | कई SVG को बैच में रास्टर में कन्वर्ट करें |
| `POST` | `/api/v1/tools/image/image-enhancement/analyze` | इमेज गुणवत्ता का विश्लेषण करें और एन्हांसमेंट अनुशंसाएँ लौटाएँ |
| `POST` | `/api/v1/tools/image/optimize-for-web/preview` | लाइव पैरामीटर ट्यूनिंग के लिए हल्का प्रीव्यू। साइज़ हेडर के साथ ऑप्टिमाइज़्ड इमेज लौटाता है। |
एक सामान्य बैच-सक्षम टूल को एक साथ कई फ़ाइलों पर लागू करें। एक ZIP संग्रह लौटाता है। कस्टम मल्टी-फ़ाइल या मल्टी-स्टेप रूट, जैसे PDF साइनिंग और PDF-से-इमेज प्रीसेट रूट, सामान्य `/batch` रूट के बजाय अपना स्वयं का एंडपॉइंट अनुबंध उपयोग करते हैं।
`ocr-pdf` टूल इस सामान्य `/batch` रूट का समर्थन करता है।
curl -X POST http://localhost:1349/api/v1/tools/image/compress/batch \
-H "Authorization: Bearer <token>"\
-F "files=@a.jpg"\
-F "files=@b.jpg"\
-F "files=@c.jpg"\
-F 'settings={"quality":80}'
```
समानांतरता `CONCURRENT_JOBS` द्वारा नियंत्रित होती है (डिफ़ॉल्ट: CPU कोर से स्वतः पहचाना जाता है)। `MAX_BATCH_SIZE` प्रति बैच फ़ाइलों की संख्या सीमित करता है (डिफ़ॉल्ट: 100; असीमित के लिए 0 सेट करें)।
## पाइपलाइन {#pipelines}
### एक पाइपलाइन निष्पादित करें {#execute-a-pipeline}
```bash
# Single file
curl -X POST http://localhost:1349/api/v1/pipeline/execute \
हर चरण का आउटपुट अगले चरण का इनपुट होता है। पाइपलाइन डिफ़ॉल्ट रूप से 20 चरणों की अनुमति देती हैं, जो `MAX_PIPELINE_STEPS` के माध्यम से कॉन्फ़िगर करने योग्य है। सीमा हटाने के लिए `MAX_PIPELINE_STEPS=0` सेट करें।
### पाइपलाइन सहेजें और प्रबंधित करें {#save-and-manage-pipelines}
| `GET` | `/api/v1/pipeline/list` | सहेजी गई पाइपलाइन की सूची बनाएँ (एडमिन सभी देखते हैं; उपयोगकर्ता अपनी देखते हैं) |
| `DELETE` | `/api/v1/pipeline/:id` | हटाएँ (मालिक या एडमिन) |
| `GET` | `/api/v1/pipeline/tools` | पाइपलाइन चरणों के लिए मान्य टूल ID की सूची बनाएँ |
## प्रगति ट्रैकिंग {#progress-tracking}
लंबे समय तक चलने वाले जॉब, क्यू किए गए टूल, बैच जॉब, और पाइपलाइन Server-Sent Events के माध्यम से रीयल-टाइम प्रगति उत्सर्जित करते हैं। प्रगति स्ट्रीम सार्वजनिक है और जॉब ID द्वारा कीड है, इसलिए क्लाइंट को इसे पढ़ने के लिए Authorization हेडर भेजने की आवश्यकता नहीं है।
```bash
# Connect to the SSE stream (jobId is in the JSON response body from the tool endpoint)
आप `POST /api/v1/jobs/:jobId/cancel` के साथ किसी क्यू किए गए या चल रहे जॉब के लिए रद्दीकरण का अनुरोध कर सकते हैं। प्रतिक्रिया `{"canceled":true|false}` है।
| `DELETE` | `/api/v1/files` | फ़ाइलें और उनकी संस्करण श्रृंखलाएँ बल्क में हटाएँ (बॉडी: `{ ids: [...] }`) |
| `POST` | `/api/v1/fetch-urls` | URL-आधारित आयात के लिए रिमोट URL को वर्कस्पेस में लाएँ |
| `POST` | `/api/v1/preview` | एक ब्राउज़र-संगत WebP प्रीव्यू जेनरेट करें (HEIC/HEIF/RAW फ़ॉर्मेट के लिए) |
| `GET` | `/api/v1/files/:id/preview` | किसी सहेजी गई PDF, ऑफ़िस डॉक्यूमेंट, वीडियो, या ऑडियो फ़ाइल के लिए कैश किया गया या जेनरेट किया गया ब्राउज़र-संगत प्रीव्यू स्ट्रीम करें |
| `POST` | `/api/v1/preview/generate` | अपलोड की गई मीडिया फ़ाइल के लिए पहले सहेजे बिना एक ऑन-डिमांड MP4 या MP3 प्रीव्यू जेनरेट करें |
| `GET` | `/api/v1/download/:jobId/:filename` | किसी वर्कस्पेस से एक संसाधित फ़ाइल डाउनलोड करें |
किसी टूल परिणाम को लाइब्रेरी में स्वतः सहेजने के लिए, किसी मौजूदा लाइब्रेरी फ़ाइल को संदर्भित करने वाले एक मल्टीपार्ट फ़ॉर्म फ़ील्ड के रूप में `fileId` शामिल करें। संसाधित परिणाम एक नए संस्करण के रूप में सहेजा जाएगा।
## API की प्रबंधन {#api-key-management}
| मेथड | पथ | पहुँच | विवरण |
|--------|------|--------|-------------|
| `POST` | `/api/v1/api-keys` | प्रमाणित | नई की जेनरेट करें - एक बार दिखाई जाती है |
| `GET` | `/api/v1/api-keys` | प्रमाणित | कीज़ की सूची बनाएँ (name, id, lastUsedAt - कच्ची की नहीं) |
| `DELETE` | `/api/v1/api-keys/:id` | प्रमाणित | की हटाएँ |
रनटाइम कॉन्फ़िगरेशन मान्य कीज़ के एक बंद सेट का उपयोग करता है। पढ़ने के लिए `settings:read` और लिखने के लिए `settings:write` आवश्यक है; सुरक्षा और अनुपालन कीज़ के लिए क्रमशः `security:manage` या `compliance:manage` भी आवश्यक है। गोपनीय सेटिंग्स के लिए पूर्ण एडमिन अधिकार आवश्यक हैं, जबकि समर्पित एंडपॉइंट द्वारा प्रबंधित क्रेडेंशियल और स्थिति यहाँ केवल पढ़ने योग्य हैं। कोई भी मान लिखे जाने से पहले बल्क अपडेट को पूरी तरह मान्य किया जाता है।
प्रतिनिधि कीज़: `disabledTools` (टूल ID का JSON ऐरे), `enableExperimentalTools` (बूलियन), `loginAttemptLimit` (सुरक्षा नीति), और `auditRetentionDays` (अनुपालन नीति)। अज्ञात कीज़ अस्वीकार की जाती हैं।
प्रति-उपयोगकर्ता प्राथमिकताएँ इंस्टेंस सेटिंग्स से अलग हैं। कोई भी प्रमाणित उपयोगकर्ता अपने स्वयं के प्राथमिकता मानचित्र को पढ़ और अपडेट कर सकता है।
| मेथड | पथ | विवरण |
|--------|------|-------------|
| `GET` | `/api/v1/preferences` | वर्तमान उपयोगकर्ता की प्राथमिकताएँ `{ "preferences": { ... } }` के रूप में प्राप्त करें |
| `PUT` | `/api/v1/preferences` | वर्तमान उपयोगकर्ता के लिए एक या अधिक प्राथमिकता कीज़ अपसर्ट करें |
## भूमिकाएँ {#roles}
विस्तृत अनुमतियों के साथ कस्टम भूमिका प्रबंधन।
| मेथड | पथ | पहुँच | विवरण |
|--------|------|--------|-------------|
| `GET` | `/api/v1/roles` | एडमिन (`audit:read`) | उपयोगकर्ता गिनती के साथ सभी भूमिकाओं की सूची बनाएँ |
| `POST` | `/api/v1/roles` | एडमिन (`security:manage`) | एक कस्टम भूमिका बनाएँ (`name`, `description`, `permissions`) |
| `PUT` | `/api/v1/roles/:id` | एडमिन (`security:manage`) | एक कस्टम भूमिका अपडेट करें (अंतर्निहित भूमिकाओं को संशोधित नहीं कर सकते) |
| `DELETE` | `/api/v1/roles/:id` | एडमिन (`security:manage`) | एक कस्टम भूमिका हटाएँ (अंतर्निहित भूमिकाओं को नहीं हटा सकते; प्रभावित उपयोगकर्ता `user` भूमिका पर वापस आ जाते हैं) |
| `action` | क्रिया प्रकार द्वारा फ़िल्टर करें (जैसे `ROLE_CREATED`, `ROLE_DELETED`) |
| `ip` | स्रोत IP पते द्वारा फ़िल्टर करें |
| `from` | इस ISO 8601 तिथि के बाद की प्रविष्टियाँ फ़िल्टर करें |
| `to` | इस ISO 8601 तिथि से पहले की प्रविष्टियाँ फ़िल्टर करें |
## एनालिटिक्स {#analytics}
| मेथड | पथ | पहुँच | विवरण |
|--------|------|--------|-------------|
| `GET` | `/api/v1/config/analytics` | सार्वजनिक | प्रभावी एनालिटिक्स कॉन्फ़िगरेशन प्राप्त करें (PostHog की, Sentry DSN, सैंपल रेट)। जब एनालिटिक्स बंद हो, चाहे कंपाइल-टाइम बेक से हो या इंस्टेंस `analyticsEnabled` सेटिंग से, तब कीज़, DSN, और इंस्टेंस ID खाली रहते हैं। |
| `POST` | `/api/v1/feedback` | प्रमाणित | कॉन्फ़िगर किए गए PostHog प्रोजेक्ट में स्पष्ट उपयोगकर्ता फ़ीडबैक `feedback_submitted` के रूप में सबमिट करें। यह रूट एनालिटिक्स गेट का सम्मान करता है, सबमिशन को रेट-लिमिट करता है, जब तक `contactOk` true न हो तब तक संपर्क फ़ील्ड हटा देता है, और फ़ाइल सामग्री, फ़ाइल नाम, अपलोड पथ, या कच्चा निजी त्रुटि टेक्स्ट कभी स्वीकार नहीं करता। जब एनालिटिक्स अक्षम हो, तो यह `{ "ok": true, "accepted": false }` लौटाता है। |
| `PUT` | `/api/v1/settings` | एडमिन (`settings:write`) | इंस्टेंस-व्यापी ऑप्ट-आउट सेट करें। सभी के लिए एनालिटिक्स बंद करने हेतु एक JSON बॉडी `{ "analyticsEnabled": "false" }` भेजें, या इसे वापस चालू करने हेतु `"true"`। |
## फ़ीचर / AI बंडल {#features-ai-bundles}
AI फ़ीचर बंडल प्रबंधित करें (Docker वातावरण में AI मॉडल पैकेज इंस्टॉल/अनइंस्टॉल करें)। कस्टम ऑटोमेशन से किसी टूल को सक्षम करते समय टूल-स्तरीय इंस्टॉल एंडपॉइंट को प्राथमिकता दें: कुछ AI टूल को एक से अधिक साझा बंडल की आवश्यकता होती है, और यह एंडपॉइंट पहले से इंस्टॉल किए गए बंडल को छोड़ देता है और केवल गायब बंडल को क्यू करता है।
OCR एक कठिन निर्भरता के बजाय एक वैकल्पिक वृद्धि है। इसका `fast` Tesseract टियर बिना पैक के काम करता है; `POST /api/v1/admin/features/ocr/install``balanced` और `best` के लिए Linux amd64 या arm64 पर हस्ताक्षरित RapidOCR पैक स्थापित करता है। सटीक OCR रनटाइम केवल CPU और NVIDIA होस्ट पर CPU का उपयोग करता है और इसके लिए कम से कम 4 GiB प्रभावी मेमोरी (कॉन्फ़िगर कंटेनर cgroup सीमा, अन्यथा होस्ट मेमोरी) की आवश्यकता होती है। SnapOtter `requiredMemoryBytes`, `effectiveMemoryBytes` और एक `insufficient-memory` संगतता कारण की रिपोर्ट करता है, और डाउनलोड से पहले एक असंगत इंस्टॉल को अस्वीकार कर देता है। यह मेमोरी आवश्यकता `fast` पर लागू नहीं होती है। लक्ष्य के आधार पर पैक को डाउनलोड करने के लिए लगभग 208-234 MiB और 409-488 MiB इंस्टॉल करना है; हस्ताक्षरित सूचकांक स्थापना के दौरान लागू किए गए सटीक आकारों को बांधता है।
| `GET` | `/api/v1/features` | प्रमाणित | सभी फ़ीचर बंडल और उनकी इंस्टॉल स्थिति की सूची बनाएँ |
| `POST` | `/api/v1/admin/features/:bundleId/install` | एडमिन (`features:manage`) | एक फ़ीचर बंडल इंस्टॉल करें (async, प्रगति ट्रैकिंग के लिए `jobId` लौटाता है) |
| `POST` | `/api/v1/admin/tools/:toolId/features/install` | एडमिन (`features:manage`) | किसी टूल के लिए आवश्यक हर बंडल इंस्टॉल करें; प्रति-बंडल queued/skipped स्थिति लौटाता है |
| `POST` | `/api/v1/admin/features/:bundleId/uninstall` | एडमिन (`features:manage`) | एक फ़ीचर बंडल अनइंस्टॉल करें और मॉडल फ़ाइलें साफ़ करें |
| `GET` | `/api/v1/admin/features/disk-usage` | एडमिन (`features:manage`) | AI मॉडल का कुल डिस्क उपयोग प्राप्त करें |
| `POST` | `/api/v1/admin/features/import` | व्यवस्थापक (`features:manage`) | एक लीगेसी AI बंडल (`file`) या एक हस्ताक्षरित ऑफ़लाइन OCR रिलीज़ (`index` प्लस `archive`) आयात करें |
एक एयर-गैप्ड OCR आयात में रिलीज़ के हस्ताक्षरित `ocr-runtime-index.json` और मिलान प्लेटफ़ॉर्म संग्रह शामिल होना चाहिए। SnapOtter ऑनलाइन इंस्टॉलेशन द्वारा उपयोग किए जाने वाले समान Ed25519 हस्ताक्षर, आर्टिफैक्ट हैश, संगतता, निष्कर्षण और धुआं-परीक्षण जांच लागू करता है:
```bash
curl -X POST http://localhost:1349/api/v1/admin/features/import \
-H "Authorization: Bearer <admin-token>"\
-F "index=@ocr-runtime-index.json"\
-F "archive=@ocr-linux-amd64-cpu-py312.tar.gz"
```
arm64 पर `linux-arm64-cpu-py311` संग्रह का उपयोग करें। किसी अन्य लक्ष्य के लिए हस्ताक्षरित कलाकृति को स्थापित करने के बजाय अस्वीकार कर दिया जाता है।
**पूर्ण अंतर्निहित एडमिन** का अर्थ है कि प्रमाणित कर्ता के पास `admin` भूमिका और एडमिन अनुमतियों का पूरा प्रभावी सेट है। ऐसा API कुंजी स्कोप जिसमें एडमिन की एक भी अनुमति छूट गई हो, योग्य नहीं है।