{
  "openapi": "3.0.3",
  "info": {
    "title": "ToolVerse AI API",
    "version": "1.0.0",
    "description": "REST API for the ToolVerse AI platform"
  },
  "paths": {
    "/api/v1/admin/autopilot/runs/": {
      "get": {
        "operationId": "v1_admin_autopilot_runs_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      },
      "post": {
        "operationId": "v1_admin_autopilot_runs_create",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/autopilot/runs/{id}/approve/": {
      "post": {
        "operationId": "v1_admin_autopilot_runs_approve_create",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/content/": {
      "get": {
        "operationId": "v1_admin_content_list",
        "parameters": [
          {
            "in": "query",
            "name": "content_type",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "locale",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "type": "string",
              "enum": [
                "ai_generated",
                "approved",
                "draft",
                "human_review",
                "published"
              ]
            },
            "description": "* `draft` - Draft\n* `ai_generated` - AI generated\n* `human_review` - Human review\n* `approved` - Approved\n* `published` - Published"
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedContentItemList"
                }
              }
            },
            "description": ""
          }
        }
      },
      "post": {
        "operationId": "v1_admin_content_create",
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContentItem"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/ContentItem"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ContentItem"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentItem"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/admin/content/{id}/": {
      "get": {
        "operationId": "v1_admin_content_retrieve",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentItem"
                }
              }
            },
            "description": ""
          }
        }
      },
      "put": {
        "operationId": "v1_admin_content_update",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContentItem"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/ContentItem"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ContentItem"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentItem"
                }
              }
            },
            "description": ""
          }
        }
      },
      "patch": {
        "operationId": "v1_admin_content_partial_update",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchedContentItem"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PatchedContentItem"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/PatchedContentItem"
              }
            }
          }
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentItem"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/admin/content/{id}/publish/": {
      "post": {
        "operationId": "v1_admin_content_publish_create",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/content/{id}/regenerate/": {
      "post": {
        "operationId": "v1_admin_content_regenerate_create",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/content/templates/": {
      "get": {
        "operationId": "v1_admin_content_templates_list",
        "parameters": [
          {
            "in": "query",
            "name": "locale",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "purpose",
            "schema": {
              "type": "string",
              "enum": [
                "blog",
                "comparison",
                "faq",
                "landing",
                "meta",
                "seo_title",
                "tool_description",
                "tutorial"
              ]
            },
            "description": "* `tool_description` - Tool description\n* `seo_title` - SEO title\n* `meta` - Meta description\n* `faq` - FAQ\n* `blog` - Blog\n* `tutorial` - Tutorial\n* `comparison` - Comparison\n* `landing` - Landing"
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedPromptTemplateList"
                }
              }
            },
            "description": ""
          }
        }
      },
      "post": {
        "operationId": "v1_admin_content_templates_create",
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PromptTemplate"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PromptTemplate"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/PromptTemplate"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromptTemplate"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/admin/email/campaigns/": {
      "get": {
        "operationId": "v1_admin_email_campaigns_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      },
      "post": {
        "operationId": "v1_admin_email_campaigns_create",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/email/campaigns/{id}/send-test/": {
      "post": {
        "operationId": "v1_admin_email_campaigns_send_test_create",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/experiments/": {
      "get": {
        "operationId": "v1_admin_experiments_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/experiments/{id}/results/": {
      "get": {
        "operationId": "v1_admin_experiments_results_retrieve",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/gsc/overview/": {
      "get": {
        "operationId": "v1_admin_gsc_overview_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/gsc/pages/": {
      "get": {
        "operationId": "v1_admin_gsc_pages_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/gsc/queries/": {
      "get": {
        "operationId": "v1_admin_gsc_queries_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/keywords/": {
      "get": {
        "operationId": "v1_admin_keywords_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/keywords/top/": {
      "get": {
        "operationId": "v1_admin_keywords_top_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/marketplace/invoices/": {
      "get": {
        "operationId": "v1_admin_marketplace_invoices_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/metrics/": {
      "get": {
        "operationId": "v1_admin_metrics_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/opportunities/": {
      "get": {
        "operationId": "v1_admin_opportunities_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/opportunities/{id}/queue/": {
      "post": {
        "operationId": "v1_admin_opportunities_queue_create",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/push/test-ping/": {
      "post": {
        "operationId": "v1_admin_push_test_ping_create",
        "description": "Stub test ping \u2014 records intent without requiring pywebpush.",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/revenue/affiliates/": {
      "get": {
        "operationId": "v1_admin_revenue_affiliates_list",
        "parameters": [
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedAffiliateLinkList"
                }
              }
            },
            "description": ""
          }
        }
      },
      "post": {
        "operationId": "v1_admin_revenue_affiliates_create",
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateLink"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateLink"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateLink"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateLink"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/admin/revenue/affiliates/{id}/": {
      "get": {
        "operationId": "v1_admin_revenue_affiliates_retrieve",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateLink"
                }
              }
            },
            "description": ""
          }
        }
      },
      "put": {
        "operationId": "v1_admin_revenue_affiliates_update",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateLink"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateLink"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/AffiliateLink"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateLink"
                }
              }
            },
            "description": ""
          }
        }
      },
      "patch": {
        "operationId": "v1_admin_revenue_affiliates_partial_update",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchedAffiliateLink"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PatchedAffiliateLink"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/PatchedAffiliateLink"
              }
            }
          }
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AffiliateLink"
                }
              }
            },
            "description": ""
          }
        }
      },
      "delete": {
        "operationId": "v1_admin_revenue_affiliates_destroy",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/revenue/events/": {
      "get": {
        "operationId": "v1_admin_revenue_events_list",
        "parameters": [
          {
            "in": "query",
            "name": "currency",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "type",
            "schema": {
              "type": "string",
              "enum": [
                "ad_click",
                "ad_impression",
                "affiliate",
                "api",
                "subscription"
              ]
            },
            "description": "* `ad_impression` - Ad impression\n* `ad_click` - Ad click\n* `subscription` - Subscription\n* `affiliate` - Affiliate\n* `api` - API"
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedRevenueEventList"
                }
              }
            },
            "description": ""
          }
        }
      },
      "post": {
        "operationId": "v1_admin_revenue_events_create",
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RevenueEvent"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/RevenueEvent"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/RevenueEvent"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RevenueEvent"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/admin/revenue/placements/": {
      "get": {
        "operationId": "v1_admin_revenue_placements_list",
        "parameters": [
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedAdPlacementList"
                }
              }
            },
            "description": ""
          }
        }
      },
      "post": {
        "operationId": "v1_admin_revenue_placements_create",
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdPlacement"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/AdPlacement"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/AdPlacement"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdPlacement"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/admin/revenue/placements/{id}/": {
      "get": {
        "operationId": "v1_admin_revenue_placements_retrieve",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdPlacement"
                }
              }
            },
            "description": ""
          }
        }
      },
      "put": {
        "operationId": "v1_admin_revenue_placements_update",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AdPlacement"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/AdPlacement"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/AdPlacement"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdPlacement"
                }
              }
            },
            "description": ""
          }
        }
      },
      "patch": {
        "operationId": "v1_admin_revenue_placements_partial_update",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchedAdPlacement"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PatchedAdPlacement"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/PatchedAdPlacement"
              }
            }
          }
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AdPlacement"
                }
              }
            },
            "description": ""
          }
        }
      },
      "delete": {
        "operationId": "v1_admin_revenue_placements_destroy",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/revenue/sponsored/": {
      "get": {
        "operationId": "v1_admin_revenue_sponsored_list",
        "parameters": [
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedSponsoredToolList"
                }
              }
            },
            "description": ""
          }
        }
      },
      "post": {
        "operationId": "v1_admin_revenue_sponsored_create",
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SponsoredTool"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/SponsoredTool"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/SponsoredTool"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SponsoredTool"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/admin/revenue/sponsored/{id}/": {
      "get": {
        "operationId": "v1_admin_revenue_sponsored_retrieve",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SponsoredTool"
                }
              }
            },
            "description": ""
          }
        }
      },
      "put": {
        "operationId": "v1_admin_revenue_sponsored_update",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SponsoredTool"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/SponsoredTool"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/SponsoredTool"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SponsoredTool"
                }
              }
            },
            "description": ""
          }
        }
      },
      "patch": {
        "operationId": "v1_admin_revenue_sponsored_partial_update",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchedSponsoredTool"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PatchedSponsoredTool"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/PatchedSponsoredTool"
              }
            }
          }
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SponsoredTool"
                }
              }
            },
            "description": ""
          }
        }
      },
      "delete": {
        "operationId": "v1_admin_revenue_sponsored_destroy",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/revenue/summary/": {
      "get": {
        "operationId": "v1_admin_revenue_summary_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/seo/analyze/": {
      "post": {
        "operationId": "v1_admin_seo_analyze_create",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/seo/recommendations/": {
      "get": {
        "operationId": "v1_admin_seo_recommendations_list",
        "parameters": [
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "path",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "severity",
            "schema": {
              "type": "string",
              "enum": [
                "high",
                "low",
                "medium"
              ]
            },
            "description": "* `low` - Low\n* `medium` - Medium\n* `high` - High"
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "type": "string",
              "enum": [
                "accepted",
                "dismissed",
                "open"
              ]
            },
            "description": "* `open` - Open\n* `accepted` - Accepted\n* `dismissed` - Dismissed"
          },
          {
            "in": "query",
            "name": "type",
            "schema": {
              "type": "string",
              "enum": [
                "content",
                "faq",
                "internal_link",
                "meta",
                "title"
              ]
            },
            "description": "* `title` - Title\n* `meta` - Meta\n* `faq` - FAQ\n* `internal_link` - Internal link\n* `content` - Content"
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedSeoRecommendationList"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/admin/seo/recommendations/{id}/accept/": {
      "post": {
        "operationId": "v1_admin_seo_recommendations_accept_create",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/seo/recommendations/{id}/dismiss/": {
      "post": {
        "operationId": "v1_admin_seo_recommendations_dismiss_create",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/tool-factory/specs/": {
      "get": {
        "operationId": "v1_admin_tool_factory_specs_list",
        "parameters": [
          {
            "in": "query",
            "name": "category_slug",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "is_viral",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "recipe",
            "schema": {
              "type": "string",
              "enum": [
                "ai",
                "calculator",
                "developer",
                "generic",
                "image",
                "pdf"
              ]
            },
            "description": "* `generic` - Generic\n* `pdf` - PDF\n* `image` - Image\n* `ai` - AI\n* `developer` - Developer\n* `calculator` - Calculator"
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "type": "string",
              "enum": [
                "draft",
                "failed",
                "generating",
                "published",
                "ready"
              ]
            },
            "description": "* `draft` - Draft\n* `generating` - Generating\n* `ready` - Ready\n* `failed` - Failed\n* `published` - Published"
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedToolSpecList"
                }
              }
            },
            "description": ""
          }
        }
      },
      "post": {
        "operationId": "v1_admin_tool_factory_specs_create",
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ToolSpec"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/ToolSpec"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ToolSpec"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolSpec"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/admin/tool-factory/specs/{id}/": {
      "get": {
        "operationId": "v1_admin_tool_factory_specs_retrieve",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolSpec"
                }
              }
            },
            "description": ""
          }
        }
      },
      "put": {
        "operationId": "v1_admin_tool_factory_specs_update",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ToolSpec"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/ToolSpec"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ToolSpec"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolSpec"
                }
              }
            },
            "description": ""
          }
        }
      },
      "patch": {
        "operationId": "v1_admin_tool_factory_specs_partial_update",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchedToolSpec"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PatchedToolSpec"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/PatchedToolSpec"
              }
            }
          }
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolSpec"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/admin/tool-factory/specs/{id}/build/": {
      "post": {
        "operationId": "v1_admin_tool_factory_specs_build_create",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/tool-factory/specs/{id}/publish/": {
      "post": {
        "operationId": "v1_admin_tool_factory_specs_publish_create",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/tools/dynamic/": {
      "get": {
        "operationId": "v1_admin_tools_dynamic_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      },
      "post": {
        "operationId": "v1_admin_tools_dynamic_create",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/tools/dynamic/{id}/": {
      "get": {
        "operationId": "v1_admin_tools_dynamic_retrieve_2",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      },
      "patch": {
        "operationId": "v1_admin_tools_dynamic_partial_update",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      },
      "delete": {
        "operationId": "v1_admin_tools_dynamic_destroy",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/admin/tools/dynamic/{id}/publish/": {
      "post": {
        "operationId": "v1_admin_tools_dynamic_publish_create",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/ai/complete/": {
      "post": {
        "operationId": "v1_ai_complete_create",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/ai/usage/": {
      "get": {
        "operationId": "v1_ai_usage_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/analytics/dashboard/": {
      "get": {
        "operationId": "v1_analytics_dashboard_retrieve",
        "description": "Admin-only analytics dashboard (last 30 days).",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/analytics/growth/": {
      "get": {
        "operationId": "v1_analytics_growth_retrieve",
        "description": "Admin growth metrics (last 30 days). Extends analytics without changing DashboardView.",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/analytics/track/": {
      "post": {
        "operationId": "v1_analytics_track_create",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/assistant/chat/": {
      "post": {
        "operationId": "v1_assistant_chat_create",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/auth/login/": {
      "post": {
        "operationId": "v1_auth_login_create",
        "description": "Takes a set of user credentials and returns an access and refresh JSON web\ntoken pair to prove the authentication of those credentials.",
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EmailTokenObtainPair"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/EmailTokenObtainPair"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/EmailTokenObtainPair"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EmailTokenObtainPair"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/auth/logout/": {
      "post": {
        "operationId": "v1_auth_logout_create",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/auth/me/": {
      "get": {
        "operationId": "v1_auth_me_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      },
      "put": {
        "operationId": "v1_auth_me_update",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      },
      "patch": {
        "operationId": "v1_auth_me_partial_update",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/auth/refresh/": {
      "post": {
        "operationId": "v1_auth_refresh_create",
        "description": "Takes a refresh type JSON web token and returns an access type JSON web\ntoken if the refresh token is valid.",
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenRefresh"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/TokenRefresh"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/TokenRefresh"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenRefresh"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/auth/register/": {
      "post": {
        "operationId": "v1_auth_register_create",
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Register"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/Register"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Register"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Register"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/blog/": {
      "get": {
        "operationId": "v1_blog_list",
        "parameters": [
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedBlogPostListList"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/blog/{slug}/": {
      "get": {
        "operationId": "v1_blog_retrieve",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BlogPostDetail"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/categories/": {
      "get": {
        "operationId": "v1_categories_list",
        "parameters": [
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedCategoryList"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/categories/{slug}/": {
      "get": {
        "operationId": "v1_categories_retrieve",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Category"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/content/": {
      "get": {
        "operationId": "v1_content_list",
        "parameters": [
          {
            "in": "query",
            "name": "content_type",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "locale",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "schema": {
              "type": "string",
              "enum": [
                "ai_generated",
                "approved",
                "draft",
                "human_review",
                "published"
              ]
            },
            "description": "* `draft` - Draft\n* `ai_generated` - AI generated\n* `human_review` - Human review\n* `approved` - Approved\n* `published` - Published"
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedContentItemList"
                }
              }
            },
            "description": ""
          }
        }
      },
      "post": {
        "operationId": "v1_content_create",
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContentItem"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/ContentItem"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ContentItem"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentItem"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/content/{id}/": {
      "get": {
        "operationId": "v1_content_retrieve",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentItem"
                }
              }
            },
            "description": ""
          }
        }
      },
      "put": {
        "operationId": "v1_content_update",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContentItem"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/ContentItem"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ContentItem"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentItem"
                }
              }
            },
            "description": ""
          }
        }
      },
      "patch": {
        "operationId": "v1_content_partial_update",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchedContentItem"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PatchedContentItem"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/PatchedContentItem"
              }
            }
          }
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentItem"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/content/{id}/publish/": {
      "post": {
        "operationId": "v1_content_publish_create",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/content/{id}/regenerate/": {
      "post": {
        "operationId": "v1_content_regenerate_create",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/content/templates/": {
      "get": {
        "operationId": "v1_content_templates_list",
        "parameters": [
          {
            "in": "query",
            "name": "locale",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "purpose",
            "schema": {
              "type": "string",
              "enum": [
                "blog",
                "comparison",
                "faq",
                "landing",
                "meta",
                "seo_title",
                "tool_description",
                "tutorial"
              ]
            },
            "description": "* `tool_description` - Tool description\n* `seo_title` - SEO title\n* `meta` - Meta description\n* `faq` - FAQ\n* `blog` - Blog\n* `tutorial` - Tutorial\n* `comparison` - Comparison\n* `landing` - Landing"
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedPromptTemplateList"
                }
              }
            },
            "description": ""
          }
        }
      },
      "post": {
        "operationId": "v1_content_templates_create",
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PromptTemplate"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PromptTemplate"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/PromptTemplate"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PromptTemplate"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/dynamic/{slug}/run/": {
      "post": {
        "operationId": "v1_dynamic_run_create",
        "description": "Public/authenticated runtime for published dynamic tools.",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/engagement/collections/": {
      "get": {
        "operationId": "v1_engagement_collections_list",
        "parameters": [
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedCollectionList"
                }
              }
            },
            "description": ""
          }
        }
      },
      "post": {
        "operationId": "v1_engagement_collections_create",
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Collection"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/Collection"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Collection"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/engagement/collections/{slug}/": {
      "get": {
        "operationId": "v1_engagement_collections_retrieve",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            },
            "description": ""
          }
        }
      },
      "put": {
        "operationId": "v1_engagement_collections_update",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Collection"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/Collection"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Collection"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            },
            "description": ""
          }
        }
      },
      "patch": {
        "operationId": "v1_engagement_collections_partial_update",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchedCollection"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PatchedCollection"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/PatchedCollection"
              }
            }
          }
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Collection"
                }
              }
            },
            "description": ""
          }
        }
      },
      "delete": {
        "operationId": "v1_engagement_collections_destroy",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/engagement/collections/{slug}/items/": {
      "post": {
        "operationId": "v1_engagement_collections_items_create",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/engagement/collections/{slug}/items/{tool_id}/": {
      "delete": {
        "operationId": "v1_engagement_collections_items_destroy",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "tool_id",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/engagement/comments/": {
      "get": {
        "operationId": "v1_engagement_comments_list",
        "parameters": [
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedToolCommentList"
                }
              }
            },
            "description": ""
          }
        }
      },
      "post": {
        "operationId": "v1_engagement_comments_create",
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ToolComment"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/ToolComment"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ToolComment"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolComment"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/engagement/comments/{id}/moderate/": {
      "post": {
        "operationId": "v1_engagement_comments_moderate_create",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/engagement/reviews/": {
      "get": {
        "operationId": "v1_engagement_reviews_list",
        "parameters": [
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedToolReviewList"
                }
              }
            },
            "description": ""
          }
        }
      },
      "post": {
        "operationId": "v1_engagement_reviews_create",
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ToolReview"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/ToolReview"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ToolReview"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolReview"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/engagement/reviews/{id}/moderate/": {
      "post": {
        "operationId": "v1_engagement_reviews_moderate_create",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/engagement/saved-outputs/": {
      "get": {
        "operationId": "v1_engagement_saved_outputs_list",
        "parameters": [
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedSavedOutputList"
                }
              }
            },
            "description": ""
          }
        }
      },
      "post": {
        "operationId": "v1_engagement_saved_outputs_create",
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SavedOutput"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/SavedOutput"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/SavedOutput"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedOutput"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/engagement/saved-outputs/{id}/": {
      "get": {
        "operationId": "v1_engagement_saved_outputs_retrieve",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedOutput"
                }
              }
            },
            "description": ""
          }
        }
      },
      "put": {
        "operationId": "v1_engagement_saved_outputs_update",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SavedOutput"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/SavedOutput"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/SavedOutput"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedOutput"
                }
              }
            },
            "description": ""
          }
        }
      },
      "patch": {
        "operationId": "v1_engagement_saved_outputs_partial_update",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchedSavedOutput"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PatchedSavedOutput"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/PatchedSavedOutput"
              }
            }
          }
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SavedOutput"
                }
              }
            },
            "description": ""
          }
        }
      },
      "delete": {
        "operationId": "v1_engagement_saved_outputs_destroy",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/experiments/assign/": {
      "get": {
        "operationId": "v1_experiments_assign_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/experiments/track/": {
      "post": {
        "operationId": "v1_experiments_track_create",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/favorites/": {
      "get": {
        "operationId": "v1_favorites_list",
        "parameters": [
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedFavoriteList"
                }
              }
            },
            "description": ""
          }
        }
      },
      "post": {
        "operationId": "v1_favorites_create",
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Favorite"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/Favorite"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Favorite"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Favorite"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/favorites/{tool_id}/": {
      "delete": {
        "operationId": "v1_favorites_destroy",
        "parameters": [
          {
            "in": "path",
            "name": "tool_id",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/history/": {
      "get": {
        "operationId": "v1_history_list",
        "parameters": [
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedToolHistoryList"
                }
              }
            },
            "description": ""
          }
        }
      },
      "post": {
        "operationId": "v1_history_create",
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ToolHistory"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/ToolHistory"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ToolHistory"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolHistory"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/jobs/": {
      "post": {
        "operationId": "v1_jobs_create",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/jobs/{job_id}/": {
      "get": {
        "operationId": "v1_jobs_retrieve",
        "parameters": [
          {
            "in": "path",
            "name": "job_id",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/marketplace/analytics/": {
      "get": {
        "operationId": "v1_marketplace_analytics_retrieve",
        "description": "Daily usage for the authenticated user's API keys.",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/marketplace/keys/": {
      "get": {
        "operationId": "v1_marketplace_keys_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      },
      "post": {
        "operationId": "v1_marketplace_keys_create",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/marketplace/keys/{id}/revoke/": {
      "post": {
        "operationId": "v1_marketplace_keys_revoke_create",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "schema": {
              "type": "integer"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/marketplace/orgs/": {
      "get": {
        "operationId": "v1_marketplace_orgs_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      },
      "post": {
        "operationId": "v1_marketplace_orgs_create",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/marketplace/usage/": {
      "get": {
        "operationId": "v1_marketplace_usage_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/marketplace/webhooks/stripe/": {
      "post": {
        "operationId": "v1_marketplace_webhooks_stripe_create",
        "description": "Stub webhook \u2014 logs payload only; wire Stripe signature verification later.",
        "tags": [
          "v1"
        ],
        "security": [
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/monetization/affiliates/": {
      "get": {
        "operationId": "v1_monetization_affiliates_retrieve",
        "tags": [
          "v1"
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/monetization/placements/": {
      "get": {
        "operationId": "v1_monetization_placements_retrieve",
        "tags": [
          "v1"
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/monetization/sponsored/": {
      "get": {
        "operationId": "v1_monetization_sponsored_retrieve",
        "tags": [
          "v1"
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/newsletter/subscribe/": {
      "post": {
        "operationId": "v1_newsletter_subscribe_create",
        "tags": [
          "v1"
        ],
        "security": [
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/programmatic/": {
      "get": {
        "operationId": "v1_programmatic_list",
        "parameters": [
          {
            "in": "query",
            "name": "audience",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "category_slug",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "page_type",
            "schema": {
              "type": "string",
              "enum": [
                "audience",
                "authority",
                "best_of",
                "category_hub",
                "keyword"
              ]
            },
            "description": "* `best_of` - Best of\n* `keyword` - Keyword\n* `audience` - Audience\n* `category_hub` - Category hub\n* `authority` - Authority"
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "topic",
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedProgrammaticPageListList"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/programmatic/by-path/": {
      "get": {
        "operationId": "v1_programmatic_by_path_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/programmatic/sitemap/": {
      "get": {
        "operationId": "v1_programmatic_sitemap_retrieve",
        "description": "Lightweight sitemap payload for Next.js (reuse list semantics).",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/push/subscribe/": {
      "post": {
        "operationId": "v1_push_subscribe_create",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/sitemap/tools/": {
      "get": {
        "operationId": "v1_sitemap_tools_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/subscriptions/me/": {
      "get": {
        "operationId": "v1_subscriptions_me_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/subscriptions/plans/": {
      "get": {
        "operationId": "v1_subscriptions_plans_retrieve",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/base64/": {
      "post": {
        "operationId": "v1_t_base64_create",
        "description": "Body: { \"input\": \"<string>\", \"action\": \"encode\" | \"decode\", \"urlSafe\"?: bool }",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/base64/encode/": {
      "post": {
        "operationId": "v1_t_base64_encode_create",
        "description": "Body: { \"input\": \"<string>\", \"action\": \"encode\" | \"decode\", \"urlSafe\"?: bool }",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/color-converter/": {
      "post": {
        "operationId": "v1_t_color_converter_create",
        "description": "Body examples:\n  { \"hex\": \"#0ea5e9\" }\n  { \"rgb\": { \"r\": 14, \"g\": 165, \"b\": 233 } }\n  { \"hsl\": { \"h\": 199, \"s\": 89, \"l\": 48 } }\n  { \"hex\": \"#0ea5e9\", \"background\": \"#ffffff\" }\n  { \"foreground\": \"#111111\", \"background\": \"#ffffff\" }",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/color-converter/convert/": {
      "post": {
        "operationId": "v1_t_color_converter_convert_create",
        "description": "Body examples:\n  { \"hex\": \"#0ea5e9\" }\n  { \"rgb\": { \"r\": 14, \"g\": 165, \"b\": 233 } }\n  { \"hsl\": { \"h\": 199, \"s\": 89, \"l\": 48 } }\n  { \"hex\": \"#0ea5e9\", \"background\": \"#ffffff\" }\n  { \"foreground\": \"#111111\", \"background\": \"#ffffff\" }",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/dynamic/{slug}/run/": {
      "post": {
        "operationId": "v1_t_dynamic_run_create",
        "description": "Public/authenticated runtime for published dynamic tools.",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/hash-generator/": {
      "post": {
        "operationId": "v1_t_hash_generator_create",
        "description": "Body: {\n  \"input\": \"<string>\",\n  \"algorithm\": \"md5\" | \"sha256\" | \"sha512\" | \"all\",\n  \"encoding\"?: \"utf-8\" | \"hex\" | \"base64\"\n}",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/hash-generator/hash/": {
      "post": {
        "operationId": "v1_t_hash_generator_hash_create",
        "description": "Body: {\n  \"input\": \"<string>\",\n  \"algorithm\": \"md5\" | \"sha256\" | \"sha512\" | \"all\",\n  \"encoding\"?: \"utf-8\" | \"hex\" | \"base64\"\n}",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/json-formatter/": {
      "post": {
        "operationId": "v1_t_json_formatter_create",
        "description": "Body: { \"json\": \"<string>\", \"action\": \"validate\" | \"format\" | \"minify\", \"indent\"?: number }",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/json-formatter/format/": {
      "post": {
        "operationId": "v1_t_json_formatter_format_create",
        "description": "Body: { \"json\": \"<string>\", \"action\": \"validate\" | \"format\" | \"minify\", \"indent\"?: number }",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/jwt-decoder/": {
      "post": {
        "operationId": "v1_t_jwt_decoder_create",
        "description": "Body: { \"token\": \"<jwt>\" }\n\nDecodes header and payload only. Does not verify signatures.\nOptional secrets in the request body are ignored and never persisted.",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/jwt-decoder/decode/": {
      "post": {
        "operationId": "v1_t_jwt_decoder_decode_create",
        "description": "Body: { \"token\": \"<jwt>\" }\n\nDecodes header and payload only. Does not verify signatures.\nOptional secrets in the request body are ignored and never persisted.",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/lorem-ipsum/": {
      "post": {
        "operationId": "v1_t_lorem_ipsum_create",
        "description": "Body: {\n  \"units\": \"paragraphs\" | \"sentences\" | \"words\",\n  \"count\": 1..100,\n  \"startWithLorem\"?: bool,\n  \"seed\"?: int\n}",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/lorem-ipsum/generate/": {
      "post": {
        "operationId": "v1_t_lorem_ipsum_generate_create",
        "description": "Body: {\n  \"units\": \"paragraphs\" | \"sentences\" | \"words\",\n  \"count\": 1..100,\n  \"startWithLorem\"?: bool,\n  \"seed\"?: int\n}",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/markdown-preview/": {
      "post": {
        "operationId": "v1_t_markdown_preview_create",
        "description": "Body: { \"markdown\": \"<string>\", \"extensions\"?: string[] }",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/markdown-preview/render/": {
      "post": {
        "operationId": "v1_t_markdown_preview_render_create",
        "description": "Body: { \"markdown\": \"<string>\", \"extensions\"?: string[] }",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/url-encoder/": {
      "post": {
        "operationId": "v1_t_url_encoder_create",
        "description": "Body: {\n  \"input\": \"<string>\",\n  \"action\": \"encode\" | \"decode\",\n  \"mode\"?: \"component\" | \"form\"   # component=quote, form=quote_plus\n  \"safe\"?: string                  # extra safe chars for encode (component mode)\n}",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/url-encoder/encode/": {
      "post": {
        "operationId": "v1_t_url_encoder_encode_create",
        "description": "Body: {\n  \"input\": \"<string>\",\n  \"action\": \"encode\" | \"decode\",\n  \"mode\"?: \"component\" | \"form\"   # component=quote, form=quote_plus\n  \"safe\"?: string                  # extra safe chars for encode (component mode)\n}",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/uuid-generator/": {
      "get": {
        "operationId": "v1_t_uuid_generator_retrieve",
        "description": "GET/POST query or body:\n  version: 1 | 4 | 5 (default 4)\n  count: 1..100 (default 1)\n  namespace: dns | url | oid | x500 (v5)\n  name: string (v5)\n  uppercase?: bool",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      },
      "post": {
        "operationId": "v1_t_uuid_generator_create",
        "description": "GET/POST query or body:\n  version: 1 | 4 | 5 (default 4)\n  count: 1..100 (default 1)\n  namespace: dns | url | oid | x500 (v5)\n  name: string (v5)\n  uppercase?: bool",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/uuid-generator/generate/": {
      "get": {
        "operationId": "v1_t_uuid_generator_generate_retrieve",
        "description": "GET/POST query or body:\n  version: 1 | 4 | 5 (default 4)\n  count: 1..100 (default 1)\n  namespace: dns | url | oid | x500 (v5)\n  name: string (v5)\n  uppercase?: bool",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      },
      "post": {
        "operationId": "v1_t_uuid_generator_generate_create",
        "description": "GET/POST query or body:\n  version: 1 | 4 | 5 (default 4)\n  count: 1..100 (default 1)\n  namespace: dns | url | oid | x500 (v5)\n  name: string (v5)\n  uppercase?: bool",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/word-counter/": {
      "post": {
        "operationId": "v1_t_word_counter_create",
        "description": "Body: { \"text\": \"<string>\", \"wordsPerMinute\"?: number }",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/t/word-counter/count/": {
      "post": {
        "operationId": "v1_t_word_counter_count_create",
        "description": "Body: { \"text\": \"<string>\", \"wordsPerMinute\"?: number }",
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/v1/tools/": {
      "get": {
        "operationId": "v1_tools_list",
        "parameters": [
          {
            "in": "query",
            "name": "category__slug",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordering",
            "required": false,
            "in": "query",
            "description": "Which field to use when ordering the results.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "required": false,
            "in": "query",
            "description": "A page number within the paginated result set.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "page_size",
            "required": false,
            "in": "query",
            "description": "Number of results to return per page.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "premium",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "search",
            "required": false,
            "in": "query",
            "description": "A search term.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaginatedToolListList"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/tools/{slug}/": {
      "get": {
        "operationId": "v1_tools_retrieve",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolDetail"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/tools/{slug}/related/": {
      "get": {
        "operationId": "v1_tools_related_retrieve",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolList"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/v1/tools/{slug}/track/": {
      "post": {
        "operationId": "v1_tools_track_create",
        "parameters": [
          {
            "in": "path",
            "name": "slug",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "tags": [
          "v1"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ToolList"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/ToolList"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ToolList"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolList"
                }
              }
            },
            "description": ""
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AdPlacement": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "key": {
            "$ref": "#/components/schemas/KeyEnum"
          },
          "enabled": {
            "type": "boolean"
          },
          "network": {
            "$ref": "#/components/schemas/NetworkEnum"
          },
          "config": {},
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "created_at",
          "id",
          "key",
          "updated_at"
        ]
      },
      "AffiliateLink": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "tool": {
            "type": "integer",
            "nullable": true
          },
          "tool_slug": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "label": {
            "type": "string",
            "maxLength": 255
          },
          "destination_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 1024
          },
          "network": {
            "type": "string",
            "maxLength": 64
          },
          "utm": {},
          "is_active": {
            "type": "boolean"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "created_at",
          "destination_url",
          "id",
          "label",
          "tool_slug",
          "updated_at"
        ]
      },
      "BlogPostDetail": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "maxLength": 255,
            "pattern": "^[-a-zA-Z0-9_]+$"
          },
          "title": {
            "type": "string",
            "maxLength": 255
          },
          "excerpt": {
            "type": "string"
          },
          "cover_image": {
            "oneOf": [
              {
                "type": "string",
                "format": "uri",
                "maxLength": 200
              },
              {
                "type": "string",
                "maxLength": 0
              }
            ]
          },
          "published_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BlogTag"
            },
            "readOnly": true
          },
          "author_name": {
            "type": "string",
            "readOnly": true,
            "default": ""
          },
          "seo_title": {
            "type": "string",
            "maxLength": 255
          },
          "seo_description": {
            "type": "string"
          },
          "content": {
            "type": "string"
          }
        },
        "required": [
          "author_name",
          "content",
          "slug",
          "tags",
          "title"
        ]
      },
      "BlogPostList": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "maxLength": 255,
            "pattern": "^[-a-zA-Z0-9_]+$"
          },
          "title": {
            "type": "string",
            "maxLength": 255
          },
          "excerpt": {
            "type": "string"
          },
          "cover_image": {
            "oneOf": [
              {
                "type": "string",
                "format": "uri",
                "maxLength": 200
              },
              {
                "type": "string",
                "maxLength": 0
              }
            ]
          },
          "published_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BlogTag"
            },
            "readOnly": true
          },
          "author_name": {
            "type": "string",
            "readOnly": true,
            "default": ""
          },
          "seo_title": {
            "type": "string",
            "maxLength": 255
          },
          "seo_description": {
            "type": "string"
          }
        },
        "required": [
          "author_name",
          "slug",
          "tags",
          "title"
        ]
      },
      "BlogTag": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "maxLength": 50,
            "pattern": "^[-a-zA-Z0-9_]+$"
          },
          "name": {
            "type": "string",
            "maxLength": 100
          }
        },
        "required": [
          "name",
          "slug"
        ]
      },
      "Category": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "slug": {
            "type": "string",
            "maxLength": 64,
            "pattern": "^[-a-zA-Z0-9_]+$"
          },
          "name": {},
          "description": {},
          "order": {
            "type": "integer",
            "maximum": 9223372036854775807,
            "minimum": 0,
            "format": "int64"
          },
          "is_active": {
            "type": "boolean"
          },
          "tool_count": {
            "type": "integer",
            "readOnly": true
          }
        },
        "required": [
          "id",
          "slug",
          "tool_count"
        ]
      },
      "Collection": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "maxLength": 120
          },
          "slug": {
            "type": "string",
            "maxLength": 140,
            "pattern": "^[-a-zA-Z0-9_]+$"
          },
          "description": {
            "type": "string"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CollectionItem"
            },
            "readOnly": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "created_at",
          "id",
          "items",
          "name",
          "slug",
          "updated_at"
        ]
      },
      "CollectionItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "tool": {
            "type": "integer"
          },
          "tool_id": {
            "type": "string",
            "writeOnly": true
          },
          "tool_slug": {
            "type": "string",
            "readOnly": true
          },
          "order": {
            "type": "integer",
            "maximum": 9223372036854775807,
            "minimum": 0,
            "format": "int64"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "created_at",
          "id",
          "tool",
          "tool_slug"
        ]
      },
      "ContentItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "title": {
            "type": "string",
            "maxLength": 255
          },
          "slug": {
            "type": "string",
            "maxLength": 255,
            "pattern": "^[-a-zA-Z0-9_]+$"
          },
          "body": {
            "type": "string"
          },
          "content_type": {
            "type": "string",
            "maxLength": 64
          },
          "status": {
            "$ref": "#/components/schemas/ContentItemStatusEnum"
          },
          "locale": {
            "type": "string",
            "maxLength": 10
          },
          "tool": {
            "type": "integer",
            "nullable": true
          },
          "target_path": {
            "type": "string",
            "maxLength": 512
          },
          "meta_title": {
            "type": "string",
            "maxLength": 255
          },
          "meta_description": {
            "type": "string"
          },
          "created_by": {
            "type": "integer",
            "readOnly": true,
            "nullable": true
          },
          "published_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "created_at",
          "created_by",
          "id",
          "published_at",
          "slug",
          "title",
          "updated_at"
        ]
      },
      "ContentItemStatusEnum": {
        "enum": [
          "draft",
          "ai_generated",
          "human_review",
          "approved",
          "published"
        ],
        "type": "string",
        "description": "* `draft` - Draft\n* `ai_generated` - AI generated\n* `human_review` - Human review\n* `approved` - Approved\n* `published` - Published"
      },
      "EmailTokenObtainPair": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "writeOnly": true
          },
          "password": {
            "type": "string",
            "writeOnly": true
          }
        },
        "required": [
          "email",
          "password"
        ]
      },
      "Favorite": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "tool": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToolList"
              }
            ],
            "readOnly": true
          },
          "tool_id": {
            "type": "string",
            "writeOnly": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "created_at",
          "id",
          "tool",
          "tool_id"
        ]
      },
      "KeyEnum": {
        "enum": [
          "banner",
          "in-tool",
          "sidebar",
          "satellite"
        ],
        "type": "string",
        "description": "* `banner` - Banner\n* `in-tool` - In tool\n* `sidebar` - Sidebar\n* `satellite` - Satellite"
      },
      "NetworkEnum": {
        "enum": [
          "adsense",
          "custom"
        ],
        "type": "string",
        "description": "* `adsense` - AdSense\n* `custom` - Custom"
      },
      "PageTypeEnum": {
        "enum": [
          "best_of",
          "keyword",
          "audience",
          "category_hub",
          "authority"
        ],
        "type": "string",
        "description": "* `best_of` - Best of\n* `keyword` - Keyword\n* `audience` - Audience\n* `category_hub` - Category hub\n* `authority` - Authority"
      },
      "PaginatedAdPlacementList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=4"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=2"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdPlacement"
            }
          }
        }
      },
      "PaginatedAffiliateLinkList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=4"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=2"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AffiliateLink"
            }
          }
        }
      },
      "PaginatedBlogPostListList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=4"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=2"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BlogPostList"
            }
          }
        }
      },
      "PaginatedCategoryList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=4"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=2"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Category"
            }
          }
        }
      },
      "PaginatedCollectionList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=4"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=2"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Collection"
            }
          }
        }
      },
      "PaginatedContentItemList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=4"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=2"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContentItem"
            }
          }
        }
      },
      "PaginatedFavoriteList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=4"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=2"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Favorite"
            }
          }
        }
      },
      "PaginatedProgrammaticPageListList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=4"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=2"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProgrammaticPageList"
            }
          }
        }
      },
      "PaginatedPromptTemplateList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=4"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=2"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PromptTemplate"
            }
          }
        }
      },
      "PaginatedRevenueEventList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=4"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=2"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RevenueEvent"
            }
          }
        }
      },
      "PaginatedSavedOutputList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=4"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=2"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SavedOutput"
            }
          }
        }
      },
      "PaginatedSeoRecommendationList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=4"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=2"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SeoRecommendation"
            }
          }
        }
      },
      "PaginatedSponsoredToolList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=4"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=2"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SponsoredTool"
            }
          }
        }
      },
      "PaginatedToolCommentList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=4"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=2"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ToolComment"
            }
          }
        }
      },
      "PaginatedToolHistoryList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=4"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=2"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ToolHistory"
            }
          }
        }
      },
      "PaginatedToolListList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=4"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=2"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ToolList"
            }
          }
        }
      },
      "PaginatedToolReviewList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=4"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=2"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ToolReview"
            }
          }
        }
      },
      "PaginatedToolSpecList": {
        "type": "object",
        "required": [
          "count",
          "results"
        ],
        "properties": {
          "count": {
            "type": "integer",
            "example": 123
          },
          "next": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=4"
          },
          "previous": {
            "type": "string",
            "nullable": true,
            "format": "uri",
            "example": "http://api.example.org/accounts/?page=2"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ToolSpec"
            }
          }
        }
      },
      "PatchedAdPlacement": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "key": {
            "$ref": "#/components/schemas/KeyEnum"
          },
          "enabled": {
            "type": "boolean"
          },
          "network": {
            "$ref": "#/components/schemas/NetworkEnum"
          },
          "config": {},
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        }
      },
      "PatchedAffiliateLink": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "tool": {
            "type": "integer",
            "nullable": true
          },
          "tool_slug": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "label": {
            "type": "string",
            "maxLength": 255
          },
          "destination_url": {
            "type": "string",
            "format": "uri",
            "maxLength": 1024
          },
          "network": {
            "type": "string",
            "maxLength": 64
          },
          "utm": {},
          "is_active": {
            "type": "boolean"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        }
      },
      "PatchedCollection": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "maxLength": 120
          },
          "slug": {
            "type": "string",
            "maxLength": 140,
            "pattern": "^[-a-zA-Z0-9_]+$"
          },
          "description": {
            "type": "string"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CollectionItem"
            },
            "readOnly": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        }
      },
      "PatchedContentItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "title": {
            "type": "string",
            "maxLength": 255
          },
          "slug": {
            "type": "string",
            "maxLength": 255,
            "pattern": "^[-a-zA-Z0-9_]+$"
          },
          "body": {
            "type": "string"
          },
          "content_type": {
            "type": "string",
            "maxLength": 64
          },
          "status": {
            "$ref": "#/components/schemas/ContentItemStatusEnum"
          },
          "locale": {
            "type": "string",
            "maxLength": 10
          },
          "tool": {
            "type": "integer",
            "nullable": true
          },
          "target_path": {
            "type": "string",
            "maxLength": 512
          },
          "meta_title": {
            "type": "string",
            "maxLength": 255
          },
          "meta_description": {
            "type": "string"
          },
          "created_by": {
            "type": "integer",
            "readOnly": true,
            "nullable": true
          },
          "published_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true,
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        }
      },
      "PatchedSavedOutput": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "tool": {
            "type": "integer"
          },
          "tool_id": {
            "type": "string",
            "writeOnly": true
          },
          "tool_slug": {
            "type": "string",
            "readOnly": true
          },
          "title": {
            "type": "string",
            "maxLength": 255
          },
          "content": {
            "type": "string"
          },
          "meta": {},
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        }
      },
      "PatchedSponsoredTool": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "tool": {
            "type": "integer"
          },
          "tool_slug": {
            "type": "string",
            "readOnly": true
          },
          "sponsor_name": {
            "type": "string",
            "maxLength": 255
          },
          "start_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "end_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "priority": {
            "type": "integer",
            "maximum": 9223372036854775807,
            "minimum": 0,
            "format": "int64"
          },
          "creative": {},
          "is_active": {
            "type": "boolean"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        }
      },
      "PatchedToolSpec": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "slug": {
            "type": "string",
            "maxLength": 128,
            "pattern": "^[-a-zA-Z0-9_]+$"
          },
          "category_slug": {
            "type": "string",
            "maxLength": 64,
            "pattern": "^[-a-zA-Z0-9_]+$"
          },
          "name": {},
          "description": {},
          "ui_schema": {},
          "pipeline": {},
          "seo": {},
          "faq": {},
          "howto": {},
          "capabilities": {},
          "recipe": {
            "$ref": "#/components/schemas/RecipeEnum"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToolSpecStatusEnum"
              }
            ],
            "readOnly": true
          },
          "error": {
            "type": "string",
            "readOnly": true
          },
          "is_viral": {
            "type": "boolean"
          },
          "share_text": {},
          "export_filesystem": {
            "type": "boolean"
          },
          "created_by": {
            "type": "integer",
            "readOnly": true,
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        }
      },
      "ProgrammaticPageList": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "description": "Unique path key, e.g. best/pdf-tools or json/json-formatter-online",
            "maxLength": 255,
            "pattern": "^[-a-zA-Z0-9_]+$"
          },
          "path": {
            "type": "string",
            "readOnly": true
          },
          "path_pattern": {
            "type": "string",
            "description": "Pattern template, e.g. best/{topic}, tools/for-{audience}",
            "maxLength": 255
          },
          "title": {},
          "description": {},
          "page_type": {
            "$ref": "#/components/schemas/PageTypeEnum"
          },
          "topic": {
            "type": "string",
            "maxLength": 128
          },
          "category_slug": {
            "type": "string",
            "maxLength": 64
          },
          "audience": {
            "type": "string",
            "maxLength": 128
          },
          "keyword": {
            "type": "string",
            "maxLength": 255
          },
          "status": {
            "$ref": "#/components/schemas/ProgrammaticPageListStatusEnum"
          },
          "related_tool_ids": {},
          "seo_title": {},
          "seo_description": {},
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "path",
          "slug",
          "updated_at"
        ]
      },
      "ProgrammaticPageListStatusEnum": {
        "enum": [
          "draft",
          "published"
        ],
        "type": "string",
        "description": "* `draft` - Draft\n* `published` - Published"
      },
      "PromptTemplate": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "slug": {
            "type": "string",
            "maxLength": 128,
            "pattern": "^[-a-zA-Z0-9_]+$"
          },
          "name": {
            "type": "string",
            "maxLength": 255
          },
          "template_text": {
            "type": "string"
          },
          "purpose": {
            "$ref": "#/components/schemas/PurposeEnum"
          },
          "locale": {
            "type": "string",
            "maxLength": 10
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "created_at",
          "id",
          "name",
          "purpose",
          "slug",
          "template_text",
          "updated_at"
        ]
      },
      "PurposeEnum": {
        "enum": [
          "tool_description",
          "seo_title",
          "meta",
          "faq",
          "blog",
          "tutorial",
          "comparison",
          "landing"
        ],
        "type": "string",
        "description": "* `tool_description` - Tool description\n* `seo_title` - SEO title\n* `meta` - Meta description\n* `faq` - FAQ\n* `blog` - Blog\n* `tutorial` - Tutorial\n* `comparison` - Comparison\n* `landing` - Landing"
      },
      "RecipeEnum": {
        "enum": [
          "generic",
          "pdf",
          "image",
          "ai",
          "developer",
          "calculator"
        ],
        "type": "string",
        "description": "* `generic` - Generic\n* `pdf` - PDF\n* `image` - Image\n* `ai` - AI\n* `developer` - Developer\n* `calculator` - Calculator"
      },
      "Register": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "maxLength": 254
          },
          "name": {
            "type": "string",
            "maxLength": 150
          },
          "password": {
            "type": "string",
            "writeOnly": true,
            "minLength": 8
          }
        },
        "required": [
          "email",
          "password"
        ]
      },
      "RevenueEvent": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "type": {
            "$ref": "#/components/schemas/RevenueEventTypeEnum"
          },
          "amount_cents": {
            "type": "integer",
            "maximum": 9223372036854775807,
            "minimum": -9223372036854775808,
            "format": "int64"
          },
          "currency": {
            "type": "string",
            "maxLength": 8
          },
          "meta": {},
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "created_at",
          "id",
          "type"
        ]
      },
      "RevenueEventTypeEnum": {
        "enum": [
          "ad_impression",
          "ad_click",
          "subscription",
          "affiliate",
          "api"
        ],
        "type": "string",
        "description": "* `ad_impression` - Ad impression\n* `ad_click` - Ad click\n* `subscription` - Subscription\n* `affiliate` - Affiliate\n* `api` - API"
      },
      "SavedOutput": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "tool": {
            "type": "integer"
          },
          "tool_id": {
            "type": "string",
            "writeOnly": true
          },
          "tool_slug": {
            "type": "string",
            "readOnly": true
          },
          "title": {
            "type": "string",
            "maxLength": 255
          },
          "content": {
            "type": "string"
          },
          "meta": {},
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "content",
          "created_at",
          "id",
          "title",
          "tool_slug",
          "updated_at"
        ]
      },
      "SeoRecommendation": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "path": {
            "type": "string",
            "readOnly": true
          },
          "tool": {
            "type": "integer",
            "readOnly": true,
            "nullable": true
          },
          "tool_slug": {
            "type": "string",
            "readOnly": true,
            "nullable": true
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SeoRecommendationTypeEnum"
              }
            ],
            "readOnly": true
          },
          "severity": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SeverityEnum"
              }
            ],
            "readOnly": true
          },
          "suggestion": {
            "type": "string",
            "readOnly": true
          },
          "rationale": {
            "type": "string",
            "readOnly": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/SeoRecommendationStatusEnum"
              }
            ],
            "readOnly": true
          },
          "evidence": {
            "readOnly": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "created_at",
          "evidence",
          "id",
          "path",
          "rationale",
          "severity",
          "status",
          "suggestion",
          "tool",
          "tool_slug",
          "type",
          "updated_at"
        ]
      },
      "SeoRecommendationStatusEnum": {
        "enum": [
          "open",
          "accepted",
          "dismissed"
        ],
        "type": "string",
        "description": "* `open` - Open\n* `accepted` - Accepted\n* `dismissed` - Dismissed"
      },
      "SeoRecommendationTypeEnum": {
        "enum": [
          "title",
          "meta",
          "faq",
          "internal_link",
          "content"
        ],
        "type": "string",
        "description": "* `title` - Title\n* `meta` - Meta\n* `faq` - FAQ\n* `internal_link` - Internal link\n* `content` - Content"
      },
      "SeverityEnum": {
        "enum": [
          "low",
          "medium",
          "high"
        ],
        "type": "string",
        "description": "* `low` - Low\n* `medium` - Medium\n* `high` - High"
      },
      "SourceEnum": {
        "enum": [
          "filesystem",
          "dynamic"
        ],
        "type": "string",
        "description": "* `filesystem` - Filesystem\n* `dynamic` - Dynamic"
      },
      "SponsoredTool": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "tool": {
            "type": "integer"
          },
          "tool_slug": {
            "type": "string",
            "readOnly": true
          },
          "sponsor_name": {
            "type": "string",
            "maxLength": 255
          },
          "start_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "end_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "priority": {
            "type": "integer",
            "maximum": 9223372036854775807,
            "minimum": 0,
            "format": "int64"
          },
          "creative": {},
          "is_active": {
            "type": "boolean"
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "created_at",
          "id",
          "sponsor_name",
          "tool",
          "tool_slug",
          "updated_at"
        ]
      },
      "StatusE94Enum": {
        "enum": [
          "pending",
          "approved",
          "rejected"
        ],
        "type": "string",
        "description": "* `pending` - Pending\n* `approved` - Approved\n* `rejected` - Rejected"
      },
      "TokenRefresh": {
        "type": "object",
        "properties": {
          "access": {
            "type": "string",
            "readOnly": true
          },
          "refresh": {
            "type": "string"
          }
        },
        "required": [
          "access",
          "refresh"
        ]
      },
      "ToolComment": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "tool": {
            "type": "integer"
          },
          "tool_id": {
            "type": "string",
            "writeOnly": true
          },
          "tool_slug": {
            "type": "string",
            "readOnly": true
          },
          "body": {
            "type": "string"
          },
          "parent": {
            "type": "integer",
            "nullable": true
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StatusE94Enum"
              }
            ],
            "readOnly": true
          },
          "user_name": {
            "type": "string",
            "readOnly": true,
            "default": ""
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "body",
          "created_at",
          "id",
          "status",
          "tool_slug",
          "user_name"
        ]
      },
      "ToolDetail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "tool_id": {
            "type": "string",
            "maxLength": 128
          },
          "slug": {
            "type": "string",
            "maxLength": 128,
            "pattern": "^[-a-zA-Z0-9_]+$"
          },
          "category": {
            "type": "string",
            "readOnly": true
          },
          "name": {},
          "description": {},
          "version": {
            "type": "string",
            "maxLength": 32
          },
          "premium": {
            "type": "boolean"
          },
          "adsense_slot": {
            "type": "string",
            "maxLength": 32
          },
          "icon": {
            "type": "string",
            "maxLength": 64
          },
          "order": {
            "type": "integer",
            "maximum": 9223372036854775807,
            "minimum": 0,
            "format": "int64"
          },
          "usage_count": {
            "type": "integer",
            "maximum": 9223372036854775807,
            "minimum": 0,
            "format": "int64"
          },
          "capabilities": {},
          "source": {
            "$ref": "#/components/schemas/SourceEnum"
          },
          "seo_title": {},
          "seo_description": {},
          "seo_keywords": {},
          "schema_type": {
            "type": "string",
            "maxLength": 64
          },
          "faq": {},
          "howto_steps": {},
          "related_slugs": {},
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "category",
          "created_at",
          "id",
          "slug",
          "tool_id",
          "updated_at"
        ]
      },
      "ToolHistory": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "tool": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToolList"
              }
            ],
            "readOnly": true
          },
          "tool_id": {
            "type": "string",
            "writeOnly": true
          },
          "action": {
            "type": "string",
            "maxLength": 64
          },
          "meta": {},
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "created_at",
          "id",
          "tool",
          "tool_id"
        ]
      },
      "ToolList": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "tool_id": {
            "type": "string",
            "maxLength": 128
          },
          "slug": {
            "type": "string",
            "maxLength": 128,
            "pattern": "^[-a-zA-Z0-9_]+$"
          },
          "category": {
            "type": "string",
            "readOnly": true
          },
          "name": {},
          "description": {},
          "version": {
            "type": "string",
            "maxLength": 32
          },
          "premium": {
            "type": "boolean"
          },
          "adsense_slot": {
            "type": "string",
            "maxLength": 32
          },
          "icon": {
            "type": "string",
            "maxLength": 64
          },
          "order": {
            "type": "integer",
            "maximum": 9223372036854775807,
            "minimum": 0,
            "format": "int64"
          },
          "usage_count": {
            "type": "integer",
            "maximum": 9223372036854775807,
            "minimum": 0,
            "format": "int64"
          },
          "capabilities": {},
          "source": {
            "$ref": "#/components/schemas/SourceEnum"
          }
        },
        "required": [
          "category",
          "id",
          "slug",
          "tool_id"
        ]
      },
      "ToolReview": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "tool": {
            "type": "integer"
          },
          "tool_id": {
            "type": "string",
            "writeOnly": true
          },
          "tool_slug": {
            "type": "string",
            "readOnly": true
          },
          "rating": {
            "type": "integer",
            "maximum": 5,
            "minimum": 1
          },
          "title": {
            "type": "string",
            "maxLength": 200
          },
          "body": {
            "type": "string"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/StatusE94Enum"
              }
            ],
            "readOnly": true
          },
          "user_name": {
            "type": "string",
            "readOnly": true,
            "default": ""
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "body",
          "created_at",
          "id",
          "rating",
          "status",
          "tool_slug",
          "user_name"
        ]
      },
      "ToolSpec": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "readOnly": true
          },
          "slug": {
            "type": "string",
            "maxLength": 128,
            "pattern": "^[-a-zA-Z0-9_]+$"
          },
          "category_slug": {
            "type": "string",
            "maxLength": 64,
            "pattern": "^[-a-zA-Z0-9_]+$"
          },
          "name": {},
          "description": {},
          "ui_schema": {},
          "pipeline": {},
          "seo": {},
          "faq": {},
          "howto": {},
          "capabilities": {},
          "recipe": {
            "$ref": "#/components/schemas/RecipeEnum"
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ToolSpecStatusEnum"
              }
            ],
            "readOnly": true
          },
          "error": {
            "type": "string",
            "readOnly": true
          },
          "is_viral": {
            "type": "boolean"
          },
          "share_text": {},
          "export_filesystem": {
            "type": "boolean"
          },
          "created_by": {
            "type": "integer",
            "readOnly": true,
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "created_at",
          "created_by",
          "error",
          "id",
          "slug",
          "status",
          "updated_at"
        ]
      },
      "ToolSpecStatusEnum": {
        "enum": [
          "draft",
          "generating",
          "ready",
          "failed",
          "published"
        ],
        "type": "string",
        "description": "* `draft` - Draft\n* `generating` - Generating\n* `ready` - Ready\n* `failed` - Failed\n* `published` - Published"
      }
    },
    "securitySchemes": {
      "jwtAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  }
}