Files
igny8/master-docs/20-api/ENDPOINTS/writer.md
IGNY8 VPS (Salman) 3cbed65601 revamps docs complete
2025-12-07 14:14:29 +00:00

4.1 KiB
Raw Blame History

Writer Endpoints

Purpose

Document writer API endpoints for tasks, content, images, and taxonomies, including bulk actions and AI content generation triggers.

Code Locations (exact paths)

  • Routing: backend/igny8_core/modules/writer/urls.py
  • Views: backend/igny8_core/modules/writer/views.py
  • Serializers: backend/igny8_core/modules/writer/serializers.py
  • Services: backend/igny8_core/business/content/services/content_generation_service.py

High-Level Responsibilities

  • CRUD for writer entities scoped by account/site/sector.
  • Provide bulk operations and AI content generation for tasks.
  • Manage images and taxonomy terms linked to content/tasks.

Detailed Behavior

  • Base path: /api/v1/writer/
  • Viewsets (inherit SiteSectorModelViewSet, throttled writer, paginated):
    • TasksViewSet (/tasks/):
      • Filters: status, cluster_id, content_type, content_structure; search title/keywords; ordering by title/created_at/status.
      • Bulk: bulk_delete, bulk_update (status).
      • auto_generate_content: accepts task IDs (max 10), requires account, enforces credit checks via ContentGenerationService, returns async task_id or synchronous result; 402 on insufficient credits.
      • Create requires site_id/sector_id; validates site/sector alignment; sets account/site/sector explicitly.
    • ImagesViewSet (/images/):
      • Filters: task_id, content_id, image_type, status; ordering by created_at/position/id.
      • perform_create enforces site/sector presence (from request or defaults), sets account/site/sector; serves local files via file action with existence checks.
    • ContentViewSet (/content/):
      • Filters/order/search defined in viewset (titles, status, etc.); manages taxonomy relationships; exposes status, SEO fields, cluster link, external IDs/URLs.
    • ContentTaxonomyViewSet (/taxonomies/):
      • CRUD for taxonomy terms (category/tag) scoped to site/sector.
  • Serializers enforce required fields on create (e.g., cluster/content_type/content_structure for tasks; site/sector for content) and expose read-only derived fields (cluster/sector names, image/taxonomy info).
  • Error handling: unified responses; validation errors return 400; missing resources return 404; auto_generate_content can return 402/500 on credits/other errors.

Data Structures / Models Involved (no code)

  • Tasks, Content, Images, ContentTaxonomy, and related domain models; Account, Site, Sector.

Execution Flow

  • Requests → DRF auth → base viewset filtering (account/site/sector) → serializer validation → model save → unified response; bulk/AI actions invoke services.

Cross-Module Interactions

  • Planner clusters/ideas feed tasks; automation stages 36 operate on writer data; publishing/integration uses content/taxonomies/images.
  • Billing credits enforced during AI content generation via ContentGenerationService.

State Transitions

  • Tasks: queuedcompleted; Content: draftreviewpublished; Images: pendinggenerated.

Error Handling

  • Standard unified responses; credit errors mapped to 402 in auto_generate_content; file serving returns 404 for missing images.

Tenancy Rules

  • All endpoints scoped to account/site/sector; base viewset and permissions enforce access; admin/developer/system may bypass filtering but records retain tenant/site/sector fields.

Billing Rules

  • AI generation actions check/deduct credits via billing services; other CRUD does not alter credits.

Background Tasks / Schedulers

  • auto_generate_content may enqueue Celery AI tasks when returning task_id; automation uses writer endpoints indirectly via services.

Key Design Considerations

  • Strict site/sector validation on create; max 10 tasks per auto_generate_content to manage load/credits.
  • Image file serving is permissive but guarded by existence checks.

How Developers Should Work With This Module

  • Supply site_id/sector_id on create; use bulk actions for batch changes.
  • When extending AI flows, keep credit checks and account/site scoping intact.
  • Reuse existing viewsets/serializers for new fields; ensure filters/throttles stay aligned with module scope.