19 Commits

Author SHA1 Message Date
5dfb567bac Merge pull request 'feat(client): add merge_bom_json method for assembly BOM merge' (#20) from feat/bom-sync-and-manifest into main
All checks were successful
Update Downstream Submodules / update-dependents (kindred/silo-calc, silo-client) (push) Successful in 5s
Update Downstream Submodules / update-dependents (kindred/silo-mod, silo-client) (push) Successful in 9s
Reviewed-on: #20
2026-02-19 20:26:50 +00:00
forbes-0023
9d07de1bca feat(client): add merge_bom_json method for assembly BOM merge
Forward-looking JSON merge endpoint for POST /api/items/{pn}/bom/merge.
Not called by Phase 1 (which uses individual CRUD calls). Ready for
Phase 2 when the server endpoint ships.

Refs: #276
2026-02-19 12:37:04 -06:00
285bd1fa11 Merge pull request 'feat: add .kc metadata and dependency resolution API methods' (#19) from feat/kc-metadata-api into main
All checks were successful
Update Downstream Submodules / update-dependents (kindred/silo-calc, silo-client) (push) Successful in 5s
Update Downstream Submodules / update-dependents (kindred/silo-mod, silo-client) (push) Successful in 6s
Reviewed-on: #19
2026-02-19 01:43:15 +00:00
Zoe Forbes
f602eee7cc feat: add .kc metadata and dependency resolution API methods
Add 5 new SiloClient methods for .kc file server integration:
- get_metadata(pn): GET /items/{pn}/metadata
- update_metadata(pn, fields): PUT /items/{pn}/metadata
- patch_lifecycle(pn, state): PATCH /items/{pn}/metadata/lifecycle
- patch_tags(pn, tags): PATCH /items/{pn}/metadata/tags
- resolve_dependencies(pn): GET /items/{pn}/dependencies/resolve

These endpoints are already implemented server-side and needed by the
Create module's silo viewer widgets for live data sync.

Refs: kindred/silo-mod#43
2026-02-18 19:35:09 -06:00
c5c8288eeb Merge pull request 'fix: remove MinIO references from client docstrings' (#18) from fix/remove-minio-references into main
All checks were successful
Update Downstream Submodules / update-dependents (kindred/silo-calc, silo-client) (push) Successful in 8s
Update Downstream Submodules / update-dependents (kindred/silo-mod, silo-client) (push) Successful in 7s
Reviewed-on: #18
2026-02-18 20:55:38 +00:00
Zoe Forbes
256fced4f0 fix: remove MinIO references from client docstrings
The silo server now uses filesystem storage instead of MinIO.
Update docstrings in _download_file() and has_file() to reflect
the current storage architecture.
2026-02-18 14:54:52 -06:00
5e6f2cb963 Merge pull request 'ci: add workflow to auto-update downstream submodule repos' (#17) from ci/submodule-notify into main
All checks were successful
Update Downstream Submodules / update-dependents (kindred/silo-calc, silo-client) (push) Successful in 9s
Update Downstream Submodules / update-dependents (kindred/silo-mod, silo-client) (push) Successful in 8s
Reviewed-on: #17
2026-02-17 14:47:45 +00:00
50a4f7725d ci: add workflow to auto-update downstream submodule repos
Opens PRs in kindred/silo-mod and kindred/silo-calc when main is
pushed, updating their silo-client submodule pointer to the new SHA.
Includes duplicate PR detection and no-op skip when already current.
2026-02-17 08:43:41 -06:00
e8e5b68617 Merge pull request 'feat: complete API coverage — add 37 missing endpoint methods' (#16) from feat/complete-api-coverage into main
Reviewed-on: #16
2026-02-17 13:15:17 +00:00
a646906e6f feat: add 37 missing API endpoint methods (issues #5-#11)
- Add _upload_csv helper for CSV multipart uploads
- Issue #5: search_items, get_item_by_uuid, delete_item, export/import CSV/ODS
- Issue #6: get_bom_flat, get_bom_cost, export/import BOM CSV, merge_bom
- Issue #7: get_project, create/update/delete_project, remove_item_project
- Issue #8: create_revision, presign_upload, list/add/delete attachments, set_thumbnail
- Issue #9: get_audit_completeness, get_audit_item_completeness
- Issue #10: get_dag_forward_cone, get_dag_dirty, mark_dag_dirty
- Issue #11: runner_heartbeat, runner_claim_job, runner_update_progress,
  runner_complete_job, runner_fail_job, runner_append_log, runner_push_dag
- Bump version 0.2.0 -> 0.3.0
2026-02-16 14:26:51 -06:00
a24e59082f Merge pull request 'feat(settings): add get_schema_name() to SiloSettings, remove hardcoded defaults' (#15) from feat/configurable-schema-name into main
Reviewed-on: #15
2026-02-16 19:20:19 +00:00
8c4fb4c433 feat(settings): add get_schema_name() to SiloSettings, remove hardcoded defaults
Add get_schema_name() to SiloSettings base class with default 'kindred-rd'.
Update get_schema(), get_schema_form(), and get_property_schema() to fall
back to settings instead of hardcoding the schema name. Add category
query parameter support to get_property_schema().

Closes #28
2026-02-16 13:15:41 -06:00
5276ff26fa Merge pull request 'refactor: remove hardcoded CATEGORY_NAMES, add missing schema API methods' (#14) from refactor/remove-hardcoded-categories-add-schema-api into main
Reviewed-on: #14
2026-02-16 17:24:48 +00:00
83faa993b2 refactor: remove hardcoded CATEGORY_NAMES, add missing schema API methods
Issues #3 and #4.

Remove:
- CATEGORY_NAMES dict (170 Kindred-specific category codes)
- sanitize_filename(), parse_part_number(), get_category_folder_name()
- import re (only used by removed sanitize_filename)

These are consumer-side concerns (filesystem path construction) that
don't belong in a generic HTTP client. Categories should be fetched
dynamically from the server via the schema API.

Add schema methods:
- list_schemas() — GET /api/schemas
- get_schema_form(name) — GET /api/schemas/{name}/form
- add_enum_value(schema, segment, code, label) — POST enum value
- update_enum_value(schema, segment, code, **fields) — PUT enum value
- delete_enum_value(schema, segment, code) — DELETE enum value

Bump version 0.1.0 -> 0.2.0.
2026-02-16 11:23:37 -06:00
0ef33ee464 Merge pull request 'feat: add job, job-definition, and runner API methods' (#1) from feat/worker-api-methods into main
Reviewed-on: #1
2026-02-15 19:04:56 +00:00
Zoe Forbes
9b71cf0375 feat: add job, job-definition, and runner API methods 2026-02-15 05:07:15 -06:00
Zoe Forbes
fb658c5a24 feat: add push_dag and get_dag methods to SiloClient
- push_dag(part_number, revision_number, nodes, edges): PUT /api/items/{pn}/dag
- get_dag(part_number, revision_number=None): GET /api/items/{pn}/dag

Closes kindred/create#215
2026-02-14 15:06:22 -06:00
Zoe Forbes
68a4139251 fix: use _request() in delete_bom_entry() for consistent error handling (#59)
delete_bom_entry() used raw urllib.request instead of self._request(),
bypassing 401 auth clearing and standard error normalization. Replace
with a single _request('DELETE', ..., raw=True) call, matching the
pattern used by all other BOM methods.
2026-02-08 18:29:06 -06:00
Zoe Forbes
a6ac3d4d06 initial: shared Python API client for Silo PLM
Extracted from silo monorepo. Provides SiloClient (HTTP client) and
SiloSettings (abstract config adapter) so both the FreeCAD workbench
and LibreOffice Calc extension share the same API layer.

Includes CATEGORY_NAMES, sanitize_filename, parse_part_number,
get_category_folder_name, and SSL context builder.
2026-02-06 11:14:21 -06:00