Packages
Elixir client for the Pipedrive CRM API. v2-first (Deals, Persons, Orgs, Activities, Pipelines, Stages, Products, Search, Fields), with OAuth TokenStore, retries/telemetry, Raw escape hatch, and webhook Event normalization. Inbound Plug helpers live in `ex_pipedrive_web`. Forked from LineDrive.
Current section
Files
Jump to
Current section
Files
ex_pipedrive
mix.exs
mix.exs
defmodule ExPipedrive.MixProject do
use Mix.Project
@version "0.2.0"
@source_url "https://github.com/blksheep80/ex_pipedrive"
def project do
[
app: :ex_pipedrive,
version: @version,
elixir: "~> 1.17",
description: description(),
package: package(),
deps: deps(),
docs: docs(),
source_url: @source_url,
homepage_url: @source_url,
elixirc_paths: elixirc_paths(Mix.env()),
elixirc_options: [warnings_as_errors: true],
start_permanent: Mix.env() == :prod,
dialyzer: [
plt_local_path: "priv/plts",
plt_core_path: "priv/plts",
ignore_warnings: ".dialyzer_ignore.exs",
list_unused_filters: true
]
]
end
def application do
[
extra_applications: [:logger]
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
# Runtime core: jason, tesla, telemetry, typed_struct.
# plug_cowboy is test-only (fake Pipedrive server). Inbound webhook Plug
# lives in the sibling `ex_pipedrive_web` package (#82). Timex removed (#27).
defp deps do
[
{:credo, "~> 1.6", only: [:dev, :test], runtime: false},
{:dialyxir, "~> 1.0", only: [:dev, :test], runtime: false},
{:doctor, "~> 0.22", only: [:dev, :test], runtime: false},
{:ex_doc, "~> 0.34", only: :dev, runtime: false},
{:jason, "~> 1.3"},
{:plug_cowboy, "~> 2.7", only: [:test]},
{:telemetry, "~> 1.0"},
{:tesla, "~> 1.12"},
{:typed_struct, "~> 0.3.0"}
]
end
defp description do
"""
Elixir client for the Pipedrive CRM API. v2-first (Deals, Persons, Orgs,
Activities, Pipelines, Stages, Products, Search, Fields), with OAuth
TokenStore, retries/telemetry, Raw escape hatch, and webhook Event
normalization. Inbound Plug helpers live in `ex_pipedrive_web`.
Forked from LineDrive.
"""
end
defp package do
[
name: "ex_pipedrive",
licenses: ["MIT"],
links: %{
"GitHub" => @source_url,
"Changelog" => "#{@source_url}/blob/main/CHANGELOG.md",
"HexDocs" => "https://hexdocs.pm/ex_pipedrive",
"Upstream (LineDrive)" => "https://github.com/tmecklem/line_drive"
},
files: ~w(lib .formatter.exs mix.exs README.md LICENSE.md CHANGELOG.md)
]
end
defp docs do
[
main: "readme",
source_ref: "v#{@version}",
source_url: @source_url,
extras: ["README.md", "CHANGELOG.md", "LICENSE.md"],
groups_for_modules: [
HTTP: [
ExPipedrive,
ExPipedrive.Client,
ExPipedrive.Request,
ExPipedrive.Raw,
ExPipedrive.Resource,
ExPipedrive.Response,
ExPipedrive.Error,
ExPipedrive.RateLimit,
ExPipedrive.Middleware.Retry,
ExPipedrive.Middleware.Telemetry,
ExPipedrive.Page,
ExPipedrive.Cursor,
ExPipedrive.PagedResult,
ExPipedrive.WriteAttrs
],
"CRM resources": [
ExPipedrive.Deals,
ExPipedrive.Persons,
ExPipedrive.Organizations,
ExPipedrive.Activities,
ExPipedrive.Pipelines,
ExPipedrive.Stages,
ExPipedrive.Products,
ExPipedrive.DealProducts,
ExPipedrive.DealInstallments,
ExPipedrive.Projects,
ExPipedrive.ProjectBoards,
ExPipedrive.Tasks,
ExPipedrive.Leads,
ExPipedrive.LeadSources,
ExPipedrive.Notes,
ExPipedrive.Filters,
ExPipedrive.Goals,
ExPipedrive.Files,
ExPipedrive.CallLogs,
ExPipedrive.ActivityTypes,
ExPipedrive.Users,
ExPipedrive.Currencies,
ExPipedrive.Recents,
ExPipedrive.Roles,
ExPipedrive.PermissionSets,
ExPipedrive.Teams,
ExPipedrive.Deal,
ExPipedrive.Person,
ExPipedrive.Organization,
ExPipedrive.Activity,
ExPipedrive.Pipeline,
ExPipedrive.Stage,
ExPipedrive.Product,
ExPipedrive.DealProduct,
ExPipedrive.DealInstallment,
ExPipedrive.Project,
ExPipedrive.ProjectBoard,
ExPipedrive.Task,
ExPipedrive.Lead,
ExPipedrive.LeadSource,
ExPipedrive.Note,
ExPipedrive.Filter,
ExPipedrive.Goal,
ExPipedrive.File,
ExPipedrive.CallLog,
ExPipedrive.Currency,
ExPipedrive.Recent,
ExPipedrive.Role,
ExPipedrive.RoleAssignment,
ExPipedrive.PermissionSet,
ExPipedrive.Team
],
Fields: [
ExPipedrive.Fields,
ExPipedrive.DealFields,
ExPipedrive.PersonFields,
ExPipedrive.OrganizationFields,
ExPipedrive.ActivityFields,
ExPipedrive.ProductFields,
ExPipedrive.LeadFields,
ExPipedrive.NoteFields,
ExPipedrive.Field,
ExPipedrive.FieldOption
],
Search: [
ExPipedrive.Search,
ExPipedrive.SearchResult
],
Collaboration: [
ExPipedrive.Followers,
ExPipedrive.Follower,
ExPipedrive.DealParticipants,
ExPipedrive.DealParticipant,
ExPipedrive.OrganizationRelationships,
ExPipedrive.OrganizationRelationship
],
Mailbox: [
ExPipedrive.Mailbox,
ExPipedrive.MailThread,
ExPipedrive.MailMessage,
ExPipedrive.MailMessageParty
],
OAuth: [
ExPipedrive.Oauth,
ExPipedrive.Oauth.Token,
ExPipedrive.Oauth.TokenStore,
ExPipedrive.Oauth.TokenStore.Memory
],
Webhooks: [
ExPipedrive.Webhooks,
ExPipedrive.Webhooks.Subscription,
ExPipedrive.Webhook.Event,
ExPipedrive.Webhook.Handler
]
]
]
end
end