{
  "basePath": "/",
  "definitions": {
    "ErrorBody": {
      "properties": {
        "code": {
          "type": "string"
        },
        "details": {},
        "message": {
          "type": "string"
        },
        "request_id": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "IdeaFAQPatchRequest": {
      "properties": {
        "answer": {
          "type": "string"
        },
        "position": {
          "type": "integer"
        },
        "question": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "IdeaFAQRequest": {
      "properties": {
        "answer": {
          "type": "string"
        },
        "position": {
          "type": "integer"
        },
        "question": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "IdeaResponse": {
      "properties": {
        "affiliate_disclosure_required": {
          "type": "boolean"
        },
        "archived_at": {
          "type": "string"
        },
        "canonical_url": {
          "type": "string"
        },
        "capital_required_max_cents": {
          "type": "integer"
        },
        "capital_required_min_cents": {
          "type": "integer"
        },
        "category": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "content_version": {
          "type": "integer"
        },
        "country": {
          "type": "string"
        },
        "created_at": {
          "type": "string"
        },
        "created_by": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "disclaimer": {
          "type": "string"
        },
        "earning_frequency": {
          "type": "string"
        },
        "earning_potential_max_cents": {
          "type": "integer"
        },
        "earning_potential_min_cents": {
          "type": "integer"
        },
        "effort_level": {
          "type": "string"
        },
        "gst_relevant": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "income_type": {
          "type": "string"
        },
        "is_investment_related": {
          "type": "boolean"
        },
        "language": {
          "type": "string"
        },
        "license_required": {
          "type": "boolean"
        },
        "meta_description": {
          "type": "string"
        },
        "meta_title": {
          "type": "string"
        },
        "monetization_type": {
          "type": "string"
        },
        "online_mode": {
          "type": "string"
        },
        "public_warning": {
          "type": "string"
        },
        "published_at": {
          "type": "string"
        },
        "published_by": {
          "type": "string"
        },
        "required_skills": {
          "additionalProperties": {},
          "type": "object"
        },
        "required_tools": {
          "additionalProperties": {},
          "type": "object"
        },
        "review_due_at": {
          "type": "string"
        },
        "reviewed_at": {
          "type": "string"
        },
        "reviewed_by": {
          "type": "string"
        },
        "risk_level": {
          "type": "string"
        },
        "scam_sensitive": {
          "type": "boolean"
        },
        "skill_level": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "sub_category": {
          "type": "string"
        },
        "suitable_for": {
          "additionalProperties": {},
          "type": "object"
        },
        "summary": {
          "type": "string"
        },
        "tax_note": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        },
        "time_horizon": {
          "type": "string"
        },
        "time_to_income": {
          "type": "string"
        },
        "time_to_start": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "updated_at": {
          "type": "string"
        },
        "updated_by": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "IdeaReviewResponse": {
      "properties": {
        "content_version": {
          "type": "integer"
        },
        "created_at": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "idea_id": {
          "type": "string"
        },
        "next_review_due_at": {
          "type": "string"
        },
        "review_type": {
          "type": "string"
        },
        "reviewed_at": {
          "type": "string"
        },
        "reviewer_id": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        },
        "updated_at": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "IdeaSourcePatchRequest": {
      "properties": {
        "accessed_at": {
          "type": "string"
        },
        "is_primary": {
          "type": "boolean"
        },
        "published_at": {
          "type": "string"
        },
        "publisher": {
          "type": "string"
        },
        "source_type": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "IdeaSourceRequest": {
      "properties": {
        "accessed_at": {
          "type": "string"
        },
        "is_primary": {
          "type": "boolean"
        },
        "published_at": {
          "type": "string"
        },
        "publisher": {
          "type": "string"
        },
        "source_type": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "IdeaStepPatchRequest": {
      "properties": {
        "description": {
          "type": "string"
        },
        "estimated_time": {
          "type": "string"
        },
        "position": {
          "type": "integer"
        },
        "required": {
          "type": "boolean"
        },
        "title": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "IdeaStepRequest": {
      "properties": {
        "description": {
          "type": "string"
        },
        "estimated_time": {
          "type": "string"
        },
        "position": {
          "type": "integer"
        },
        "required": {
          "type": "boolean"
        },
        "title": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "MoneyProfileRequest": {
      "properties": {
        "age_group": {
          "type": "string"
        },
        "available_capital_range": {
          "type": "string"
        },
        "available_hours_per_week": {
          "type": "integer"
        },
        "city": {
          "type": "string"
        },
        "consented_at": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "education_level": {
          "type": "string"
        },
        "employment_status": {
          "type": "string"
        },
        "goal_timeline": {
          "type": "string"
        },
        "goals": {
          "additionalProperties": {},
          "type": "object"
        },
        "income_range": {
          "type": "string"
        },
        "languages": {
          "additionalProperties": {},
          "type": "object"
        },
        "online_mode_preference": {
          "type": "string"
        },
        "preferred_income_types": {
          "additionalProperties": {},
          "type": "object"
        },
        "risk_appetite": {
          "type": "string"
        },
        "skills": {
          "additionalProperties": {},
          "type": "object"
        },
        "state": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "MoneyProfileResponse": {
      "properties": {
        "age_group": {
          "type": "string"
        },
        "available_capital_range": {
          "type": "string"
        },
        "available_hours_per_week": {
          "type": "integer"
        },
        "city": {
          "type": "string"
        },
        "consented_at": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "created_at": {
          "type": "string"
        },
        "education_level": {
          "type": "string"
        },
        "employment_status": {
          "type": "string"
        },
        "goal_timeline": {
          "type": "string"
        },
        "goals": {
          "additionalProperties": {},
          "type": "object"
        },
        "id": {
          "type": "string"
        },
        "income_range": {
          "type": "string"
        },
        "languages": {
          "additionalProperties": {},
          "type": "object"
        },
        "online_mode_preference": {
          "type": "string"
        },
        "preferred_income_types": {
          "additionalProperties": {},
          "type": "object"
        },
        "risk_appetite": {
          "type": "string"
        },
        "skills": {
          "additionalProperties": {},
          "type": "object"
        },
        "state": {
          "type": "string"
        },
        "updated_at": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "MoneyRange": {
      "properties": {
        "max_cents": {
          "type": "integer"
        },
        "min_cents": {
          "type": "integer"
        }
      },
      "type": "object"
    },
    "PublicAffiliateLink": {
      "properties": {
        "disclosure_text": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "label": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "PublicIdeaCompareItem": {
      "properties": {
        "affiliate_disclosure_required": {
          "type": "boolean"
        },
        "capital_range": {
          "$ref": "#/definitions/MoneyRange"
        },
        "compliance_warnings": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "earning_model": {
          "type": "string"
        },
        "effort_level": {
          "type": "string"
        },
        "eligibility": {
          "additionalProperties": {},
          "type": "object"
        },
        "id": {
          "type": "string"
        },
        "review_due_at": {
          "type": "string"
        },
        "reviewed_at": {
          "type": "string"
        },
        "risk_level": {
          "type": "string"
        },
        "skill_level": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        },
        "time_horizon": {
          "type": "string"
        },
        "time_to_income": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "PublicIdeaCompareRequest": {
      "properties": {
        "idea_ids": {
          "items": {
            "type": "string"
          },
          "maxItems": 5,
          "minItems": 2,
          "type": "array"
        }
      },
      "required": [
        "idea_ids"
      ],
      "type": "object"
    },
    "PublicIdeaCompareResponse": {
      "properties": {
        "dimensions": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "items": {
          "items": {
            "$ref": "#/definitions/PublicIdeaCompareItem"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "PublicIdeaDetailResponse": {
      "properties": {
        "affiliate_disclosure_required": {
          "type": "boolean"
        },
        "affiliate_links": {
          "items": {
            "$ref": "#/definitions/PublicAffiliateLink"
          },
          "type": "array"
        },
        "canonical_url": {
          "type": "string"
        },
        "capital_required_max_cents": {
          "type": "integer"
        },
        "capital_required_min_cents": {
          "type": "integer"
        },
        "category": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "disclaimer": {
          "type": "string"
        },
        "earning_frequency": {
          "type": "string"
        },
        "earning_potential_max_cents": {
          "type": "integer"
        },
        "earning_potential_min_cents": {
          "type": "integer"
        },
        "effort_level": {
          "type": "string"
        },
        "faqs": {
          "items": {
            "$ref": "#/definitions/PublicIdeaFAQ"
          },
          "type": "array"
        },
        "gst_relevant": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "income_type": {
          "type": "string"
        },
        "language": {
          "type": "string"
        },
        "license_required": {
          "type": "boolean"
        },
        "meta_description": {
          "type": "string"
        },
        "meta_title": {
          "type": "string"
        },
        "online_mode": {
          "type": "string"
        },
        "public_warning": {
          "type": "string"
        },
        "published_at": {
          "type": "string"
        },
        "required_skills": {
          "additionalProperties": {},
          "type": "object"
        },
        "required_tools": {
          "additionalProperties": {},
          "type": "object"
        },
        "review_due_at": {
          "type": "string"
        },
        "reviewed_at": {
          "type": "string"
        },
        "risk_level": {
          "type": "string"
        },
        "scam_sensitive": {
          "type": "boolean"
        },
        "skill_level": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        },
        "sources": {
          "items": {
            "$ref": "#/definitions/PublicIdeaSource"
          },
          "type": "array"
        },
        "state": {
          "type": "string"
        },
        "steps": {
          "items": {
            "$ref": "#/definitions/PublicIdeaStep"
          },
          "type": "array"
        },
        "sub_category": {
          "type": "string"
        },
        "suitable_for": {
          "additionalProperties": {},
          "type": "object"
        },
        "summary": {
          "type": "string"
        },
        "tax_note": {
          "type": "string"
        },
        "time_horizon": {
          "type": "string"
        },
        "time_to_income": {
          "type": "string"
        },
        "time_to_start": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "PublicIdeaFAQ": {
      "properties": {
        "answer": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "position": {
          "type": "integer"
        },
        "question": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "PublicIdeaListItem": {
      "properties": {
        "affiliate_disclosure_required": {
          "type": "boolean"
        },
        "capital_required_max_cents": {
          "type": "integer"
        },
        "capital_required_min_cents": {
          "type": "integer"
        },
        "category": {
          "type": "string"
        },
        "city": {
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "earning_frequency": {
          "type": "string"
        },
        "earning_potential_max_cents": {
          "type": "integer"
        },
        "earning_potential_min_cents": {
          "type": "integer"
        },
        "effort_level": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "income_type": {
          "type": "string"
        },
        "language": {
          "type": "string"
        },
        "online_mode": {
          "type": "string"
        },
        "published_at": {
          "type": "string"
        },
        "review_due_at": {
          "type": "string"
        },
        "reviewed_at": {
          "type": "string"
        },
        "risk_level": {
          "type": "string"
        },
        "scam_sensitive": {
          "type": "boolean"
        },
        "skill_level": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        },
        "state": {
          "type": "string"
        },
        "sub_category": {
          "type": "string"
        },
        "suitable_for": {
          "additionalProperties": {},
          "type": "object"
        },
        "summary": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "PublicIdeaListResponse": {
      "properties": {
        "items": {
          "items": {
            "$ref": "#/definitions/PublicIdeaListItem"
          },
          "type": "array"
        },
        "page": {
          "type": "integer"
        },
        "page_size": {
          "type": "integer"
        },
        "total": {
          "type": "integer"
        }
      },
      "type": "object"
    },
    "PublicIdeaSource": {
      "properties": {
        "id": {
          "type": "string"
        },
        "publisher": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "PublicIdeaStep": {
      "properties": {
        "body": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "position": {
          "type": "integer"
        },
        "title": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "RecommendationItem": {
      "properties": {
        "disclaimer": {
          "type": "string"
        },
        "idea": {
          "$ref": "#/definitions/PublicIdeaListItem"
        },
        "rank": {
          "type": "integer"
        },
        "reason_codes": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "score": {
          "type": "integer"
        }
      },
      "type": "object"
    },
    "RecommendationResponse": {
      "properties": {
        "items": {
          "items": {
            "$ref": "#/definitions/RecommendationItem"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "ReorderItem": {
      "properties": {
        "id": {
          "type": "string"
        },
        "position": {
          "type": "integer"
        }
      },
      "type": "object"
    },
    "ReorderRequest": {
      "properties": {
        "items": {
          "items": {
            "$ref": "#/definitions/ReorderItem"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "ReorderResponse": {
      "properties": {
        "content_version": {
          "type": "integer"
        }
      },
      "type": "object"
    },
    "ReviewCreateRequest": {
      "properties": {
        "next_review_due_at": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "review_type": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      },
      "required": [
        "review_type",
        "status"
      ],
      "type": "object"
    },
    "ReviewCreateResponse": {
      "properties": {
        "idea": {
          "$ref": "#/definitions/IdeaResponse"
        },
        "review": {
          "$ref": "#/definitions/IdeaReviewResponse"
        }
      },
      "type": "object"
    },
    "SaveIdeaRequest": {
      "properties": {
        "idea_id": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "remind_at": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      },
      "required": [
        "idea_id"
      ],
      "type": "object"
    },
    "SavedIdeaIdeaView": {
      "properties": {
        "archived_at": {
          "type": "string"
        },
        "category": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "language": {
          "type": "string"
        },
        "slug": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "SavedIdeaListResponse": {
      "properties": {
        "items": {
          "items": {
            "$ref": "#/definitions/SavedIdeaResponse"
          },
          "type": "array"
        }
      },
      "type": "object"
    },
    "SavedIdeaPatchRequest": {
      "properties": {
        "notes": {
          "type": "string"
        },
        "rejection_reason": {
          "type": "string"
        },
        "remind_at": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "usefulness_rating": {
          "type": "integer"
        }
      },
      "type": "object"
    },
    "SavedIdeaResponse": {
      "properties": {
        "created_at": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "idea": {
          "$ref": "#/definitions/SavedIdeaIdeaView"
        },
        "idea_id": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "rejection_reason": {
          "type": "string"
        },
        "remind_at": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "updated_at": {
          "type": "string"
        },
        "usefulness_rating": {
          "type": "integer"
        }
      },
      "type": "object"
    },
    "WorkflowRequest": {
      "properties": {
        "reason": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "WorkflowResponse": {
      "properties": {
        "idea": {
          "$ref": "#/definitions/IdeaResponse"
        }
      },
      "type": "object"
    },
    "admindto.IdeaFAQResponse": {
      "properties": {
        "content_version": {
          "type": "integer"
        },
        "item": {
          "$ref": "#/definitions/dto.IdeaFAQResponse"
        }
      },
      "type": "object"
    },
    "admindto.IdeaSourceResponse": {
      "properties": {
        "content_version": {
          "type": "integer"
        },
        "item": {
          "$ref": "#/definitions/dto.IdeaSourceResponse"
        }
      },
      "type": "object"
    },
    "admindto.IdeaStepResponse": {
      "properties": {
        "content_version": {
          "type": "integer"
        },
        "item": {
          "$ref": "#/definitions/dto.IdeaStepResponse"
        }
      },
      "type": "object"
    },
    "dto.IdeaFAQResponse": {
      "properties": {
        "answer": {
          "type": "string"
        },
        "created_at": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "idea_id": {
          "type": "string"
        },
        "position": {
          "type": "integer"
        },
        "question": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        },
        "updated_at": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "dto.IdeaSourceResponse": {
      "properties": {
        "accessed_at": {
          "type": "string"
        },
        "created_at": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "idea_id": {
          "type": "string"
        },
        "is_primary": {
          "type": "boolean"
        },
        "published_at": {
          "type": "string"
        },
        "publisher": {
          "type": "string"
        },
        "source_type": {
          "type": "string"
        },
        "tenant_id": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "updated_at": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "dto.IdeaStepResponse": {
      "properties": {
        "created_at": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "estimated_time": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "idea_id": {
          "type": "string"
        },
        "position": {
          "type": "integer"
        },
        "required": {
          "type": "boolean"
        },
        "tenant_id": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "updated_at": {
          "type": "string"
        }
      },
      "type": "object"
    }
  },
  "info": {
    "contact": {},
    "description": "REST API for India-focused income, investment education, job, and earning ideas.",
    "title": "IncomeMonk API",
    "version": "1.0.0"
  },
  "paths": {
    "/api/admin/incomemonk/ideas": {
      "get": {
        "description": "Lists ideas across statuses for authorized admin users with page or cursor pagination.",
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Exact idea status filter",
            "in": "query",
            "name": "status",
            "type": "string"
          },
          {
            "description": "Sort as field:direction, e.g. created_at:desc",
            "in": "query",
            "name": "sort",
            "type": "string"
          },
          {
            "description": "Page number",
            "in": "query",
            "name": "page",
            "type": "integer"
          },
          {
            "description": "Page size (1-100)",
            "in": "query",
            "name": "page_size",
            "type": "integer"
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor",
            "in": "query",
            "name": "cursor",
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/AdminIdeaListResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "List admin ideas",
        "tags": [
          "Incomemonk Admin Ideas"
        ]
      },
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Creates a draft idea.",
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea create request",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IdeaCreateRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/IdeaResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Create draft idea",
        "tags": [
          "Incomemonk Admin Ideas"
        ]
      }
    },
    "/api/admin/incomemonk/ideas/{id}": {
      "get": {
        "description": "Returns full admin view of an idea, including internal review and compliance metadata.",
        "parameters": [
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/IdeaResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Get admin idea detail",
        "tags": [
          "Incomemonk Admin Ideas"
        ]
      },
      "put": {
        "consumes": [
          "application/json"
        ],
        "description": "Replaces editable idea content and increments content_version.",
        "parameters": [
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea update request",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IdeaUpdateRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/IdeaResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Replace admin idea",
        "tags": [
          "Incomemonk Admin Ideas"
        ]
      },
      "patch": {
        "consumes": [
          "application/json"
        ],
        "description": "Patches editable idea fields and increments content_version.",
        "parameters": [
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea patch request",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IdeaPatchRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/IdeaResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Patch admin idea",
        "tags": [
          "Incomemonk Admin Ideas"
        ]
      }
    },
    "/api/admin/incomemonk/ideas/{id}/approve": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Approves an idea after current required review checks pass.",
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Workflow reason",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/WorkflowRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/WorkflowResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Approve reviewed idea",
        "tags": [
          "Incomemonk Admin Workflow"
        ]
      }
    },
    "/api/admin/incomemonk/ideas/{id}/archive": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Archives an idea while preserving owner saved-idea history.",
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Workflow reason",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/WorkflowRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/WorkflowResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Archive idea",
        "tags": [
          "Incomemonk Admin Workflow"
        ]
      }
    },
    "/api/admin/incomemonk/ideas/{id}/faqs": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "FAQ request",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IdeaFAQRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/admindto.IdeaFAQResponse"
            }
          }
        },
        "summary": "Create idea FAQ",
        "tags": [
          "Incomemonk Admin Child Content"
        ]
      }
    },
    "/api/admin/incomemonk/ideas/{id}/faqs/reorder": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Reorder request",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ReorderRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ReorderResponse"
            }
          }
        },
        "summary": "Reorder idea FAQs",
        "tags": [
          "Incomemonk Admin Child Content"
        ]
      }
    },
    "/api/admin/incomemonk/ideas/{id}/faqs/{faq_id}": {
      "delete": {
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "FAQ ID",
            "in": "path",
            "name": "faq_id",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ReorderResponse"
            }
          }
        },
        "summary": "Delete idea FAQ",
        "tags": [
          "Incomemonk Admin Child Content"
        ]
      },
      "patch": {
        "consumes": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "FAQ ID",
            "in": "path",
            "name": "faq_id",
            "required": true,
            "type": "string"
          },
          {
            "description": "FAQ patch request",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IdeaFAQPatchRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/admindto.IdeaFAQResponse"
            }
          }
        },
        "summary": "Patch idea FAQ",
        "tags": [
          "Incomemonk Admin Child Content"
        ]
      },
      "put": {
        "consumes": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "FAQ ID",
            "in": "path",
            "name": "faq_id",
            "required": true,
            "type": "string"
          },
          {
            "description": "FAQ request",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IdeaFAQRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/admindto.IdeaFAQResponse"
            }
          }
        },
        "summary": "Replace idea FAQ",
        "tags": [
          "Incomemonk Admin Child Content"
        ]
      }
    },
    "/api/admin/incomemonk/ideas/{id}/publish": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Publishes an approved idea after freshness, compliance, and no-advice guardrails pass.",
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Workflow reason",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/WorkflowRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/WorkflowResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Publish approved idea",
        "tags": [
          "Incomemonk Admin Workflow"
        ]
      }
    },
    "/api/admin/incomemonk/ideas/{id}/reject": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Rejects an idea with a required reason.",
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Workflow reason",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/WorkflowRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/WorkflowResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Reject idea",
        "tags": [
          "Incomemonk Admin Workflow"
        ]
      }
    },
    "/api/admin/incomemonk/ideas/{id}/reviews": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Adds a server-stamped editorial, compliance, source, or SEO review for the current content version.",
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Review request",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ReviewCreateRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/ReviewCreateResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Add idea review",
        "tags": [
          "Incomemonk Admin Workflow"
        ]
      }
    },
    "/api/admin/incomemonk/ideas/{id}/sources": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Source request",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IdeaSourceRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/admindto.IdeaSourceResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Create idea source",
        "tags": [
          "Incomemonk Admin Child Content"
        ]
      }
    },
    "/api/admin/incomemonk/ideas/{id}/sources/{source_id}": {
      "delete": {
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Source ID",
            "in": "path",
            "name": "source_id",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ReorderResponse"
            }
          }
        },
        "summary": "Delete idea source",
        "tags": [
          "Incomemonk Admin Child Content"
        ]
      },
      "patch": {
        "consumes": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Source ID",
            "in": "path",
            "name": "source_id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Source patch request",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IdeaSourcePatchRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/admindto.IdeaSourceResponse"
            }
          }
        },
        "summary": "Patch idea source",
        "tags": [
          "Incomemonk Admin Child Content"
        ]
      },
      "put": {
        "consumes": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Source ID",
            "in": "path",
            "name": "source_id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Source request",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IdeaSourceRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/admindto.IdeaSourceResponse"
            }
          }
        },
        "summary": "Replace idea source",
        "tags": [
          "Incomemonk Admin Child Content"
        ]
      }
    },
    "/api/admin/incomemonk/ideas/{id}/steps": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Step request",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IdeaStepRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/admindto.IdeaStepResponse"
            }
          }
        },
        "summary": "Create idea step",
        "tags": [
          "Incomemonk Admin Child Content"
        ]
      }
    },
    "/api/admin/incomemonk/ideas/{id}/steps/reorder": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Reorder request",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ReorderRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ReorderResponse"
            }
          }
        },
        "summary": "Reorder idea steps",
        "tags": [
          "Incomemonk Admin Child Content"
        ]
      }
    },
    "/api/admin/incomemonk/ideas/{id}/steps/{step_id}": {
      "delete": {
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Step ID",
            "in": "path",
            "name": "step_id",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ReorderResponse"
            }
          }
        },
        "summary": "Delete idea step",
        "tags": [
          "Incomemonk Admin Child Content"
        ]
      },
      "patch": {
        "consumes": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Step ID",
            "in": "path",
            "name": "step_id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Step patch request",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IdeaStepPatchRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/admindto.IdeaStepResponse"
            }
          }
        },
        "summary": "Patch idea step",
        "tags": [
          "Incomemonk Admin Child Content"
        ]
      },
      "put": {
        "consumes": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Step ID",
            "in": "path",
            "name": "step_id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Step request",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IdeaStepRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/admindto.IdeaStepResponse"
            }
          }
        },
        "summary": "Replace idea step",
        "tags": [
          "Incomemonk Admin Child Content"
        ]
      }
    },
    "/api/admin/incomemonk/ideas/{id}/submit-review": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Moves a draft idea into editorial review.",
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Workflow reason",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/WorkflowRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/WorkflowResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Submit idea for review",
        "tags": [
          "Incomemonk Admin Workflow"
        ]
      }
    },
    "/api/admin/incomemonk/ideas/{id}/unpublish": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Removes a published idea from public discovery.",
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Workflow reason",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/WorkflowRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/WorkflowResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "403": {
            "description": "Forbidden",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Unpublish idea",
        "tags": [
          "Incomemonk Admin Workflow"
        ]
      }
    },
    "/api/incomemonk/ideas": {
      "get": {
        "description": "Returns tenant-scoped published India income, job, business, saving, and investment education ideas.",
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Search title, summary, and description",
            "in": "query",
            "name": "q",
            "type": "string"
          },
          {
            "description": "Idea category",
            "in": "query",
            "name": "category",
            "type": "string"
          },
          {
            "description": "Idea sub-category",
            "in": "query",
            "name": "sub_category",
            "type": "string"
          },
          {
            "description": "Country",
            "in": "query",
            "name": "country",
            "type": "string"
          },
          {
            "description": "State",
            "in": "query",
            "name": "state",
            "type": "string"
          },
          {
            "description": "City",
            "in": "query",
            "name": "city",
            "type": "string"
          },
          {
            "description": "Language",
            "enum": [
              "en",
              "hi"
            ],
            "in": "query",
            "name": "language",
            "type": "string"
          },
          {
            "description": "Risk level",
            "enum": [
              "low",
              "medium",
              "high",
              "very_high"
            ],
            "in": "query",
            "name": "risk_level",
            "type": "string"
          },
          {
            "description": "Minimum required capital in INR paise",
            "in": "query",
            "name": "capital_required_min_cents",
            "type": "integer"
          },
          {
            "description": "Maximum required capital in INR paise",
            "in": "query",
            "name": "capital_required_max_cents",
            "type": "integer"
          },
          {
            "description": "Effort level",
            "enum": [
              "low",
              "medium",
              "high"
            ],
            "in": "query",
            "name": "effort_level",
            "type": "string"
          },
          {
            "description": "Skill level",
            "enum": [
              "beginner",
              "intermediate",
              "advanced"
            ],
            "in": "query",
            "name": "skill_level",
            "type": "string"
          },
          {
            "description": "Income type",
            "in": "query",
            "name": "income_type",
            "type": "string"
          },
          {
            "description": "Time horizon",
            "in": "query",
            "name": "time_horizon",
            "type": "string"
          },
          {
            "description": "Eligibility or suitability tag",
            "in": "query",
            "name": "suitable_for",
            "type": "string"
          },
          {
            "description": "Online mode",
            "enum": [
              "online",
              "offline",
              "hybrid"
            ],
            "in": "query",
            "name": "online_mode",
            "type": "string"
          },
          {
            "description": "Sort as field:direction where direction is asc or desc. Allowed fields: title,created_at,updated_at,published_at,reviewed_at,review_due_at,risk_level,capital_required_min_cents,earning_potential_min_cents",
            "enum": [
              "title:asc",
              "title:desc",
              "created_at:asc",
              "created_at:desc",
              "updated_at:asc",
              "updated_at:desc",
              "published_at:asc",
              "published_at:desc",
              "reviewed_at:asc",
              "reviewed_at:desc",
              "review_due_at:asc",
              "review_due_at:desc",
              "risk_level:asc",
              "risk_level:desc",
              "capital_required_min_cents:asc",
              "capital_required_min_cents:desc",
              "earning_potential_min_cents:asc",
              "earning_potential_min_cents:desc"
            ],
            "in": "query",
            "name": "sort",
            "type": "string"
          },
          {
            "description": "Page number",
            "in": "query",
            "name": "page",
            "type": "integer"
          },
          {
            "description": "Page size",
            "in": "query",
            "name": "page_size",
            "type": "integer"
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor",
            "in": "query",
            "name": "cursor",
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/PublicIdeaListResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "List published ideas",
        "tags": [
          "Incomemonk Public Ideas"
        ]
      }
    },
    "/api/incomemonk/ideas/compare": {
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Compares two to five published tenant-scoped ideas across normalized capital, effort, risk, skill, time, eligibility, earning model, compliance, and freshness dimensions.",
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea compare request",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PublicIdeaCompareRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/PublicIdeaCompareResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Compare published ideas",
        "tags": [
          "Incomemonk Public Ideas"
        ]
      }
    },
    "/api/incomemonk/ideas/{slug}": {
      "get": {
        "description": "Returns one SEO-ready published idea. Draft, rejected, archived, and unpublished ideas return idea.not_found.",
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Idea slug",
            "in": "path",
            "name": "slug",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/PublicIdeaDetailResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Get a published idea by slug",
        "tags": [
          "Incomemonk Public Ideas"
        ]
      }
    },
    "/api/incomemonk/me/money-profile": {
      "get": {
        "description": "Returns the authenticated user's tenant-scoped money profile.",
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/MoneyProfileResponse"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Get my money profile",
        "tags": [
          "Incomemonk Me"
        ]
      },
      "put": {
        "consumes": [
          "application/json"
        ],
        "description": "Creates or updates the authenticated user's tenant-scoped money profile.",
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Money profile request",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MoneyProfileRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/MoneyProfileResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Upsert my money profile",
        "tags": [
          "Incomemonk Me"
        ]
      }
    },
    "/api/incomemonk/me/recommendations": {
      "get": {
        "description": "Returns deterministic published idea recommendations for the authenticated user's money profile.",
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/RecommendationResponse"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Get my recommendations",
        "tags": [
          "Incomemonk Me"
        ]
      }
    },
    "/api/incomemonk/me/saved-ideas": {
      "get": {
        "description": "Returns the authenticated user's saved ideas with lightweight idea details when available.",
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/SavedIdeaListResponse"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "List my saved ideas",
        "tags": [
          "Incomemonk Me"
        ]
      },
      "post": {
        "consumes": [
          "application/json"
        ],
        "description": "Saves one published idea for the authenticated user.",
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Save idea request",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SaveIdeaRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "201": {
            "description": "Created",
            "schema": {
              "$ref": "#/definitions/SavedIdeaResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "409": {
            "description": "Conflict",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Save an idea",
        "tags": [
          "Incomemonk Me"
        ]
      }
    },
    "/api/incomemonk/me/saved-ideas/{id}": {
      "delete": {
        "description": "Soft-deletes one saved idea owned by the authenticated user.",
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Saved idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Delete a saved idea",
        "tags": [
          "Incomemonk Me"
        ]
      },
      "patch": {
        "consumes": [
          "application/json"
        ],
        "description": "Updates saved idea status, notes, reminder, usefulness rating, or rejection reason.",
        "parameters": [
          {
            "description": "Tenant ID",
            "in": "header",
            "name": "X-TENANT-ID",
            "required": true,
            "type": "string"
          },
          {
            "description": "Saved idea ID",
            "in": "path",
            "name": "id",
            "required": true,
            "type": "string"
          },
          {
            "description": "Saved idea patch request",
            "in": "body",
            "name": "payload",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SavedIdeaPatchRequest"
            }
          }
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/SavedIdeaResponse"
            }
          },
          "400": {
            "description": "Bad Request",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "401": {
            "description": "Unauthorized",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "404": {
            "description": "Not Found",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          },
          "500": {
            "description": "Internal Server Error",
            "schema": {
              "$ref": "#/definitions/ErrorBody"
            }
          }
        },
        "summary": "Update a saved idea",
        "tags": [
          "Incomemonk Me"
        ]
      }
    }
  },
  "swagger": "2.0"
}