Packages

Complete Twilio SDK for Elixir — 37 products, 494 services, 467 resources. Auto-generated from official OpenAPI specs. Finch HTTP/2, retries with jitter, webhooks, TwiML, telemetry, streaming pagination.

Current section

Files

Jump to
twilio_elixir lib twilio knowledge v2 control_plane knowledge_base_service.ex
Raw

lib/twilio/knowledge/v2/control_plane/knowledge_base_service.ex

# File generated from Twilio's OpenAPI spec — do not edit manually
defmodule Twilio.Knowledge.V2.ControlPlane.KnowledgeBaseService do
@moduledoc """
Service for KnowledgeBase API operations.
Operations: `list`, `create`, `fetch`, `delete`
"""
alias Twilio.Client
alias Twilio.Deserializer
@doc """
Get a list of knowledge bases for the Twilio account.
Operation: `ListKnowledgeBases` | Tags: KnowledgeBases
"""
@spec list(Client.t(), map(), keyword()) ::
{:ok, Twilio.Page.t()} | {:ok, map(), map()} | :ok | {:error, Twilio.Error.t()}
def list(client, params \\ %{}, opts \\ []) do
case Client.request(client, :get, "/v2/ControlPlane/KnowledgeBases",
params: params,
opts: opts,
base_url: "https://knowledge.twilio.com"
) do
{:ok, data} ->
page = Twilio.Page.from_response(data, "knowledgebases")
{:ok,
%{
page
| items:
Deserializer.deserialize_list(
page.items,
Twilio.Resources.Knowledge.V2.ControlPlane.KnowledgeBase
)
}}
error ->
error
end
end
@doc "Stream: Get a list of knowledge bases for the Twilio account. (lazy auto-pagination)."
@spec stream(Client.t(), map(), keyword()) :: Enumerable.t()
def stream(client, params \\ %{}, opts \\ []) do
Twilio.Page.stream(
fn page_opts ->
list(client, Map.merge(params, page_opts), opts)
end,
"knowledgebases"
)
end
@doc """
# credo:disable-for-next-line Credo.Check.Readability.MaxLineLength
Create a new Knowledge Base for the Twilio account. Accounts can have multiple knowledge bases. Each knowledge base can contain multiple knowledge resources such as documents, websites, or text content that can be used for context and information retrieval.
Operation: `CreateKnowledgeBase` | Tags: KnowledgeBases
"""
@spec create(Client.t(), map(), keyword()) ::
{:ok, Twilio.Resources.Knowledge.V2.ControlPlane.KnowledgeBase.t()}
| {:ok, map(), map()}
| :ok
| {:error, Twilio.Error.t()}
def create(client, params \\ %{}, opts \\ []) do
with {:ok, data} <-
Client.request(client, :post, "/v2/ControlPlane/KnowledgeBases",
params: params,
opts: opts,
base_url: "https://knowledge.twilio.com",
content_type: :json
) do
{:ok,
Deserializer.deserialize(data, Twilio.Resources.Knowledge.V2.ControlPlane.KnowledgeBase)}
end
end
@doc """
Retrieve the details of a specific Knowledge Base by its unique ID.
Operation: `FetchKnowledgeBase` | Tags: KnowledgeBases
"""
@spec fetch(Client.t(), String.t(), keyword()) ::
{:ok, Twilio.Resources.Knowledge.V2.ControlPlane.KnowledgeBase.t()}
| {:ok, map(), map()}
| :ok
| {:error, Twilio.Error.t()}
def fetch(client, sid, opts \\ []) do
with {:ok, data} <-
Client.request(client, :get, "/v2/ControlPlane/KnowledgeBases/#{sid}",
opts: opts,
base_url: "https://knowledge.twilio.com"
) do
{:ok,
Deserializer.deserialize(data, Twilio.Resources.Knowledge.V2.ControlPlane.KnowledgeBase)}
end
end
@doc """
Delete a Knowledge Base and all associated knowledge resources. This action cannot be undone.
Operation: `DeleteKnowledgeBase` | Tags: KnowledgeBases
"""
@spec delete(Client.t(), String.t(), keyword()) ::
{:ok, map()} | {:ok, map(), map()} | :ok | {:error, Twilio.Error.t()}
def delete(client, sid, opts \\ []) do
Client.request(client, :delete, "/v2/ControlPlane/KnowledgeBases/#{sid}",
opts: opts,
base_url: "https://knowledge.twilio.com"
)
end
end