{"components":{"pathItems":{"SpecChild":{"delete":{"responses":{"200":{"description":"Success"},"default":{"$ref":"#/components/responses/Problem"}},"summary":"Delete the stored spec","x-effect":"idempotent","x-idempotency-key":"honored"},"get":{"responses":{"200":{"description":"Success"},"default":{"$ref":"#/components/responses/Problem"}},"summary":"Read the stored spec envelope (pipelines: ?$plan returns the segment plan)","x-effect":"pure","x-idempotency-key":"honored"},"put":{"responses":{"200":{"description":"Success"},"default":{"$ref":"#/components/responses/Problem"}},"summary":"Author/replace the spec (validated and canonicalized at write time)","x-effect":"idempotent","x-idempotency-key":"honored"}},"StoreChild":{"delete":{"responses":{"200":{"description":"Success"},"default":{"$ref":"#/components/responses/Problem"}},"summary":"Delete the resource","x-effect":"idempotent","x-idempotency-key":"honored"},"get":{"responses":{"200":{"description":"Success"},"default":{"$ref":"#/components/responses/Problem"}},"summary":"Read the stored resource; ETag carries the version","x-effect":"pure","x-idempotency-key":"honored"},"patch":{"responses":{"200":{"description":"Success"},"default":{"$ref":"#/components/responses/Problem"}},"summary":"JSON merge-patch (stores with the 'patch' facet)","x-effect":"unsafe","x-idempotency-key":"honored"},"post":{"responses":{"200":{"description":"Success"},"default":{"$ref":"#/components/responses/Problem"}},"summary":"Upsert and return the stored representation (stores with the 'echo' facet)","x-effect":"unsafe","x-idempotency-key":"honored"},"put":{"responses":{"200":{"description":"Success"},"default":{"$ref":"#/components/responses/Problem"}},"summary":"Upsert; 201 created / 200 overwritten, empty body","x-effect":"idempotent","x-idempotency-key":"honored"}},"StoreContainer":{"delete":{"responses":{"200":{"description":"Success"},"default":{"$ref":"#/components/responses/Problem"}},"summary":"Delete the container; non-empty containers require ?confirm=<container name> (409 without it)","x-effect":"idempotent","x-idempotency-key":"honored"},"get":{"responses":{"200":{"description":"Success"},"default":{"$ref":"#/components/responses/Problem"}},"summary":"List children (application/vnd.rs2.dir+json: {path, entries: [{name, dir, ...}], total}; $take/$skip paginate; X-Total-Count)","x-effect":"pure","x-idempotency-key":"honored"},"post":{"responses":{"200":{"description":"Success"},"default":{"$ref":"#/components/responses/Problem"}},"summary":"Keyless create: store the body under a generated child name; 201 + Location (stores with the 'echo' facet return the stored representation)","x-effect":"unsafe","x-idempotency-key":"honored"}}},"responses":{"Problem":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Structured error (RFC 9457)"}},"schemas":{"Problem":{"properties":{"code":{"type":"string"},"detail":{"type":"string"},"retryAfterMs":{"type":"integer"},"retryable":{"type":"boolean"},"status":{"type":"integer"},"tenant":{"type":"string"},"title":{"type":"string"},"traceId":{"type":"string"},"type":{"type":"string"}},"required":["type","title","status","code"],"type":"object"}}},"info":{"title":"RS2 tenant 'main'","version":"0.1.0"},"openapi":"3.1.0","paths":{"/admin/{dirPath}/":{"$ref":"#/components/pathItems/StoreContainer"},"/admin/{filePath}":{"$ref":"#/components/pathItems/StoreChild"},"/auth/login":{"post":{"responses":{"200":{"description":"Success"},"default":{"$ref":"#/components/responses/Problem"}},"summary":"Log in (sets the rs-auth cookie, returns a JWT)","x-effect":"unsafe","x-idempotency-key":"honored"}},"/auth/logout":{"post":{"responses":{"200":{"description":"Success"},"default":{"$ref":"#/components/responses/Problem"}},"summary":"Log out (clears the cookie)","x-effect":"idempotent","x-idempotency-key":"honored"}},"/auth/refresh":{"post":{"responses":{"200":{"description":"Success"},"default":{"$ref":"#/components/responses/Problem"}},"summary":"Sliding session refresh","x-effect":"idempotent","x-idempotency-key":"honored"}},"/auth/user":{"get":{"responses":{"200":{"description":"Success"},"default":{"$ref":"#/components/responses/Problem"}},"summary":"The authenticated principal","x-effect":"pure","x-idempotency-key":"honored"}},"/files/{dirPath}/":{"$ref":"#/components/pathItems/StoreContainer"},"/files/{filePath}":{"$ref":"#/components/pathItems/StoreChild"},"/html/{dirPath}/":{"$ref":"#/components/pathItems/StoreContainer"},"/html/{filePath}":{"$ref":"#/components/pathItems/StoreChild"},"/pipes/.pipelines/":{"$ref":"#/components/pathItems/StoreContainer"},"/pipes/.pipelines/{specPath}":{"$ref":"#/components/pathItems/SpecChild"},"/pipes/{path}":{"description":"Execute the longest-prefix-matched stored pipeline (.root governs the mount root). All HTTP verbs pass through to the pipeline.","get":{"responses":{"200":{"description":"Success"},"default":{"$ref":"#/components/responses/Problem"}},"summary":"Run the matched stored pipeline","x-effect":"unsafe","x-idempotency-key":"honored"},"post":{"responses":{"200":{"description":"Success"},"default":{"$ref":"#/components/responses/Problem"}},"summary":"Run the matched stored pipeline with a body","x-effect":"unsafe","x-idempotency-key":"honored"}},"/q/.queries/":{"$ref":"#/components/pathItems/StoreContainer"},"/q/.queries/{specPath}":{"$ref":"#/components/pathItems/SpecChild"},"/q/{queryPath}":{"description":"Execute the longest-prefix-matched stored query; extra path segments append positional params; params come from the query string (schema-coerced) and/or a JSON body; results page with X-Total-Count.","get":{"responses":{"200":{"description":"Success"},"default":{"$ref":"#/components/responses/Problem"}},"summary":"Execute the stored query (params from the query string)","x-effect":"pure","x-idempotency-key":"honored"},"post":{"responses":{"200":{"description":"Success"},"default":{"$ref":"#/components/responses/Problem"}},"summary":"Execute the stored query (params from the body)","x-effect":"pure","x-idempotency-key":"honored"}},"/{dirPath}/":{"$ref":"#/components/pathItems/StoreContainer"},"/{filePath}":{"$ref":"#/components/pathItems/StoreChild"}}}