from drf_yasg.utils import swagger_auto_schema from drf_yasg import openapi from rest_framework import status # Swagger documentation for HadisSectListView hadis_sect_list_swagger = swagger_auto_schema( operation_description="Get list of all active Hadis sects grouped by sect type (Shia/Sunni)", operation_summary="List Hadis Sects", tags=['Hadis'], responses={ status.HTTP_200_OK: openapi.Response( description="List of hadis sects grouped by type with count", examples={ "application/json": { "count": 4, "results": { "shia": [ { "id": 1, "title": "Twelver Shia", "seo_field": None }, { "id": 2, "title": "Ismaili Shia", "seo_field": None } ], "sunni": [ { "id": 3, "title": "Hanafi", "seo_field": None }, { "id": 4, "title": "Maliki", "seo_field": None } ] } } } ), status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( description="Internal server error" ) } ) # Swagger documentation for HadisCategoryTreeView hadis_category_tree_swagger = swagger_auto_schema( operation_description="Get complete hierarchical tree structure of Hadis categories grouped by sect type (shia/sunni), with enhanced child information including father category details and hadis information", operation_summary="Get Complete Hadis Category Tree", tags=['Hadis'], responses={ status.HTTP_200_OK: openapi.Response( description="Complete hierarchical tree structure of categories grouped by sect type with enhanced child information", examples={ "application/json": { "count": 12, "results": { "shia": { "sects": { "1": { "id": 1, "sect_type": "shia", "title": "Shi'a Hadith Collections", "description": "Collections of Shi'a hadith", "order": 1 } }, "categories": { "quran": [ { "id": 1, "name": "Tafsir", "hadis_count": 150, "has_hadis": False, "order": 1, "xmind_file": "http://example.com/media/xmind/tafsir.xmind", "has_xmind_file": True, "children": [ { "id": 2, "name": "Surah Al-Fatiha", "hadis_count": 25, "has_hadis": True, "order": 1, "father_category": { "id": 1, "name": "Tafsir", "sect_id": 1, "sect_type": "shia", "source_type": "quran" }, "hadis_details": [ { "id": 1, "title": "The Opening", "title_narrator": "From Abu Hurairah", "text": "Actions are but by intention...", "translation": "Actions are but by intention...", "share_link": "http://example.com/hadis/1" } ], "children": [] } ] } ], "hadith": [] } }, "sunni": { "sects": { "2": { "id": 2, "sect_type": "sunni", "title": "Sunni Hadith Collections", "description": "Collections of Sunni hadith", "order": 2 } }, "categories": { "hadith": [ { "id": 10, "name": "Sahih al-Bukhari", "hadis_count": 2500, "has_hadis": True, "hadis_details": [ { "id": 100, "title": "The Beginning of Revelation", "title_narrator": "From Aisha", "text": "The first revelation...", "translation": "The first revelation...", "share_link": "http://example.com/hadis/100" } ], "children": [] } ] } } } } } ), status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( description="Internal server error" ) } ) # Swagger documentation for HadisSyncView # Swagger documentation for HadisListView hadis_list_swagger = swagger_auto_schema( operation_description="Get paginated list of Hadis for a specific category with translations based on request language", operation_summary="List Hadis by Category", tags=['Hadis'], manual_parameters=[ openapi.Parameter( 'category_id', openapi.IN_PATH, description="ID of the Hadis category", type=openapi.TYPE_INTEGER, required=True ), openapi.Parameter( 'page', openapi.IN_QUERY, description="Page number for pagination", type=openapi.TYPE_INTEGER, required=False ), openapi.Parameter( 'Accept-Language', openapi.IN_HEADER, description="Language code for translations (en, fa, ar, ur)", type=openapi.TYPE_STRING, required=False, default='en' ) ], responses={ status.HTTP_200_OK: openapi.Response( description="Paginated list of hadis", examples={ "application/json": { "count": 150, "next": "http://example.com/api/hadis/category/1/hadis/?page=2", "previous": None, "results": [ { "id": 1, "number": 1, "title": "The first hadis about faith", "category": { "id": 1, "title": "Book of Faith" }, "translation": "This is the English translation of the hadis" }, { "id": 2, "number": 2, "title": "The second hadis about prayer", "category": { "id": 1, "title": "Book of Faith" }, "translation": "This is the English translation of the second hadis" } ] } } ), status.HTTP_404_NOT_FOUND: openapi.Response( description="Category not found" ), status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( description="Internal server error" ) } ) hadis_detail_swagger = swagger_auto_schema( operation_summary="Get Hadis Details", operation_description="Retrieve detailed information about a specific hadis including status, tags, transmitters, and references", tags=['Hadis'], responses={ 200: openapi.Response( description="Hadis details retrieved successfully", schema=openapi.Schema( type=openapi.TYPE_OBJECT, properties={ 'id': openapi.Schema(type=openapi.TYPE_INTEGER, description='Hadis ID'), 'number': openapi.Schema(type=openapi.TYPE_INTEGER, description='Hadis number'), 'title': openapi.Schema(type=openapi.TYPE_STRING, description='Hadis title'), 'text': openapi.Schema(type=openapi.TYPE_STRING, description='Arabic text of hadis'), 'translation': openapi.Schema(type=openapi.TYPE_STRING, description='Translation in request language'), 'explanation': openapi.Schema(type=openapi.TYPE_STRING, description='Detailed explanation'), 'address': openapi.Schema(type=openapi.TYPE_STRING, description='Source address'), 'hadis_status_text': openapi.Schema(type=openapi.TYPE_STRING, description='Status description'), 'links': openapi.Schema( type=openapi.TYPE_ARRAY, items=openapi.Schema( type=openapi.TYPE_OBJECT, properties={ 'title': openapi.Schema(type=openapi.TYPE_STRING), 'link': openapi.Schema(type=openapi.TYPE_STRING) } ), description='Related links' ), 'status': openapi.Schema(type=openapi.TYPE_BOOLEAN, description='Active status'), 'category': openapi.Schema( type=openapi.TYPE_OBJECT, properties={ 'id': openapi.Schema(type=openapi.TYPE_INTEGER), 'title': openapi.Schema(type=openapi.TYPE_STRING), 'category_type': openapi.Schema(type=openapi.TYPE_STRING) } ), 'hadis_status': openapi.Schema( type=openapi.TYPE_OBJECT, properties={ 'id': openapi.Schema(type=openapi.TYPE_INTEGER), 'title': openapi.Schema(type=openapi.TYPE_STRING), 'color': openapi.Schema(type=openapi.TYPE_STRING) } ), 'tags': openapi.Schema( type=openapi.TYPE_ARRAY, items=openapi.Schema( type=openapi.TYPE_OBJECT, properties={ 'id': openapi.Schema(type=openapi.TYPE_INTEGER), 'title': openapi.Schema(type=openapi.TYPE_STRING) } ) ), 'transmitters': openapi.Schema( type=openapi.TYPE_ARRAY, items=openapi.Schema( type=openapi.TYPE_OBJECT, properties={ 'id': openapi.Schema(type=openapi.TYPE_INTEGER), 'order': openapi.Schema(type=openapi.TYPE_INTEGER), 'is_gap': openapi.Schema(type=openapi.TYPE_BOOLEAN), 'transmitter': openapi.Schema( type=openapi.TYPE_OBJECT, properties={ 'id': openapi.Schema(type=openapi.TYPE_INTEGER), 'full_name': openapi.Schema(type=openapi.TYPE_STRING), 'birth_year_hijri': openapi.Schema(type=openapi.TYPE_INTEGER), 'death_year_hijri': openapi.Schema(type=openapi.TYPE_INTEGER), 'description': openapi.Schema(type=openapi.TYPE_STRING) } ) } ) ), 'references': openapi.Schema( type=openapi.TYPE_ARRAY, items=openapi.Schema( type=openapi.TYPE_OBJECT, properties={ 'id': openapi.Schema(type=openapi.TYPE_INTEGER), 'page_number': openapi.Schema(type=openapi.TYPE_STRING), 'hadis_number_in_book': openapi.Schema(type=openapi.TYPE_STRING), 'description': openapi.Schema(type=openapi.TYPE_STRING), 'book': openapi.Schema( type=openapi.TYPE_OBJECT, properties={ 'id': openapi.Schema(type=openapi.TYPE_INTEGER), 'title': openapi.Schema(type=openapi.TYPE_STRING), 'summary_title': openapi.Schema(type=openapi.TYPE_STRING), 'publisher': openapi.Schema(type=openapi.TYPE_STRING), 'year_of_publication': openapi.Schema(type=openapi.TYPE_STRING) } ), 'images': openapi.Schema( type=openapi.TYPE_ARRAY, items=openapi.Schema( type=openapi.TYPE_OBJECT, properties={ 'id': openapi.Schema(type=openapi.TYPE_INTEGER), 'thumbnail': openapi.Schema(type=openapi.TYPE_STRING), 'priority': openapi.Schema(type=openapi.TYPE_INTEGER) } ) ) } ) ) } ) ), 404: openapi.Response(description="Hadis not found") } ) # Swagger documentation for HadisCollectionListView hadis_collections_swagger = swagger_auto_schema( operation_description="Get list of all active hadis collections for browsing and categorization", operation_summary="List Hadis Collections", operation_id="getHadisCollections", tags=['Hadis'], responses={ status.HTTP_200_OK: openapi.Response( description="List of hadis collections", examples={ "application/json": [ { "id": 1, "title": "Collection Title", "description": "Collection description", "order": 1, "status": True } ] } ), status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( description="Internal server error" ) } ) # Swagger documentation for HadisInfoView hadis_info_swagger = swagger_auto_schema( operation_description="Get statistical information about hadis database including counts of categories, references, bookmarks, and narrators", operation_summary="Get Hadis Statistics", operation_id="getHadisInfo", tags=['Hadis'], responses={ status.HTTP_200_OK: openapi.Response( description="Hadis database statistics", examples={ "application/json": { "category_count": 25, "reference_count": 150, "bookmark_count": 75, "narrator_count": 200 } } ), status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( description="Internal server error" ) } ) # Swagger documentation for HadisSyncView hadis_sync_swagger = swagger_auto_schema( operation_description="Get complete hadis data for offline synchronization including all categories, hadis, and related information", operation_summary="Sync Hadis Data", operation_id="syncHadisData", tags=['Hadis'], responses={ status.HTTP_200_OK: openapi.Response( description="Complete hadis data for synchronization with enhanced information", examples={ "application/json": { "count": 1500, "results": { "1": { "id": 1, "number": 1, "category_id": 2, "title": "The Opening", "title_narrator": "From Abu Hurairah", "text": "Actions are but by intention...", "description": "This hadith emphasizes the importance of intention in all actions...", "translations": { "en": "Actions are but by intention...", "ar": "إنما الأعمال بالنيات...", "fa": "اعمال به نیت است..." }, "explanation": "This hadith emphasizes the importance of intention in all actions...", "address": "Sahih al-Bukhari, Book of Revelation", "hadis_status": { "id": 1, "title": "Sahih", "color": "green" }, "hadis_status_text": "Authentic", "share_link": "http://example.com/hadis/1", "tags": [ {"id": 1, "title": "Intention"}, {"id": 2, "title": "Actions"} ], "links": { "audio": "http://example.com/audio/hadis1.mp3", "video": "http://example.com/video/hadis1.mp4" }, "transmitters": [ { "id": 1, "order": 1, "is_gap": False, "narrator_layer": "sahaba", "transmitter": { "id": 1, "full_name": "Abu Hurairah", "birth_year_hijri": 18, "death_year_hijri": 59, "madhhab": "sunni", "description": "One of the most prolific narrators of hadith", "reliability": "very_reliable" } } ], "references": [ { "id": 1, "title": "Sahih al-Bukhari", "images": [ { "id": 1, "image": "http://example.com/media/books/bukhari_cover.jpg", "order": 1, "description": "Front cover of Sahih al-Bukhari" } ], "authors": [ { "id": 1, "name": "Muhammad ibn Isma'il al-Bukhari" } ], "description": "The most authentic collection of hadith compiled by Imam Bukhari" } ], "corrections": [ { "id": 1, "title": "Translation Correction", "description": "Corrected translation for better accuracy", "translation": { "en": "Actions are judged by intentions...", "ar": "إنما الأعمال بالنيات...", "fa": "اعمال به نیت ها قضاوت می شود..." } } ] } } } } ), status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( description="Internal server error" ) } ) # Swagger documentation for TransmitterView transmitter_list_swagger = swagger_auto_schema( operation_description="Get list of transmitters (narrators) with optional filtering by status, madhhab, and generation", operation_summary="List Transmitters", tags=['Hadis'], manual_parameters=[ openapi.Parameter( 'status', openapi.IN_QUERY, description='Filter by reliability status (very_reliable, reliable, acceptable, weak, very_weak, unknown)', type=openapi.TYPE_STRING, required=False ), openapi.Parameter( 'madhhab', openapi.IN_QUERY, description='Filter by madhhab/school (shia, sunni, hanafi, maliki, shafii, hanbali, other, unknown)', type=openapi.TYPE_STRING, required=False ), openapi.Parameter( 'generation', openapi.IN_QUERY, description='Filter by generation (1-10 representing narrator layers/classes)', type=openapi.TYPE_INTEGER, required=False ), ], responses={ status.HTTP_200_OK: openapi.Response( description="List of transmitters with optional filtering applied", examples={ "application/json": [ { "id": 1, "full_name": "Abu Daud Sulaiman ibn al-Ash'ath al-Azdi al-Sijistani", "birth_year_hijri": 202, "death_year_hijri": 275, "description": "Imam Abu Daud, compiler of Sunan Abu Daud, one of the six major hadith collections" }, { "id": 2, "full_name": "Muhammad ibn Isma'il al-Bukhari", "birth_year_hijri": 194, "death_year_hijri": 256, "description": "Imam Bukhari, compiler of Sahih al-Bukhari, the most authentic hadith collection" } ] } ), status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( description="Internal server error" ) } ) # Swagger documentation for TransmitterDetailView transmitter_detail_swagger = swagger_auto_schema( operation_description="Get detailed information about a specific transmitter including their scholarly opinions and hadith transmissions", operation_summary="Get Transmitter Details", tags=['Hadis'], manual_parameters=[ openapi.Parameter( 'transmitters_id', openapi.IN_PATH, description="ID of the transmitter", type=openapi.TYPE_INTEGER, required=True ) ], responses={ status.HTTP_200_OK: openapi.Response( description="Detailed transmitter information with nested opinions and transmissions", examples={ "application/json": { "id": 1, "full_name": "Abu Daud Sulaiman ibn al-Ash'ath al-Azdi al-Sijistani", "kunya": "Abu Daud", "known_as": "Imam Abu Daud", "nickname": "Al-Sijistani", "origin": "Sijistan (modern Sistan)", "lived_in": "Basra, Baghdad", "died_in": "Basra", "birth_year_hijri": 202, "death_year_hijri": 275, "age_at_death": 73, "reliability": "very_reliable", "madhhab": "sunni", "in_sahih_bukhari": False, "in_sahih_muslim": True, "description": "Imam Abu Daud, compiler of Sunan Abu Daud", "thumbnail": "http://example.com/media/transmitters/abu_daud.jpg", "opinions": [ { "id": 1, "scholar_name": "Ibn Hajar al-Asqalani", "opinion_text": "Abu Daud was a reliable and trustworthy narrator", "status": "confirmed", "created_at": "2024-01-01T00:00:00Z", "updated_at": "2024-01-01T00:00:00Z" } ], "hadis_transmissions": [ { "id": 1, "hadis": { "id": 1001, "number": 1, "title": "The first hadith", "category": { "id": 1, "title": "Book of Faith" }, "translation": "Actions are by intentions" }, "order": 1, "status": "reliable", "narrator_layer": 1, "created_at": "2024-01-01T00:00:00Z" } ] } } ), status.HTTP_404_NOT_FOUND: openapi.Response( description="Transmitter not found" ), status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( description="Internal server error" ) } ) transmitter_sync_swagger = swagger_auto_schema( operation_description="Get complete transmitter (narrator) data for offline synchronization including biographical information and scholarly opinions", operation_summary="Sync Transmitter Data", operation_id="syncTransmitterData", tags=['Hadis'], responses={ status.HTTP_200_OK: openapi.Response( description="Complete transmitter data for synchronization", examples={ "application/json": { "count": 150, "results": { "1": { "id": 1, "full_name": "Abu Daud Sulaiman ibn al-Ash'ath al-Azdi al-Sijistani", "biographical": { "personal_info": { "full_name": "Abu Daud Sulaiman ibn al-Ash'ath al-Azdi al-Sijistani", "kunya": "Abu Daud", "known_as": "Imam Abu Daud", "nickname": "Al-Sijistani" }, "dates": { "birth_year_hijri": 202, "death_year_hijri": 275, "age_at_death": 73 }, "locations": { "origin": "Sijistan (modern Sistan)", "lived_in": "Basra, Baghdad", "died_in": "Basra" }, "religious_profile": { "reliability": "very_reliable", "madhhab": "shafii", "in_sahih_muslim": True, "in_sahih_bukhari": False }, "description": "One of the six canonical hadith collectors...", "thumbnail": "http://example.com/media/transmitters/abu_daud.jpg" }, "scholars_opinions": [ { "id": 1, "scholar_name": "Imam al-Nawawi", "opinion_text": "Abu Daud is reliable and trustworthy...", "status": "confirmed", "created_at": "2025-12-13T10:00:00Z", "updated_at": "2025-12-13T10:00:00Z" } ] } } } } ), status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( description="Internal server error" ) } ) # Swagger documentation for BookReferencesView book_references_list_swagger = swagger_auto_schema( operation_description="Get list of all book references used in hadith studies including their metadata, images, and volume counts", operation_summary="List Book References", tags=['Hadis'], responses={ status.HTTP_200_OK: openapi.Response( description="List of all book references", examples={ "application/json": [ { "id": 1, "title": "Sahih al-Bukhari", "description": "The most authentic collection of hadith compiled by Imam Bukhari", "rate": 5.0, "image": [ { "id": 1, "image": "http://example.com/media/books/bukhari_cover.jpg", "order": 1, "description": "Front cover of Sahih al-Bukhari", "created_at": "2024-01-01T00:00:00Z" } ], "volume_count": 9 }, { "id": 2, "title": "Sahih Muslim", "description": "The second most authentic collection of hadith compiled by Imam Muslim", "rate": 4.9, "image": [], "volume_count": 7 } ] } ), status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( description="Internal server error" ) } ) reference_sync_swagger = swagger_auto_schema( operation_description="Get complete book reference data for offline synchronization including basic information, detailed publication info, and related hadises", operation_summary="Sync Book References Data", operation_id="syncReferenceData", tags=['Hadis'], responses={ status.HTTP_200_OK: openapi.Response( description="Complete book references data for synchronization", examples={ "application/json": { "count": 50, "results": { "1": { "id": 1, "title": "Sahih al-Bukhari", "basic_info": { "title": "Sahih al-Bukhari", "authors": [ { "id": 1, "name": "Muhammad ibn Isma'il al-Bukhari" } ], "rating": 5.0, "description": "The most authentic collection of hadith compiled by Imam Bukhari", "volume": "9 volumes" }, "information": { "language": "Arabic", "isbn": "978-1234567890", "year_of_publication": "846", "number_of_pages": 4200, "volume_info": "9 volumes", "rating": 5.0 }, "hadis": [ { "id": 1, "title": "The Opening", "title_narrator": "From Abu Hurairah", "text": "Actions are but by intention...", "translation": "Actions are but by intention...", "share_link": "http://example.com/hadis/1" } ] } } } } ), status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( description="Internal server error" ) } ) # Swagger documentation for BookAuthorView book_authors_list_swagger = swagger_auto_schema( operation_description="Get list of all book authors who have contributed to hadith literature", operation_summary="List Book Authors", tags=['Hadis'], responses={ status.HTTP_200_OK: openapi.Response( description="List of all book authors", examples={ "application/json": [ { "id": 1, "name": "Muhammad ibn Isma'il al-Bukhari", "created_at": "2024-01-01T00:00:00Z", "updated_at": "2024-01-01T00:00:00Z" }, { "id": 2, "name": "Muslim ibn al-Hajjaj al-Qushayri", "created_at": "2024-01-01T00:00:00Z", "updated_at": "2024-01-01T00:00:00Z" } ] } ), status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( description="Internal server error" ) } ) # Swagger documentation for BookDetailView book_detail_swagger = swagger_auto_schema( operation_description="Get detailed information about a specific book reference including authors, images, and related hadiths", operation_summary="Get Book Reference Details", tags=['Hadis'], manual_parameters=[ openapi.Parameter( 'bookreference_id', openapi.IN_PATH, description="ID of the book reference", type=openapi.TYPE_INTEGER, required=True ) ], responses={ status.HTTP_200_OK: openapi.Response( description="Detailed book reference information", examples={ "application/json": { "id": 1, "title": "Sahih al-Bukhari", "description": "The most authentic collection of hadith compiled by Imam Bukhari", "language": "Arabic", "isbn": "978-1234567890", "volume": "9 volumes", "year_of_publication": "846", "number_page": 4200, "rate": 5.0, "created_at": "2024-01-01T00:00:00Z", "updated_at": "2024-01-01T00:00:00Z", "author": [ { "id": 1, "name": "Muhammad ibn Isma'il al-Bukhari", "created_at": "2024-01-01T00:00:00Z", "updated_at": "2024-01-01T00:00:00Z" } ], "image": [ { "id": 1, "image": "http://example.com/media/books/bukhari_cover.jpg", "order": 1, "description": "Front cover of Sahih al-Bukhari", "created_at": "2024-01-01T00:00:00Z" } ], "hadis": [ { "id": 1, "number": 1, "title": "The first hadith about faith", "category": { "id": 1, "title": "Book of Faith" }, "translation": "Actions are by intentions" } ] } } ), status.HTTP_404_NOT_FOUND: openapi.Response( description="Book reference not found" ), status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( description="Internal server error" ) } ) # Swagger documentation for CategoriesView categories_list_swagger = swagger_auto_schema( operation_description="Get list of all hadith categories with their associated sect information", operation_summary="List All Categories", tags=['Hadis'], responses={ status.HTTP_200_OK: openapi.Response( description="List of all hadith categories", examples={ "application/json": [ { "id": 1, "title": "Book of Faith", "sect_id": 1, "sect_type": "sunni", "source_type": "hadith", "description": "Hadiths related to Islamic faith and beliefs", "order": 1, "slug": "book-of-faith", "xmind_file": "http://example.com/media/xmind/faith.xmind", "children_count": 3 }, { "id": 2, "title": "Book of Prayer", "sect_id": 1, "sect_type": "sunni", "source_type": "hadith", "description": "Hadiths about salah (prayer) and related rulings", "order": 2, "slug": "book-of-prayer", "xmind_file": None, "children_count": 0 } ] } ), status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( description="Internal server error" ) } ) # Swagger documentation for CategoriesBySectView categories_by_sect_swagger = swagger_auto_schema( operation_description="Get list of hadith categories filtered by sect type (shia or sunni)", operation_summary="List Categories by Sect", tags=['Hadis'], manual_parameters=[ openapi.Parameter( 'sect_type', openapi.IN_PATH, description="Type of Islamic sect (shia or sunni)", type=openapi.TYPE_STRING, enum=['shia', 'sunni'], required=True ) ], responses={ status.HTTP_200_OK: openapi.Response( description="List of hadith categories filtered by sect type", examples={ "application/json": [ { "id": 1, "title": "Book of Faith", "sect_id": 1, "sect_type": "sunni", "source_type": "hadith", "description": "Hadiths related to Islamic faith and beliefs", "order": 1, "slug": "book-of-faith", "xmind_file": "http://example.com/media/xmind/faith.xmind", "children_count": 3 }, { "id": 2, "title": "Book of Prayer", "sect_id": 1, "sect_type": "sunni", "source_type": "hadith", "description": "Hadiths about salah (prayer) and related rulings", "order": 2, "slug": "book-of-prayer", "xmind_file": None, "children_count": 0 } ] } ), status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( description="Internal server error" ) } ) # Swagger documentation for HadisCategoryTreeBySectView categories_tree_by_sect_swagger = swagger_auto_schema( operation_description="Retrieve child categories of a specific parent category (identified by slug) within a given Islamic sect type", operation_summary="Get Category Children by Sect and Slug", operation_id="getCategoryChildrenBySectAndSlug", tags=['Hadis'], manual_parameters=[ openapi.Parameter( 'sect_type', openapi.IN_PATH, description="Type of Islamic sect (shia or sunni)", type=openapi.TYPE_STRING, enum=['shia', 'sunni'], required=True ), openapi.Parameter( 'slug', openapi.IN_PATH, description="URL slug of the parent category", type=openapi.TYPE_STRING, required=True ) ], responses={ status.HTTP_200_OK: openapi.Response( description="List of child categories belonging to the specified parent category (identified by slug) within the given sect type", examples={ "application/json": [ { "id": 330, "title": "Толкование суры Аль-Фатиха", "source_type": "quran", "slug": "-1", "sect_id": 20, "sect_type": "shia", "children_count": 0 }, { "id": 331, "title": "Толкование суры Аль-Бакара", "source_type": "quran", "slug": "-19", "sect_id": 20, "sect_type": "shia", "children_count": 0 }, { "id": 332, "title": "Толкование суры Аль Имран", "source_type": "quran", "slug": "-33", "sect_id": 20, "sect_type": "shia", "children_count": 0 } ] } ), status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( description="Internal server error" ) } ) # Swagger documentation for HadisCategoryTreeBySectSourceView categories_tree_by_sect_source_swagger = swagger_auto_schema( operation_description="Retrieve child categories of a specific parent category (identified by slug) within a given Islamic sect type, additionally filtered by source material type", operation_summary="Get Category Children by Sect, Slug and Source", operation_id="getCategoryChildrenBySectSlugAndSource", tags=['Hadis'], manual_parameters=[ openapi.Parameter( 'sect_type', openapi.IN_PATH, description="Type of Islamic sect (shia or sunni)", type=openapi.TYPE_STRING, enum=['shia', 'sunni'], required=True ), openapi.Parameter( 'slug', openapi.IN_PATH, description="URL slug of the parent category", type=openapi.TYPE_STRING, required=True ), openapi.Parameter( 'source_type', openapi.IN_PATH, description="Type of source material (quran, hadith, history, fatwa, quote)", type=openapi.TYPE_STRING, enum=['quran', 'hadith', 'history', 'fatwa', 'quote'], required=True ) ], responses={ status.HTTP_200_OK: openapi.Response( description="List of child categories belonging to the specified parent category (identified by slug) within the given sect type, additionally filtered by source type", examples={ "application/json": [ { "id": 330, "title": "Толкование суры Аль-Фатиха", "source_type": "quran", "slug": "-1", "sect_id": 20, "sect_type": "shia", "children_count": 0, "has_hadis": False }, { "id": 331, "title": "Толкование суры Аль-Бакара", "source_type": "quran", "slug": "-19", "sect_id": 20, "sect_type": "shia", "children_count": 0, "has_hadis": False }, { "id": 332, "title": "Толкование суры Аль Имран", "source_type": "quran", "slug": "-33", "sect_id": 20, "sect_type": "shia", "children_count": 0, "has_hadis": False } ] } ), status.HTTP_500_INTERNAL_SERVER_ERROR: openapi.Response( description="Internal server error" ) } )