
# Procurize.AI REST API संदर्भ

**प्रोग्रामेटिक रूप से अपने ज्ञान आधार – दस्तावेज़, प्रश्नावली, RAG, और रिपोर्ट – को अपने API टोकन का उपयोग करके एक्सेस करें।**

> **लागू होता है:** Procurize.AI API v1  
> **प्रमाणीकरण:** `X-API-Key` हेडर के माध्यम से API कुंजी (टोकन प्रबंधन के लिए देखें [API Tokens](/api-tokens/))  
> **बेस URL:** `https://api.procurize.com`

## अवलोकन

Procurize.AI REST API प्रमुख प्लेटफ़ॉर्म सुविधाओं तक प्रोग्रामेटिक पहुँच प्रदान करता है। यह आपको Procurize.AI को अपने आंतरिक सिस्टमों के साथ एकीकृत करने, ज्ञान आधार प्रबंधन को स्वचालित करने और कस्टम वर्कफ़्लो बनाने में सक्षम बनाता है।

**समर्थित मॉड्यूल (टोकन‑प्रमाणित):**

- [**RagArticle**](#ragarticle) – दस्तावेज़ प्रबंधन
- [**RagFaq**](#ragfaq) – FAQ प्रविष्टियों का प्रबंधन
- [**RagQuery**](#ragquery) – RAG क्वेरी निष्पादित करें

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

सभी प्रमाणित एंडपॉइंट्स को अनुरोध हेडर में API टोकन पास करना आवश्यक है।

| हेडर | मान |
|------|------|
| `X-API-Key` | `<YOUR_API_TOKEN>` |

**उदाहरण:**
```bash
curl -X GET "https://api.procurize.com/v1/..." \
  -H "X-API-Key: your-api-token-here"
```

> 💡 टोकन आपके संगठन से बंधे होते हैं – आपको अनुरोध में संगठन ID निर्दिष्ट करने की आवश्यकता नहीं है।

## बेस URL

सभी REST API एंडपॉइंट्स इस URL के तहत उपलब्ध हैं:
```
https://api.procurize.com
```

## त्रुटि हैंडलिंग

API मानक HTTP स्थिति कोड का उपयोग करता है।

| कोड | अर्थ |
|------|------|
| `200 OK` | अनुरोध सफल |
| `201 Created` | संसाधन सफलतापूर्वक बनाया गया |
| `204 No Content` | अनुरोध सफल, कोई प्रतिक्रिया बॉडी नहीं |
| `400 Bad Request` | अमान्य पैरामीटर या गलत फ़ॉर्मेट वाला अनुरोध |
| `401 Unauthorized` | गायब या अमान्य API टोकन |
| `403 Forbidden` | टोकन को इस कार्रवाई की अनुमति नहीं है |
| `404 Not Found` | संसाधन मौजूद नहीं |
| `500 Internal Server Error` | अप्रत्याशित सर्वर त्रुटि |

त्रुटि प्रतिक्रियाओं में मशीन‑पठनीय त्रुटि कोड और मानव‑पठनीय संदेश शामिल होते हैं।

## मॉड्यूल संदर्भ

### RagArticle

#### GET /questionnaire/rag/articles/summary

**सारांश:** होम पेज के लिए सारांश

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| proj | query | string (uuid) | नहीं | प्रोजेक्ट ID. |

**प्रतिक्रिया (200):**
```json
{
  "active": 5
}
```

---

#### GET /questionnaire/rag/articles/total

**सारांश:** लेखों की संख्या

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| q | query | string | नहीं | लेख नाम या कोड पर फ़िल्टर. |
| state | query | array | नहीं | स्थिति पर फ़िल्टर. |
| project | query | array | नहीं | प्रोजेक्ट पर फ़िल्टर. |
| type | query | array | नहीं | दस्तावेज़ प्रकार पर फ़िल्टर. |

**प्रतिक्रिया (200):**
```json
42
```

---

#### GET /questionnaire/rag/articles/list

**सारांश:** लेखों की सूची प्राप्त करें

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| q | query | string | नहीं | लेख नाम या कोड पर फ़िल्टर. |
| state | query | array | नहीं | स्थिति पर फ़िल्टर. |
| project | query | array | नहीं | प्रोजेक्ट पर फ़िल्टर. |
| type | query | array | नहीं | दस्तावेज़ प्रकार पर फ़िल्टर. |
| s | query | string | नहीं | सॉर्ट फ़ील्ड. |
| asc | query | boolean | नहीं | आरोही क्रम. |
| ps | query | integer (int32) | नहीं | पेज आकार. |
| p | query | integer (int32) | नहीं | 1‑आधारित पेज संख्या. |

**प्रतिक्रिया (200):**
```json
{
  "paging": {
    "pageNumber": 1,
    "pageSize": 10,
    "total": 42,
    "totalPages": 5
  },
  "items": [
    {
      "code": "ART-001",
      "org": "00000000-0000-0000-0000-000000000000",
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "Article Title",
      "description": "Article description",
      "documentTypes": [
        {
          "id": "00000000-0000-0000-0000-000000000000",
          "name": "Type Name",
          "plural": "Type Names",
          "count": 5
        }
      ],
      "size": 150,
      "revision": {
        "id": "00000000-0000-0000-0000-000000000000",
        "collectionId": "00000000-0000-0000-0000-000000000000",
        "rev": 3,
        "date": "2025-01-15T10:30:00Z",
        "author": {
          "id": "user123",
          "name": "John Doe",
          "email": "john.doe@example.com",
          "login": "johndoe",
          "ra": true
        },
        "authorName": "John Doe",
        "analysisSummary": {
          "id": "00000000-0000-0000-0000-000000000000",
          "initiator": {
            "id": "user123",
            "name": "John Doe",
            "email": "john.doe@example.com",
            "login": "johndoe",
            "ra": true
          },
          "created": "2025-01-15T10:30:00Z",
          "state": "Completed",
          "stateDate": "2025-01-15T10:35:00Z",
          "stateDetails": "Analysis completed successfully",
          "operationId": "op-12345"
        }
      },
      "type": "Article",
      "state": "Active",
      "projects": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "items": [
        "00000000-0000-0000-0000-000000000000"
      ],
      "isShared": false
    }
  ]
}
```

---

#### POST /questionnaire/rag/file-to-md

**सारांश:** फ़ाइल से मार्कडाउन सामग्री लौटाता है

**अनुरोध बॉडी (multipart/form-data):**
```json
{
  "url": "https://example.com/file.pdf",
  "file": "binary"
}
```

**प्रतिक्रिया (200):**
```json
"Markdown content from file"
```

---

#### POST /questionnaire/rag/article/create

**सारांश:** एक लेख बनाएं

**अनुरोध बॉडी (multipart/form-data):**
```json
{
  "code": "ART-001",
  "name": "Article Title",
  "description": "Article description",
  "content": "# Article Content\n\nThis is the article content.",
  "url": "https://example.com/file.pdf",
  "file": "binary"
}
```

**प्रतिक्रिया (200):**
```json
{
  "code": "ART-001",
  "org": "00000000-0000-0000-0000-000000000000",
  "id": "00000000-0000-0000-0000-000000000000",
  "name": "Article Title",
  "description": "Article description",
  "documentTypes": null,
  "size": 150,
  "revision": null,
  "type": "Article",
  "state": "Active",
  "projects": null,
  "items": null,
  "isShared": false
}
```

---

#### GET /questionnaire/rag/article/check

**सारांश:** लेख की मौजूदगी जाँचें।

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| code | query | string | हाँ | लेख का कोड. |

**प्रतिक्रिया (200):**
```json
true
```

---

#### GET /questionnaire/rag/article-info

**सारांश:** कोड द्वारा लेख की जानकारी प्राप्त करें।

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| code | query | string | हाँ | लेख का कोड. |

**प्रतिक्रिया (200):**
```json
{
  "code": "ART-001",
  "org": "00000000-0000-0000-0000-000000000000",
  "id": "00000000-0000-0000-0000-000000000000",
  "name": "Article Title",
  "description": "Article description",
  "documentTypes": null,
  "size": 150,
  "revision": null,
  "type": "Article",
  "state": "Active",
  "projects": null,
  "items": null,
  "isShared": false
}
```

---

#### GET /questionnaire/rag/article

**सारांश:** कोड द्वारा लेख की सामग्री प्राप्त करें

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| code | query | string | हाँ | लेख का कोड. |
| format | query | string | नहीं | यदि true है, तो प्रतिक्रिया बॉडी में HTML सामग्री लौटाता है। अन्यथा लेख की सामग्री मार्कडाउन फ़ॉर्मेट में लौटाता है। |
| split | query | boolean | नहीं | यदि true है, तो सामग्री को RAG तत्वों द्वारा विभाजित करके लौटाता है। |
| css | query | boolean | नहीं | यदि true है, तो CSS के साथ HTML/PDF सामग्री लौटाता है। |

**प्रतिक्रिया (200):**
```json
"# Article Title\n\nThis is the article content in Markdown format."
```

#### POST /questionnaire/rag/article

**सारांश:** लेख मेटाडेटा अपडेट करें

**अनुरोध बॉडी:**
```json
{
  "code": "ART-001",
  "name": "Updated Article Title",
  "description": "Updated description",
  "projects": [
    "00000000-0000-0000-0000-000000000000"
  ],
  "documentTypes": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "Type Name",
      "plural": "Type Names"
    }
  ],
  "isShared": true,
  "state": "Active"
}
```

**प्रतिक्रिया (200):**
```json
{}
```

#### DELETE /questionnaire/rag/article

**सारांश:** लेख हटाएँ

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| code | query | string | हाँ | लेख का कोड. |

---

#### GET /questionnaire/rag/article/pdf

**सारांश:** कोड द्वारा लेख को PDF के रूप में प्राप्त करें

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| code | query | string | हाँ | लेख का कोड. |

**प्रतिक्रिया (200):**
```json
(pdf binary)
```

---

#### GET /questionnaire/rag/article/content

**सारांश:** लेख की सामग्री प्राप्त करें

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| code | query | string | हाँ | लेख का कोड. |

**प्रतिक्रिया (200):**
```json
{
  "content": "# Article Title\n\nContent here."
}
```

---

#### POST /questionnaire/rag/article/content

**सारांश:** लेख सामग्री अपडेट करें

**अनुरोध बॉडी (multipart/form-data):**
```json
{
  "code": "ART-001",
  "content": "# Updated Content",
  "file": "binary"
}
```

---

#### POST /questionnaire/rag/plural

**सारांश:** संज्ञा का बहुवचन रूप प्राप्त करें

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| noun | query | string | नहीं | बहुवचन करने के लिये संज्ञा. |

**प्रतिक्रिया (200):**
```json
{
  "plural": "Articles"
}
```

---

#### POST /questionnaire/rag/article/find-types

**सारांश:** AI के साथ लेख का विश्लेषण करें और उनके प्रकार लौटाएँ

**अनुरोध बॉडी (multipart/form-data):**
```json
{
  "code": "ART-001",
  "content": "# Article Content"
}
```

**प्रतिक्रिया (200):**
```json
[
  {
    "plural": "Types"
  }
]
```

---

#### POST /questionnaire/rag/article/format-with-ai

**सारांश:** AI के साथ लेख सामग्री को फ़ॉर्मेट करें

**अनुरोध बॉडी (multipart/form-data):**
```json
{
  "code": "ART-001",
  "content": "# Article Content"
}
```

**प्रतिक्रिया (200):**
```json
{
  "formattedContent": "# Formatted Article Content"
}
```

---

#### POST /questionnaire/rag/article/improve-on-suggestions

**सारांश:** सुझावों के आधार पर दस्तावेज़ को सुधारें

**अनुरोध बॉडी (multipart/form-data):**
```json
{
  "suggestions": [
    {
      "sectionTitle": "Introduction",
      "suggestion": "Add more details here."
    }
  ],
  "code": "ART-001",
  "content": "# Article Content"
}
```

**प्रतिक्रिया (200):**
```json
{
  "improvedContent": "# Improved Content"
}
```

---

#### GET /questionnaire/rag/article/parts

**सारांश:** लेख भागों की सूची लौटाता है

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| id | query | array | हाँ | लेख भागों की सूची. |

**प्रतिक्रिया (200):**
```json
[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "code": "part-1",
    "title": "Introduction",
    "orderNumber": 1,
    "content": "Introduction content."
  }
]
```

---

#### GET /questionnaire/rag/article/revisions

**सारांश:** लेख संशोधनों की सूची लौटाता है

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| code | query | string | हाँ | लेख का कोड. |

**प्रतिक्रिया (200):**
```json
[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "collectionId": "00000000-0000-0000-0000-000000000000",
    "rev": 1,
    "date": "2025-01-15T10:30:00Z",
    "author": {
      "id": "user123",
      "name": "John Doe",
      "email": "john.doe@example.com",
      "login": "johndoe",
      "ra": true
    },
    "authorName": "John Doe",
    "analysisSummary": {
      "id": "00000000-0000-0000-0000-000000000000",
      "initiator": {
        "id": "user123",
        "name": "John Doe",
        "email": "john.doe@example.com",
        "login": "johndoe",
        "ra": true
      },
      "created": "2025-01-15T10:30:00Z",
      "state": "Completed",
      "stateDate": "2025-01-15T10:35:00Z",
      "stateDetails": "Analysis completed",
      "operationId": "op-12345"
    }
  }
]
```

---

#### GET /questionnaire/rag/article/revisions/info/{id}

**सारांश:** लेख संशोधन जानकारी प्राप्त करें

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| id | path | string (uuid) | हाँ | संशोधन ID. |

**प्रतिक्रिया (200):**
```json
{
  "id": "00000000-0000-0000-0000-000000000000",
  "collectionId": "00000000-0000-0000-0000-000000000000",
  "rev": 1,
  "date": "2025-01-15T10:30:00Z",
  "author": {
    "id": "user123",
    "name": "John Doe",
    "email": "john.doe@example.com",
    "login": "johndoe",
    "ra": true
  },
  "authorName": "John Doe",
  "analysisSummary": {
    "id": "00000000-0000-0000-0000-000000000000",
    "initiator": {
      "id": "user123",
      "name": "John Doe",
      "email": "john.doe@example.com",
      "login": "johndoe",
      "ra": true
    },
    "created": "2025-01-15T10:30:00Z",
    "state": "Completed",
    "stateDate": "2025-01-15T10:35:00Z",
    "stateDetails": "Analysis completed",
    "operationId": "op-12345"
  }
}
```

---

#### GET /questionnaire/rag/article/revisions/{id}

**सारांश:** लेख संशोधन सामग्री प्राप्त करें

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| id | path | string (uuid) | हाँ | संशोधन ID. |

**प्रतिक्रिया (200):**
```json
"# Article Revision Content\n\nPrevious version."
```

---

#### GET /questionnaire/rag/article/analyze

**सारांश:** AI के साथ लेख सामग्री का विश्लेषण करें

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| code | query | string | हाँ | लेख का कोड. |
| rev | query | integer (int32) | नहीं | संशोधन संख्या. |
| force | query | boolean | नहीं | यदि true है, तो नया विश्लेषण बनाएं और यदि मौजूद हो तो अधूरा परिणाम हटाएँ. |

**प्रतिक्रिया (200):**
```json
{
  "id": "00000000-0000-0000-0000-000000000000",
  "initiator": {
    "id": "user123",
    "name": "John Doe",
    "email": "john.doe@example.com",
    "login": "johndoe",
    "ra": true
  },
  "created": "2025-01-15T10:30:00Z",
  "state": "Completed",
  "stateDate": "2025-01-15T10:35:00Z",
  "stateDetails": "Analysis completed",
  "operationId": "op-12345"
}
```

---

#### GET /questionnaire/rag/article/analyze/{id}

**सारांश:** लेख विश्लेषण परिणाम प्राप्त करें

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| id | path | string (uuid) | हाँ | विश्लेषण ID. |

**प्रतिक्रिया (200):**
```json
{
  "id": "00000000-0000-0000-0000-000000000000",
  "initiator": {
    "id": "user123",
    "name": "John Doe",
    "email": "john.doe@example.com",
    "login": "johndoe",
    "ra": true
  },
  "created": "2025-01-15T10:30:00Z",
  "state": "Completed",
  "stateDate": "2025-01-15T10:35:00Z",
  "stateDetails": "Analysis completed",
  "operationId": "op-12345",
  "fragments": [
    "fragment-1",
    "fragment-2"
  ],
  "ownInconcies": "Own inconsistencies found",
  "ragInconcies": "RAG inconsistencies found",
  "proposals": "Improvement proposals"
}
```

---

#### GET /questionnaire/rag/messages/list

**सारांश:** सभी संदेशों की सूची

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| id | query | string (uuid) | हाँ | RAG संग्रह ID. |
| item | query | string (uuid) | नहीं | RAG आइटम ID. |
| message | query | string (uuid) | नहीं | संदेश ID. |
| asc | query | boolean | नहीं | आरोही क्रम. |
| ps | query | integer (int32) | नहीं | पेज आकार. |
| p | query | integer (int32) | नहीं | 1‑आधारित पेज संख्या. |

**प्रतिक्रिया (200):**
```json
{
  "paging": {
    "pageNumber": 1,
    "pageSize": 10,
    "total": 5,
    "totalPages": 1
  },
  "items": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "replyTo": null,
      "questionnaire": null,
      "section": null,
      "question": null,
      "ragCollection": "00000000-0000-0000-0000-000000000000",
      "ragItem": "00000000-0000-0000-0000-000000000000",
      "targetId": "00000000-0000-0000-0000-000000000000",
      "targetType": "Question",
      "targetNum": 1,
      "author": {
        "id": "user123",
        "name": "John Doe",
        "email": "john.doe@example.com",
        "login": "johndoe",
        "ra": true
      },
      "text": "Message content",
      "created": "2025-01-15T10:30:00Z",
      "updated": "2025-01-15T10:30:00Z",
      "replies": 0
    }
  ]
}
```

---

#### POST /questionnaire/rag/messages/add

**सारांश:** नया संदेश जोड़ें

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| id | query | string (uuid) | हाँ | RAG संग्रह ID. |
| item | query | string (uuid) | नहीं | RAG आइटम ID. |
| message | query | string (uuid) | नहीं | उत्तर देने के लिये संदेश ID. |

**अनुरोध बॉडी:**
```json
{
  "text": "New message content"
}
```

**प्रतिक्रिया (200):**
```json
{
  "id": "00000000-0000-0000-0000-000000000000",
  "replyTo": null,
  "questionnaire": null,
  "section": null,
  "question": null,
  "ragCollection": "00000000-0000-0000-0000-000000000000",
  "ragItem": "00000000-0000-0000-0000-000000000000",
  "targetId": "00000000-0000-0000-0000-000000000000",
  "targetType": "Question",
  "targetNum": 1,
  "author": {
    "id": "user123",
    "name": "John Doe",
    "email": "john.doe@example.com",
    "login": "johndoe",
    "ra": true
  },
  "text": "New message content",
  "created": "2025-01-15T10:30:00Z",
  "updated": "2025-01-15T10:30:00Z",
  "replies": 0
}
```

---

#### POST /questionnaire/rag/message

**सारांश:** मौजूदा संदेश अपडेट करें

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| c | query | string (uuid) | हाँ | RAG संग्रह ID. |
| id | query | string (uuid) | हाँ | संदेश ID. |

**अनुरोध बॉडी:**
```json
{
  "text": "Updated message content"
}
```

**प्रतिक्रिया (200):**
```json
{
  "id": "00000000-0000-0000-0000-000000000000",
  "replyTo": null,
  "questionnaire": null,
  "section": null,
  "question": null,
  "ragCollection": "00000000-0000-0000-0000-000000000000",
  "ragItem": "00000000-0000-0000-0000-000000000000",
  "targetId": "00000000-0000-0000-0000-000000000000",
  "targetType": "Question",
  "targetNum": 1,
  "author": {
    "id": "user123",
    "name": "John Doe",
    "email": "john.doe@example.com",
    "login": "johndoe",
    "ra": true
  },
  "text": "Updated message content",
  "created": "2025-01-15T10:30:00Z",
  "updated": "2025-01-15T10:45:00Z",
  "replies": 0
}
```

#### DELETE /questionnaire/rag/message

**सारांश:** मौजूदा संदेश हटाएँ

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| id | query | string (uuid) | हाँ | संदेश ID. |

**प्रतिक्रिया (200):**
```json
{}
```

---

### RagFaq

#### GET /questionnaire/rag/faq-collections/summary

**सारांश:** होम पेज के लिए सारांश

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| proj | query | string (uuid) | नहीं | प्रोजेक्ट ID. |

**प्रतिक्रिया (200):**
```json
{
  "active": 3
}
```

---

#### GET /questionnaire/rag/faq-collections/total

**सारांश:** FAQ संग्रहों की संख्या।

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| q | query | string | नहीं | संग्रह नाम या कोड पर फ़िल्टर. |
| state | query | array | नहीं | स्थिति पर फ़िल्टर. |
| project | query | array | नहीं | प्रोजेक्ट पर फ़िल्टर. |

**प्रतिक्रिया (200):**
```json
3
```

---

#### GET /questionnaire/rag/faq-collections/list

**सारांश:** FAQ संग्रहों की सूची प्राप्त करें।

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| q | query | string | नहीं | संग्रह नाम या कोड पर फ़िल्टर. |
| state | query | array | नहीं | स्थिति पर फ़िल्टर. |
| project | query | array | नहीं | प्रोजेक्ट पर फ़िल्टर. |
| s | query | string | नहीं | सॉर्ट फ़ील्ड. |
| asc | query | boolean | नहीं | आरोही क्रम. |
| ps | query | integer (int32) | नहीं | पेज आकार. |
| p | query | integer (int32) | नहीं | 1‑आधारित पेज संख्या. |

**प्रतिक्रिया (200):**
```json
{
  "paging": {
    "pageNumber": 1,
    "pageSize": 10,
    "total": 3,
    "totalPages": 1
  },
  "items": [
    {
      "code": "FAQ-001",
      "org": "00000000-0000-0000-0000-000000000000",
      "id": "00000000-0000-0000-0000-000000000000",
      "name": "FAQ Collection",
      "description": "FAQ collection description",
      "documentTypes": null,
      "size": 5,
      "revision": null,
      "type": "Faq",
      "state": "Active",
      "projects": null,
      "items": null,
      "isShared": false
    }
  ]
}
```

---

#### GET /questionnaire/rag/faq-collections/find-items

**सारांश:** FAQ आइटम खोजें।

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| q | query | string | हाँ | प्रश्न पर फ़िल्टर. |
| project | query | string (uuid) | नहीं | प्रोजेक्ट पर फ़िल्टर. |
| ps | query | integer (int32) | नहीं | पेज आकार. |
| p | query | integer (int32) | नहीं | 1‑आधारित पेज संख्या. |

**प्रतिक्रिया (200):**
```json
{
  "paging": {
    "pageNumber": 1,
    "pageSize": 10,
    "total": 5,
    "totalPages": 1
  },
  "items": [
    {
      "index": 0,
      "question": "What is this product?",
      "answer": "This is a great product.",
      "comment": "Product FAQ",
      "state": "Active"
    }
  ]
}
```

---

#### POST /questionnaire/rag/faq-collection/create

**सारांश:** नया FAQ संग्रह बनाएं।

**अनुरोध बॉडी (multipart/form-data):**
```json
{
  "code": "FAQ-001",
  "name": "FAQ Collection",
  "description": "FAQ collection description",
  "content": "Content here",
  "file": "binary"
}
```

**प्रतिक्रिया (200):**
```json
{
  "code": "FAQ-001",
  "id": "00000000-0000-0000-0000-000000000000",
  "name": "FAQ Collection",
  "description": "FAQ collection description",
  "documentTypes": null,
  "size": 5,
  "revision": null,
  "type": "Faq",
  "state": "Active",
  "projects": null,
  "items": null,
  "isShared": false
}
```

---

#### POST /questionnaire/rag/faq-collection

**सारांश:** FAQ संग्रह मेटाडेटा अपडेट करें।

**अनुरोध बॉडी:**
```json
{
  "code": "FAQ-001",
  "name": "Updated FAQ Collection",
  "description": "Updated description",
  "projects": null,
  "documentTypes": null,
  "isShared": false,
  "state": "Active"
}
```

#### DELETE /questionnaire/rag/faq-collection

**सारांश:** FAQ संग्रह हटाएँ।

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| code | query | string | हाँ | संग्रह का कोड. |

#### GET /questionnaire/rag/faq-collection

**सारांश:** FAQ संग्रह प्राप्त करें।

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| code | query | string | हाँ | संग्रह का कोड. |

**प्रतिक्रिया (200):**
```json
{
  "code": "FAQ-001",
  "org": "00000000-0000-0000-0000-000000000000",
  "id": "00000000-0000-0000-0000-000000000000",
  "name": "FAQ Collection",
  "description": "FAQ collection description",
  "documentTypes": null,
  "size": 5,
  "revision": null,
  "type": "Faq",
  "state": "Active",
  "projects": null,
  "items": null,
  "isShared": false
}
```

---

#### GET /questionnaire/rag/faq-collection/check

**सारांश:** FAQ संग्रह की मौजूदगी जाँचें।

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| code | query | string | हाँ | संग्रह का कोड. |

**प्रतिक्रिया (200):**
```json
true
```

---

#### GET /questionnaire/rag/faq-collection/items-total

**सारांश:** FAQ आइटमों की संख्या।

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| code | query | string | हाँ | संग्रह का कोड. |
| q | query | string | नहीं | FAQ आइटम सामग्री पर फ़िल्टर. |

**अनुरोध बॉडी:**
```json
["Active", "Default"]
```

**प्रतिक्रिया (200):**
```json
5
```

---

#### GET /questionnaire/rag/faq-collection/items

**सारांश:** FAQ आइटमों की सूची प्राप्त करें।

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| code | query | string | हाँ | संग्रह का कोड. |
| q | query | string | नहीं | FAQ आइटम सामग्री पर फ़िल्टर. |
| state | query | array | नहीं | स्थिति पर फ़िल्टर. |
| s | query | string | नहीं | सॉर्ट फ़ील्ड. |
| asc | query | boolean | नहीं | आरोही क्रम. |
| ps | query | integer (int32) | नहीं | पेज आकार. |
| p | query | integer (int32) | नहीं | 1‑आधारित पेज संख्या. |

**प्रतिक्रिया (200):**
```json
{
  "paging": {
    "pageNumber": 1,
    "pageSize": 10,
    "total": 5,
    "totalPages": 1
  },
  "items": [
    {
      "index": 0,
      "question": "What is this product?",
      "answer": "This is a great product.",
      "comment": "Product FAQ",
      "state": "Active"
    }
  ]
}
```

---

#### POST /questionnaire/rag/faq-collection/item/create

**सारांश:** नया FAQ आइटम बनाएं।

**अनुरोध बॉडी:**
```json
{
  "code": "FAQ-001",
  "index": 0,
  "question": "What is this product?",
  "answer": "This is a great product.",
  "comment": "Product FAQ",
  "state": "Active"
}
```

**प्रतिक्रिया (200):**
```json
{
  "index": 0,
  "question": "What is this product?",
  "answer": "This is a great product.",
  "comment": "Product FAQ",
  "state": "Active"
}
```

---

#### GET /questionnaire/rag/faq-collection/item

**सारांश:** FAQ आइटम प्राप्त करें।

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| code | query | string | हाँ | संग्रह का कोड. |
| index | query | integer (int32) | हाँ | संग्रह में शून्य‑आधारित इंडेक्स. |

**प्रतिक्रिया (200):**
```json
{
  "index": 0,
  "question": "What is this product?",
  "answer": "This is a great product.",
  "comment": "Product FAQ",
  "state": "Active"
}
```

#### POST /questionnaire/rag/faq-collection/item

**सारांश:** FAQ आइटम अपडेट करें।

**अनुरोध बॉडी:**
```json
{
  "code": "FAQ-001",
  "index": 0,
  "newIndex": 1,
  "question": "Updated question?",
  "answer": "Updated answer.",
  "comment": "Updated comment",
  "state": "Active"
}
```

#### DELETE /questionnaire/rag/faq-collection/item

**सारांश:** FAQ आइटम हटाएँ।

**पैरामीटर:**
| नाम | इन | प्रकार | आवश्यक | विवरण |
|------|-----|------|----------|--------|
| code | query | string | हाँ | संग्रह का कोड. |
| index | query | integer (int32) | हाँ | संग्रह में शून्य‑आधारित इंडेक्स. |

---

### RagQuery

#### POST /questionnaire/rag/query

**सारांश:** RAG ज्ञान आधार में क्वेरी करें

**अनुरोध बॉडी:**
```json
{
  "project": "00000000-0000-0000-0000-000000000000",
  "excludeCollections": [
    "00000000-0000-0000-0000-000000000000"
  ],
  "question": "What is this product?",
  "yourCompanyName": "Acme Corp",
  "yourCompanyAlias": "Acme",
  "customerName": "John Doe",
  "options": [
    "option1",
    "option2"
  ],
  "multiselect": false,
  "nArticles": 5,
  "nFaqs": 3,
  "threshold": 0.5,
  "debug": false,
  "withJustification": true,
  "withConfidenceLevel": true,
  "withFragments": true,
  "nAttempts": 3
}
```

**प्रतिक्रिया (200):**
```json
{
  "attempt": 1,
  "preparedQuery": {
    "original": "What is this product?",
    "enhanced": "What is this product and its features?"
  },
  "ragItems": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "distance": 0.25
    }
  ],
  "question": "What is this product?",
  "generalInstructions": "Based on the knowledge base, here is the answer:",
  "text": "This product is a great solution for your needs.",
  "explanation": "The answer was found in multiple sources with high confidence."
}
```

---

#### POST /questionnaire/rag/query-stream

**सारांश:** RAG ज्ञान आधार में क्वेरी करें (स्ट्रीम)

**अनुरोध बॉडी:** (उसी स्वरूप जैसा ऊपर)

**प्रतिक्रिया (200):**
```json
[
  {
    "text": "This product is a great solution",
    "fragments": [
      {
        "id": "00000000-0000-0000-0000-000000000000",
        "part": 1,
        "distance": 0.25,
        "type": "Article",
        "code": "ART-001",
        "title": "Product Title",
        "fragment": "Product content fragment"
      }
    ]
  },
  {
    "text": " for your needs.",
    "fragments": []
  }
]
```

---

#### POST /questionnaire/rag/query-fragments

**सारांश:** RAG ज्ञान आधार में क्वेरी करें (फ़्रैगमेंट्स)

**अनुरोध बॉडी:**
```json
{
  "project": "00000000-0000-0000-0000-000000000000",
  "exclude_documents": [
    "00000000-0000-0000-0000-000000000000"
  ],
  "query": "What is this product?",
  "top_k": 5,
  "similarity_threshold": 0.5,
  "prepare_query": true
}
```

**प्रतिक्रिया (200):**
```json
{
  "results": [
    {
      "document_id": "00000000-0000-0000-0000-000000000000",
      "document_code": "ART-001",
      "document_title": "Product Title",
      "revision": 3,
      "chunk_index": 0,
      "content": "Product content fragment",
      "metadata": {
        "author": "John Doe",
        "created_at": "2025-01-15T10:30:00Z",
        "last_updated_at": "2025-01-15T10:35:00Z",
        "doc_categories": [
          "Product",
          "Information"
        ]
      },
      "similarity_score": 0.85
    }
  ]
}
```

## संबंधित लेख

- [API Tokens – Generation & Management](/api-tokens/) – टोकन कैसे बनाएं और प्रबंधित करें
- [Ask AI with your knowledge base](/ask-ai-with-your-knowledge-base/) – RAG क्वेरी का उपयोग करना