# API

{% embed url="<https://www.boxhero.io/en/blog/boxhero-open-api-integrate-inventory-data>" %}

***

## **एपीआई संदर्भ**

विस्तृत एंडपॉइंट दस्तावेज़ीकरण के लिए, कृपया देखें: <https://rest.boxhero.io/docs/api>

***

## एंडपॉइंट

सभी एपीआई अनुरोध निम्नलिखित बेस URL पर भेजे जाने चाहिए:\ <mark style="color:नीला;"><https://rest.boxhero-app.com></mark>

## **प्रमाणीकरण**

सभी एपीआई अनुरोधों में एक शामिल होना चाहिए <mark style="color:नीला;">**Authorization**</mark> हेडर के साथ एक <mark style="color:नीला;">**Bearer token**</mark>:

```
Authorization: Bearer {API_TOKEN}
```

एपीआई टोकन प्राप्त करने के लिए:

1. Desktop (Web) पर अपने BoxHero खाते में लॉग इन करें।
2. पर जाएँ <mark style="color:नीला;">**`सेटिंग्स`**</mark> > <mark style="color:नीला;">**`इंटीग्रेशन`**</mark>.
3. एक नया एपीआई टोकन जनरेट करें।

## **अनुरोध करना**

यहाँ उत्पादों को प्राप्त करने के लिए एक नमूना एपीआई अनुरोध है।

```bash
curl -X 'GET' \
  'https://rest.boxhero-app.com/v1/items?location_ids=12345&location_ids=34567&limit=100' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer test-api-token-123'
```

## दर सीमाएँ

सिस्टम स्थिरता सुनिश्चित करने के लिए, हम निम्नलिखित दर सीमाएँ लागू करते हैं:

* प्रत्येक एंडपॉइंट के लिए प्रति सेकंड 5 क्वेरी।

एक बार जब आपकी दर सीमित हो जाती है, तो आपको निम्नलिखित के साथ एक त्रुटि संदेश दिखाई देगा:

* `X-Ratelimit-Limit` - प्रति मिनट अधिकतम क्वेरी
* `X-Ratelimit-Remaining` - शेष क्वेरी
* `X-Ratelimit-Reset` - क्वेरी गणना रीसेट होने तक शेष समय (सेकंड में)

***

## प्रतिक्रियाएँ

### सफलता

200 रेंज में HTTP स्थिति कोड वाली प्रतिक्रियाएँ सफल एपीआई प्रसंस्करण को दर्शाती हैं।

### त्रुटि

400 या 500 रेंज में स्थिति कोड एपीआई अनुरोध विफलता को दर्शाते हैं:

* 400 रेंज: अनुरोध के साथ प्रदान की गई जानकारी से क्लाइंट-पक्ष त्रुटि (उदा., आवश्यक पैरामीटर अनुपस्थित हैं)।
* 500 रेंज: सर्वर-पक्ष त्रुटि।

**त्रुटि प्रतिक्रिया का उदाहरण:**

```json
{
  "id": "ex_ku3gij67k9xzc8ef6r5esyu5",
  "type": "/errors/tokens/invalid",
  "title": "प्रमाणीकरण टोकन अमान्य है। कृपया एक मान्य टोकन प्रदान करें।",
  "correlation_id": "rq_z4g7dh55ykol7v2cx6homkpd",
  "given": "invalid-token-123"
}
```

* **id :** त्रुटि की पहचान करने के लिए एक अद्वितीय ID।
* **type :** त्रुटि के प्रकार की पहचान करने वाला URL के रूप में एक कोड।
* **title :** त्रुटि की सामग्री को मानव-पठनीय रूप में प्रदान करें।
* **correlation\_id :** त्रुटि से संबंधित अनुरोध की ID की ओर संकेत करता है।
* **others :** अतिरिक्त जानकारी प्रदान करने के लिए अतिरिक्त फ़ील्ड शामिल किए जा सकते हैं, जैसे कि "*given*" उदाहरण में।

### सामान्य त्रुटि प्रकार

<table><thead><tr><th width="252">प्रकार</th><th>विवरण</th></tr></thead><tbody><tr><td>/errors/not-found</td><td>अनुरोधित संसाधन नहीं मिला (उदा., किसी विशिष्ट ID वाला आइटम मौजूद नहीं है)।</td></tr><tr><td>/errors/invalid-request</td><td>अनुरोध में अमान्य पैरामीटर।</td></tr><tr><td>/errors/invalid-team-mode</td><td>अनुरोधित क्वेरी को वर्तमान टीम मोड में संसाधित नहीं किया जा सकता (उदा., का उपयोग करना <em>location</em> लुकअप API में <em>बेसिक मोड</em>).</td></tr><tr><td>/errors/tokens/required</td><td>एपीआई टोकन अनुपस्थित है।</td></tr><tr><td>/errors/tokens/invalid</td><td>अमान्य एपीआई टोकन (उदा., एपीआई टोकन की अवधि समाप्त हो चुकी है)।</td></tr><tr><td>/errors/too-many-requests</td><td>दर सीमा पार हो गई।</td></tr><tr><td>/errors/unhandled</td><td>अनसुलझी सर्वर-पक्ष त्रुटि।</td></tr><tr><td>/errors/core/usage-limit-exceeded</td><td>उपयोग सीमा तक पहुँच गए हैं। प्लान अपग्रेड आवश्यक है।</td></tr></tbody></table>

## पेजिनेशन

बड़े डेटासेट लौटाने वाले एंडपॉइंट्स (उदा., आइटम सूचियाँ, लेन-देन सूचियाँ) के लिए, सूची दृश्य एपीआई पेजिनेशन के माध्यम से एकल अनुरोध में लौटाए जाने वाले आइटमों की संख्या सीमित करता है। हम कर्सर-आधारित पेजिनेशन का उपयोग करते हैं:

{% hint style="info" %}
यह निर्धारित करने के लिए कि पेजिनेशन आवश्यक है या नहीं, एपीआई दस्तावेज़ीकरण में एंडपॉइंट के अनुरोध बॉडी में पेजिनेशन-संबंधी पैरामीटर मौजूद हैं या नहीं, जाँचें।
{% endhint %}

#### **पेजिनेशन पैरामीटर**

* `has_more` : एक बूलियन जो संकेत देता है कि वर्तमान पृष्ठ के बाद और डेटा मौजूद है या नहीं।
* `cursor` : अगला पृष्ठ प्राप्त करने के लिए कर्सर मान प्रदान करता है।

#### **अगला पृष्ठ प्राप्त करना**

* जाँचें कि `has_more` है `true`. इसका मतलब है कि एक और पृष्ठ उपलब्ध है।
* यदि `true`, तो शामिल करते हुए एक और अनुरोध भेजें `cursor={received cursor value}` पैरामीटर में। यह अगला डेटा लौटाएगा।
* दोहराएँ जब तक `has_more` है `false` पूर्ण सूची प्राप्त करने के लिए।

***

## सहायता और प्रतिक्रिया

यदि आपको समस्याएँ आती हैं या अतिरिक्त एपीआई कार्यक्षमता की आवश्यकता है, तो कृपया हमारी [सहायता टीम](https://docs-en.boxhero.io/etc/contact). एपीआई सुधारों और नई सुविधा अनुरोधों के लिए आपकी प्रतिक्रिया का स्वागत है।
