File size: 1,245 Bytes
88211d3 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | defmodule PlausibleWeb.Plugins.API.Schemas.Capabilities do
@moduledoc """
OpenAPI schema for Capabilities
"""
use PlausibleWeb, :open_api_schema
require Plausible.Billing.Feature
@features Plausible.Billing.Feature.list_short_names()
@features_schema Enum.reduce(@features, %{}, fn feature, acc ->
Map.put(acc, feature, %Schema{type: :boolean})
end)
OpenApiSpex.schema(%{
title: "Capabilities",
description: "Capabilities object",
type: :object,
required: [:authorized, :data_domain, :features],
properties: %{
authorized: %Schema{type: :boolean},
data_domain: %Schema{type: :string, nullable: true},
features: %Schema{
type: :object,
required: @features,
properties: @features_schema
}
},
example: %{
authorized: true,
data_domain: "example.com",
features: %{
Funnels: false,
Goals: true,
Props: false,
RevenueGoals: false,
StatsAPI: false,
SitesAPI: false,
SiteSegments: false,
SiteAnnotations: false,
Teams: false,
SharedLinks: false,
SSO: false,
ConsolidatedView: false
}
}
})
end
|