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
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
The silo server now uses filesystem storage instead of MinIO.
Update docstrings in _download_file() and has_file() to reflect
the current storage architecture.
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.
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
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.
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.
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.