View Source ExPipedrive.Projects (ex_pipedrive v0.2.0)
Pipedrive projects resource — work items spanning deals, activities, and tasks.
v2-first helpers talk to /api/v2/projects via ExPipedrive.Resource.
Shapes follow Pipedrive OpenAPI v2.
Implemented
list_page/2,stream/2— non-archived projectslist_archived_page/2,stream_archived/2— archived projectsget/2,create/2,update/3,delete/2
Deferred (future issues / follow-ups)
ExPipedrive.ProjectPhases(/api/v2/phases)ExPipedrive.ProjectTemplates(/api/v2/projectTemplates)ExPipedrive.ProjectFields(/api/v2/projectFields)- Project search (
GET /api/v2/projects/search) - Archive / unarchive (
POST /api/v2/projects/:id/archive) - Permitted users and changelog sub-resources
Project boards are available via ExPipedrive.ProjectBoards.
Example
{:ok, page} = ExPipedrive.Projects.list_page(client, status: "open")
{:ok, project} = ExPipedrive.Projects.get(client, 3)
{:ok, project} =
ExPipedrive.Projects.create(client, %{
title: "Office renovation",
board_id: 1,
phase_id: 1
})
{:ok, project} =
ExPipedrive.Projects.update(client, project.id, %{status: "completed"})
{:ok, %{"data" => %{"id" => _}}} = ExPipedrive.Projects.delete(client, project.id)
Summary
Functions
Creates a project via POST /api/v2/projects.
Deletes a project via DELETE /api/v2/projects/:id.
Fetches a project by id via GET /api/v2/projects/:id.
Lists one page of archived projects via GET /api/v2/projects/archived.
Lists one page of non-archived projects via GET /api/v2/projects.
Lazily streams non-archived projects across v2 cursor pages.
Lazily streams archived projects across v2 cursor pages.
Updates a project via PATCH /api/v2/projects/:id.
Functions
@spec create(Tesla.Client.t(), map()) :: {:ok, ExPipedrive.Project.t()} | {:error, ExPipedrive.Error.t()}
Creates a project via POST /api/v2/projects.
Requires :title. Returns {:ok, %Project{}}.
@spec delete(Tesla.Client.t(), term()) :: {:ok, term()} | {:error, ExPipedrive.Error.t()}
Deletes a project via DELETE /api/v2/projects/:id.
@spec get(Tesla.Client.t(), term()) :: {:ok, ExPipedrive.Project.t()} | {:error, ExPipedrive.Error.t()}
Fetches a project by id via GET /api/v2/projects/:id.
@spec list_archived_page( Tesla.Client.t(), keyword() ) :: {:ok, ExPipedrive.Page.t()} | {:error, ExPipedrive.Error.t()}
Lists one page of archived projects via GET /api/v2/projects/archived.
Options: :cursor, :limit (clamped to 500), :filter_id, :status,
:phase_id.
@spec list_page( Tesla.Client.t(), keyword() ) :: {:ok, ExPipedrive.Page.t()} | {:error, ExPipedrive.Error.t()}
Lists one page of non-archived projects via GET /api/v2/projects.
Options: :cursor, :limit (clamped to 500), :filter_id, :status,
:phase_id, :deal_id, :person_id, :org_id.
@spec stream( Tesla.Client.t(), keyword() ) :: Enumerable.t()
Lazily streams non-archived projects across v2 cursor pages.
@spec stream_archived( Tesla.Client.t(), keyword() ) :: Enumerable.t()
Lazily streams archived projects across v2 cursor pages.
@spec update(Tesla.Client.t(), term(), map()) :: {:ok, ExPipedrive.Project.t()} | {:error, ExPipedrive.Error.t()}
Updates a project via PATCH /api/v2/projects/:id.