| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
feat: add page update and archive APIs to Python SDK (#67) * feat: add update and archive functionality for workspace and project pages * docs: update API documentation for page deletion and enhance test descriptions * feat: extend Page model with additional fields for access control and collection management * chore: add optional description_html field to CreateProject and UpdateProject models
feat: add workspace governance resources (workspace states, workspace… … workflows, type governance) (#66) * feat: add workspace governance resources (workspace states, workspace workflows, type governance) Plane's workspace governance moves states, workflows, and work item type governance to a workspace-level catalog (dual-mode, per-workspace opt-in). This adds the corresponding public-API coverage: - workspace_states: list/retrieve (dual-mode reads), create/update/delete against the workspace states catalog, plus external-id lookup - workspace_workflows: catalog CRUD, usage report, activity log, chain state management (add/update/remove/mark-default), state transitions, and transition hooks (incl. webhook secret regeneration and executions) - work_item_type_governance: governance mode (any/constrained/required), change previews, project pins, project-side effective workflows and workflow picks, and workflow fallback previews - WorkspaceFeature: type the new work_item_types, releases, and read-only states_owned_by_workspace fields (the governed-mode detection flag) Project workflows parity housekeeping: retrieve/delete/activities, chain state list/update/transfer, transition retrieve, transition hooks, and work item workflow approval. * fix: address review feedback on workspace governance resources - Append trailing slashes to every new endpoint path (URL convention) - Rename get_project_pick/set_project_pick to retrieve_project_pick/ update_project_pick (CRUD verb convention) - submit_work_item_approval now takes a SubmitWorkItemApproval DTO and returns a typed WorkItemApprovalResult - Export WorkspaceWorkflowState, WorkspaceWorkflowTransition, WorkspaceWorkflowUsageProject, and the new approval models from the package root; export CatalogGroupEnum from plane.models - README: capture created IDs in the workspace-workflow example and document placeholder IDs in the governance example - Tests: enter try/finally immediately after each resource creation so failed setup or assertions cannot leak catalog data * refactor: restructure type governance as a package with sub-resources Match the resource-package convention used by collections/ and releases/: a base.py for the top-level class plus one file per sub-resource, each exposing plain CRUD verbs instead of prefixed method families. work_item_type_governance/ base.py -> WorkItemTypeGovernance: retrieve/update/preview pins.py -> WorkItemTypeWorkflowPins: list/create/delete project_workflows.py -> ProjectTypeWorkflows: list/retrieve/ retrieve_pick/update_pick/preview_fallback Call sites become client.work_item_type_governance.pins.list(...) and .project_workflows.update_pick(...), replacing list_pins/create_pins/ delete_pin/list_project_type_workflows/retrieve_project_type_workflow/ retrieve_project_pick/update_project_pick. Also narrow the new packages' __init__ exports to the top-level resource class only, as collections/ and releases/ do; sub-resources are reached through the parent (the pre-existing workflows/ package keeps its own exports). Response models stay exported from the package root. * fix: validate the workflow-pick response with a typed model update_pick was the only resource method returning an unvalidated dict. Add ProjectWorkflowPickResult (mirroring WorkItemApprovalResult for the analogous {"state_id": ...} approval response), normalize the scalar fallback into a mapping, and validate through it. * fix: fill state_id on workspace chain rows
feat: add collections resource (#64) * feat: add Collections resource client Adds a full Collections resource (create/list/retrieve/update/delete collections, add/list/search/move/remove pages within a collection, and collection member CRUD) matching the new external Collections API, plus `collection_id`/`parent_id` on CreatePage so pages can be created directly inside a collection or as a sub-page. * fix(tests): assert sub-page via parent_id filter — unfiltered collection listing returns root-branch pages only * bumpup version to 0.2.21 * resolve review comments * resolve coderabbit comments * test: drop unsupported sub-page nesting assertions Sub-page creation is not supported by the public API (CreatePage.parent_id is accepted but not honored on creation), so the test now covers only the supported page-in-collection behavior.
feat: Add lite list endpoints, project role distribution, and cycle s… …tatus filtering to the SDK #56 feat: Add lite list endpoints, project role distribution, and cycle status filtering to the SDK
feat: add dependency and custom relation sub-resources (#50) * feat: add support for work item dependencies and custom relations * chore: add level attribute to CreateWorkItemType and UpdateWorkItemType models * refactor: update work item relations endpoints to use direct identifiers for removal * chore: implement pagination for work item relation definitions endpoint * chore: add optional dependencies for development and enhance test dependency management * fix: update search parameter key and change sequence_id type to int in work item model
feat: rich filters + pql on work-item list endpoints, add list_worksp… …ace [WEB-7393][PAI-1461] (#37) * feat: rich `filters` + `pql` on work-item list endpoints, add `list_workspace` Expose the new external API's structured filtering capability on every work-item list method in the SDK. - WorkItemQueryParams now accepts `filters: dict[str, Any] | None` (the existing `pql: str | None` field is unchanged). A small `_prepare_work_item_params` helper JSON-encodes `filters` into the `filters=` query string the API expects. - New `WorkItems.list_workspace(workspace_slug, params)` calling `GET /workspaces/<slug>/work-items/` — paginated, total_results, spans every project the caller can view. - `WorkItems.list` and `WorkItems.list_archived` now route through `_prepare_work_item_params`, so `filters` and `pql` work uniformly. - `Cycles.list_work_items` and `Modules.list_work_items` accept `WorkItemQueryParams` (typed path) with the same serialization, and still accept a plain `Mapping[str, Any]` for backwards compatibility. - Real-API unit tests for `filters` on `list`, plus `list_workspace` with and without `filters`. - Bump version to 0.2.13. Backend: makeplane/plane-ee#7376 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * test: tighten `test_list_workspace_work_items_with_filters` assertion Drop the `or filtered.total_results > 0` fallback (which could pass even when filtering was a no-op) and assert directly that every returned item has `priority == "urgent"` — that's the property the test is meant to prove. Addresses CodeRabbit review. * fix: JSON-encode `filters` for the Mapping input path too Copilot caught a real bug: `Cycles.list_work_items` / `Modules.list_work_items` accept a plain `Mapping[str, Any]` for BC, but when callers passed `filters` as a dict through that path the SDK forwarded it to `requests` unchanged. The API expects `filters` as a JSON-encoded string, so the request would produce an invalid query parameter. - Extend `prepare_work_item_params` (renamed from `_prepare_work_item_params` since it's now used across resources, no longer private to the work_items module) to accept either a `WorkItemQueryParams` DTO or a plain mapping, and normalise `filters` to a JSON string in both paths. - Simplify `Cycles.list_work_items` and `Modules.list_work_items` to use the unified helper — drops the `isinstance` branch. - Fix README: `PaginatedQueryParams` is cursor-based (cursor, per_page), not (per_page, page) — that combination has never existed in the model. Addresses Copilot review on PR #37. --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: akhil-vamshi-konam <konamakhilvamshi@gmail.com>
| Back | FazBrowse Home | New Git URL |