| defmodule PlausibleWeb.Plugins.API.Schemas.Funnel do |
| @moduledoc """ |
| OpenAPI schema for Funnel |
| """ |
| use Plausible.Funnel.Const |
| use PlausibleWeb, :open_api_schema |
|
|
| OpenApiSpex.schema(%{ |
| title: "Funnel", |
| description: "Funnel object", |
| type: :object, |
| properties: %{ |
| funnel: %Schema{ |
| type: :object, |
| required: [:id, :name, :steps], |
| properties: %{ |
| id: %Schema{type: :integer, description: "Funnel ID"}, |
| name: %Schema{type: :string, description: "Name"}, |
| steps: %Schema{ |
| description: "Funnel Steps", |
| type: :array, |
| minItems: 2, |
| maxItems: Funnel.Const.max_steps(), |
| items: Schemas.Goal |
| } |
| } |
| } |
| }, |
| example: %{ |
| funnel: %{ |
| id: 123, |
| name: "My Marketing Funnel", |
| steps: [ |
| %{ |
| goal_type: "Goal.Pageview", |
| goal: %{ |
| id: 1, |
| display_name: "Visit /product/1", |
| path: "/product/1" |
| } |
| }, |
| %{ |
| goal_type: "Goal.Revenue", |
| goal: %{ |
| id: 2, |
| display_name: "Purchase", |
| currency: "EUR", |
| event_name: "Purchase" |
| } |
| } |
| ] |
| } |
| } |
| }) |
| end |
|
|