mirror of
https://github.com/ModernRelay/omnigraph.git
synced 2026-06-15 01:55:13 +02:00
feat(server)!: POST /ingest forks only when 'from' is present
Branch creation becomes opt-in by presence of the request's 'from' field. Previously the handler defaulted from to 'main' and always auto-created a missing branch — a typo'd branch name silently forked main and landed the data there, with the client none the wiser. Now a request without 'from' against a missing branch returns 404 branch-not-found and creates nothing; with 'from' set, fork-if-missing behaves as before. The BranchCreate authority is only consulted when a fork will actually happen. The handler calls the unified load_as directly (the deprecated ingest_as shim is no longer used in the server). IngestOutput.base_branch becomes nullable: it echoes the request's 'from' and is null when absent. OpenAPI regenerated; the CLI's local ingest arm moves to load_file_as + the new converter shape. BREAKING CHANGE: clients that relied on implicit fork-from-main with 'from' omitted must now pass from='main' explicitly. IngestOutput.base_branch is now nullable. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
c236a4c2df
commit
90676ef52f
6 changed files with 131 additions and 40 deletions
15
openapi.json
15
openapi.json
|
|
@ -670,8 +670,8 @@
|
|||
"tags": [
|
||||
"mutations"
|
||||
],
|
||||
"summary": "Bulk-ingest NDJSON data into a branch.",
|
||||
"description": "`data` is NDJSON with one record per line. `mode` controls behavior on\nexisting rows: `merge` upserts by id (default), `append` blindly inserts,\n`overwrite` replaces table contents. If `branch` does not exist it is\ncreated from `from` (defaults to `main`). **Destructive** when `mode` is\n`overwrite` or when ingest produces conflicting writes.",
|
||||
"summary": "Bulk-load NDJSON data into a branch.",
|
||||
"description": "`data` is NDJSON with one record per line. `mode` controls behavior on\nexisting rows: `merge` upserts by id (default), `append` blindly inserts,\n`overwrite` replaces table contents. Branch creation is opt-in by\npresence of `from`: with `from` set, a missing `branch` is created from\nit; without `from`, `branch` must already exist — a missing branch is a\n404, never an implicit fork. **Destructive** when `mode` is `overwrite`\nor when the load produces conflicting writes.",
|
||||
"operationId": "ingest",
|
||||
"requestBody": {
|
||||
"content": {
|
||||
|
|
@ -1710,7 +1710,6 @@
|
|||
"required": [
|
||||
"uri",
|
||||
"branch",
|
||||
"base_branch",
|
||||
"branch_created",
|
||||
"mode",
|
||||
"tables"
|
||||
|
|
@ -1723,7 +1722,11 @@
|
|||
]
|
||||
},
|
||||
"base_branch": {
|
||||
"type": "string"
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
],
|
||||
"description": "Base branch a fork was requested from (the request's `from`), echoed\neven when the branch already existed. `null` when `from` was absent."
|
||||
},
|
||||
"branch": {
|
||||
"type": "string"
|
||||
|
|
@ -1756,7 +1759,7 @@
|
|||
"string",
|
||||
"null"
|
||||
],
|
||||
"description": "Target branch. Created from `from` if it does not yet exist. Defaults to `main`."
|
||||
"description": "Target branch. Defaults to `main`. Without `from`, the branch must\nalready exist — a missing branch is a 404, never an implicit fork."
|
||||
},
|
||||
"data": {
|
||||
"type": "string",
|
||||
|
|
@ -1768,7 +1771,7 @@
|
|||
"string",
|
||||
"null"
|
||||
],
|
||||
"description": "Parent branch used to create `branch` if it does not exist. Defaults to `main`."
|
||||
"description": "Parent branch used to create `branch` if it does not exist. Branch\ncreation is opt-in by presence of this field; omit it to require an\nexisting branch."
|
||||
},
|
||||
"mode": {
|
||||
"oneOf": [
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue