Skip to content

release: v2.0.1 — DDL/webhook endpoint fixes + CHANGELOGs - #11

Merged
fsans merged 8 commits into
mainfrom
develop
Jul 2, 2026
Merged

fsans merged 8 commits into
mainfrom
develop

Conversation

@fsans

@fsans fsans commented Jul 2, 2026

Copy link
Copy Markdown
Owner

Summary

Release merge: develop → main for the v2.0.1 patch release of @fms-odata/spec-ts and py-v2.0.1 of fms-odata-spec.

This release fixes incorrect DDL and webhook endpoint metadata that FileMaker Server rejects at runtime, plus brings the JSON capabilities manifest into parity with the TS/Python sources.

What changed (v2.0.1)

  • DDL endpoints (FileMaker_Tables / FileMaker_Indexes): switched from OData key-parentheses format (rejected by FMS with error -1010) to slash-separated paths. createIndex now takes the table in the URL and { indexName: <fieldName> } in the body. deleteIndex uses FileMaker_Indexes/{table}/{field}.
  • Webhook endpoints: reads (Webhook.GetAll, Webhook.Get) are now GET; the webhook id goes in the URL as an OData function argument (Webhook.Get(1)); the delete endpoint is Webhook.Delete (not Webhook.Remove); Webhook.Invoke requires a { rowIDs: [...] } body.
  • New types: WebhookInvokeParams, WebhookCreateResult, webhookID field on WebhookData, optional id parameter on webhookPath(). WebhookOperation now uses Delete instead of Remove.
  • Capabilities manifest: added missing contentType (11 endpoints) and alsoMethods (4 endpoints) so schema/fms-odata-capabilities.json matches src/endpoints.ts exactly.
  • Docs: corrected docs/09-webhooks.md and docs/10-schema-modification.md with the fixed URL formats and HTTP methods.
  • CHANGELOGs: added CHANGELOG.md for both packages (2.0.0 + 2.0.1 entries); Python CHANGELOG included in the sdist.
  • Bumped both packages and the manifest to 2.0.1.

Commits on develop since main

Verification

  • All corrections verified by curl against FileMaker Server 26.0.1 and cross-referenced with the official Claris OData guide (https://help.claris.com/en/odata-guide/content/webhook-options.html) and the reference implementation at https://github.com/fsans/fms-odata-webhooks.
  • npm run typecheck + npm run build in packages/fms-odata-spec-ts: clean.
  • pytest in packages/fms-odata-spec-py: 191 passed.
  • schema/fms-odata-capabilities.json validated as well-formed JSON; endpoint parity check against src/endpoints.ts passes (0 mismatches on contentType + alsoMethods).

Post-merge release steps

After this PR merges to main:

  1. Tag v2.0.1 (annotated) on main for the TS package — git tag -a v2.0.1 -m "v2.0.1".
  2. Tag py-v2.0.1 (annotated) on main for the Python package — git tag -a py-v2.0.1 -m "py-v2.0.1". Pushing this tag triggers .github/workflows/py-publish.yml → auto-upload to PyPI.
  3. Push main + both tags: git push origin main --tags.
  4. Publish @fms-odata/spec-ts to npm manually from the tagged commit: cd packages/fms-odata-spec-ts && npm publish (no npm publish workflow exists, unlike PyPI).

Test plan

  • TS typecheck + build clean
  • Python pytest 191 passed
  • JSON manifest valid and in parity with TS source
  • After merge: create v2.0.1 and py-v2.0.1 annotated tags on main
  • After merge: push tags (triggers PyPI auto-publish for py-v2.0.1)
  • After merge: npm publish for @fms-odata/spec-ts@2.0.1

fsans added 8 commits July 2, 2026 17:45
DDL endpoints (FileMaker_Tables / FileMaker_Indexes) used OData
key-parentheses format that FMS rejects with error -1010; switched to
slash-separated paths. createIndex now takes the table in the URL and
{ indexName: <fieldName> } in the body; deleteIndex uses
FileMaker_Indexes/{table}/{field}.

Webhook endpoints had wrong methods and URL patterns: reads (GetAll,
Get) are GET, the id goes in the URL as a function argument
(Webhook.Get(1)), the delete endpoint is Webhook.Delete (not Remove),
and Webhook.Invoke requires a { rowIDs: [...] } body.

Mirrored the fixes across @fms-odata/spec-ts, fms-odata-spec-py, the
JSON capabilities manifest, and docs/09 + docs/10. Added
WebhookInvokeParams and WebhookCreateResult types, a webhookID field on
WebhookData, and an optional id parameter on webhookPath(). Bumped both
packages and the manifest to 2.0.1.

Verified against live FileMaker Server 26.0.1 and the official Claris
OData guide. TS typecheck/build clean; Python pytest 191 passed.
The JSON manifest was missing contentType for 11 endpoints that require
JSON request bodies, while the TS and Python packages correctly declared
them. Added application/json to createRecord, updateRecord,
updateRecordRef, runScript, runScriptById, updateContainerBase64,
createTable, addFields, createIndex, createWebhook, and invokeWebhook.
batch already had multipart/mixed. The manifest now matches the TS
source of truth in src/endpoints.ts exactly.
The previous contentType commit claimed the manifest matched the TS
source exactly, but it omitted alsoMethods for 4 endpoints. Added
["PUT"] to createRecord, updateRecord, updateContainerBase64, and
addFields to match src/endpoints.ts. The manifest now matches the TS
source of truth for both contentType and alsoMethods.

Note: getSystemTable exists in the TS FM_ENDPOINTS array but is absent
from the manifest endpoints block; this is a pre-existing inconsistency
on develop (not introduced here) and is left for a separate fix.
fix: correct DDL and webhook endpoint metadata (v2.0.1)
Neither package had a CHANGELOG before (noted as a pre-2.0.0 blocker in
AGENTS.md TODO #3 for the Python package; the TS package had none
either). Added Keep a Changelog-format files for both packages with
2.0.0 (spec overhaul) and 2.0.1 (DDL/webhook endpoint fixes) entries.

The Python CHANGELOG is now included in the sdist via
pyproject.toml [tool.hatch.build.targets.sdist] include list, so it
ships to PyPI alongside README.md and LICENSE.

TS typecheck clean; Python pytest 191 passed.
docs: add CHANGELOG.md for spec-ts and spec-py (v2.0.0 + v2.0.1)
Wrap the Claris OData guide and reference implementation URLs in angle
brackets in both CHANGELOG.md files to satisfy markdownlint MD034
(no-bare-urls). MD024 duplicate-heading warnings are left as-is: the
repeated Added/Changed/Fixed headings are idiomatic for the Keep a
Changelog format and a known false positive for that rule.
style: wrap bare URLs in CHANGELOG files (markdownlint MD034)
@fsans
fsans merged commit 105a445 into main Jul 2, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant