
# REST {/* #rest */}

API टोकन के लिए [API से कनेक्ट करें](/docs/hi/connect-api) देखें। सार्वजनिक REST मूल URL `https://reconstruct.dev/api/v1/platform` है; नीचे के पथ इसके सापेक्ष हैं।

`GET /capture-options` से प्रकार/परिवेश खोजें; ID हार्डकोड न करें। विकल्प में `view` प्रकार (`desktop`/`mobile`), `implementation` परिवेश है। डेस्कटॉप `web`, `web-extension`, `macos`, `windows`, `linux`; मोबाइल `web`, `ios`, `android` लेता है। डेटा से पहले `captured` देखें। MCP में नाम `platform`, `environment`; पृष्ठ `view` सटीक सहेजी डिवाइस प्रोफ़ाइल कुंजी है। [MCP चयन](/docs/hi/mcp-tools) देखें।

हर अनुरोध में `Authorization: Bearer <token>` भेजें। कैटलॉग endpoint:

| विधि और पथ | उद्देश्य |
|---|---|
| `GET /catalogs?pageSize=10&pageToken=...` | कैटलॉग सूची; `pageSize`, `pageToken` वैकल्पिक। |
| `GET /capture-options` | समर्थित प्रकार ID, लेबल, परिवेश विकल्प, डिफ़ॉल्ट और अनुरोध `requestPlatforms`; प्रमाणीकरण/मापन नहीं, कैप्चर सामग्री नहीं। |
| `GET /catalogs/{catalogId}?version=...` | प्रकाशित कैटलॉग के स्क्रीन, प्लेटफ़ॉर्म, भाषाएँ, संस्करण पढ़ें। |
| `GET /catalogs/{catalogId}/insights?locale=en&view=desktop&implementation=web` | प्रकाशित संस्करण की तकनीक, रेंडरिंग, फ़ॉन्ट परिवार, टेक्स्ट शैली, मीडिया और रंग थीम पढ़ें। |

JSON फ़ील्ड camelCase हैं। `GET /catalogs` से `catalogs` और अधिक परिणाम पर `nextPageToken` मिलता है। अगली क्वेरी में उसे `pageToken` दें। विवरण में `catalogId`, `name`, `kind`, `description` हैं।

`locale`, `view`, `implementation` वैकल्पिक हैं। `view` में `desktop`/`mobile`; `implementation` में `web`, `web-extension`, `windows`, `macos`, `linux`, `ios`, `android` लें। विवरण `platforms[]` में संयोजन, स्क्रीन अपना `implementation` देती हैं। तकनीक, टाइपोग्राफ़ी, मीडिया उसी संयोजन/भाषा के हैं। प्रति-view पहचान न हो तो `technologyInventory: true` संस्करण-सूची बताता है। नकली iPhone पर वेब `mobile` + `web` रहता है। पुराने कैप्चर में पृष्ठ विवरण न हों तो संस्करण फ़ॉन्ट/संपत्ति सूची और `pageCount: 0` लौटते हैं। लिंक मूल स्रोत रखते हैं; सहेजे संसाधन नीचे की फ़ाइल विधि से पढ़ें।

## कैटलॉग फ़िल्टर और संस्करण {/* #catalog-filters-and-versions */}

`ListCatalogs` में `query`, `sort` (`newest`, `name-asc`, `name-desc`, `screens`, `versions`), `screens` (`with`/`without`), `versions` (`single`/`multiple`) और दोहराए `platforms`, `technologies`, `renderings`, `categories`, `languages` हैं। प्लेटफ़ॉर्म ID view/implementation जोड़ता है, जैसे `desktop:web`। `filters` के ID लें; एक फ़िल्टर के विकल्प वैकल्पिक, अलग फ़िल्टर संयुक्त हैं। `nextPageToken` के दौरान फ़िल्टर/क्रम न बदलें।

`GetCatalog`, `GetCatalogInsights`, `GetCatalogFile` वैकल्पिक `version` लेते हैं। खाली पर नवीनतम प्रकाशित कैप्चर। विवरण चयनित `version`, सभी प्रकाशित `versions[]` देता है; `latestVersion`, `latestCapturedAt` नवीनतम बताते हैं। आगे insight/फ़ाइल में चयनित संस्करण दें। ड्राफ़्ट/अज्ञात संस्करण 404 देते हैं।

Insight में `section`: `tech stack`, `typography`, `colors`, `themes`, `assets` लें, सभी के लिए छोड़ें। `colorThemes[]` नामित पैलेट हैं। `platforms[].captured` उपलब्धता, `detectedLocales[]` खोजी भाषाएँ, `locales[]` कैप्चर भाषाएँ हैं।

## कंपोनेंट माप {/* #component-measurements */}

`componentSizing[]` अर्थपूर्ण प्रकार से माप समूहित करता है। Components टैब में खोलकर स्क्रीनशॉट, आकार, padding, कोना, बॉर्डर, छाया, अवस्थाएँ देखें। सामान्य कंटेनर बाहर हैं।

`dimensionContexts[]` स्वामित्व जोड़ता है: प्रकार, CSS गुण, मूल मान/शॉर्टहैंड, कुल और तीन तक नमूने। नमूने पृष्ठ, view, सापेक्ष पथ, स्रोत ID/tag/लेबल, ज्ञात parent, तीन प्रत्यक्ष children देते हैं (`childCount` कुल)। ये उसी पृष्ठ/view/संस्करण के मूल ID हैं, बदले MCP layer ID नहीं। नमूने की view सटीक कुंजी, जैसे `laptop`, फ़िल्टर view `desktop`/`mobile` है। अनुपस्थित ID `-1`। संख्या केवल कैप्चर तत्वों की है; संख्या/नमूने पूरा वेबसाइट कवरेज नहीं कहते।

माप हर कंपोनेंट विवरण में हैं। Padding भीतर, margin बाहर है, आवश्यक नहीं पड़ोसी दूरी। Gap कंटेनर का है; children उदाहरण हैं, मापे पड़ोसी जोड़े नहीं। Sizing कंपोनेंट का अपना है। मूल इकाई/शॉर्टहैंड रखें। MCP [`get_spacing` और `get_sizing`](/docs/hi/mcp-tools#component-measurements-with-ownership-context) एक पृष्ठ/view का पृष्ठांकित संदर्भ/सार देते हैं।

Fonts टैब मूल फ़ॉन्ट ZIP देता है; आकार/भाषा उपयोग JSON `textStyles[]`, `fonts[].locales` से बनते हैं। ये क्लाइंट फ़ाइलें हैं, अतिरिक्त `@export` नहीं। `detectedLocales` भाषाएँ उनके स्क्रीनशॉट की गारंटी नहीं।

## सहेजी फ़ाइलें और निर्यात {/* #stored-files-and-exports */}

`GET /catalogs/{catalogId}/files/{path}` JSON `BinaryFileResponse` देता है: `data` base64, `contentType` डिकोड बाइट का प्रकार। पथ `screens[]` से हैं (`imagePath`, `fullPagePath`, `sectionPaths[]`, `videoPath`, `interactionVideoPath`)। `captureLimited` अधूरापन है।

मार्ग मूल संग्रह के लिए `@asset/{hash}`, `@font/{hash}`, `@model/{hash}` लेता है; hash UTF-8 मूल URL/data URL का `SHA-256`, lowercase hex है। `@export/assets`, `@export/fonts`, `@export/colors`, `@export/screenshots`, `@export/components`, `@export/languages`, `@export/technologies`, `@export/spacing-sizing` ZIP देते हैं। spacing/sizing में `spacing-sizing.json` है: चयनित संस्करण, पृष्ठ संख्या, `dimensions`, `componentSizing`, `dimensionContexts`। चयनित कैप्चर फ़ाइल/निर्यात के लिए `version` लें। साधारण कैप्चर JSON उपलब्ध नहीं।

## कॉल करने वाले के ऑपरेशन {/* #caller-operations */}

| विधि और पथ | उद्देश्य |
|---|---|
| `POST /requests` | `requestType: PRODUCT_REQUEST_TYPE_ADD` के साथ `url`, `subject`, या `requestType: PRODUCT_REQUEST_TYPE_UPDATE` के साथ `catalogId` भेजें। |
| `GET /requests`, `GET /requests/{requestId}` | अपने अनुरोध पृष्ठांकित करके निर्णय, सुरक्षा, कैप्चर प्रगति देखें। |
| `GET /me/appearance`, `PUT /me/appearance` | उपनाम पढ़ें/बदलें। |
| `GET /me/avatar`, `PUT /me/avatar`, `DELETE /me/avatar` | अवतार पढ़ें, base64 `data` अपलोड करें या हटाएँ। |
| `GET /tokens`, `POST /tokens`, `DELETE /tokens/{id}` | व्यक्तिगत टोकन प्रबंधित करें; बनाना `name`, `scopes` (`api`, `mcp`), `expiresInDays` (1–365) लेता है। सीक्रेट एक बार मिलता है। |
| `GET /me/profile`, `PUT /me/profile` | खाता प्रोफ़ाइल (`profile`) पढ़ें/बदलें। |
| `GET /me/credentials`, `GET /me/sessions`, `DELETE /me/sessions/{id}` | क्रेडेंशियल/सत्र देखें और सत्र बंद करें। |

खाता, रूप, अवतार, टोकन प्रबंधन के लिए साइन इन उपयोगकर्ता सत्र टोकन चाहिए; व्यक्तिगत API टोकन अनुमति नहीं देते। कैटलॉग/अनुरोध `api` स्कोप लेते हैं। `WatchCatalogs`, `WatchRequests` gRPC/gRPC-Web स्ट्रीम हैं, REST पथ नहीं।

## उदाहरण {/* #examples */}

- [curl](/docs/hi/api/rest/curl)
- [Python](/docs/hi/api/rest/python)
- [C#](/docs/hi/api/rest/csharp)
- [TypeScript](/docs/hi/api/rest/typescript)
- [Go](/docs/hi/api/rest/go)
- [Rust](/docs/hi/api/rest/rust)
- [Java](/docs/hi/api/rest/java)
- [C++](/docs/hi/api/rest/cpp)

समान मूल URL के नीचे `POST /requests`, `GET /requests`, `GET /requests/{request_id}` लें। `requestType: PRODUCT_REQUEST_TYPE_ADD` को `url`, `subject` चाहिए; `catalogId` वैकल्पिक। `PRODUCT_REQUEST_TYPE_UPDATE` को मौजूद `catalogId` दें; सर्वर नाम/स्रोत खोजता है। अनुरोध सहेजे जाते हैं, केवल मालिक देखता है। कैप्चर से पहले समीक्षा में स्वीकार/कारण सहित अस्वीकार होते हैं। ज्ञात असुरक्षित साइट स्वतः अस्वीकृत। REST/gRPC समान ऑपरेशन देते हैं।

## मानकीकृत इंटरफ़ेस डेटा {/* #normalized-interface-data */}

[Scene डेटा प्रारूप](/docs/hi/data-format) में तटस्थ इंटरफ़ेस आर्टिफ़ैक्ट, अवस्थाएँ, संसाधन, साक्ष्य हैं। वर्तमान मानकीकृत निर्यात MCP `get_interface_scene` से मिलता है; कैटलॉग API में अलग Scene ऑपरेशन नहीं।
