---
title: Strapi
description: >-
  strapi() source के साथ Strapi content type को उसके REST API के माध्यम से पढ़ें, और Strapi 4 तथा Strapi 5 दोनों पर Blocks बॉडी को Markdown में बदलें।
---

बिल्ट-इन `strapi()` एडेप्टर Strapi REST API (`/api/<pluralApiId>`) के माध्यम से एक content type पढ़ता है और प्रत्येक एंट्री की Blocks बॉडी को Markdown में बदलता है: पैराग्राफ़, हेडिंग, सूचियाँ, उद्धरण, कोड ब्लॉक, इमेज और लिंक। Markdown rich text फ़ील्ड जैसी लिखी गई है, वैसी ही आगे जाती है, केवल एक अपवाद के साथ: जो लिंक वेब, मेल, फ़ोन या सापेक्ष पता नहीं है, उसका केवल लेबल रखा जाता है। Strapi 5 के रिस्पॉन्स जैसे हैं वैसे ही पढ़े जाते हैं। Strapi 4 के `attributes` एनवेलप को फ़्लैट कर दिया जाता है, ताकि दोनों पर वही फ़ील्ड पाथ काम करें। आपको कुछ भी इंस्टॉल करने की आवश्यकता नहीं है।

```ts blume.config.ts
import { defineConfig } from "blume";
import { filesystem, strapi } from "blume/sources";

export default defineConfig({
  content: {
    sources: [
      filesystem({ root: "docs" }),
      strapi({
        prefix: "guides",
        url: "https://cms.example.com",
        contentType: "guides",
        // locale: "en"
        // Field paths default to title / description / slug / content / updatedAt
        fields: { body: "body" },
        // Extra query parameters: filters[...], sort
        params: { "filters[section][$eq]": "sdk" },
      }),
    ],
  },
});
```

API टोकन `STRAPI_API_TOKEN` एनवायरनमेंट वेरिएबल से लिया जाता है और bearer टोकन के रूप में भेजा जाता है। एंट्रियाँ `populate=*` के साथ फ़ेच की जाती हैं, ताकि इमेज के साथ उनके URL भी आएँ। इसे सीमित करने के लिए आप `populate` सेट कर सकते हैं। सापेक्ष अपलोड पाथ (`/uploads/x.png`) को `url` के आधार पर रिज़ॉल्व किया जाता है। केवल प्रकाशित एंट्रियाँ इम्पोर्ट की जाती हैं — `--preview` ड्राफ़्ट का अनुरोध करता है (Strapi 5 पर `status=draft`, Strapi 4 पर `publicationState=preview`)। इसके साथ, जो दस्तावेज़ कभी प्रकाशित नहीं हुआ है, उसे `draft: true` के साथ स्टेज किया जाता है, जबकि प्रकाशित दस्तावेज़ के लिए उसके नवीनतम ड्राफ़्ट का प्रीव्यू दिखाया जाता है।
