{"openapi":"3.1.0","info":{"title":"OpenAPI definition","version":"v0"},"paths":{"/api/settings":{"get":{"tags":["Settings"],"summary":"Return public application settings","description":"Provides URLs and OAuth 2.0 client identifiers that the frontend needs to bootstrap. Fields are omitted when their corresponding environment variable is not configured.","operationId":"settings","responses":{"200":{"description":"Public application settings","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SettingsResponse"}}}}}}},"/api/authenticate":{"get":{"tags":["Users"],"summary":"Authenticate the caller and redirect to the given URI","operationId":"authenticate","parameters":[{"name":"uri","in":"query","required":true,"schema":{"type":"string","format":"uri"}}],"responses":{"302":{"description":"Redirect to the given URI"}}}},"/api/account":{"get":{"tags":["Users"],"summary":"Redirect to the user account settings page","operationId":"account","responses":{"302":{"description":"Redirect to the account page"}}}},"/api/models/{id}/content":{"get":{"tags":["Models"],"summary":"Download a model content by id","operationId":"content","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"format","in":"query","required":false,"schema":{"type":"string"}},{"name":"inline","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"Accept","in":"header","required":false,"schema":{"type":"string","default":"application/json"}}],"responses":{"200":{"description":"Serialized model content with attachment headers","content":{"application/json":{"schema":{"type":"string","format":"byte"}}}},"404":{"description":"Model does not exist or not visible to caller"},"406":{"description":"No serializer registered for the requested output format"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"put":{"tags":["Models"],"summary":"Replace a model content from raw body","operationId":"updateContent","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"format","in":"query","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"string","format":"byte"}}},"required":true},"responses":{"200":{"description":"Updated model returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelModel"}}}},"400":{"description":"Content fails to deserialize","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"401":{"description":"Anonymous caller"},"403":{"description":"Visible to caller but write access denied"},"404":{"description":"Model does not exist or not visible to caller"},"415":{"description":"Content format not registered with any deserializer"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/tasks":{"get":{"tags":["Tasks"],"summary":"List the active background tasks created by the current user","operationId":"list","responses":{"200":{"description":"The caller's active tasks, empty for an anonymous caller","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Task"}}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"post":{"tags":["Tasks"],"summary":"Start a background task","operationId":"create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskInput"}}},"required":true},"responses":{"201":{"description":"Task started","content":{"*/*":{"schema":{"$ref":"#/components/schemas/Task"}}}},"400":{"description":"Unknown task kind","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"401":{"description":"Anonymous caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/tasks/{id}/confirm":{"post":{"tags":["Tasks"],"summary":"Confirm a background task that is awaiting the user's approval","operationId":"confirm","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{}}}}},"responses":{"204":{"description":"Confirmation accepted"},"401":{"description":"Anonymous caller"},"404":{"description":"Task does not exist or was created by another user"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/scopes":{"get":{"tags":["Scopes"],"summary":"List scopes visible to caller, paged","description":"**Filter examples**\n\n| Query | Effect |\n| --- | --- |\n| `?slug=foo` | equals `foo` |\n| `?slug=!foo` | not equals `foo` |\n| `?name=*foo*` | contains `foo` |\n| `?name=!*foo*` | does not contain `foo` |\n| `?count=>=10` | greater or equal (also `>`, `<=`, `<`) |\n| `?slug=` | is null or empty |\n| `?slug=!` | is not null and not empty |\n| `?status=a,b` | equals `a` or `b` |\n| `?name,slug=*foo*` | matches in `name` or `slug` (multi-field OR) |\n| `?count=>=10&count=<20` | greater than 10 AND less than 20 |\n\nMulti-field keys (comma in the key, e.g. `name,slug`) and parameter repetition (`&count=...`) cannot be entered through Swagger UI's form: edit the request URL manually after pressing Execute, or send the request from another HTTP client.\n","operationId":"list_1","parameters":[{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":20,"minimum":1}},{"name":"sort","in":"query","description":"Sort criteria. Each entry is `field,asc` or `field,desc`. Add multiple entries to sort by several fields.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"id","in":"query","description":"Filter on id (UUID)","required":false,"schema":{"type":"string"}},{"name":"slug","in":"query","description":"Filter on slug (String)","required":false,"schema":{"type":"string"}},{"name":"name","in":"query","description":"Filter on name (String)","required":false,"schema":{"type":"string"}},{"name":"description","in":"query","description":"Filter on description (String)","required":false,"schema":{"type":"string"}},{"name":"confidentiality","in":"query","description":"Filter on confidentiality (Integer)","required":false,"schema":{"type":"string"}},{"name":"creator.id","in":"query","description":"Filter on creator.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"creator.name","in":"query","description":"Filter on creator.name (String)","required":false,"schema":{"type":"string"}},{"name":"creationDateTime","in":"query","description":"Filter on creationDateTime (Instant)","required":false,"schema":{"type":"string"}},{"name":"lastModifier.id","in":"query","description":"Filter on lastModifier.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"lastModifier.name","in":"query","description":"Filter on lastModifier.name (String)","required":false,"schema":{"type":"string"}},{"name":"lastModificationDateTime","in":"query","description":"Filter on lastModificationDateTime (Instant)","required":false,"schema":{"type":"string"}},{"name":"archiver.id","in":"query","description":"Filter on archiver.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"archiver.name","in":"query","description":"Filter on archiver.name (String)","required":false,"schema":{"type":"string"}},{"name":"archivationDateTime","in":"query","description":"Filter on archivationDateTime (Instant)","required":false,"schema":{"type":"string"}},{"name":"canUpdate","in":"query","description":"Filter on canUpdate (Boolean)","required":false,"schema":{"type":"string"}},{"name":"canDelete","in":"query","description":"Filter on canDelete (Boolean)","required":false,"schema":{"type":"string"}},{"name":"canCreateProjects","in":"query","description":"Filter on canCreateProjects (Boolean)","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Paged list of scopes visible to caller","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelEntityModelScope"}}}},"400":{"description":"Invalid filter parameter","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"post":{"tags":["Scopes"],"summary":"Create a new scope","description":"Required: name. Optional: slug (may be supplied explicitly, otherwise auto-generated from name), description, confidentiality (the service falls back to 0 if omitted).","operationId":"create_1","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Scope"}}},"required":true},"responses":{"201":{"description":"Scope created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelScope"}}}},"400":{"description":"Malformed JSON or input validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"401":{"description":"Anonymous caller"},"409":{"description":"Slug already taken by another scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/projects":{"get":{"tags":["Projects"],"summary":"List projects visible to caller, paged","description":"**Filter examples**\n\n| Query | Effect |\n| --- | --- |\n| `?slug=foo` | equals `foo` |\n| `?slug=!foo` | not equals `foo` |\n| `?name=*foo*` | contains `foo` |\n| `?name=!*foo*` | does not contain `foo` |\n| `?count=>=10` | greater or equal (also `>`, `<=`, `<`) |\n| `?slug=` | is null or empty |\n| `?slug=!` | is not null and not empty |\n| `?status=a,b` | equals `a` or `b` |\n| `?name,slug=*foo*` | matches in `name` or `slug` (multi-field OR) |\n| `?count=>=10&count=<20` | greater than 10 AND less than 20 |\n\nMulti-field keys (comma in the key, e.g. `name,slug`) and parameter repetition (`&count=...`) cannot be entered through Swagger UI's form: edit the request URL manually after pressing Execute, or send the request from another HTTP client.\n","operationId":"list_2","parameters":[{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":20,"minimum":1}},{"name":"sort","in":"query","description":"Sort criteria. Each entry is `field,asc` or `field,desc`. Add multiple entries to sort by several fields.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"id","in":"query","description":"Filter on id (UUID)","required":false,"schema":{"type":"string"}},{"name":"slug","in":"query","description":"Filter on slug (String)","required":false,"schema":{"type":"string"}},{"name":"version","in":"query","description":"Filter on version (String)","required":false,"schema":{"type":"string"}},{"name":"name","in":"query","description":"Filter on name (String)","required":false,"schema":{"type":"string"}},{"name":"description","in":"query","description":"Filter on description (String)","required":false,"schema":{"type":"string"}},{"name":"confidentiality","in":"query","description":"Filter on confidentiality (Integer)","required":false,"schema":{"type":"string"}},{"name":"previousVersionId","in":"query","description":"Filter on previousVersionId (UUID)","required":false,"schema":{"type":"string"}},{"name":"myRole","in":"query","description":"Filter on myRole (UserRole). Values: none, viewer, editor, owner","required":false,"schema":{"type":"string"}},{"name":"scope.id","in":"query","description":"Filter on scope.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"scope.slug","in":"query","description":"Filter on scope.slug (String)","required":false,"schema":{"type":"string"}},{"name":"scope.name","in":"query","description":"Filter on scope.name (String)","required":false,"schema":{"type":"string"}},{"name":"creator.id","in":"query","description":"Filter on creator.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"creator.name","in":"query","description":"Filter on creator.name (String)","required":false,"schema":{"type":"string"}},{"name":"creationDateTime","in":"query","description":"Filter on creationDateTime (Instant)","required":false,"schema":{"type":"string"}},{"name":"lastModifier.id","in":"query","description":"Filter on lastModifier.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"lastModifier.name","in":"query","description":"Filter on lastModifier.name (String)","required":false,"schema":{"type":"string"}},{"name":"lastModificationDateTime","in":"query","description":"Filter on lastModificationDateTime (Instant)","required":false,"schema":{"type":"string"}},{"name":"archiver.id","in":"query","description":"Filter on archiver.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"archiver.name","in":"query","description":"Filter on archiver.name (String)","required":false,"schema":{"type":"string"}},{"name":"archivationDateTime","in":"query","description":"Filter on archivationDateTime (Instant)","required":false,"schema":{"type":"string"}},{"name":"canUpdate","in":"query","description":"Filter on canUpdate (Boolean)","required":false,"schema":{"type":"string"}},{"name":"canDelete","in":"query","description":"Filter on canDelete (Boolean)","required":false,"schema":{"type":"string"}},{"name":"canCreateModels","in":"query","description":"Filter on canCreateModels (Boolean)","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Paged list of projects visible to caller","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelEntityModelProject"}}}},"400":{"description":"Invalid filter parameter","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"post":{"tags":["Projects"],"summary":"Create a new project","description":"Required: scopeId, name. Slug is auto-generated from name; the service supplies a version of 'dev' and a default confidentiality so the caller does not need to.","operationId":"create_2","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectInput"}}},"required":true},"responses":{"201":{"description":"Project created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelProject"}}}},"400":{"description":"Malformed JSON or input validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"401":{"description":"Anonymous caller"},"403":{"description":"Parent scope visible to caller but no rights to create projects in it"},"404":{"description":"Parent scope does not exist or not visible to caller"},"409":{"description":"Slug + version already taken in scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/projects/{scopeSlug}/{projectSlug}/{projectVersion}/unenroll":{"post":{"tags":["Projects"],"summary":"Cancel a pending enrollment of the current user","operationId":"unenroll","parameters":[{"name":"scopeSlug","in":"path","required":true,"schema":{"type":"string"}},{"name":"projectSlug","in":"path","required":true,"schema":{"type":"string"}},{"name":"projectVersion","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Pending enrollment removed; idempotent if none exists"},"401":{"description":"Anonymous caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/projects/{scopeSlug}/{projectSlug}/{projectVersion}/enroll":{"post":{"tags":["Projects"],"summary":"Request enrollment of the current user into a project","operationId":"enroll","parameters":[{"name":"scopeSlug","in":"path","required":true,"schema":{"type":"string"}},{"name":"projectSlug","in":"path","required":true,"schema":{"type":"string"}},{"name":"projectVersion","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Enrollment created; idempotent and silently no-op if project is hidden or caller is already enrolled"},"401":{"description":"Anonymous caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/projects/{id}/imports":{"get":{"tags":["Projects"],"summary":"List imported projects of the host project, paged","operationId":"listImportedProjects","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":20,"minimum":1}},{"name":"sort","in":"query","description":"Sort criteria. Each entry is `field,asc` or `field,desc`. Add multiple entries to sort by several fields.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Paged list of imports for the host project; empty if host is missing or hidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelEntityModelProjectImport"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"post":{"tags":["Projects"],"summary":"Add an imported project to the host project","operationId":"addImportedProject","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectReference"}}},"required":true},"responses":{"201":{"description":"Import created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelProjectImport"}}}},"401":{"description":"Anonymous caller"},"403":{"description":"Host project visible to caller but no edit rights"},"404":{"description":"Host project or imported project does not exist or not visible to caller"},"409":{"description":"Self-import or import would create a cycle","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/projects/{id}/expression-proposals":{"post":{"tags":["Expressions"],"summary":"Compute content-assist proposals for an expression","operationId":"proposals","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpressionProposalRequest"}}},"required":true},"responses":{"200":{"description":"The proposals","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExpressionProposal"}}}}},"400":{"description":"Unknown expression language","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"404":{"description":"Project not found"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/projects/{id}/expression-evaluations":{"post":{"tags":["Expressions"],"summary":"Evaluate a read-only expression (Server-Sent Events)","operationId":"evaluate","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpressionRequest"}}},"required":true},"responses":{"200":{"description":"Server-Sent Events stream of the evaluation result","content":{"text/event-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServerSentEventObject"}}}}},"400":{"description":"Unknown expression language","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"404":{"description":"Project not found"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/projects/{id}/expression-diagnostics":{"post":{"tags":["Expressions"],"summary":"Statically check an expression and report whether it is mutating","operationId":"diagnostics","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpressionRequest"}}},"required":true},"responses":{"200":{"description":"The diagnostics and the mutating flag","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpressionDiagnosticsResponse"}}}},"400":{"description":"Unknown expression language","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"404":{"description":"Project not found"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/project-users":{"get":{"tags":["Project Members"],"summary":"List project members visible to caller, paged","operationId":"list_3","parameters":[{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":20,"minimum":1}},{"name":"sort","in":"query","description":"Sort criteria. Each entry is `field,asc` or `field,desc`. Add multiple entries to sort by several fields.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Paged list of project members visible to caller","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelEntityModelProjectUser"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"post":{"tags":["Project Members"],"summary":"Add a project member","description":"Required: project.id, user.id, role, clearance (200..299). Validation errors return 400 with `errors[]`; the user-already-member conflict returns 409.","operationId":"create_3","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectUser"}}},"required":true},"responses":{"201":{"description":"Project member added","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelProjectUser"}}}},"400":{"description":"Malformed JSON or input validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"401":{"description":"Anonymous caller"},"403":{"description":"Parent project visible to caller but no rights to add members"},"404":{"description":"Parent project does not exist or not visible to caller"},"409":{"description":"User is already a member of the project","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/project-images":{"get":{"tags":["Project Images"],"summary":"List project images visible to caller, paged","operationId":"list_4","parameters":[{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":20,"minimum":1}},{"name":"sort","in":"query","description":"Sort criteria. Each entry is `field,asc` or `field,desc`. Add multiple entries to sort by several fields.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Paged list of project images visible to caller","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelEntityModelImage"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"post":{"tags":["Project Images"],"summary":"Upload a new project image","description":"Required (in the JSON part): project.id. Required (in the file part): the image file. Optional: name (defaults to the uploaded filename's basename).","operationId":"create_4","requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/Image"},"content":{"type":"string","format":"binary"}},"required":["content","entity"]}}}},"responses":{"201":{"description":"Image stored and metadata returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelImage"}}}},"400":{"description":"Malformed multipart, unreadable file, or input validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"401":{"description":"Anonymous caller"},"403":{"description":"Parent project visible to caller but no rights to upload images to it"},"404":{"description":"Parent project does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/project-enrollments":{"get":{"tags":["Project Enrollments"],"summary":"List project enrollments visible to caller, paged","description":"**Filter examples**\n\n| Query | Effect |\n| --- | --- |\n| `?slug=foo` | equals `foo` |\n| `?slug=!foo` | not equals `foo` |\n| `?name=*foo*` | contains `foo` |\n| `?name=!*foo*` | does not contain `foo` |\n| `?count=>=10` | greater or equal (also `>`, `<=`, `<`) |\n| `?slug=` | is null or empty |\n| `?slug=!` | is not null and not empty |\n| `?status=a,b` | equals `a` or `b` |\n| `?name,slug=*foo*` | matches in `name` or `slug` (multi-field OR) |\n| `?count=>=10&count=<20` | greater than 10 AND less than 20 |\n\nMulti-field keys (comma in the key, e.g. `name,slug`) and parameter repetition (`&count=...`) cannot be entered through Swagger UI's form: edit the request URL manually after pressing Execute, or send the request from another HTTP client.\n","operationId":"list_5","parameters":[{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":20,"minimum":1}},{"name":"sort","in":"query","description":"Sort criteria. Each entry is `field,asc` or `field,desc`. Add multiple entries to sort by several fields.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"id","in":"query","description":"Filter on id (UUID)","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","description":"Filter on status (EnrollmentStatus). Values: pending, approved, rejected","required":false,"schema":{"type":"string"}},{"name":"project.id","in":"query","description":"Filter on project.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"project.slug","in":"query","description":"Filter on project.slug (String)","required":false,"schema":{"type":"string"}},{"name":"project.version","in":"query","description":"Filter on project.version (String)","required":false,"schema":{"type":"string"}},{"name":"project.name","in":"query","description":"Filter on project.name (String)","required":false,"schema":{"type":"string"}},{"name":"scope.id","in":"query","description":"Filter on scope.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"scope.slug","in":"query","description":"Filter on scope.slug (String)","required":false,"schema":{"type":"string"}},{"name":"scope.name","in":"query","description":"Filter on scope.name (String)","required":false,"schema":{"type":"string"}},{"name":"user.id","in":"query","description":"Filter on user.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"user.name","in":"query","description":"Filter on user.name (String)","required":false,"schema":{"type":"string"}},{"name":"myRole","in":"query","description":"Filter on myRole (UserRole). Values: none, viewer, editor, owner","required":false,"schema":{"type":"string"}},{"name":"creator.id","in":"query","description":"Filter on creator.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"creator.name","in":"query","description":"Filter on creator.name (String)","required":false,"schema":{"type":"string"}},{"name":"creationDateTime","in":"query","description":"Filter on creationDateTime (Instant)","required":false,"schema":{"type":"string"}},{"name":"lastModifier.id","in":"query","description":"Filter on lastModifier.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"lastModifier.name","in":"query","description":"Filter on lastModifier.name (String)","required":false,"schema":{"type":"string"}},{"name":"lastModificationDateTime","in":"query","description":"Filter on lastModificationDateTime (Instant)","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Paged list of project enrollments visible to caller","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelEntityModelProjectEnrollment"}}}},"400":{"description":"Invalid filter parameter","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"post":{"tags":["Project Enrollments"],"summary":"Create a project enrollment","description":"Required: project.id, user.id, status. Validation errors return 400 with `errors[]`.","operationId":"create_5","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectEnrollment"}}},"required":true},"responses":{"201":{"description":"Enrollment created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelProjectEnrollment"}}}},"400":{"description":"Malformed JSON or input validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"401":{"description":"Anonymous caller"},"403":{"description":"Parent project visible to caller but no rights to enroll"},"404":{"description":"Parent project does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/project-enrollments/{id}/reject":{"post":{"tags":["Project Enrollments"],"summary":"Reject a pending enrollment","description":"No body required. The enrollment status is set to REJECTED.","operationId":"reject","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Enrollment rejected"},"401":{"description":"Anonymous caller"},"403":{"description":"Visible to caller but no rights to manage enrollments"},"404":{"description":"Enrollment does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/project-enrollments/{id}/approve":{"post":{"tags":["Project Enrollments"],"summary":"Approve a pending enrollment","description":"Required body: role (the role assigned to the approved user). Side effect: a ProjectUser row is created with this role and a default clearance.","operationId":"approve","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectEnrollmentApproveInput"}}},"required":true},"responses":{"204":{"description":"Enrollment approved"},"400":{"description":"Malformed JSON or input validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"401":{"description":"Anonymous caller"},"403":{"description":"Visible to caller but no rights to manage enrollments"},"404":{"description":"Enrollment does not exist or not visible to caller"},"409":{"description":"User is already a member of the project","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/models":{"get":{"tags":["Models"],"summary":"List models visible to caller, paged","description":"**Filter examples**\n\n| Query | Effect |\n| --- | --- |\n| `?slug=foo` | equals `foo` |\n| `?slug=!foo` | not equals `foo` |\n| `?name=*foo*` | contains `foo` |\n| `?name=!*foo*` | does not contain `foo` |\n| `?count=>=10` | greater or equal (also `>`, `<=`, `<`) |\n| `?slug=` | is null or empty |\n| `?slug=!` | is not null and not empty |\n| `?status=a,b` | equals `a` or `b` |\n| `?name,slug=*foo*` | matches in `name` or `slug` (multi-field OR) |\n| `?count=>=10&count=<20` | greater than 10 AND less than 20 |\n\nMulti-field keys (comma in the key, e.g. `name,slug`) and parameter repetition (`&count=...`) cannot be entered through Swagger UI's form: edit the request URL manually after pressing Execute, or send the request from another HTTP client.\n","operationId":"list_6","parameters":[{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":20,"minimum":1}},{"name":"sort","in":"query","description":"Sort criteria. Each entry is `field,asc` or `field,desc`. Add multiple entries to sort by several fields.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"id","in":"query","description":"Filter on id (UUID)","required":false,"schema":{"type":"string"}},{"name":"slug","in":"query","description":"Filter on slug (String)","required":false,"schema":{"type":"string"}},{"name":"name","in":"query","description":"Filter on name (String)","required":false,"schema":{"type":"string"}},{"name":"description","in":"query","description":"Filter on description (String)","required":false,"schema":{"type":"string"}},{"name":"confidentiality","in":"query","description":"Filter on confidentiality (Integer)","required":false,"schema":{"type":"string"}},{"name":"previousVersionId","in":"query","description":"Filter on previousVersionId (UUID)","required":false,"schema":{"type":"string"}},{"name":"contentType","in":"query","description":"Filter on contentType (String)","required":false,"schema":{"type":"string"}},{"name":"type","in":"query","description":"Filter on type (String)","required":false,"schema":{"type":"string"}},{"name":"project.id","in":"query","description":"Filter on project.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"project.slug","in":"query","description":"Filter on project.slug (String)","required":false,"schema":{"type":"string"}},{"name":"project.version","in":"query","description":"Filter on project.version (String)","required":false,"schema":{"type":"string"}},{"name":"project.name","in":"query","description":"Filter on project.name (String)","required":false,"schema":{"type":"string"}},{"name":"scope.id","in":"query","description":"Filter on scope.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"scope.slug","in":"query","description":"Filter on scope.slug (String)","required":false,"schema":{"type":"string"}},{"name":"scope.name","in":"query","description":"Filter on scope.name (String)","required":false,"schema":{"type":"string"}},{"name":"creator.id","in":"query","description":"Filter on creator.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"creator.name","in":"query","description":"Filter on creator.name (String)","required":false,"schema":{"type":"string"}},{"name":"creationDateTime","in":"query","description":"Filter on creationDateTime (Instant)","required":false,"schema":{"type":"string"}},{"name":"lastModifier.id","in":"query","description":"Filter on lastModifier.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"lastModifier.name","in":"query","description":"Filter on lastModifier.name (String)","required":false,"schema":{"type":"string"}},{"name":"lastModificationDateTime","in":"query","description":"Filter on lastModificationDateTime (Instant)","required":false,"schema":{"type":"string"}},{"name":"archiver.id","in":"query","description":"Filter on archiver.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"archiver.name","in":"query","description":"Filter on archiver.name (String)","required":false,"schema":{"type":"string"}},{"name":"archivationDateTime","in":"query","description":"Filter on archivationDateTime (Instant)","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Paged list of models visible to caller","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelEntityModelModel"}}}},"400":{"description":"Invalid filter parameter","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"post":{"tags":["Models"],"summary":"Create a model and seed it from an uploaded file","description":"Required: projectId, name (in the JSON part); content (the uploaded file). Slug is auto-generated from name; confidentiality is inherited from parent project.","operationId":"create_6","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateModelInput"}},"multipart/form-data":{"schema":{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/CreateModelInput"},"content":{"type":"string","format":"binary"}},"required":["content","entity"]}}},"required":true},"responses":{"201":{"description":"Model created and seeded from upload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelModel"}}}},"400":{"description":"Malformed multipart, input validation failed, or content fails to deserialize","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"401":{"description":"Anonymous caller"},"403":{"description":"Parent project visible to caller but no rights to create models in it"},"404":{"description":"Parent project does not exist or not visible to caller"},"409":{"description":"Slug already taken in project","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"415":{"description":"Content format not registered with any deserializer"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/graphql":{"post":{"tags":["GraphQL"],"operationId":"performRequest","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GraphQLPayload"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{}}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/graphql/upload":{"post":{"tags":["GraphQL"],"operationId":"uploadDocument","parameters":[{"name":"operations","in":"query","required":true,"schema":{"type":"string"}},{"name":"map","in":"query","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"0":{"type":"string","format":"binary"}},"required":["0"]}}}},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object","additionalProperties":{}}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/chat":{"post":{"tags":["Chat"],"summary":"Stream an AI chat response (Server-Sent Events) for the given prompt","operationId":"chat","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatInput"}}},"required":true},"responses":{"200":{"description":"Server-Sent Events stream of ChatOutput. Per-event errors are emitted as ChatError events within the stream rather than as HTTP error statuses.","content":{"text/event-stream":{"schema":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/ChatAnswer"},{"$ref":"#/components/schemas/ChatError"},{"$ref":"#/components/schemas/ChatReasoning"},{"$ref":"#/components/schemas/ChatToolCall"}]}}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/users/current":{"get":{"tags":["Users"],"summary":"Get the current authenticated user","operationId":"current","responses":{"200":{"description":"Current user details returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDetailsDto"}}}},"204":{"description":"Anonymous caller; no body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDetailsDto"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"patch":{"tags":["Users"],"summary":"Update the preferences of the current authenticated user","description":"PATCH semantics: omit a field to keep its current value. The locale must be one of the locales the installation carries.","operationId":"updateCurrent","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPreferencesDto"}}},"required":true},"responses":{"200":{"description":"Updated user details returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDetailsDto"}}}},"400":{"description":"Malformed JSON or input validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"401":{"description":"Anonymous caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/scopes/{id}":{"get":{"tags":["Scopes"],"summary":"Read a scope by id","operationId":"read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Scope returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelScope"}}}},"404":{"description":"Scope does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"delete":{"tags":["Scopes"],"summary":"Delete a scope","operationId":"delete","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Scope deleted (cascades child projects)"},"401":{"description":"Anonymous caller"},"403":{"description":"Visible to caller but delete access denied"},"404":{"description":"Scope does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"patch":{"tags":["Scopes"],"summary":"Update a scope","description":"PATCH semantics: omit a field to keep its current value. Format constraints (slug pattern, length, confidentiality range) are enforced when a value is provided.","operationId":"update","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Scope"}}},"required":true},"responses":{"200":{"description":"Updated scope returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelScope"}}}},"400":{"description":"Malformed JSON or input validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"401":{"description":"Anonymous caller"},"403":{"description":"Visible to caller but write access denied"},"404":{"description":"Scope does not exist or not visible to caller"},"409":{"description":"Slug already taken by another scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/representations/{id}":{"get":{"tags":["Representations"],"summary":"Read a representation by id","operationId":"read_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Representation metadata returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelRepresentation"}}}},"404":{"description":"Representation does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"delete":{"tags":["Representations"],"summary":"Delete a representation","operationId":"delete_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Representation deleted"},"401":{"description":"Anonymous caller"},"403":{"description":"Visible to caller but delete access denied"},"404":{"description":"Representation does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"patch":{"tags":["Representations"],"summary":"Update representation metadata","description":"PATCH semantics: omit a field to keep its current value. Format constraints (slug, kind/specification URI-like format) are enforced when a value is provided.","operationId":"update_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Representation"}}},"required":true},"responses":{"200":{"description":"Updated representation returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelRepresentation"}}}},"400":{"description":"Malformed JSON or input validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"401":{"description":"Anonymous caller"},"403":{"description":"Visible to caller but write access denied"},"404":{"description":"Representation does not exist or not visible to caller"},"409":{"description":"Slug already taken in model, or another default already exists for target","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/projects/{id}":{"get":{"tags":["Projects"],"summary":"Read a project by id","operationId":"read_2","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Project returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelProject"}}}},"404":{"description":"Project does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"delete":{"tags":["Projects"],"summary":"Delete a project","operationId":"delete_2","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Project deleted (cascades models, imports, enrollments)"},"401":{"description":"Anonymous caller"},"403":{"description":"Visible to caller but delete access denied"},"404":{"description":"Project does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"patch":{"tags":["Projects"],"summary":"Update a project","description":"PATCH semantics: omit a field to keep its current value. Format constraints (slug, version, confidentiality range) are enforced when a value is provided. Inter-entity invariants (project.confidentiality >= scope.confidentiality) are enforced by the database.","operationId":"update_2","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}},"required":true},"responses":{"200":{"description":"Updated project returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelProject"}}}},"400":{"description":"Malformed JSON or input validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"401":{"description":"Anonymous caller"},"403":{"description":"Visible to caller but write access denied"},"404":{"description":"Project does not exist or not visible to caller"},"409":{"description":"Slug + version already taken in scope","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/project-users/{id}":{"get":{"tags":["Project Members"],"summary":"Read a project member by id","operationId":"read_3","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Project member returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelProjectUser"}}}},"404":{"description":"Project member does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"delete":{"tags":["Project Members"],"summary":"Remove a project member by id","operationId":"delete_3","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Project member removed"},"401":{"description":"Anonymous caller"},"403":{"description":"Visible to caller but delete access denied"},"404":{"description":"Project member does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"patch":{"tags":["Project Members"],"summary":"Update a project member","description":"PATCH semantics: omit a field to keep its current value. Format constraints (clearance range) are enforced when a value is provided.","operationId":"update_3","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectUser"}}},"required":true},"responses":{"200":{"description":"Updated project member returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelProjectUser"}}}},"400":{"description":"Malformed JSON or input validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"401":{"description":"Anonymous caller"},"403":{"description":"Visible to caller but write access denied"},"404":{"description":"Project member does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/project-images/{id}":{"get":{"tags":["Project Images"],"summary":"Read a project image by id","operationId":"read_4","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Project image returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelImage"}}}},"404":{"description":"Project image does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"delete":{"tags":["Project Images"],"summary":"Delete a project image by id","operationId":"delete_4","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Project image deleted"},"401":{"description":"Anonymous caller"},"403":{"description":"Visible to caller but delete access denied"},"404":{"description":"Project image does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"patch":{"tags":["Project Images"],"summary":"Replace a project image's content and metadata","description":"PATCH semantics for the JSON part: omit `name` to keep the current value. The file part fully replaces the stored content; it is required.","operationId":"update_4","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/Image"},"content":{"type":"string","format":"binary"}},"required":["content","entity"]}}}},"responses":{"200":{"description":"Updated project image returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelImage"}}}},"400":{"description":"Malformed multipart, unreadable file, or input validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"401":{"description":"Anonymous caller"},"403":{"description":"Visible to caller but write access denied"},"404":{"description":"Project image does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/project-enrollments/{id}":{"get":{"tags":["Project Enrollments"],"summary":"Read a project enrollment by id","operationId":"read_5","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Enrollment returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelProjectEnrollment"}}}},"404":{"description":"Enrollment does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"delete":{"tags":["Project Enrollments"],"summary":"Delete a project enrollment by id","operationId":"delete_5","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Enrollment deleted"},"401":{"description":"Anonymous caller"},"403":{"description":"Visible to caller but delete access denied"},"404":{"description":"Enrollment does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"patch":{"tags":["Project Enrollments"],"summary":"Update a project enrollment","description":"PATCH semantics: omit a field to keep its current value. Use the dedicated approve/reject endpoints to drive the status workflow.","operationId":"update_5","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectEnrollment"}}},"required":true},"responses":{"200":{"description":"Updated enrollment returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelProjectEnrollment"}}}},"400":{"description":"Malformed JSON or input validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"401":{"description":"Anonymous caller"},"403":{"description":"Visible to caller but write access denied"},"404":{"description":"Enrollment does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/models/{id}":{"get":{"tags":["Models"],"summary":"Read model metadata by id","operationId":"read_6","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Model metadata returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelModel"}}}},"404":{"description":"Model does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"delete":{"tags":["Models"],"summary":"Delete a model","operationId":"delete_6","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Model deleted (cascades representations)"},"401":{"description":"Anonymous caller"},"403":{"description":"Visible to caller but delete access denied"},"404":{"description":"Model does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}},"patch":{"tags":["Models"],"summary":"Update model metadata","description":"PATCH semantics: omit a field to keep its current value. Format constraints (slug, confidentiality range) are enforced when a value is provided.","operationId":"update_6","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Model"}}},"required":true},"responses":{"200":{"description":"Updated model returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelModel"}}}},"400":{"description":"Malformed JSON or input validation failed","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"401":{"description":"Anonymous caller"},"403":{"description":"Visible to caller but write access denied"},"404":{"description":"Model does not exist or not visible to caller"},"409":{"description":"Slug already taken in project","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/users/{slug}":{"get":{"tags":["Users"],"summary":"Read a user by slug","operationId":"read_7","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"User returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserDto"}}}},"404":{"description":"User does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/tasks/{id}/events":{"get":{"tags":["Tasks"],"summary":"Follow the progress of a background task (Server-Sent Events)","operationId":"events","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Server-Sent Events stream of the task's progress","content":{"text/event-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ServerSentEventObject"}}}}},"401":{"description":"Anonymous caller"},"404":{"description":"Task does not exist or was created by another user"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/representations":{"get":{"tags":["Representations"],"summary":"List representations visible to caller, paged","description":"**Filter examples**\n\n| Query | Effect |\n| --- | --- |\n| `?slug=foo` | equals `foo` |\n| `?slug=!foo` | not equals `foo` |\n| `?name=*foo*` | contains `foo` |\n| `?name=!*foo*` | does not contain `foo` |\n| `?count=>=10` | greater or equal (also `>`, `<=`, `<`) |\n| `?slug=` | is null or empty |\n| `?slug=!` | is not null and not empty |\n| `?status=a,b` | equals `a` or `b` |\n| `?name,slug=*foo*` | matches in `name` or `slug` (multi-field OR) |\n| `?count=>=10&count=<20` | greater than 10 AND less than 20 |\n\nMulti-field keys (comma in the key, e.g. `name,slug`) and parameter repetition (`&count=...`) cannot be entered through Swagger UI's form: edit the request URL manually after pressing Execute, or send the request from another HTTP client.\n","operationId":"list_7","parameters":[{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":20,"minimum":1}},{"name":"sort","in":"query","description":"Sort criteria. Each entry is `field,asc` or `field,desc`. Add multiple entries to sort by several fields.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"id","in":"query","description":"Filter on id (UUID)","required":false,"schema":{"type":"string"}},{"name":"slug","in":"query","description":"Filter on slug (String)","required":false,"schema":{"type":"string"}},{"name":"name","in":"query","description":"Filter on name (String)","required":false,"schema":{"type":"string"}},{"name":"description","in":"query","description":"Filter on description (String)","required":false,"schema":{"type":"string"}},{"name":"kind","in":"query","description":"Filter on kind (String)","required":false,"schema":{"type":"string"}},{"name":"specification","in":"query","description":"Filter on specification (String)","required":false,"schema":{"type":"string"}},{"name":"targetObjectId","in":"query","description":"Filter on targetObjectId (UUID)","required":false,"schema":{"type":"string"}},{"name":"targetObjectName","in":"query","description":"Filter on targetObjectName (String)","required":false,"schema":{"type":"string"}},{"name":"ordinal","in":"query","description":"Filter on ordinal (Integer)","required":false,"schema":{"type":"string"}},{"name":"isRoot","in":"query","description":"Filter on isRoot (Boolean)","required":false,"schema":{"type":"string"}},{"name":"migrationVersion","in":"query","description":"Filter on migrationVersion (String)","required":false,"schema":{"type":"string"}},{"name":"migrationName","in":"query","description":"Filter on migrationName (String)","required":false,"schema":{"type":"string"}},{"name":"model.id","in":"query","description":"Filter on model.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"model.slug","in":"query","description":"Filter on model.slug (String)","required":false,"schema":{"type":"string"}},{"name":"model.name","in":"query","description":"Filter on model.name (String)","required":false,"schema":{"type":"string"}},{"name":"project.id","in":"query","description":"Filter on project.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"project.slug","in":"query","description":"Filter on project.slug (String)","required":false,"schema":{"type":"string"}},{"name":"project.version","in":"query","description":"Filter on project.version (String)","required":false,"schema":{"type":"string"}},{"name":"project.name","in":"query","description":"Filter on project.name (String)","required":false,"schema":{"type":"string"}},{"name":"scope.id","in":"query","description":"Filter on scope.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"scope.slug","in":"query","description":"Filter on scope.slug (String)","required":false,"schema":{"type":"string"}},{"name":"scope.name","in":"query","description":"Filter on scope.name (String)","required":false,"schema":{"type":"string"}},{"name":"creator.id","in":"query","description":"Filter on creator.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"creator.name","in":"query","description":"Filter on creator.name (String)","required":false,"schema":{"type":"string"}},{"name":"creationDateTime","in":"query","description":"Filter on creationDateTime (Instant)","required":false,"schema":{"type":"string"}},{"name":"lastModifier.id","in":"query","description":"Filter on lastModifier.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"lastModifier.name","in":"query","description":"Filter on lastModifier.name (String)","required":false,"schema":{"type":"string"}},{"name":"lastModificationDateTime","in":"query","description":"Filter on lastModificationDateTime (Instant)","required":false,"schema":{"type":"string"}},{"name":"archiver.id","in":"query","description":"Filter on archiver.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"archiver.name","in":"query","description":"Filter on archiver.name (String)","required":false,"schema":{"type":"string"}},{"name":"archivationDateTime","in":"query","description":"Filter on archivationDateTime (Instant)","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Paged list of representations visible to caller","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelEntityModelRepresentation"}}}},"400":{"description":"Invalid filter parameter","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/representations/{scopeSlug}/{projectSlug}/{projectVersion}/{modelSlug}":{"get":{"tags":["Representations"],"summary":"Read a representation by slug chain (scope/project/version/model)","operationId":"read_8","parameters":[{"name":"scopeSlug","in":"path","required":true,"schema":{"type":"string"}},{"name":"projectSlug","in":"path","required":true,"schema":{"type":"string"}},{"name":"projectVersion","in":"path","required":true,"schema":{"type":"string"}},{"name":"modelSlug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Representation metadata returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelRepresentation"}}}},"404":{"description":"Representation does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/representations/{scopeSlug}/{projectSlug}/{projectVersion}/{modelSlug}/{representationSlug}":{"get":{"tags":["Representations"],"summary":"Read a representation by slug chain (scope/project/version/model/representation)","operationId":"read_9","parameters":[{"name":"scopeSlug","in":"path","required":true,"schema":{"type":"string"}},{"name":"projectSlug","in":"path","required":true,"schema":{"type":"string"}},{"name":"projectVersion","in":"path","required":true,"schema":{"type":"string"}},{"name":"modelSlug","in":"path","required":true,"schema":{"type":"string"}},{"name":"representationSlug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Representation metadata returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelRepresentation"}}}},"404":{"description":"Representation does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/representations/{id}/content":{"get":{"tags":["Representations"],"summary":"Read a representation content","operationId":"content_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Representation content as raw JSON","content":{"application/json":{"schema":{"type":"string"}}}},"404":{"description":"Representation does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/projects/{scopeSlug}/{projectSlug}/{projectVersion}":{"get":{"tags":["Projects"],"summary":"Read a project by slug chain (scope/project/version)","operationId":"read_10","parameters":[{"name":"scopeSlug","in":"path","required":true,"schema":{"type":"string"}},{"name":"projectSlug","in":"path","required":true,"schema":{"type":"string"}},{"name":"projectVersion","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Project returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelProject"}}}},"404":{"description":"Project does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/projects/{id}/users":{"get":{"tags":["Projects"],"summary":"List users on the project, paged","operationId":"listUsers","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":20,"minimum":1}},{"name":"sort","in":"query","description":"Sort criteria. Each entry is `field,asc` or `field,desc`. Add multiple entries to sort by several fields.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Paged list of users on the project; empty if project missing/hidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelEntityModelProjectUser"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/projects/{id}/quick-fixes":{"get":{"tags":["Expressions"],"summary":"List the quick fixes for an object and/or a rule code","operationId":"quickFixes","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"objectId","in":"query","required":false,"schema":{"type":"string"}},{"name":"ruleCode","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/QuickFixDto"}}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/projects/{id}/importable":{"get":{"tags":["Projects"],"summary":"List projects importable into the given parent project, paged","description":"**Filter examples**\n\n| Query | Effect |\n| --- | --- |\n| `?slug=foo` | equals `foo` |\n| `?slug=!foo` | not equals `foo` |\n| `?name=*foo*` | contains `foo` |\n| `?name=!*foo*` | does not contain `foo` |\n| `?count=>=10` | greater or equal (also `>`, `<=`, `<`) |\n| `?slug=` | is null or empty |\n| `?slug=!` | is not null and not empty |\n| `?status=a,b` | equals `a` or `b` |\n| `?name,slug=*foo*` | matches in `name` or `slug` (multi-field OR) |\n| `?count=>=10&count=<20` | greater than 10 AND less than 20 |\n\nMulti-field keys (comma in the key, e.g. `name,slug`) and parameter repetition (`&count=...`) cannot be entered through Swagger UI's form: edit the request URL manually after pressing Execute, or send the request from another HTTP client.\n","operationId":"listImportable","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":20,"minimum":1}},{"name":"sort","in":"query","description":"Sort criteria. Each entry is `field,asc` or `field,desc`. Add multiple entries to sort by several fields.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"id","in":"query","description":"Filter on id (UUID)","required":false,"schema":{"type":"string"}},{"name":"slug","in":"query","description":"Filter on slug (String)","required":false,"schema":{"type":"string"}},{"name":"version","in":"query","description":"Filter on version (String)","required":false,"schema":{"type":"string"}},{"name":"name","in":"query","description":"Filter on name (String)","required":false,"schema":{"type":"string"}},{"name":"description","in":"query","description":"Filter on description (String)","required":false,"schema":{"type":"string"}},{"name":"confidentiality","in":"query","description":"Filter on confidentiality (Integer)","required":false,"schema":{"type":"string"}},{"name":"previousVersionId","in":"query","description":"Filter on previousVersionId (UUID)","required":false,"schema":{"type":"string"}},{"name":"myRole","in":"query","description":"Filter on myRole (UserRole). Values: none, viewer, editor, owner","required":false,"schema":{"type":"string"}},{"name":"scope.id","in":"query","description":"Filter on scope.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"scope.slug","in":"query","description":"Filter on scope.slug (String)","required":false,"schema":{"type":"string"}},{"name":"scope.name","in":"query","description":"Filter on scope.name (String)","required":false,"schema":{"type":"string"}},{"name":"creator.id","in":"query","description":"Filter on creator.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"creator.name","in":"query","description":"Filter on creator.name (String)","required":false,"schema":{"type":"string"}},{"name":"creationDateTime","in":"query","description":"Filter on creationDateTime (Instant)","required":false,"schema":{"type":"string"}},{"name":"lastModifier.id","in":"query","description":"Filter on lastModifier.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"lastModifier.name","in":"query","description":"Filter on lastModifier.name (String)","required":false,"schema":{"type":"string"}},{"name":"lastModificationDateTime","in":"query","description":"Filter on lastModificationDateTime (Instant)","required":false,"schema":{"type":"string"}},{"name":"archiver.id","in":"query","description":"Filter on archiver.id (UUID)","required":false,"schema":{"type":"string"}},{"name":"archiver.name","in":"query","description":"Filter on archiver.name (String)","required":false,"schema":{"type":"string"}},{"name":"archivationDateTime","in":"query","description":"Filter on archivationDateTime (Instant)","required":false,"schema":{"type":"string"}},{"name":"canUpdate","in":"query","description":"Filter on canUpdate (Boolean)","required":false,"schema":{"type":"string"}},{"name":"canDelete","in":"query","description":"Filter on canDelete (Boolean)","required":false,"schema":{"type":"string"}},{"name":"canCreateModels","in":"query","description":"Filter on canCreateModels (Boolean)","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Paged list of importable projects (visibility-filtered, parent excluded)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelEntityModelProject"}}}},"400":{"description":"Invalid filter parameter","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/FieldErrorProblem"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/projects/{id}/images":{"get":{"tags":["Projects"],"summary":"List images attached to the project, paged","operationId":"listImages","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"page","in":"query","description":"Zero-based page index (0..N)","required":false,"schema":{"type":"integer","default":0,"minimum":0}},{"name":"size","in":"query","description":"The size of the page to be returned","required":false,"schema":{"type":"integer","default":20,"minimum":1}},{"name":"sort","in":"query","description":"Sort criteria. Each entry is `field,asc` or `field,desc`. Add multiple entries to sort by several fields.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"Paged list of images attached to the project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagedModelEntityModelImage"}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/predefined-metamodels":{"get":{"tags":["Predefined Metamodels"],"summary":"List all predefined metamodels","operationId":"list_8","responses":{"200":{"description":"Listing returned","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PredefinedMetamodelInfo"}}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/predefined-metamodels/{id}/ecore":{"get":{"tags":["Predefined Metamodels"],"summary":"Download a predefined metamodel as Ecore (XMI)","operationId":"ecore","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"format","in":"query","required":false,"schema":{"type":"string"}},{"name":"inline","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"Accept","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Ecore XMI with attachment headers","content":{"*/*":{"schema":{"type":"string","format":"byte"}}}},"404":{"description":"No predefined metamodel with this id"},"406":{"description":"Format set but no Ecore serializer accepts it"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/models/{scopeSlug}/{projectSlug}/{projectVersion}/{modelSlug}":{"get":{"tags":["Models"],"summary":"Read model metadata by slug chain","operationId":"read_11","parameters":[{"name":"scopeSlug","in":"path","required":true,"schema":{"type":"string"}},{"name":"projectSlug","in":"path","required":true,"schema":{"type":"string"}},{"name":"projectVersion","in":"path","required":true,"schema":{"type":"string"}},{"name":"modelSlug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Model metadata returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityModelModel"}}}},"404":{"description":"Model does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/models/{scopeSlug}/{projectSlug}/{projectVersion}/{modelSlug}/content":{"get":{"tags":["Models"],"summary":"Download a model content by slug chain","operationId":"contentBySlug","parameters":[{"name":"scopeSlug","in":"path","required":true,"schema":{"type":"string"}},{"name":"projectSlug","in":"path","required":true,"schema":{"type":"string"}},{"name":"projectVersion","in":"path","required":true,"schema":{"type":"string"}},{"name":"modelSlug","in":"path","required":true,"schema":{"type":"string"}},{"name":"format","in":"query","required":false,"schema":{"type":"string"}},{"name":"inline","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"Accept","in":"header","required":false,"schema":{"type":"string","default":"application/json"}}],"responses":{"200":{"description":"Serialized model content with attachment headers","content":{"application/json":{"schema":{"type":"string","format":"byte"}}}},"404":{"description":"Model does not exist or not visible to caller"},"406":{"description":"No serializer registered for the requested output format"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/models/{id}/validation-results":{"get":{"tags":["Models"],"summary":"Read the validation findings of a model (persisted for an architecture description, computed on the fly for an ordinary model; never triggers a revalidation)","operationId":"read_12","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"minKind","in":"query","required":false,"schema":{"type":"string","default":"Information"}}],"responses":{"200":{"description":"The validation findings","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ValidationResult"}}}}},"404":{"description":"Model does not exist or not visible to caller"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/images/{path}":{"get":{"tags":["Images"],"summary":"Serve an image by classpath path or UUID, with optional SVG re-styling","operationId":"getImage","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string"}},{"name":"icon","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"fill","in":"query","required":false,"schema":{"type":"string"}},{"name":"stroke","in":"query","required":false,"schema":{"type":"string"}},{"name":"stroke-width","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"stroke-dasharray","in":"query","required":false,"schema":{"type":"string"}},{"name":"secondary-fill","in":"query","required":false,"schema":{"type":"string"}},{"name":"secondary-stroke","in":"query","required":false,"schema":{"type":"string"}},{"name":"secondary-stroke-width","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"secondary-stroke-dasharray","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Image bytes with content type","content":{"*/*":{"schema":{"type":"string","format":"binary"}}}},"304":{"description":"Not modified since last request","content":{"*/*":{"schema":{"type":"string","format":"binary"}}}},"404":{"description":"Path is empty, points outside allowed roots, or the image does not exist"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/expression-languages":{"get":{"tags":["Expressions"],"summary":"List the expression languages available for chat execution","operationId":"list_9","responses":{"200":{"description":"The available languages","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExpressionLanguage"}}}}},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/tasks/{id}":{"delete":{"tags":["Tasks"],"summary":"Cancel a background task created by the current user","operationId":"cancel","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Cancellation requested"},"401":{"description":"Anonymous caller"},"404":{"description":"Task does not exist or was created by another user"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}},"/api/projects/{id}/imports/{importedProjectId}":{"delete":{"tags":["Projects"],"summary":"Remove an imported project from the host","operationId":"deleteImportedProject","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"importedProjectId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Import removed"},"401":{"description":"Anonymous caller"},"403":{"description":"Import exists but caller lacks write access on host project"},"404":{"description":"No such import relationship (host or import row missing/hidden)"},"500":{"description":"Internal server error - unanticipated failure with a correlation id in the response body","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/InternalProblem"}}}}}}}},"components":{"schemas":{"SettingsResponse":{"type":"object","description":"Public application settings exposed to the frontend.","properties":{"aboutUrl":{"type":"string","description":"URL of the about page."},"documentationUrl":{"type":"string","description":"URL of the documentation site."},"applicationsUrl":{"type":"string","description":"URL of the applications portal."},"oauth2IssuerUrl":{"type":"string","description":"URL of the OAuth 2.0 issuer (Keycloak realm)."},"oauth2ApiClientId":{"type":"string","description":"OAuth 2.0 client identifier the frontend uses when calling the API."},"languages":{"type":"array","description":"Language codes the interface is offered in, in the order they are shown.","items":{"type":"string"}}}},"EntityModelModel":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"scope":{"$ref":"#/components/schemas/ScopeReference","readOnly":true},"project":{"$ref":"#/components/schemas/ProjectReference"},"slug":{"type":"string","description":"URL-safe slug, must not look like a UUID; may be supplied explicitly, otherwise auto-generated from name on create.","maxLength":100,"minLength":2,"pattern":"^[a-z][a-z0-9]*(-[a-z0-9]+)*$"},"name":{"type":"string","maxLength":300},"description":{"type":"string","maxLength":1000},"confidentiality":{"type":"integer","format":"int32","description":"Confidentiality level; required on create. Must be at least the project's confidentiality - this inter-entity invariant is enforced by the database.","maximum":299,"minimum":0},"previousVersionId":{"type":"string","format":"uuid","description":"Optional id of the previous version of the same model."},"content":{"type":"string","description":"Model content as JSON; required on create."},"contentType":{"type":"string","readOnly":true},"defaultRepresentation":{"$ref":"#/components/schemas/RepresentationReference","readOnly":true},"creator":{"$ref":"#/components/schemas/UserReference","readOnly":true},"creationDateTime":{"type":"string","format":"date-time","readOnly":true},"lastModifier":{"$ref":"#/components/schemas/UserReference","readOnly":true},"lastModificationDateTime":{"type":"string","format":"date-time","readOnly":true},"archiver":{"$ref":"#/components/schemas/UserReference","readOnly":true},"archivationDateTime":{"type":"string","format":"date-time","readOnly":true},"_links":{"$ref":"#/components/schemas/Links"}}},"Model":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"scope":{"$ref":"#/components/schemas/ScopeReference","readOnly":true},"project":{"$ref":"#/components/schemas/ProjectReference"},"slug":{"type":"string","description":"URL-safe slug, must not look like a UUID; may be supplied explicitly, otherwise auto-generated from name on create.","maxLength":100,"minLength":2,"pattern":"^[a-z][a-z0-9]*(-[a-z0-9]+)*$"},"name":{"type":"string","maxLength":300},"description":{"type":"string","maxLength":1000},"confidentiality":{"type":"integer","format":"int32","description":"Confidentiality level; required on create. Must be at least the project's confidentiality - this inter-entity invariant is enforced by the database.","maximum":299,"minimum":0},"previousVersionId":{"type":"string","format":"uuid","description":"Optional id of the previous version of the same model."},"content":{"type":"string","description":"Model content as JSON; required on create."},"contentType":{"type":"string","readOnly":true},"defaultRepresentation":{"$ref":"#/components/schemas/RepresentationReference","readOnly":true},"creator":{"$ref":"#/components/schemas/UserReference","readOnly":true},"creationDateTime":{"type":"string","format":"date-time","readOnly":true},"lastModifier":{"$ref":"#/components/schemas/UserReference","readOnly":true},"lastModificationDateTime":{"type":"string","format":"date-time","readOnly":true},"archiver":{"$ref":"#/components/schemas/UserReference","readOnly":true},"archivationDateTime":{"type":"string","format":"date-time","readOnly":true}}},"ProjectReference":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string","readOnly":true},"version":{"type":"string","readOnly":true},"name":{"type":"string","readOnly":true}}},"RepresentationReference":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string","readOnly":true},"name":{"type":"string","readOnly":true}}},"ScopeReference":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string","readOnly":true},"name":{"type":"string","readOnly":true}}},"UserReference":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}}},"CreateTaskInput":{"type":"object","properties":{"kind":{"type":"string"},"params":{"type":"object","additionalProperties":{},"description":"Kind-specific parameters, e.g. {\"objectId\": \"...\"} for validation"}}},"Task":{"type":"object","description":"An active background task.","properties":{"id":{"type":"string","format":"uuid"},"kind":{"type":"string"},"label":{"type":"string"},"creatorId":{"type":"string","format":"uuid"},"creationDateTime":{"type":"string","format":"date-time"}}},"Scope":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"slug":{"type":"string","description":"URL-safe slug, must not look like a UUID; may be supplied explicitly, otherwise auto-generated from name on create.","maxLength":100,"minLength":2,"pattern":"^[a-z][a-z0-9]*(-[a-z0-9]+)*$"},"name":{"type":"string","description":"Human-readable name.","maxLength":300},"description":{"type":"string","maxLength":1000},"confidentiality":{"type":"integer","format":"int32","description":"Confidentiality level; defaults to 0 if omitted on create.","maximum":199,"minimum":0},"creator":{"$ref":"#/components/schemas/UserReference","readOnly":true},"creationDateTime":{"type":"string","format":"date-time","readOnly":true},"lastModifier":{"$ref":"#/components/schemas/UserReference","readOnly":true},"lastModificationDateTime":{"type":"string","format":"date-time","readOnly":true},"archiver":{"$ref":"#/components/schemas/UserReference","readOnly":true},"archivationDateTime":{"type":"string","format":"date-time","readOnly":true},"canUpdate":{"type":"boolean","readOnly":true},"canDelete":{"type":"boolean","readOnly":true},"canCreateProjects":{"type":"boolean","readOnly":true}}},"EntityModelScope":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"slug":{"type":"string","description":"URL-safe slug, must not look like a UUID; may be supplied explicitly, otherwise auto-generated from name on create.","maxLength":100,"minLength":2,"pattern":"^[a-z][a-z0-9]*(-[a-z0-9]+)*$"},"name":{"type":"string","description":"Human-readable name.","maxLength":300},"description":{"type":"string","maxLength":1000},"confidentiality":{"type":"integer","format":"int32","description":"Confidentiality level; defaults to 0 if omitted on create.","maximum":199,"minimum":0},"creator":{"$ref":"#/components/schemas/UserReference","readOnly":true},"creationDateTime":{"type":"string","format":"date-time","readOnly":true},"lastModifier":{"$ref":"#/components/schemas/UserReference","readOnly":true},"lastModificationDateTime":{"type":"string","format":"date-time","readOnly":true},"archiver":{"$ref":"#/components/schemas/UserReference","readOnly":true},"archivationDateTime":{"type":"string","format":"date-time","readOnly":true},"canUpdate":{"type":"boolean","readOnly":true},"canDelete":{"type":"boolean","readOnly":true},"canCreateProjects":{"type":"boolean","readOnly":true},"_links":{"$ref":"#/components/schemas/Links"}}},"CreateProjectInput":{"type":"object","properties":{"scopeId":{"type":"string","format":"uuid"},"name":{"type":"string"}}},"EntityModelProject":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"scope":{"$ref":"#/components/schemas/ScopeReference"},"slug":{"type":"string","description":"URL-safe slug, must not look like a UUID; may be supplied explicitly, otherwise auto-generated from name on create.","maxLength":100,"minLength":2,"pattern":"^[a-z][a-z0-9]*(-[a-z0-9]+)*$"},"version":{"type":"string","description":"Version, must not look like a UUID; defaults to '1.0.0' if omitted on create.","maxLength":50,"pattern":"^[a-z0-9]([-.]?[a-z0-9]+)*$"},"name":{"type":"string","maxLength":300},"description":{"type":"string","maxLength":1000},"confidentiality":{"type":"integer","format":"int32","description":"Confidentiality level; required on create. Must be at least the scope's confidentiality - this inter-entity invariant is enforced by the database.","maximum":299,"minimum":0},"previousVersionId":{"type":"string","format":"uuid","description":"Optional id of the previous version of the same project."},"creator":{"$ref":"#/components/schemas/UserReference","readOnly":true},"creationDateTime":{"type":"string","format":"date-time","readOnly":true},"lastModifier":{"$ref":"#/components/schemas/UserReference","readOnly":true},"lastModificationDateTime":{"type":"string","format":"date-time","readOnly":true},"archiver":{"$ref":"#/components/schemas/UserReference","readOnly":true},"archivationDateTime":{"type":"string","format":"date-time","readOnly":true},"canUpdate":{"type":"boolean","readOnly":true},"canDelete":{"type":"boolean","readOnly":true},"canCreateModels":{"type":"boolean","readOnly":true},"_links":{"$ref":"#/components/schemas/Links"}}},"Project":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"scope":{"$ref":"#/components/schemas/ScopeReference"},"slug":{"type":"string","description":"URL-safe slug, must not look like a UUID; may be supplied explicitly, otherwise auto-generated from name on create.","maxLength":100,"minLength":2,"pattern":"^[a-z][a-z0-9]*(-[a-z0-9]+)*$"},"version":{"type":"string","description":"Version, must not look like a UUID; defaults to '1.0.0' if omitted on create.","maxLength":50,"pattern":"^[a-z0-9]([-.]?[a-z0-9]+)*$"},"name":{"type":"string","maxLength":300},"description":{"type":"string","maxLength":1000},"confidentiality":{"type":"integer","format":"int32","description":"Confidentiality level; required on create. Must be at least the scope's confidentiality - this inter-entity invariant is enforced by the database.","maximum":299,"minimum":0},"previousVersionId":{"type":"string","format":"uuid","description":"Optional id of the previous version of the same project."},"creator":{"$ref":"#/components/schemas/UserReference","readOnly":true},"creationDateTime":{"type":"string","format":"date-time","readOnly":true},"lastModifier":{"$ref":"#/components/schemas/UserReference","readOnly":true},"lastModificationDateTime":{"type":"string","format":"date-time","readOnly":true},"archiver":{"$ref":"#/components/schemas/UserReference","readOnly":true},"archivationDateTime":{"type":"string","format":"date-time","readOnly":true},"canUpdate":{"type":"boolean","readOnly":true},"canDelete":{"type":"boolean","readOnly":true},"canCreateModels":{"type":"boolean","readOnly":true}}},"EntityModelProjectImport":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string","readOnly":true},"version":{"type":"string","readOnly":true},"name":{"type":"string","readOnly":true},"scope":{"$ref":"#/components/schemas/ScopeReference","readOnly":true},"_links":{"$ref":"#/components/schemas/Links"}}},"ExpressionProposalRequest":{"type":"object","description":"A request for content-assist proposals.","properties":{"language":{"type":"string"},"expression":{"type":"string"},"offset":{"type":"integer","format":"int32"},"objectId":{"type":"string","format":"uuid"},"modelId":{"type":"string","format":"uuid"}}},"ExpressionProposal":{"type":"object","description":"A content-assist proposal for an expression.","properties":{"label":{"type":"string"},"description":{"type":"string"},"textToInsert":{"type":"string"},"charsToReplace":{"type":"integer","format":"int32"}}},"ExpressionRequest":{"type":"object","description":"A request to diagnose or evaluate an expression.","properties":{"language":{"type":"string"},"expression":{"type":"string"},"objectId":{"type":"string","format":"uuid"},"modelId":{"type":"string","format":"uuid"}}},"ServerSentEventObject":{},"ExpressionDiagnostic":{"type":"object","description":"A static or runtime diagnostic of an expression.","properties":{"severity":{"type":"string"},"message":{"type":"string"},"offset":{"type":"integer","format":"int32"},"length":{"type":"integer","format":"int32"}}},"ExpressionDiagnosticsResponse":{"type":"object","description":"Static diagnostics and the kind of an expression.","properties":{"diagnostics":{"type":"array","items":{"$ref":"#/components/schemas/ExpressionDiagnostic"}},"mutating":{"type":"boolean"}}},"ProjectUser":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"project":{"$ref":"#/components/schemas/ProjectReference"},"user":{"$ref":"#/components/schemas/UserReference"},"role":{"type":"string","enum":["NONE","VIEWER","EDITOR","OWNER"]},"clearance":{"type":"integer","format":"int32","description":"Project-scoped clearance level (200..299); required on create.","maximum":299,"minimum":200},"creator":{"$ref":"#/components/schemas/UserReference","readOnly":true},"creationDateTime":{"type":"string","format":"date-time","readOnly":true},"lastModifier":{"$ref":"#/components/schemas/UserReference","readOnly":true},"lastModificationDateTime":{"type":"string","format":"date-time","readOnly":true}}},"EntityModelProjectUser":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"project":{"$ref":"#/components/schemas/ProjectReference"},"user":{"$ref":"#/components/schemas/UserReference"},"role":{"type":"string","enum":["NONE","VIEWER","EDITOR","OWNER"]},"clearance":{"type":"integer","format":"int32","description":"Project-scoped clearance level (200..299); required on create.","maximum":299,"minimum":200},"creator":{"$ref":"#/components/schemas/UserReference","readOnly":true},"creationDateTime":{"type":"string","format":"date-time","readOnly":true},"lastModifier":{"$ref":"#/components/schemas/UserReference","readOnly":true},"lastModificationDateTime":{"type":"string","format":"date-time","readOnly":true},"_links":{"$ref":"#/components/schemas/Links"}}},"Image":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"project":{"$ref":"#/components/schemas/ProjectReference"},"name":{"type":"string","maxLength":300},"description":{"type":"string","maxLength":1000},"content":{"type":"string","format":"byte","description":"Raw image bytes (base64 in JSON, multipart in upload)."},"contentType":{"type":"string","description":"MIME content type, e.g. 'image/png'.","maxLength":300},"creator":{"$ref":"#/components/schemas/UserReference","readOnly":true},"creationDateTime":{"type":"string","format":"date-time","readOnly":true},"lastModifier":{"$ref":"#/components/schemas/UserReference","readOnly":true},"lastModificationDateTime":{"type":"string","format":"date-time","readOnly":true},"archiver":{"$ref":"#/components/schemas/UserReference","readOnly":true},"archivationDateTime":{"type":"string","format":"date-time","readOnly":true}}},"EntityModelImage":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"project":{"$ref":"#/components/schemas/ProjectReference"},"name":{"type":"string","maxLength":300},"description":{"type":"string","maxLength":1000},"content":{"type":"string","format":"byte","description":"Raw image bytes (base64 in JSON, multipart in upload)."},"contentType":{"type":"string","description":"MIME content type, e.g. 'image/png'.","maxLength":300},"creator":{"$ref":"#/components/schemas/UserReference","readOnly":true},"creationDateTime":{"type":"string","format":"date-time","readOnly":true},"lastModifier":{"$ref":"#/components/schemas/UserReference","readOnly":true},"lastModificationDateTime":{"type":"string","format":"date-time","readOnly":true},"archiver":{"$ref":"#/components/schemas/UserReference","readOnly":true},"archivationDateTime":{"type":"string","format":"date-time","readOnly":true},"_links":{"$ref":"#/components/schemas/Links"}}},"ProjectEnrollment":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"scope":{"$ref":"#/components/schemas/ScopeReference","readOnly":true},"project":{"$ref":"#/components/schemas/ProjectReference"},"user":{"$ref":"#/components/schemas/UserReference"},"status":{"type":"string","enum":["PENDING","APPROVED","REJECTED"]},"creator":{"$ref":"#/components/schemas/UserReference","readOnly":true},"creationDateTime":{"type":"string","format":"date-time","readOnly":true},"lastModifier":{"$ref":"#/components/schemas/UserReference","readOnly":true},"lastModificationDateTime":{"type":"string","format":"date-time","readOnly":true}}},"EntityModelProjectEnrollment":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"scope":{"$ref":"#/components/schemas/ScopeReference","readOnly":true},"project":{"$ref":"#/components/schemas/ProjectReference"},"user":{"$ref":"#/components/schemas/UserReference"},"status":{"type":"string","enum":["PENDING","APPROVED","REJECTED"]},"creator":{"$ref":"#/components/schemas/UserReference","readOnly":true},"creationDateTime":{"type":"string","format":"date-time","readOnly":true},"lastModifier":{"$ref":"#/components/schemas/UserReference","readOnly":true},"lastModificationDateTime":{"type":"string","format":"date-time","readOnly":true},"_links":{"$ref":"#/components/schemas/Links"}}},"ProjectEnrollmentApproveInput":{"type":"object","properties":{"role":{"type":"string","enum":["NONE","VIEWER","EDITOR","OWNER"]}}},"CreateModelInput":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid"},"name":{"type":"string"},"contentFormat":{"type":"string"}}},"GraphQLPayload":{"type":"object","properties":{"query":{"type":"string"},"variables":{"type":"object","additionalProperties":{}},"extensions":{"type":"object","additionalProperties":{}},"operationName":{"type":"string"}}},"ChatInput":{"type":"object","properties":{"prompt":{"type":"string"},"projectId":{"type":"string","format":"uuid"},"modelId":{"type":"string","format":"uuid"},"representationId":{"type":"string","format":"uuid"}}},"ChatAnswer":{"allOf":[{"$ref":"#/components/schemas/ChatOutput"},{"type":"object","properties":{"answer":{"type":"string"}}}]},"ChatError":{"allOf":[{"$ref":"#/components/schemas/ChatOutput"},{"type":"object","properties":{"error":{"type":"string"}}}]},"ChatOutput":{},"ChatReasoning":{"allOf":[{"$ref":"#/components/schemas/ChatOutput"},{"type":"object","properties":{"reasoning":{"type":"string"}}}]},"ChatToolCall":{"allOf":[{"$ref":"#/components/schemas/ChatOutput"},{"type":"object","properties":{"tool":{"type":"string"},"arguments":{"type":"string"},"result":{"type":"string"}}}]},"UserPreferencesDto":{"type":"object","description":"Preferences of the current user.","properties":{"locale":{"type":"string","description":"Locale tag of the form 'xx-XX' (e.g. 'en-US'); must exist in the `locale` lookup table."}}},"UserDetailsDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"slug":{"type":"string"},"locale":{"type":"string"},"enrollmentCount":{"type":"integer","format":"int32"}}},"ModelReference":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"slug":{"type":"string","readOnly":true},"name":{"type":"string","readOnly":true}}},"Representation":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"scope":{"$ref":"#/components/schemas/ScopeReference","readOnly":true},"project":{"$ref":"#/components/schemas/ProjectReference","readOnly":true},"model":{"$ref":"#/components/schemas/ModelReference"},"slug":{"type":"string","description":"URL-safe slug, must not look like a UUID; may be supplied explicitly, otherwise auto-generated from name on create.","maxLength":100,"minLength":2,"pattern":"^[a-z][a-z0-9]*(-[a-z0-9]+)*$"},"name":{"type":"string","maxLength":300},"description":{"type":"string","maxLength":1000},"targetObjectId":{"type":"string","format":"uuid","description":"Id of the target object inside the model."},"targetObjectName":{"type":"string","readOnly":true},"kind":{"type":"string","description":"URI-like representation kind, e.g. 'sirius://viewpoint'.","maxLength":300,"pattern":"^[a-zA-Z]+://[a-zA-Z]+(\\?[a-zA-Z]+=[a-zA-Z0-9-]+(&[a-zA-Z]+=[a-zA-Z0-9-]+)*)?$"},"specification":{"type":"string","description":"URI-like specification reference.","maxLength":300,"pattern":"^[a-zA-Z]+://[a-zA-Z]+(\\?[a-zA-Z]+=[a-zA-Z0-9-]+(&[a-zA-Z]+=[a-zA-Z0-9-]+)*)?$"},"ordinal":{"type":"integer","format":"int32","description":"Ordinal among representations of the same target object. 0 means it is opened by default when the target is selected; higher values are alternatives shown in the representation menu.","readOnly":true},"isRoot":{"type":"boolean","readOnly":true},"migrationVersion":{"type":"string","readOnly":true},"migrationName":{"type":"string","readOnly":true},"content":{"type":"string"},"creator":{"$ref":"#/components/schemas/UserReference","readOnly":true},"creationDateTime":{"type":"string","format":"date-time","readOnly":true},"lastModifier":{"$ref":"#/components/schemas/UserReference","readOnly":true},"lastModificationDateTime":{"type":"string","format":"date-time","readOnly":true},"archiver":{"$ref":"#/components/schemas/UserReference","readOnly":true},"archivationDateTime":{"type":"string","format":"date-time","readOnly":true}}},"EntityModelRepresentation":{"type":"object","properties":{"id":{"type":"string","format":"uuid","readOnly":true},"scope":{"$ref":"#/components/schemas/ScopeReference","readOnly":true},"project":{"$ref":"#/components/schemas/ProjectReference","readOnly":true},"model":{"$ref":"#/components/schemas/ModelReference"},"slug":{"type":"string","description":"URL-safe slug, must not look like a UUID; may be supplied explicitly, otherwise auto-generated from name on create.","maxLength":100,"minLength":2,"pattern":"^[a-z][a-z0-9]*(-[a-z0-9]+)*$"},"name":{"type":"string","maxLength":300},"description":{"type":"string","maxLength":1000},"targetObjectId":{"type":"string","format":"uuid","description":"Id of the target object inside the model."},"targetObjectName":{"type":"string","readOnly":true},"kind":{"type":"string","description":"URI-like representation kind, e.g. 'sirius://viewpoint'.","maxLength":300,"pattern":"^[a-zA-Z]+://[a-zA-Z]+(\\?[a-zA-Z]+=[a-zA-Z0-9-]+(&[a-zA-Z]+=[a-zA-Z0-9-]+)*)?$"},"specification":{"type":"string","description":"URI-like specification reference.","maxLength":300,"pattern":"^[a-zA-Z]+://[a-zA-Z]+(\\?[a-zA-Z]+=[a-zA-Z0-9-]+(&[a-zA-Z]+=[a-zA-Z0-9-]+)*)?$"},"ordinal":{"type":"integer","format":"int32","description":"Ordinal among representations of the same target object. 0 means it is opened by default when the target is selected; higher values are alternatives shown in the representation menu.","readOnly":true},"isRoot":{"type":"boolean","readOnly":true},"migrationVersion":{"type":"string","readOnly":true},"migrationName":{"type":"string","readOnly":true},"content":{"type":"string"},"creator":{"$ref":"#/components/schemas/UserReference","readOnly":true},"creationDateTime":{"type":"string","format":"date-time","readOnly":true},"lastModifier":{"$ref":"#/components/schemas/UserReference","readOnly":true},"lastModificationDateTime":{"type":"string","format":"date-time","readOnly":true},"archiver":{"$ref":"#/components/schemas/UserReference","readOnly":true},"archivationDateTime":{"type":"string","format":"date-time","readOnly":true},"_links":{"$ref":"#/components/schemas/Links"}}},"UserDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}}},"PageMetadata":{"type":"object","properties":{"size":{"type":"integer","format":"int64"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int64"},"number":{"type":"integer","format":"int64"}}},"PagedModelEntityModelScope":{"type":"object","properties":{"_embedded":{"type":"object","properties":{"scopes":{"type":"array","items":{"$ref":"#/components/schemas/EntityModelScope"}}}},"_links":{"$ref":"#/components/schemas/Links"},"page":{"$ref":"#/components/schemas/PageMetadata"}}},"PagedModelEntityModelRepresentation":{"type":"object","properties":{"_embedded":{"type":"object","properties":{"representations":{"type":"array","items":{"$ref":"#/components/schemas/EntityModelRepresentation"}}}},"_links":{"$ref":"#/components/schemas/Links"},"page":{"$ref":"#/components/schemas/PageMetadata"}}},"PagedModelEntityModelProject":{"type":"object","properties":{"_embedded":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/EntityModelProject"}}}},"_links":{"$ref":"#/components/schemas/Links"},"page":{"$ref":"#/components/schemas/PageMetadata"}}},"PagedModelEntityModelProjectUser":{"type":"object","properties":{"_embedded":{"type":"object","properties":{"projectUsers":{"type":"array","items":{"$ref":"#/components/schemas/EntityModelProjectUser"}}}},"_links":{"$ref":"#/components/schemas/Links"},"page":{"$ref":"#/components/schemas/PageMetadata"}}},"QuickFixDto":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"}}},"PagedModelEntityModelProjectImport":{"type":"object","properties":{"_embedded":{"type":"object","properties":{"projectImports":{"type":"array","items":{"$ref":"#/components/schemas/EntityModelProjectImport"}}}},"_links":{"$ref":"#/components/schemas/Links"},"page":{"$ref":"#/components/schemas/PageMetadata"}}},"PagedModelEntityModelImage":{"type":"object","properties":{"_embedded":{"type":"object","properties":{"images":{"type":"array","items":{"$ref":"#/components/schemas/EntityModelImage"}}}},"_links":{"$ref":"#/components/schemas/Links"},"page":{"$ref":"#/components/schemas/PageMetadata"}}},"PagedModelEntityModelProjectEnrollment":{"type":"object","properties":{"_embedded":{"type":"object","properties":{"projectEnrollments":{"type":"array","items":{"$ref":"#/components/schemas/EntityModelProjectEnrollment"}}}},"_links":{"$ref":"#/components/schemas/Links"},"page":{"$ref":"#/components/schemas/PageMetadata"}}},"PredefinedMetamodelInfo":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"prefix":{"type":"string"},"uri":{"type":"string"}}},"PagedModelEntityModelModel":{"type":"object","properties":{"_embedded":{"type":"object","properties":{"models":{"type":"array","items":{"$ref":"#/components/schemas/EntityModelModel"}}}},"_links":{"$ref":"#/components/schemas/Links"},"page":{"$ref":"#/components/schemas/PageMetadata"}}},"ValidationResult":{"type":"object","description":"One validation check outcome streamed as a 'result' event.","properties":{"ruleCode":{"type":"string"},"ruleDescription":{"type":"string"},"kind":{"type":"string","enum":["Irrelevant","Success","Information","Warning","Error"]},"objectId":{"type":"string"},"propertyName":{"type":"string"}}},"ExpressionLanguage":{"type":"object","description":"An expression language available for chat execution.","properties":{"id":{"type":"string"},"label":{"type":"string"},"mutating":{"type":"boolean"}}},"FieldError":{"type":"object","description":"A single field-level error for 400 or 409 responses.","properties":{"field":{"type":"string","description":"Dot-path of the offending field (e.g. \"scope.id\", \"confidentiality\")."},"message":{"type":"string","description":"Human-readable description of the error."}}},"FieldErrorProblem":{"type":"object","description":"RFC 7807 problem body returned for 400 (validation failure) and 409 (unique-key conflict). The errors[] array carries field-level messages bound to dot-path field names so the frontend can highlight specific form inputs.","properties":{"type":{"type":"string","format":"uri","default":"about:blank","description":"Problem type URI; \"about:blank\" unless the handler upgrades it."},"title":{"type":"string","description":"Short human-readable summary tied to the HTTP status."},"status":{"type":"integer","format":"int32","description":"Integer HTTP status, mirroring the response status line."},"detail":{"type":"string","description":"Domain-specific message; never contains database internals or stack traces."},"instance":{"type":"string","format":"uri","description":"The request URI of the failing call."},"errors":{"type":"array","description":"Field-level errors. Empty or omitted when the failure is not attributable to specific fields.","items":{"$ref":"#/components/schemas/FieldError"}}}},"InternalProblem":{"type":"object","description":"RFC 7807 problem body returned for 5xx responses. errorId is a correlation UUID matching the server log entry; quote it when reporting the issue.","properties":{"type":{"type":"string","format":"uri","default":"about:blank","description":"Problem type URI; \"about:blank\" unless the handler upgrades it."},"title":{"type":"string","description":"Short human-readable summary tied to the HTTP status."},"status":{"type":"integer","format":"int32","description":"Integer HTTP status, mirroring the response status line."},"detail":{"type":"string","description":"Domain-specific message; never contains database internals or stack traces."},"instance":{"type":"string","format":"uri","description":"The request URI of the failing call."},"errorId":{"type":"string","format":"uuid","description":"Correlation id; matches the id logged on the server."}}},"Link":{"type":"object","properties":{"href":{"type":"string"},"hreflang":{"type":"string"},"title":{"type":"string"},"type":{"type":"string"},"deprecation":{"type":"string"},"profile":{"type":"string"},"name":{"type":"string"},"templated":{"type":"boolean"}}},"Links":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/Link"}}}}}