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

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{}}.

Link to this function

delete(client, project_id)

View Source
@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.

Link to this function

list_archived_page(client, opts \\ [])

View Source
@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.

Link to this function

list_page(client, opts \\ [])

View Source
@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.

Link to this function

stream(client, opts \\ [])

View Source
@spec stream(
  Tesla.Client.t(),
  keyword()
) :: Enumerable.t()

Lazily streams non-archived projects across v2 cursor pages.

Link to this function

stream_archived(client, opts \\ [])

View Source
@spec stream_archived(
  Tesla.Client.t(),
  keyword()
) :: Enumerable.t()

Lazily streams archived projects across v2 cursor pages.

Link to this function

update(client, project_id, attrs)

View Source
@spec update(Tesla.Client.t(), term(), map()) ::
  {:ok, ExPipedrive.Project.t()} | {:error, ExPipedrive.Error.t()}

Updates a project via PATCH /api/v2/projects/:id.